Я хочу рассчитать расстояние между двумя точками на поверхности земли в метрах
Я пробовал и с базовой картой, и с картопией, но оба результата дают разные числа.
Базовая карта:
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
где и coord0, и coord1 являются массивами numpy размера 2, имеющими широту и долготу координаты.
c0 = numpy.array([77.343750, 22.593726])
c1 = numpy.array([86.945801, 23.684774])
Вывод картопии: 990.6094719605074
Выход базовой карты: 1072.3456344712142
С базовой картой вы должны использовать правильный порядок (долгота, широта):
distance = k.inv(c0[0], c0[1], c1[0], c1[1])[-1]/1000.
и результат согласуется с Cartopy, что является правильным результатом:
990.6094719605074
@AnveshanLal Вам лучше задать новый вопрос. Больше людей увидят и помогут.
Спасибо большое, я этого не заметил. Я новичок в stackoverflow, поэтому не знаю, подходит ли это, но можете ли вы сказать мне, как воспроизвести базовую карту
npts
из класса Geod в Cartopy? Или было бы лучше задать его в отдельном вопросе?