Почему обратная функция из карт и базовой карты имеет разные результаты для вычисления расстояния? - PullRequest
1 голос
/ 30 мая 2019

Я хочу вычислить расстояние между двумя точками на поверхности земли в метрах

Я пробовал и с базовой картой, и с картопом, но оба результата приводят к разным числам.

Базовая карта:

import mpl_toolkits.basemap.pyproj as pyproj

k = pyproj.Geod(ellps="WGS84")
distance = k.inv(c0[1], c0[0], c1[1], c1[0])[-1]/1000.

Cartopy:

import cartopy.geodesic as gd

k = gd.Geodesic() // defaults to WGS84
distance = k.inverse(c0, c1).base[0,0]/1000

, где Координаты0 и Координаты1 представляют собой массивы размером 2, имеющие координаты широты и долготы.

c0 = numpy.array([77.343750, 22.593726])
c1 = numpy.array([86.945801, 23.684774])

Вывод карт: 990.6094719605074

Вывод базовой карты: 1072.3456344712142

1 Ответ

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

При использовании базовой карты вы должны использовать правильный порядок (long, lat):

distance = k.inv(c0[0], c0[1], c1[0], c1[1])[-1]/1000.

, и результат будет совпадать с Cartopy's, что является правильным результатом:

990.6094719605074
...