php中两个坐标之间的距离使用haversine

Posted

技术标签:

【中文标题】php中两个坐标之间的距离使用haversine【英文标题】:Distance between two coordinates in php using haversine 【发布时间】:2013-02-28 16:26:21 【问题描述】:

我环顾四周,看到提到用半正弦公式来确定两个坐标 (lat1, lng1) 和 (lat2, lng2) 之间的距离。

我已经实现了这段代码:

    function haversineGreatCircleDistance(
  $latitudeFrom, $longitudeFrom, $latitudeTo, $longitudeTo, $earthRadius = 6371000)

  // convert from degrees to radians
  $latFrom = deg2rad($latitudeFrom);
  $lonFrom = deg2rad($longitudeFrom);
  $latTo = deg2rad($latitudeTo);
  $lonTo = deg2rad($longitudeTo);

  $latDelta = $latTo - $latFrom;
  $lonDelta = $lonTo - $lonFrom;

  $angle = 2 * asin(sqrt(pow(sin($latDelta / 2), 2) +
    cos($latFrom) * cos($latTo) * pow(sin($lonDelta / 2), 2)));
  return $angle * $earthRadius;

我正在尝试确定:

1) 这将返回什么单位? (目标是英尺)

2) 这个等式写对了吗?

例如这两点之间的距离应该是多少?

(32.8940695525,-96.7926336453)和(33.0642604502,-96.8064332754)?

我从上面的公式得到 18968.0903312。

谢谢!

【问题讨论】:

【参考方案1】:

1) 这将返回什么单位? (目标是英尺)

你提供地球半径的任何单位。

2) 这个等式写对了吗?

测试一下。您可以将结果与现有的 Haversine 公式实现进行比较,例如 this one。

【讨论】:

既然我将地球的半径设置为 $earthRadius = 6371000,那么单位是米吗?

以上是关于php中两个坐标之间的距离使用haversine的主要内容,如果未能解决你的问题,请参考以下文章

PHP 计算两个坐标之间的距离(纬度,经度)

PHP计算两个坐标之间的距离

如何使用 Mapbox Kotlin 计算两个坐标之间的距离

计算两个纬度坐标之间的距离/方位

计算Excel表格中两个地方之间的地理坐标距离

计算两个坐标之间的距离,考虑高度变化的短距离