Python netCDF5与经度和纬度一起使用并提取数据

时间:2020-06-16 10:42:11

标签: python latitude-longitude netcdf python-xarray

你好吗?

我已经为此工作了一段时间,但是我无法继续进行下去。 我获得了具有基于云的海拔高度的.nc文件(CBA是用于指示特定区域土块高度的测量值。)

目前,我什至无法提取单个坐标的数据。此数据包含此图片中从左上角到右下角的区域:

Area contained in Data

以下是我正在处理的数据的屏幕截图:

enter image description here

很抱歉,我不能提供更多的数据,但是我不想惹麻烦。

cba值是我要提取的信息。因此,假设我有一个感兴趣区域的一组坐标(经度/纬度),如何获得合适的CBA值?

我不需要特定的解决方案,而是一个方向,这样我就可以自己继续。

有关其他信息,这是.cba和.cba.values的外观:

enter image description here

我以前一直在处理像这样的数据,但不是嵌套的,所以我完全不知道该如何处理。 python中是否有一个模块/软件包可以让我轻松地处理此问题,所以当我输入某个区域的坐标时,它将直接为我提供相应的cba值?

我希望能继续提供足够的信息,您可以为我提供帮助,我将非常感谢。

致谢

1 个答案:

答案 0 :(得分:2)

您正在使用的软件包(xarray)已经非常适合此任务。

dObj是一个xarray.Dataset对象,每个包含的变量(例如dObj['cba'])都是一个xarray.DataArray对象。

您可以像这样在给定的一组坐标处访问数据:

lat = ...
lon = ...
dObj['cbd'].sel(y=lat, x=lon, method='nearest')

method='nearest'是必需的,因为您的坐标数组不太可能精确地包含请求的浮点值。

如果您想选择一个纬度和经度范围,则可以执行以下操作:

lat_min, lat_max = (...)
lon_min, lon_max = (...)
dObj['cbd'].sel(y=slice(lat_min, lat_max), x=slice(lon_min, lon_max))

有关处理xarray对象的更多信息,请参阅非常全面的文档:http://xarray.pydata.org/en/stable/index.html