繁体   English   中英

如何使用Python和xarray从变量满足netCDF数据集条件的位置提取坐标?

[英]How to extract coordinates from where the variable meets a criterion for a netCDF dataset with Python and xarray?

我有一个xarray DataArray对象da_criteria_daily ,它是从netCDF文件生成的。

<xarray.DataArray (time: 365, latitude: 106, longitude: 193)>
dask.array<shape=(365, 106, 193), dtype=bool, chunksize=(1, 106, 193)>
Coordinates:
  * time       (time) datetime64[ns] 2017-01-01 2017-01-02 ... 2017-12-31
  * latitude   (latitude) float32 -39.2 -39.149525 ... -33.950478 -33.9
  * longitude  (longitude) float32 140.8 140.84792 140.89584 ... 149.95209 150.0

它是一年范围内的每日数据。 变量是布尔类型。

我想获取该变量为True的特定日期的所有坐标(纬度,经度)值。

new_da = da_criteria_daily.where(da_criteria_daily==True, drop=True)
print(new_da)

我有:

<xarray.DataArray (time: 161, latitude: 106, longitude: 193)>
dask.array<shape=(161, 106, 193), dtype=float64, chunksize=(1, 106, 193)>
Coordinates:
  * time       (time) datetime64[ns] 2017-01-01 2017-01-02 ... 2017-12-31
  * latitude   (latitude) float32 -39.2 -39.149525 ... -33.950478 -33.9
  * longitude  (longitude) float32 140.8 140.84792 140.89584 ... 149.95209 150.0

xarray.DataArray是否有任何可用于从变量中检索坐标的函数?

您可以使用numpy来做到这一点:

numpy.argwhere(numpy.array(da_criteria_daily))

numpy.argwhere()为您提供非零(True)元素的索引。 然后,您可以使用经度,纬度和时间坐标数组来获取真实值。

使用xarray的.where .where()只会用nans替换不满足条件的值,也就是说,您的False值现在将是nans。 我不知道任何xarray的方法来获取某些值的坐标。 它将绝对有用,但是我想还没有人开发它。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM