gpt4 book ai didi

C# 查找两个纬度/经度的中点

转载 作者:太空狗 更新时间:2023-10-29 20:37:32 25 4
gpt4 key购买 nike

我需要找到两个纬度/经度点之间的中点。

我正在尝试将我绘制的两个位置之间的 map 居中,并且需要找到该点。

我已经从我找到的其他示例中编写了这个函数,但它似乎不起作用。

    public static void midPoint(double lat1, double lon1, double lat2, double lon2, out double lat3_OUT, out double lon3_OUT)
{
//http:// stackoverflow.com/questions/4656802/midpoint-between-two-latitude-and-longitude
double dLon = DistanceAlgorithm.Radians(lon2 - lon1);

//convert to radians
lat1 = DistanceAlgorithm.Radians(lat1);
lat2 = DistanceAlgorithm.Radians(lat2);
lon1 = DistanceAlgorithm.Radians(lon1);

double Bx = Math.Cos(lat2) * Math.Cos(dLon);
double By = Math.Cos(lat2) * Math.Sin(dLon);
double lat3 = Math.Atan2(Math.Sin(lat1) + Math.Sin(lat2), Math.Sqrt((Math.Cos(lat1) + Bx) * (Math.Cos(lat1) + Bx) + By * By));
double lon3 = lon1 + Math.Atan2(By, Math.Cos(lat1) + Bx);

lat3_OUT = lat3;
lon3_OUT = lon3;
}

这是一个示例输出。

lat1  37.7977008
lat2 37.798392
lon1 -122.1637914
lon2 -122.161464
lat3 0.65970036060147585
lon3 -2.1321400763480485

参见 Lat3 和 Lon3。

谢谢!

最佳答案

看来您的输出是正确的只是它以弧度为单位并且您期望的是度数?您可能需要将弧度转换为度数以满足预期的输出。

-(2.1321400763480485 radians) = -122.162628 degrees
0.65970036060147585 radians = 37.7980464 degrees

看起来您已经在使用 Jon Martin 和 IanDotKelly 提到的大圆算法。

关于C# 查找两个纬度/经度的中点,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6830959/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com