Ich muss Daten aus einer NetCDF mit einem bestimmten Shapefile unterteilen. Die Daten sind die Meeresoberflächentemperatur und die Ozeanfarbe bei einer Auflösung von 1/4 Grad. Ich habe 4 Polygone, die die USA beschreiben. Großes marines Ökosystem im nordöstlichen Festlandsockel und seine Unterkomponenten, die ich zum Extrahieren der Daten verwenden muss. Ich arbeite mit monatlichen zusammengesetzten Dateien von 1982 bis 2014, daher muss diese Datenextraktionsroutine automatisiert werden. Die Dateien sind bereits auf das ungefähre Arbeitsbereichsraster von [35, 45, -80, -60] untergeordnet.
Früher haben wir HDF5-Datendateien in Raster in R konvertiert und auf diese Weise verarbeitet, aber diese Methode ist wirklich ineffizient, und ich bin sicher, dass es in Python eine bessere Lösung gibt, wenn die aktuellen NetCDF-Dateien verwendet werden.
Bisher habe ich GDAL und Fiona zum Einlesen der Formdateien und NetCDF4 zum Laden der Datendateien verwendet. Ich bin nicht sicher, wie ich die Daten unterteilen soll. Ich habe das gefunden:
GDAL für Python: Subdomains aus NetCDF-Datei extrahieren?
Aber ich habe nicht die geringste Ahnung, wie man eine netcdf-Datei mit etwas anderem als einem einfachen Begrenzungsrahmen unterordnet, was diese Polygone mit Sicherheit nicht sind.
Es würde wahrscheinlich eine Ewigkeit dauern, bis ein Punkt in Polygon-Routinen funktioniert, aber vielleicht könnte ich die Daten mithilfe eines kleineren Begrenzungsrahmens unterteilen, der gedreht wird, um diesen Formen wie diesem als Ausgangspunkt zu entsprechen, und dann eine Punkt-in-Poly-Suche durchführen:
Irgendwelche Ideen?
EDIT 1 :
Ich bin gerade auf das OpenClimateGIS-Paket gestoßen, das anscheinend perfekt zur Rechnung passt ... Ich werde es versuchen, um zu sehen, ob ich es zum Laufen bringen kann: http://ncpp.github.io/ocgis/examples. html # advanced-subsetting
Antworten:
Dies kann an Ihre Bedürfnisse angepasst werden.
Wenn es Ihnen nichts ausmacht, die Befehlszeile von Python aus aufzurufen, können Sie so etwas tun
gdalwarp -cutline clip.shp -cl clip -crop_to_cutline input_raster output_raster_clipped.tif
.-cwhere
und-csql
möglicherweise geeignetere gdalwarp-Optionen zum Auswählen eines der vier Polygone zum Ausschneiden.quelle
Schauen Sie sich das an: /programming/34585582/how-to-mask-the-specific-array-data-based-on-the-shapefile
Was Sie beachten möchten, ist, dass Sie nach dem Laden Ihrer NetCDF mit einem NumPy-Array arbeiten.
Was versuchst du auszugeben? Zusammenfassende Statistiken basierend auf den Polygonbereichen?
Jedenfalls würde ich Folgendes tun:
quelle