[QGIS-Developer] Proper Way to Access Z from Point Vector Layer

C Hamilton adenaculture at gmail.com
Tue Jan 18 06:27:18 PST 2022


As I iterate through a point vector layer I get each feature. Normally I
would get access to the coordinate with
    pt = feature.geometry().asPoint()
Unfortunately, this is a QgsPointXY and not a QgsPoint and I need to have
access to the Z attribute. There is no function to return a QgsPoint that
includes the Z and M values.

If I do feature.geometry().get() there are member functions such
as addZValue(), dropZValue (), but there is no getZValue().

There is a function called vertexAt(QgsVertexId id) which returns a
QgsPoint, but the documentation is very unclear on how to actually use
this. What really is QgsVertexId and how should it be constructed?
Alternatively there is vertices() or vertices_begin () which are iterators
that potentially could be used.

This all seems awkward and not documented well. What is the best way to get
a QgsPoint from a point feature which is coming from a processing script
like this?

    iterator = source.getFeatures()
    for cnt, feature in enumerate(iterator):

Thanks,

Calvin
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.osgeo.org/pipermail/qgis-developer/attachments/20220118/d692e6e3/attachment.html>


More information about the QGIS-Developer mailing list