【发布时间】:2016-08-04 12:15:29
【问题描述】:
我正在尝试开发一种涉及标准化 GPS 坐标(纬度/经度)的算法。这意味着,给定两个点 A (lat1,lon1) 和 B(lat2,lon2) 我想插入一个与 AB 线性的点 C(相同的弧),并放置在与 A 和 B 的特定距离处(例如:A 到 B 的距离是 0.5 公里,我希望 C 点在 AB 弧上距离 A 0.1 公里)。如何计算 C 点的坐标? 出于给定的目的,将地球近似为一个完美的球形物体就足够了。 我找到了这篇文章,但它只给出了中点的公式(为了适应,我并不完全理解)。 midpoint between two latitude and longitude 谢谢。
编辑:我试过了,但它给出了错误的答案
public static void normalizedPoint(double lat1, double lon1, double lat2, double lon2, double dist){
double constant=Math.PI/180;
double angular = dist/6371;
double a = Math.Sin( 0* angular )/Math.Sin(angular);
double b = Math.Sin(1*angular)/Math.Sin(angular);
double x = a * Math.Cos(lat1) * Math.Cos(lon1) + b * Math.Cos(lat2) * Math.Cos(lon2);
double y = a * Math.Cos(lat1) * Math.Sin(lon1) + b * Math.Cos(lat2) * Math.Sin(lon2);
double z = a * Math.Sin(lat1) + b * Math.Sin (lon2);
double lat3 = Math.Atan2(z, Math.Sqrt( x*x + y*y ));
double lon3 = Math.Atan2(y, x);
Console.WriteLine(lat3/constant + " " + lon3/constant );
}
据我了解原始公式,这应该返回 2 个原始点之一,但它没有(因为使用的分数是 1)。此外,变量 dist 是与 2 个点的距离,并且已正确计算(使用同一网站检查)。
编辑 2:我提供 2 个地理点(lat1、lon1、lat2 lon2)的输入坐标以及它们之间的距离。我正在尝试获得一个中间点 (lat3,lon3)。
【问题讨论】:
-
您查看链接的网站了吗?它在中间点下有你想要的公式。
-
谢谢,我检查了链接,但我想我没有注意到他们拥有的文字墙。我会试着写下来看看它是否正常工作:)
-
不要在评论中发布您的代码。这是不可能阅读的。改为编辑您的问题。
-
暂时假装我们不知道您向该代码提供了什么输入,您期望什么,也不知道产生了什么。你认为你也可以添加这些信息吗?
-
不是“您的参数名称和您正在寻找的名称是什么” - 具体您在此过程中运行的具体实际数字,检查输出,将它们与其他数字进行比较并能够说“那是错误的” - 你面前有这些实际例子。我们没有。
标签: c# coordinates