计算一个位置到许多其他位置之间的接近度

时间:2012-07-19 04:47:33

标签: c# php math geolocation proximity

我有一个包含纬度和经度列表的数据库

-DeviceName
-Latitude
-Longitude

鉴于我当前设备的纬度和经度,我想让数据库列表中的所有设备距离/接近X公里。

如何计算我的位置与其他位置的距离?

2 个答案:

答案 0 :(得分:0)

我想你想看看这个amazing presentation。它会告诉你如何使用(以及奖励积分解释!)haversine formula来计算地球表面的距离以解释曲率以及如何避免数据库查询中的一些常见错误等。他的数据集很漂亮你的确是什么 - 物品,经度和纬度。

答案 1 :(得分:0)

如果您正在使用原始代码,这可以帮助您:

private static Double rad2deg(Double rad) {
    return (rad / Math.PI * 180.0);
}

private static Double deg2rad(Double deg) {
    return (deg * Math.PI / 180.0);
}

private const Double kEarthRadiusKms = 6376.5;

private static Double CalculateDistance(Double latitude1, Double longitude1, Double latitude2, Double longitude2) {
    double theta = longitude1 - longitude2;
    double dist = Math.Sin(deg2rad(latitude1)) * Math.Sin(deg2rad(latitude2)) + Math.Cos(deg2rad(latitude1)) * Math.Cos(deg2rad(latitude2)) * Math.Cos(deg2rad(theta));
    dist = Math.Acos(dist);
    dist = rad2deg(dist);
    dist = dist * 60 * 1.1515;
    dist = dist * 1.609344;
    return (dist);
}