[QGIS-Developer] Mesh layer

Jorge Almerio jorgealmerio at yahoo.com.br
Sat Apr 25 08:32:20 PDT 2020


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))





More information about the QGIS-Developer mailing list