按纬度和经度查找距离

时间:2010-11-13 16:30:44

标签: asp.net

我只是陷入了奇怪的计算中。

我试图通过使用本网站提到的这个公式来查找纬度和经度的距离。

http://www.movable-type.co.uk/scripts/latlong.html

当我通过计算器执行此操作时,每件事情都很好但是当我开始通过编程方式执行此操作时,结果会有所不同。

这是我的代码部分

lat = Convert.ToDouble( (s3[a]));
                longt =Convert.ToDouble( (s4[a]));
                Avg_lat = pc._Latitude - lat;
                Avg_longt = pc._Longitude - longt;


            a_hold =( Math.Sin(Avg_lat / 2) * Math.Sin(Avg_lat / 2) )+ (Math.Cos(pc._Latitude) * Math.Cos(lat)) * (Math.Sin(Avg_longt / 2) * Math.Sin(Avg_longt / 2));
            c_hold = 2 * Math.Atan2(Math.Sqrt(a_hold), Math.Sqrt(1 - a_hold));
           // c_hold = (c_hold * 180) / 3.12;
            distance = 6371 * c_hold;

问题是这里的数学函数以弧度计算我希望它的度数。所以我刚刚找到了一个将弧度转换为度数的公式,但该公式不能正确转换计算。

我只是很困惑该怎么做bcoz没有任何其他选项将弧度转换为度数。

3 个答案:

答案 0 :(得分:3)

您是否正确转换并在所有必要的地方?正确的弧度到度数公式是乘以(180.0 / Math.PI),度数到弧度的公式是乘以(Math.PI / 180.0)

您需要对Math.SinMath.Cos的参数进行度数到弧度的转换。如果您尝试在度数模式下模拟科学计算器的输出,则需要对Math.Atan2的返回值进行弧度到度数的转换,但是您链接到的网页上的公式表示这样做(仅转换输入)。

答案 1 :(得分:1)

您可以找到一个函数的Java实现,该函数计算LinkedIn's datafu项目中两个纬度 - 经度对之间的距离。

答案 2 :(得分:0)

您的计算器将有一个弧度选项,因此您可以验证转换。

Radians = Degrees * PI / 180