Вычисление расстояния большого круга в R - PullRequest
0 голосов
/ 21 мая 2019

Раньше в MATLAB я вычислял индекс точки по ее широте и долготе с помощью вычисления большого расстояния по кругу. Я поделюсь своим кодом с вами. Я довольно озадачен тем, как будет выглядеть эквивалентная функция в R или существует ли? Я нашел некоторый код, который показывает расстояние между двумя точками, но ни один, который помогает мне индексировать мои данные.

Это мой код MATLAB!

%% Define latlon grid and coordinates (lon follows lat) 

lon_grid = transpose([40.1 40.12 40.14; 40.3 40.32 40.34; 40.5 40.52 40.54]);
lat_grid = transpose([30 30.2 30.4;30.02 30.22 30.42; 30.04 30.24 30.44]);
coord = [30.4125 40.4043];

%% Compute great circle distance
dist = distance('gc',coord(1),coord(2),lat_grid,lon_grid);

%% Retrieve index of minimum distance
[value,array_index] = min(distance(:));
[i,j] = ind2sub(size(dist),array_index);

Расчет "dist" - это своего рода партия. Вы должны быть в состоянии использовать предоставленный код для воспроизведения результатов и посмотреть, чего я надеюсь достичь в R.

Опять же, что может быть дано сравнимой функции в R, у меня есть следующее: Сетка точек широты Сетка точек долготы Две точки, в градусах, для широты и долготы моей позиции.

1 Ответ

0 голосов
/ 21 мая 2019

возможно это работает:

library(geoshpere)

dist<-apply(coord, 1, FUN=function(p) distHaversine(p, lonlat_matrix))

...