Hi everyone,

Sometimes I got "NaN" return when trying to get scalar value to a point from a 
Mesh layer. I guess the reason is that it was not rendered previously as said 
in the documentation.

<https://qgis.org/api/classQgsMeshLayer.html#a07cb62f04b64979500d3873afb580216>
QgsMeshDatasetValue:
"Note:
    It uses previously cached and indexed triangular mesh and so if the layer 
has not been rendered previously (e.g. when used in a script) it returns NaN 
value"

When I turn ON and OFF the loaded mesh layer in the active project it Works!

I would like to know if there is a proper way to render the mesh layer, before 
get values.

Below is my code:

proj = QgsProject.instance()
layerPto = iface.activeLayer() # a Point layer
layer = proj.mapLayersByName("mesh01")[0] # a Mesh layer
dataset = QgsMeshDatasetIndex(0,0)
for feat in layerPto.getSelectedFeatures():
    ptoGeo = feat.geometry()
    pt = ptoGeo.asPoint()
    value = layer.datasetValue(dataset, pt).scalar()
    print('elevation={}'.format(value))



_______________________________________________
QGIS-Developer mailing list
QGIS-Developer@lists.osgeo.org
List info: https://lists.osgeo.org/mailman/listinfo/qgis-developer
Unsubscribe: https://lists.osgeo.org/mailman/listinfo/qgis-developer

Reply via email to