很多时候,我正在寻找一种方法来计算两个地方(通常是市中心)之间的航空距离。
例如,当我从苏黎世飞往赫尔辛基时,我想知道它有多远。使用Google Maps,我可以做到,但不能达到航空距离。
那么,有没有人知道执行此操作的工具,或者可以给我一些有关如何使用地理坐标手动执行操作的建议?然后,我可以编写自己的小工具。
很多时候,我正在寻找一种方法来计算两个地方(通常是市中心)之间的航空距离。
例如,当我从苏黎世飞往赫尔辛基时,我想知道它有多远。使用Google Maps,我可以做到,但不能达到航空距离。
那么,有没有人知道执行此操作的工具,或者可以给我一些有关如何使用地理坐标手动执行操作的建议?然后,我可以编写自己的小工具。
Answers:
对于所有推荐使用Great Circle数学的回答者,您只是部分正确。
球体上两点之间的距离由GC Maths确定,但是OP特别要求提供空中距离。这是通过首先找到在到达目的地的途中访问的所有点,然后计算所有路径对的GC距离来找到的。
例如,从伦敦到纽约的飞行不遵循两点之间的大圆路径。它遵循一组点,其中可能包括导航点,航路点,航空,出发路线,到达路线,经纬度/经度定位和范围方位点。有关更多信息,请参见飞行计划。
因此,您需要联系所涉及的航空公司,很好地询问所使用的飞行计划,并找到所访问的每个点的经纬度。
许多航空公司在其日程安排中都包含此信息。例如,加拿大航空可让您下载其整个时间表的PDF。这里有一个片段:
我建议搜索您打算使用的航空公司的网站。任何基于城市实际距离的工具都可能与航空公司的距离相差20-30英里。
如果要对飞行进行此计算,则必须使用Gagravarr提到的余弦球定律。但是,如果您想编写自己的小工具并想在地图上画一条线,那会有些棘手。您将不得不使用Lambert投影图在其上从A到B绘制一条直线。Lambert保形圆锥投影的问题在于,这些贴图仅在两个参考平行线上是准确的,并且您离它们越远,它们的精确度就越低。这通常不是问题,并且在仅覆盖100x100公里的小型地图上会出现问题,但是地图越大,误差范围越大。这与地球是圆形的事实有关,您不能从圆形到平坦的表面进行精确的1:1映射。
Google地图(以及所有海图)都使用圆柱地图投影,这意味着您必须在地图上绘制曲线才能获得与在Lambert投影上使用直线相同的路线。
除了已经提到的选项之外,milecalc.com还将使用大圆圈距离进行此计算,该距离通常用于飞行常客里程计算等。
看到这里:http : //www.movable-type.co.uk/scripts/latlong.html
var R = 6371; // Earth's average radius in km
var dLat = (lat2-lat1).toRad();
var dLon = (lon2-lon1).toRad();
var lat1 = lat1.toRad();
var lat2 = lat2.toRad();
var a = Math.sin(dLat/2) * Math.sin(dLat/2) +
Math.sin(dLon/2) * Math.sin(dLon/2) * Math.cos(lat1) * Math.cos(lat2);
var c = 2 * Math.atan2(Math.sqrt(a), Math.sqrt(1-a));
var d = R * c;
我使用luftlinie.org或其盎格鲁派弟弟distance.to。
当我需要测量距离时,我使用wdistances.com。苏黎世到赫尔辛基的距离是1104,42英里航空线距离。