Wie kann ich projizierte Koordinaten sowie die tatsächlichen Pixelwerte an diesen Koordinaten aus einer GeoTiff-Datei abrufen und sie dann in einem Numpy-Array speichern? Ich habe die Datei arsenci020l.tif und ihre Koordinaten sind in Metern. Unten ist die gekürzte Ausgabe von gdalinfo, die ich darauf ausgeführt habe.
~$ gdalinfo arsenci020l.tif
Driver: GTiff/GeoTIFF
Files: arsenci020l.tif
arsenci020l.tfw
Size is 10366, 7273
Coordinate System is:
PROJCS["Lambert Azimuthal Equal Area projection with arbitrary plane grid; projection center 100.0 degrees W, 45.0 degrees N",
GEOGCS["WGS 84",
DATUM["WGS_1984",
SPHEROID["WGS 84",6378137,298.257223563,
AUTHORITY["EPSG","7030"]],
AUTHORITY["EPSG","6326"]],
PRIMEM["Greenwich",0],
UNIT["degree",0.0174532925199433],
AUTHORITY["EPSG","4326"]],
PROJECTION["Lambert_Azimuthal_Equal_Area"],
PARAMETER["latitude_of_center",45],
PARAMETER["longitude_of_center",-100],
PARAMETER["false_easting",0],
PARAMETER["false_northing",0],
UNIT["metre",1,
AUTHORITY["EPSG","9001"]]]
Origin = (-6086629.000000000000000,4488761.000000000000000)
Pixel Size = (1000.000000000000000,-1000.000000000000000)
...
Es gab hier eine ähnliche Frage zum Abrufen von Lat / Long-Koordinaten von tiff (Erhalten von Latitude und Longitude aus einer GeoTIFF-Datei), und die Antwort zeigte, wie nur die oberen linken x- und y-Pixelkoordinaten erhalten werden. Ich muss ALLE projizierten Pixelkoordinaten erhalten sowie die Pixelwerte erhalten und sie in einem numpy-Array speichern. Wie kann ich es tun?
python
gdal
geotiff-tiff
numpy
irakhman
quelle
quelle
Antworten:
würde als Kommentar hinzufügen, aber ein bisschen lang - falls Sie gdal / ogr in Python verwenden möchten - könnte so etwas funktionieren (zusammen gehackt von einem anderen Code, den ich hatte - nicht getestet!). Dies setzt auch voraus, dass es nicht den nächsten findet Rasterpixel auf einen Polygonschwerpunkt, Sie fragen das Raster einfach am xy des Schwerpunkts ab. Ich habe keine Ahnung, wie hoch der Geschwindigkeitskompromiss sein könnte ...
quelle
Das sollte dich zum Laufen bringen. Die Rasterwerte werden mit Rasterio gelesen , und die Pixelmittenkoordinaten werden mit affinen Werten in Ost- / Nordwerte konvertiert , die dann mit pyproj in Breiten- / Längengrade konvertiert werden . Die meisten Arrays haben dieselbe Form wie das Eingabe-Raster.
quelle
affine
ist es nur ein Alias fürtransform
und der Alias wurde aus der neuesten Version von Rasterio entfernt. Ich habe die Antwort bearbeitet, aber es sieht so aus, als müsste sie einer Peer-Review unterzogen werden, da ich neu hier bin. :)A.shape
, was nur zwei Dimensionen hat.