salve spero che qualcuno si intenda di programmazione qgis
devo scrivere un plugin che accede alla coordinata z se c'è delle geometrie o alla banda di un raster tin
questo il mio codice
def getZ(self,livello,point):
z=0
if (livello.type()==QgsMapLayer.VectorLayer ):
pntGeom = QgsGeometry.fromPoint(point)
pntBuff = pntGeom.buffer( (self.canvas.mapUnitsPerPixel() * 2),0)
rect = pntBuff.boundingBox()
livello.select(rect,True)
if livello.selectedFeatureCount()>0 :
punto=livello.selectedFeatures().pop()
geom=punto.geometry()
wkb=geom.asWkb()
z=loads(wkb).z
return z
elif (livello.type()==QgsMapLayer.RasterLayer):
altezza=livello.dataProvider().identify(point,QgsRaster.IdentifyFormatValue)
z=[float((altezza.results()[1]) or 0)]
return z
return 0
in generale con la situazione che mi serve funziona
uso le librerie shapely per caricare una geometria in wkb per caricare la z
ma mi chiedevo se c'è un modo + standard e/o + elegante che mi eviti di importare questa libreria
come è combinato il supporto alle geometrie 25D (ossia con la z) in qgis?
si deve usare per forza shapely o altro?