首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Python:从shapefile (多边形/多多边形)掩蔽ERA5数据(NetCDF)

Python:从shapefile (多边形/多多边形)掩蔽ERA5数据(NetCDF)
EN

Stack Overflow用户
提问于 2022-03-29 17:24:54
回答 1查看 465关注 0票数 1

我想从ERA5网格数据中选择网格单元(仅限于表面水平),这些网格单元是在北瑞士和南瑞士(加上雷达缓冲区)的地理掩膜内,以计算区域方法。这4个掩码(口罩)是在一个shapefile中以多边形/多多边形(多角形)的形式给出的,到目前为止,对于其中的两个掩码,我能够使用salem获得我想要的:

代码语言:javascript
复制
radar_north = salem.read_shapefile('radar_north140.shp')
file_radar_north = file.salem.roi(shape=radar_north)
file_radar_north.cape.mean(dim='time').salem.quick_map() 

但是,对于radar_south和alpensuedseite shapefiles,代码在开始时不起作用(错误的选择或没有显示数据),而现在没有什么工作了(?)我不知道为什么,因为我没有改变任何从第一次到第二次。

如果有人看到了这个问题,或者知道一种不同的方法来掩盖ERA数据(这可能更快),我将不胜感激!(我在这里回答类似的问题时没有成功)。

最佳莉娜

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-03-29 23:24:11

如果您正在处理netcdf文件,则此操作可能有效。

代码语言:javascript
复制
import geopandas as gpd
import xarray as xr
import rioxarray
from shapely.geometry import mapping

# load shapefile with geopandas
radar_north = gpd.read_file('radar_north140.shp')

# load ERA5 netcdf with xarray
era = xr.open_dataset('ERA5.nc')

# add projection system to nc
era = era.rio.write_crs("EPSG:4326", inplace=True)

# mask ERA5 data with shapefile
era_radar_north = era.rio.clip(radar_north.geometry.apply(mapping), radar_north.crs)
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/71666352

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档