背景
我有一个网格大小的 NETCDF4 文件0.125x0.125
。纬度从90
到-90
,经度从0
到360
。因此,完整的表格大小为1441 x 2880
(纬度 x 经度)。
我正在获取我的位置坐标(以度为单位的纬度)并试图找到我所在的位置cell
......
为了计算cell
我所处的位置,我这样做:
'''
This function takes an array and a value.
It finds the item in the array for which the value most closely matches, and returns the index.
'''
def GetNearestIndex(arrayIn, value):
distance = math.fabs(arrayIn[0] - value);
nearest = 0;
index = 0
for idx, val in enumerate(arrayIn):
delta_distance = math.fabs(val - value)
if delta_distance < distance:
nearest = val
index = idx
distance = delta_distance
return index
#Lats and Longs arrays from the NETCDF4 dataset
lats = dataset.variables['latitude'][:]
longs = dataset.variables['longitude'][:]
#GetNearestIndex finds the item in the array for which the value most closely matches, and returns the index.
nearestLatitudeIndex = Utilities.GetNearestIndex(lats, myLat)
nearestLongitudeIndex = Utilities.GetNearestIndex(longs, myLon%360)
所以给定我的 NECTDF4 数据集,如果我的位置是[31.351621, -113.305864]
(lat, lon),我发现我与cell
[31.375, 246.75] (lat, lon) 匹配。将计算出的 lat 和 lon 插入GetNearestIndex
,然后我将获得我所在单元格的“地址”(x,y)。
现在我知道cell
我离哪个最近,我从 NETCDF 文件中获取值,然后我可以说“你所在位置的温度是 X”。
问题是,我不知道我这样做是否正确,所以我的问题是:
问题
如何正确确定我所在的单元格并获取 x 和 y 索引?
如何验证我的计算是否正确?
myLon%360 是从 myLon 转换为从 0 到 360 度的网格的正确方法吗?网格单元大小无关紧要吗?