Ich möchte wissen, wie man alle Rasterwerte innerhalb eines Polygons mit gdal oder pygeoprocessing erhält, ohne das gesamte Raster als Array zu lesen.
pygeoprocessing und gdal können zonale Statistiken erstellen, aber von einer solchen Funktion sind nur die Werte min, max, mean, stdev oder count verfügbar. Wäre es einfach, Werte auf dieselbe Weise zu extrahieren, da Zonenstatistiken auf die Werte zugreifen müssen?
Ich habe hier eine sehr ähnliche Frage gefunden: ( Pixelwert des GDAL-Rasters unter OGR-Punkt ohne NumPy abrufen? ), Aber nur für einen bestimmten "Punkt".
python
gdal
pygeoprocessing
egayer
quelle
quelle
Antworten:
Sie können Rasterio verwenden , um die Rasterwerte innerhalb eines Polygons wie in GIS SE: GDAL Python Cut Geotiff-Bild mit Geojson-Datei zu extrahieren
Ich verwende hier eine Ein-Band-Rasterdatei und GeoPandas für das Shapefile (anstelle von Fiona).
Das Ergebnis out_image ist ein Numpy-maskiertes Array
Jetzt verwende ich Wie erhalte ich die Koordinaten einer Zelle in einem Geotif? oder affine Python-Transformationen, um zwischen dem Pixel und den projizierten Koordinaten
out_transform
als affine Transformation für die Teilmengen-Daten zu transformierenErstellung eines neuen resultierenden GeoDataFrame mit den Werten col, row und height
quelle
geoms = [mapping(geoms[0])]
statt nur verwendengeoms[0]
?mapping(geoms[0])
= GeoJSON Format des Geometriedata = out_image.data[0]
warfmulti-dimensional sub-views are not implemented
für mich,data = out_image[0,:,:]
arbeitete aber . Ist dies eine weniger effiziente oder anderweitig problematische Problemumgehung? Irgendeine Idee, warum es wie geschrieben fehlgeschlagen wäre?Wenn Sie Probleme mit der Verwendung von Rasterio im selben Skript mit gdal haben, habe ich Pygeoprocessing ausprobiert (es wird auch Shapely verwendet) und eine Problemumgehung gefunden. Das vollständige Skript (mit Pfaden zu meinen Ebenen) lautet wie folgt:
Nachdem ich es ausgeführt habe, habe ich:
Dabei waren die Rasterabtastwerte in jedem Punkt wie erwartet und wurden in die Punktebene integriert.
quelle