【问题标题】:Convert netcdf "land" variable to latitude and longitude with Python使用 Python 将 netcdf "land" 变量转换为纬度和经度
【发布时间】:2014-09-09 16:54:27
【问题描述】:

我有一个全球气象数据集,我想访问某个网格(纬度、经度)的数据。但是,数据是压缩的,即感兴趣的参数没有维度(纬度,经度),而是“土地”。 "land" 是一维整数数组。

我使用 python 导入了文件

import scipy.io.netcdf as netcdf

path = '/path/.../ncfile.nc'

ncfile = netcdf.netcdf_file(path,'r')

然后我检查了有哪些变量并发现了,例如“Rainf”变量具有维度(tstep,land)。我在网上研究了这个,发现文件landmask_gswp.nc(http://dods.ipsl.jussieu.fr/gswp/Fixed/landmask_gswp.nc),里面应该包含我需要的信息,即如何从“land”中提取信息(lat,lon)。 该文件包含变量 nav_lat、nav_lon 和landmask。据我了解,nav_lat 和 nav_lon 将坐标变量 x 和 y 与纬度和经度相关联。 “landmask”是一个二维数组,包含海洋 = 0 或土地 = 1 的信息。 事实上,陆地点的数量与我的“陆地”一维数组的长度一致。但是,我无法弄清楚如何从中提取(纬度,经度)信息。任何帮助将不胜感激。

我希望我的问题可以理解一些;我没有编程和/或使用 netcdf 的经验,所以我希望你能帮忙!提前致谢!

【问题讨论】:

    标签: python grid scipy netcdf


    【解决方案1】:

    其他一些人可能会觉得这很有帮助,所以这里是问题的答案。一个朋友帮我想通了。 “land”是扁平数组nav_lat、nav_lon的索引,即“land”的第一项对应纬度:lat.flat[land[0]]和lon.flat[land[0]]。

    【讨论】:

    • 啊,现在。您还可以使用 numpy reshape 将该扁平化的一维数组转换为二维以匹配纬度/经度数组。
    【解决方案2】:

    您可以使用从ncfile 提取变量

    lat = ncfile.variables['nav_lat'][:,:]
    lon = ncfile.variables['nav_lon'][:,:] 
    

    这将创建二维 numpy 数组 latlon

    【讨论】:

    • 您好,感谢您的回答。我想我可能没有正确地阐述我的问题。如果有名为 nav_lat 和 nav_lon 的变量,我知道如何获取 lat 和 lon。我的问题是,在我原来的 netcdf 文件中,没有变量 lat 和 lon,只有一个变量“land”,即 1D。我的问题是:如何从一维数组“land”中提取信息(纬度、经度)?
    猜你喜欢
    • 2021-10-20
    • 1970-01-01
    • 1970-01-01
    • 2020-09-02
    • 2013-09-09
    • 1970-01-01
    • 1970-01-01
    • 2021-05-21
    • 1970-01-01
    相关资源
    最近更新 更多