为什么Cartopy和底图的反函数计算距离的结果不同?

时间:2019-05-30 14:16:16

标签: matplotlib-basemap cartopy pyproj

我想以米为单位计算地球表面两点之间的距离

我曾经尝试过使用底图和Cartopy,但是两者都得出不同的数字。

底图:

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

其中coord0和coord1都是大小为2的numpy数组,坐标为lat和lon。

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

Cartopy输出:990.6094719605074

底图输出:1072.3456344712​​142

1 个答案:

答案 0 :(得分:0)

对于底图,必须使用正确的顺序(长,纬度):

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

结果将与Cartopy的一致,这是正确的结果:

990.6094719605074