我有一个具有 4 个维度的 NetCDF 文件:时间、级别、纬度和经度。数据的形状是:1, 60, 1440, 2880
这意味着有1个时间点,60个级别,1440个纬度和2880个经度。
纬度范围从 -90 到 90,增量为 0.125。例如:
lats = np.arange(-90,90.125, 0.125)
经度范围从 0 到 360,增量为 0.125。例如:
lons = np.arange(0,360, 0.125)
我有一个带有 GPS 位置的“站”:station.lat, station.lon = 22.125, 275.250
. 将经度转换为 360 度网格空间:station.lon = station.lon%360.0
我想提取一个关于我站的立方体。例如,左侧 5 个单元格,右侧 5 个单元格和所有级别。(包括站所在小区)
为此,我得到了lat
within的索引和withinlats
的索引。lon
lons
然后,我创建了一系列索引,用于从 netCDF 文件中提取数据:
lat_index_range = np.arange(nearest_latitude_index-5, nearest_latitude_index+5, 1)%1441
lon_index_range = np.arange(nearest_longitude_index-5, nearest_longitude_index+5, 1)%2881
让我们想象一下
lat_index_range = [1220,1221,1223,1224,1225,1226,1227,1228,1229,1230,1231]
lon_index_range = [2250,2251,2252,2253,2254,2255,2256,2257,2258,2259,2260,2261]
然后我提取数据:
factor = dataset[parameter][0]
factor[:,min(lat_index_range):max(lat_index_range),min(lon_index_range):max(lon_index_range)
这很好用,但是,索引 2880 将代表 360 度,所以如果我的点位于边界附近(即它的经度被映射到 2879 的索引),我需要回到起点。我lon_index_range
会看起来像这样:
lon_index_range = [2879,2880,0,1,2,3,4,5,6,7,8]
现在提取我的数据将无法正常工作...
factor = dataset[parameter][0]
factor[:,1220:1231,0:2879) # this would take ALL the longitude data from 0 to 2879!!
同样,我不能有这样的东西:factor[:,1220:1231,2879:8)
纬度也存在同样的问题......因为我的观点可能在纬度边界附近。
有谁知道我该如何解决这个问题?