Muszę podgrupować dane z NetCDF przy użyciu określonego pliku shapefile. Dane dotyczą temperatury powierzchni morza i koloru oceanu przy rozdzielczości 1/4 stopnia. Mam 4 wielokąty opisujące USA. Duży ekosystem morski północno-wschodniego szelfu kontynentalnego i jego podskładniki, których muszę użyć do wyodrębnienia danych. Pracuję z miesięcznymi plikami złożonymi z lat 1982-2014, więc ta procedura ekstrakcji danych musi zostać zautomatyzowana. Pliki są już podzielone na przybliżoną siatkę obszaru roboczego wynoszącą [35, 45, -80, -60].
Wcześniej konwertujemy pliki danych HDF5 na rastry w R i przetwarzamy je w ten sposób, ale ta metoda jest naprawdę nieefektywna i jestem pewien, że istnieje lepsze rozwiązanie w Pythonie przy użyciu bieżących plików NetCDF.
Do tej pory korzystałem z GDAL i Fiony do odczytu plików shapefiles i NetCDF4 do ładowania plików danych. Nie jestem pewien, jak przejść do podzbioru danych. Znalazłem to:
GDAL dla Pythona: wyodrębnianie poddomen z pliku NetCDF?
Ale nie mam mglistego pomysłu na temat tego, jak podgrupować plik NetCDF przy użyciu czegokolwiek innego niż prosta obwiednia, którym z pewnością nie są te wielokąty.
Punkt w procedurach wielokąta prawdopodobnie zajmie wieczność do pracy, ale może mógłbym podgrupować dane za pomocą mniejszej ramki granicznej, która jest obracana, aby dopasować te kształty jako początkowy punkt początkowy, a następnie przeprowadzić wyszukiwanie punktowe:
Jakieś pomysły?
EDYCJA 1:
Właśnie natrafiłem na pakiet OpenClimateGIS, który wydaje się, że może idealnie pasować do rachunku ... Spróbuję to sprawdzić, czy uda mi się go uruchomić: http://ncpp.github.io/ocgis/examples. HTML # Advanced-Subsetting
Odpowiedzi:
Może to być dostosowane do twoich potrzeb.
Jeśli nie przeszkadza ci wywoływanie linii poleceń z Pythona, możesz zrobić coś takiego
gdalwarp -cutline clip.shp -cl clip -crop_to_cutline input_raster output_raster_clipped.tif
.-cwhere
i-csql
mogą być bardziej odpowiednie opcje gdalwarp do wybierania jednego z czterech wielokątów do obcinania.źródło
Spójrz na to: /programming/34585582/how-to-mask-the-specific-array-data-based-on-the-shapefile
Pamiętaj, że po załadowaniu NetCDF pracujesz z tablicą NumPy.
Co próbujesz wyprodukować? Statystyki podsumowujące oparte na obszarach wielokąta?
Tak czy inaczej, oto co bym zrobił:
źródło
Możesz użyć rioxarray. Oto przykład: https://corteva.github.io/rioxarray/stable/examples/clip_geom.html
źródło