PHP中使用haversine的两个坐标之间的距离 [英] Distance between two coordinates in php using haversine

查看:51
本文介绍了PHP中使用haversine的两个坐标之间的距离的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我环顾四周,并提到提到hasversine公式来确定两个坐标(lat1,lng1)和(lat2,lng2)之间的距离.

I've looked around and seen mention of the haversine formula to determine distance between two coordinates (lat1, lng1) and (lat2, lng2).

我已经实现了以下代码:

I've implemented this code:

    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)这个等式的书写方式正确吗?

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

For example what should be the distance between these two points?

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

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

我从上面的公式中得到18968.0903312.

I'm getting 18968.0903312 from the formula above.

谢谢!

推荐答案

1)这将返回什么单位?(目标在脚下)

1) what units this is returning? (goal being in feet)

提供地球半径的任何单位.

Whatever units in which you supply the Earth's radius.

2)这个公式写的正确吗?

2) is this equation written the right way?

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

Test it. You can compare your results with an existing Haversine formula implementation, like this one.

这篇关于PHP中使用haversine的两个坐标之间的距离的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆