如何根据参考经纬度获取距离“x”米的经纬度?

4
我有一个距离(以米为单位),以及参考纬度和经度。现在我想在四个方向上(南、北、东、西)从给定的参考点上x米得到纬度和经度。
如何获得这个值?
我需要用C#编写这个程序,但是任何伪代码或逻辑指导都将受到欢迎。
更新:
我有一个坐标作为参考点,从中我想计算在北向5米处保持经度不变的距离。因此,我想计算距离我的参考点5米处的纬度。同样,我必须对所有3个方向进行操作,在东西方向上,我将经度保持不变。
请告诉我我们可以使用哪些公式。

请查阅以下网站:http://www.movable-type.co.uk/scripts/latlong.html 。该网站提供了计算地球上两点距离的解决方案,因此您可以很容易地将其应用于您的问题。 - zgorawski
上次我为此制作了4或5个应用程序。至少我使用了Drupal的数据库来获取经纬度,另一个很好的方法是使用Google地图API。我知道这不重要,但最好的方法是使用Google API或使用免费的Drupal数据库。 - user605334
5个回答

9

需要多精确?通常可以假设地球是半径为6360公里的球体。在这种情况下,一度南北距离是10000/90公里(这就是米的定义)。东西方向略微困难,一度东经是10000/90公里 * cos(纬度)。


4
+1 - 不错,这是一种简单易行的方法。计算时不必使用100公里,可以使用111公里(请参见维基百科上的表格)。 - Justin
中间方向(西北,东南,西南等)怎么办? - TheDarkLord
@TheDarkLord:分解为基本方向。10公里西北是10/sqrt(2)公里北和10/sqrt(2)公里西。 - MSalters
哦,对不起,这是个愚蠢的问题... 至于西向位移,它与东向相同,只是加上“-”对吧?也就是说,-10000/90公里 * cos(纬度)。 - TheDarkLord

2

Javascript例子:

function translateCoordinates(distance, Lat,Lng, angle) {
    distanceNorth = Math.sin(angle) * distance;
    distanceEast = Math.cos(angle) * distance;
    earthRadius = 6371000;
    newLat = Lat + (distanceNorth / earthRadius) * 180 / Math.PI;
    newLon = Lng + (distanceEast / (earthRadius * Math.cos(newLat * 180 / Math.PI))) * 180 / Math.PI;

    return [newLat, newLon];
}

因此,您可以将其转换为C#。


1

这个电子表格来自军械测量局,包含了可以转换的VB脚本宏的完整转换。

它应该能够根据度数和时间给出新的位置。

重新格式化纬度和经度坐标,包括:度、分和秒;十进制度数;以及度和十进制分钟格式。


1
我在StackExchange上找到了一个答案,标题为《理解长度度公式中的术语》的文章。 它使用了与维基百科页面《地球半径》中相同的公式。 这个公式在这个C程序中:
void Radii(double lat)
{
    double deg2rad = 3.141592653589793 / 180.0; // PI
    double a = 6378.1370; // radius at equator in kilometers
    double e2 = 0.0066943799901413165;
    double OneMinus_e2 = 1.0 - 0.0066943799901413165;
    double deg2radX1000 = (PI/180.0)*1000.0;

    lat *= deg2rad;
    u = 1.0-e2*sin(lat)*sin(lat);
    latmetersperdegree = (OneMinus_e2/u)*(a/sqrt(u))*deg2radX1000; 
    lonmetersperdegree = cos(lat)*(a/sqrt(u))*deg2radX1000;
}

我在计算机屏幕上将米表示为像素,已知纬度放置在屏幕上的已知水平/垂直像素位置。 我使用已知纬度和垂直像素位置之间的比例来获取该垂直像素处的已知纬度。 我必须假设纬度度数的变化在屏幕的顶部和底部之间没有显著差异,以至于不会影响结果 (它们曾被定义为每度60海里), 并且在新的纬度/经度处,纬度每度米/经度每度米与已知纬度处的值没有显著差异。 可以通过使用纬度和经度每度米来计算出由计算得到的垂直/水平像素位置所对应的纬度和经度度数。

0

另一种计算方法是将角度转换为弧度:π弧度等于180度。关于弧度的简单点是圆(地球表面)上的长度是半径×弧度。因此,1度×π/180×6360公里=110.947公里,其中π=3.14。

纬度和经度值分别向南北和东西移动,因此如果移动沿着它们的方向,则可以将上述计算映射到它们,否则必须使用正弦和余弦函数进行映射。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接