当前位置: 首页 > 知识库问答 >
问题:

Lat/Lon坐标点数据提取无法在xray中运行

夏骏
2023-03-14

我有很大的NetCDF文件(~23GB),我从这些文件中提取点数据,并通过xarray加载到numpy数组中。在一个循环中,这个过程运行得很完美——但是当我尝试用一个更小的单个文件(3.8GB)运行时,代码永远不会运行完。

我不想问这个关于堆栈的问题,因为它是特定于数据的,所以示例代码并没有真正的帮助。然而,xarray中的文件有一个结构“Time,stid”-stid表示站点ID,这个维度只是命名从全局数据集中提取的lat/lon对(见下面的坐标)。

<xarray.Dataset>
Dimensions:       (TIME: 12745, stid: 22)
Coordinates:
  * TIME          (TIME) object 1982-01-01 00:00:00 ... 2016-12-01 00:00:00
    LON           (stid) float64 5.75 5.75 -89.25 -90.25 ... 9.75 -106.2 129.2
    LAT           (stid) float64 52.25 50.25 46.25 45.75 ... 46.75 53.75 62.25
  * stid          (stid) object 'NL-Loo' 'BE-Vie' 'US-Syv' ... 'CA-Oas' 'RU-Skp'
Data variables:
    FAPAR_FILLED  (TIME, stid) float64 ...
Attributes:
    CDI:          Climate Data Interface version 1.9.10 (https://mpimet.mpg.d...
    Conventions:  CF-1.0

我尝试了一次提取一个站的坐标(stid)的循环,我还尝试了下面的代码,它对于1或2个站工作得非常好,但是对于22个站就不能运行了。为什么它会运行在更大的数据集上,而不是这个?当它来自0.5分辨率的全球数据集时(单个gridcell extraction * 22),这怎么可能是内存问题呢?

data_load = os.path.join(address, 'fAPAR3g_v2_1982_2016_DAILY_del29feb_TEST.nc')
fapar_day = xr.open_dataset(data_load)
fapar_day = fapar_day.sel(LAT=crd_ix.lat, LON=crd_ix.lon, method="nearest")
fapar_day = xr.DataArray.to_masked_array(fapar_day.FAPAR_FILLED)

crd_ix是您可以在lat, lon中看到的lat/lon对的字典

共有1个答案

燕正卿
2023-03-14

我不知道这是否会在没有完整示例的情况下回答您的问题,但我最近做了类似的事情,并且我对 sel 行的格式略有不同:

subset=xrdat.sel({'lat':xr.DataArray(ds['lat'],dims='z'),
                  'lon':xr.DataArray(ds['lon'],dims='z')},method='nearest')

是基于这个答案(不是最上面的一个):https://stackoverflow.com/a/62784295/12133280

 类似资料:
  • 我正在尝试将lat/lon对转换为像素坐标。我找到了这个墨卡托投影,但我不懂代码。因子x_adj,y_adj变量是多少?当我运行没有这些常数的代码时,我的lat/lon对不在我的地图上,x和y像素坐标也不是我想要的。 来源:http://webdesignerwall.com/tutorials/interactive-world-javascript-map/comment-page-1?rep

  • 我对R相对较新。我正在尝试从 netCDF 文件中获取温度数据的不同点(纬度、纬度)的时间序列。我的示例数据文件在这里,这里是小文件。我已经尝试了netCDF包和到目前为止我使用的代码 有人能帮我得到一个时间序列的数据帧(第一列)和另一列中某个特定点(lat,lon)的数据值吗。在这种情况下,我正在寻找一个特定纬度点(并对许多兴趣点重复)和给定变量(在本例中为tasmin)的时间序列(1950-0

  • 这是我第一次使用堆栈溢出,我的编码技术非常糟糕,我正在使用一个历史tos的NetCDF文件。我想提取特定lat和lon的tos数据。我有一个三维数组中的tos数据,lon和lat分别在一个二维矩阵中。问题是,我选择的lon和lat的行列组合与tos数组的行-列组合不一致。下面是我目前掌握的代码 我被困在这里,因为我的纬度和纬度矩阵的行和列数与 tos day1 数组的行和列号不对应。 如果你不明白

  • 我在学Android。现在我正在开发一个使用地图API的应用程序。到目前为止,我做了以下操作:-我长时间点击了地图,并打开了一个新的ActivityCyclickedMap,其中显示了我点击的位置的lat和lon-我点击了save按钮,并将lat和lon添加到服务器和我的本地数据库中 我想做的事情是这样的:-当我打开地图时,我想让它显示一个标记,使用数据库中的lat和lon

  • 我有一个使用Google静态地图的JAVA项目要做,经过几个小时的工作,我不能得到一个东西工作,我会解释一切,我希望有人能帮助我。 我使用的是静态地图(480pixelsx480pixels),地图的中心是lat=47,lon=1.5,缩放级别是5。 现在我需要的是当我点击这个静态地图上的一个像素时能够得到lat和lon。经过一些搜索,我发现我应该使用墨卡托投影(对吗?),我还发现每个变焦级别在水

  • 嗨,这个问题是指之前的帖子: 有人能给我举个例子,说明如何使用PDFBox提取“单词”的坐标吗 我使用的是PDFBOX 2.0.10 我已成功编译了组合代码,但在尝试运行示例时出现异常错误。 提供的解决方案没有标准的主方法,这是我感到困惑的地方。 有人能告诉我怎样才能成功运行组合代码吗。 堆栈跟踪 可以在这里找到坐标https://github.com/mkl-public/testarea-pd