Preciso agrupar dados de um NetCDF usando um shapefile específico. Os dados são temperatura da superfície do mar e cor do oceano com resolução de 1/4 de grau. Eu tenho 4 polígonos descrevendo os EUA. Grande ecossistema marinho da plataforma continental nordeste e seus subcomponentes que eu preciso usar para extrair os dados. Estou trabalhando com arquivos compostos mensais de 1982 a 2014, portanto essa rotina de extração de dados precisa ser automatizada. Os arquivos já estão subconjuntos na grade aproximada da área de trabalho de [35, 45, -80, -60].
Anteriormente, estávamos convertendo arquivos de dados HDF5 em rasters em R e processando-os dessa maneira, mas esse método é realmente ineficiente e tenho certeza de que existe uma solução melhor em Python usando os arquivos NetCDF atuais.
Até agora, tenho usado GDAL e Fiona para ler os shapefiles e o NetCDF4 para carregar os arquivos de dados. Não sei ao certo como definir subconjuntos de dados. Eu achei isto:
GDAL para Python: extraindo subdomínios do arquivo NetCDF?
Mas não tenho a menor idéia de como subconjunto de um arquivo NetCDF usando algo além de uma simples caixa delimitadora, que esses polígonos certamente não são.
O ponto nas rotinas poligonais provavelmente levaria uma eternidade para funcionar, mas talvez eu pudesse subconjunto dos dados usando uma caixa delimitadora menor que é rotacionada para se ajustar a essas formas como este como ponto de partida inicial e, em seguida, faça uma pesquisa point-in-poly:
Alguma ideia?
EDIT 1:
Acabei de me deparar com o pacote OpenClimateGIS, que parece que ele se encaixa perfeitamente ... Vou tentar isso para ver se consigo fazê-lo funcionar: http://ncpp.github.io/ocgis/examples. html # subconjunto avançado
Respostas:
Isso pode ser adaptável às suas necessidades.
Se você não se importa de chamar a linha de comando do python, pode fazer algo assim
gdalwarp -cutline clip.shp -cl clip -crop_to_cutline input_raster output_raster_clipped.tif
.-cwhere
e-csql
podem ser opções mais adequadas para selecionar um dos quatro polígonos para recorte.fonte
Dê uma olhada no seguinte: /programming/34585582/how-to-mask-the-specific-array-data-based-on-the-shapefile
O que você deseja ter em mente é que, depois de carregar o NetCDF, você estará trabalhando com uma matriz NumPy.
O que você está tentando produzir? Estatísticas resumidas com base nas áreas de polígonos?
De qualquer forma, aqui está o que eu faria:
fonte
Você pode usar o rioxarray. Aqui está um exemplo: https://corteva.github.io/rioxarray/stable/examples/clip_geom.html
fonte