Индексы двумерных данных

Я пытаюсь найти эквивалент (если таковой существует) функции NCL, которая возвращает индексы двумерных массивов широты / долготы, наиболее близких к указанной пользователем координатной паре широта / долгота.

Это ссылка на функцию NCL, которая, я надеюсь, эквивалентна в python. На данный момент я подозреваю, что нет, поэтому любые советы о том, как получить индексы из координат широта / долгота, приветствуются

https://www.ncl.ucar.edu/Document/Functions/Contributed/getind_latlon2d.shtml

Прямо сейчас, мои значения координат сохранены в файле.nc и читаются:

coords='coords.nc'
fh = Dataset(coords, mode='r')
lons = fh.variables['g5_lon_1'][:,:]
lats = fh.variables['g5_lat_0'][:,:]
rot = fh.variables['g5_rot_2'][:,:]
fh.close()

2 ответа

Я не уверен, как массивы lon/lat хранятся при чтении в python, поэтому, чтобы использовать следующее решение, вам может понадобиться преобразовать lon/lat в numpy массивы. Вы можете просто поместить abs(array-target).argmin() в функцию.

import numpy as np

# make a dummy longitude array, 0.5 degree resolution.
lon=np.linspace(0.5,360,720)

# find index of nearest longitude to 25.4 
ind=abs(lon-25.4).argmin()

# check it works!  this gives 25.5 
lon[ind]  

Я нашел scipy пространственный.KDTree может выполнить аналогичную задачу. Вот мой код нахождения сетки модели, которая находится ближе всего к месту наблюдения

from scipy import spatial
from netCDF4 import Dataset

# read in the one dimensional lat lon info from a dataset
fname = '0k_T_ann_clim.nc'  
fid   = Dataset(fname, 'r')

lat  = fid.variables['lat'][:] 
lon  = fid.variables['lon'][:]
# make them a meshgrid for later use KDTree
lon2d, lat2d = np.meshgrid(lon, lat)
# zip them together
model_grid = list( zip(np.ravel(lon2d), np.ravel(lat2d)) ) 

#target point location : 30.5N, 56.1E
target_pts = [30.5 56.1]   
distance, index = spatial.KDTree(model_grid).query(target_pts)
# the nearest model location (in lat and lon)
model_loc_coord = [coord for i, coord in enumerate(model_grid) if i==index]
Другие вопросы по тегам