如何将 Pyresample 重新网格化数据的输出放入 python 中的 shapefile 中

问题描述 投票:0回答:1

我有一个 netcdf 文件,其中包含纬度、经度、时间和通量。我使用 Pyresample 重新网格化了数据。现在我想将这些重新网格化的数据放入形状文件中。但是我收到一些错误。重新网格化的数据采用 numpy 数组格式。所以我将其转换为 xarray 格式。然后当我使用 rio.clip 命令时,它显示错误。错误类似于:“找不到 y 维度。'rio.set_spatial_dims()'或者使用“rename()”将维度名称更改为“y”可以解决此问题。the regrided output looks like this

the error says:

导入pyresample、rioxarray、geopandas和所有必要的库后,我编写了这段代码。

data=xr.open_dataset("flux_file.nc4")

nlon=720
nlat=360
lonGrid=np.linspace(-180,180,nlon)
latGrid=np.linspace(-90,90,nlat)


res=0.5

deg2km=110
km2m=1000
roi=res*deg2km*km2m

area_def=geometry.AreaDefinition('areaD','World','areaD',{'lat_0':'0.00','lat_ts':'90.00','lon_0':'0.00','lon_ts':'180.00','proj':'latlon'},nlon,nlat,[-180,-90,180,90])



lon=data['longitude'].values
lat=data['latitude'].values

swath_def=geometry.SwathDefinition(lons=lon,lats=lat)

result=kd_tree.resample_nearest(swath_def,data['flux'].values,area_def,radius_of_influence=roi)


result[result==0]=np.nan
reverseresult=result[::-1,:]

op=xr.DataArray(reverseresult)

sf=gpd.read_file('India_shape.shp')


op= op.rio.write_crs("EPSG:4326", inplace=True)

op_sf = op.rio.clip(sf.geometry.apply(mapping), sf.crs)


I am expecting to map my regrided data in the shapefile file of India. 
python grid shapefile pyresample
1个回答
0
投票

错误消息“未找到 y 维度”表示 rioxarray 需要空间坐标的特定维度命名约定。它需要一个名为“y”的维度(纬度)和“x”(经度)。

使用

将现有纬度和经度维度重命名为“y”和“x”

op.rename({'纬度':'y','经度':'x'})

明确设置空间维度(如有必要):

如果重命名不起作用,请使用

op.rio.set_spatial_dims(x_dim =“x”,y_dim =“y”)

明确指定空间维度。

© www.soinside.com 2019 - 2024. All rights reserved.