【问题标题】:How to find Bottom-left and Top-right latitude and longitude from given latitude and longitude?如何从给定的纬度和经度中找到左下角和右上角的纬度和经度?
【发布时间】:2013-03-22 08:52:17
【问题描述】:

我想按以下方式转换给定的纬度和经度:-

  1. 左下纬度
  2. 左下经度
  3. 右上纬度
  4. 右上角的经度

例如,我有一个纬度:29.0167 和经度:77.3833。现在如何将这些坐标转换为左下纬度、左下经度、右上纬度和右上经度。

请任何人帮助我。

【问题讨论】:

标签: c# google-maps google-maps-api-3 map latitude-longitude


【解决方案1】:

计算两点之间的距离。如果距离很小(比如 100 公里左右),那么您通常可以使用平面地球近似值。对于更长的距离,您需要使用“大圈”距离。 AKA Haversine 公式。您计算的这个距离是正方形的对角线距离。有关您需要的所有公式,请参见此站点:http://www.movable-type.co.uk/scripts/latlong.html

计算从左下角到右上角的方位角。同样,请参阅上面的网站以计算两个纬度/经度点之间的方位。

要获得右下角,您知道框边的距离是对角线距离除以 2 的平方根。这是来自直角三角形几何:x^2 + x^2 = 斜边。

根据上面计算的方位,加上 45 度。您现在有了一个范围 (D/sqrt(2)) 和一个指向右下角的方位。使用上面的网站,从带有范围和方位的 lat/lon 计算 lat/lon。

通过减去 45 度重复左上角。

【讨论】:

    【解决方案2】:

    我不确定我是否理解您想要做什么,但如果我理解,您可以使用 Math.Floor 和 Math.Ceiling。他们给你的第一个整数更小,提供的数字分别更大。

    float lon =77.38;
    float lat = 29.01;
    float loLat=Math.Floor(lat); //29
    float upLat=Math.Ceiling(lat); //30
    float loLon=Math.Floor(lat); //77
    float upLon=Math.Ceiling(lat); //78
    

    然后您可以从中计算出您想要的角。

    【讨论】:

    • 你能具体说明为什么它不能解决它。我仍然不确定你到底想得到什么。也许提供一个精心设计的输入和期望输出示例。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-02-20
    相关资源
    最近更新 更多