python - 如何在 xarray 数据集中使用纬度和经度变量作为维度/坐标?
问题描述
我有一个 NetCDF 文件,其中包含指定坐标(由 110804 个节点组成的不规则网格)随时间变化的风况(速度、方向、u、v)。纬度和经度被存储为变量,这使得在空间维度(空间子集,在新网格上插值)上处理数据集变得非常困难。
Dimensions: (node: 110804, time: 385)
Coordinates:
* time (time) datetime64[ns] 1999-12-15 ... 1999-12-31
Dimensions without coordinates: node
Data variables:
uwnd (time, node) float32 ...
vwnd (time, node) float32 ...
longitude (node) float32 -8.53543 -8.500304 -8.53419 ... -7.5 -7.5 -7.5
latitude (node) float32 51.632282 51.654434 51.65914 ... 50.8125 50.875
wndS (time, node) float32 9.426028 9.41913 ... 4.1617303 4.104875
wndDir (time, node) float32 -175.74115 -176.34778 ... 125.2176 124.07719
使用 xarray 打开数据集后,如何将变量“纬度”和“经度”转换为数据集的维度/坐标?
解决方案
您通常可以使用 NCO 执行此操作。以下将生成要尝试的命令:
nco_command = "ncatted "
lon_name = "longitude"
lat_name = "latitude"
variables = ["uwnd", "vwnd", "wndS", "wndDir"]
for vv in variables:
nco_command += (
"-a coordinates," + vv + ",c,c,'" + lon_name + " " + lat_name + "' "
)
nco_command = nco_command + " infile.nc outfile.nc"
nco_command
当然,只需在命令行上运行它并替换文件名。此代码将为下的所有变量列表添加新维度variables
。这几乎总是适用于将变量转换为尺寸/坐标。
推荐阅读
- firebase - firestore 计数如何在颤振上读取
- flutter - 如何使用 cognito 刷新令牌在颤振中获取新的 accessToken
- ios - 页面视图控制器中的子视图控制器无法接收委托调用
- javascript - Javascript 字符串是不可变的,但按索引重新分配不会引发错误
- python - 斜纹导致 print() 不显示
- ssis - SSIS 包配置
- nginx - 流到一些服务器流媒体代理
- windows - Windows 如何“分解” .msstyles 文件中的图片?
- c# - 将具有属性和值的类存储到配置文件中
- sql - 将 sql 查询填充到 vb.net 上的 datagridview 中