【问题标题】:How can I get the latitude and longitude of “x” meter from ref latitude and longitude?如何从参考纬度和经度中获得“x”米的纬度和经度?
【发布时间】:2011-07-06 07:37:13
【问题描述】:

我有一个以米为单位的距离和参考纬度和经度。现在我想要在四个方向(南、北、东和西)上 x 米上的给定参考点的纬度和经度。

我怎样才能得到这个值?

我需要用 C# 编写此代码,但欢迎提供任何伪代码或逻辑指导。

更新:

我有一个坐标作为参考点,我想计算北方向 5 米的距离,保持经度不变。所以我想计算距离我的参考点5米处的纬度。同样,我必须对东西方向的所有 3 个方向都做同样的事情,我将经度保持为常数。

如果我们可以使用任何公式,请告诉我。

【问题讨论】:

  • 查看此站点:movable-type.co.uk/scripts/latlong.html。有计算地球上两点之间距离的解决方案,所以它应该很容易被你的问题所采用。
  • 上次我为此做了 4 或 5 个申请。至少我长期使用 Drupal 的数据库,另一种好方法是谷歌地图 API。我知道没关系,但最好的方法是 google api 或使用免费的 drupal 的数据库。

标签: c# latitude-longitude


【解决方案1】:

它必须有多准确?您通常可以假设地球是一个半径为 6360 公里的球体。在这种情况下,北或南 1 度是 10000/90 公里(这就是米的定义方式)。东/西只是稍微硬一点,东一度是 10000/90 公里 * cos(纬度)。

【讨论】:

  • +1 - 不错,简单的方法。而不是 100 公里,我会使用 111 公里进行两次计算(请参阅table in Wikipedia
  • 中间方向(西北、东南、西南等)呢?
  • @TheDarkLord:分解成主要方向。西北 10 公里是10/sqrt(2) 北公里和10/sqrt(2) 西公里。
  • 哦,对了,愚蠢的问题...至于西位移与东位移相同,只是用“-”对吗?含义 -10000/90 km * cos(纬度)
【解决方案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#

【讨论】:

    【解决方案3】:

    来自军械调查的spreadsheet 包含可以转换的 vb 脚本宏中的完整转换。

    它应该能够根据度数和时间为您提供新的位置。

    重新格式化纬度和经度 之间的坐标:度,分 &秒;十进制度;和 度数和十进制分钟格式。

    【讨论】:

      【解决方案4】:

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

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

      【讨论】:

        猜你喜欢
        • 2013-02-21
        • 1970-01-01
        • 2011-08-28
        • 2011-08-18
        • 2013-11-17
        • 2020-07-19
        • 2017-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多