擅长:python、mysql、java
<p><strong>更新:2018年4月:</strong>请注意,由于GeoPy版本<a href="https://geopy.readthedocs.io/en/stable/#module-geopy.distance" rel="noreferrer">1.13</a>,Vincenty distance已被弃用-您应该改用GeoPy.distance.distance()!</p>
<hr/>
<p>上面的答案是基于<a href="https://en.wikipedia.org/wiki/Haversine_formula" rel="noreferrer">Haversine formula</a>,它假设地球是一个球体,结果误差高达0.5%(根据<code>help(geopy.distance)</code>)。<a href="https://en.wikipedia.org/wiki/Vincenty%27s_formulae" rel="noreferrer">Vincenty distance</a>使用更精确的椭球模型,如<a href="https://en.wikipedia.org/wiki/World_Geodetic_System" rel="noreferrer">WGS-84</a>,并在<a href="https://pypi.python.org/pypi/geopy" rel="noreferrer">geopy</a>中实现。例如</p>
<pre><code>import geopy.distance
coords_1 = (52.2296756, 21.0122287)
coords_2 = (52.406374, 16.9251681)
print geopy.distance.vincenty(coords_1, coords_2).km
</code></pre>
<p>将使用默认椭球WGS-84打印<code>279.352901604</code>公里的距离。(您也可以选择<code>.miles</code>或其他几个distance units之一)。</p>