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

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

Я пробовал использовать как базовую карту, так и картографию, но оба результата дали разные числа.

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

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.

Картопия:

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


person Anveshan Lal    schedule 30.05.2019    source источник


Ответы (1)


С базовой картой вы должны использовать правильный порядок (долгота, широта):

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

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

990.6094719605074
person swatchai    schedule 30.05.2019
comment
Большое спасибо, что я этого не заметил. Я новичок в stackoverflow, поэтому не знаю, подходит ли он, но не могли бы вы сказать мне, как реплицировать npts из класса Geod базовой карты в Cartopy? Или было бы лучше задать это отдельным вопросом? - person Anveshan Lal; 31.05.2019
comment
@AnveshanLal Тебе лучше задать новый вопрос. Еще люди увидят и помогут. - person swatchai; 31.05.2019