【问题标题】:Calculating a "box" around latitude and longitude coordinates in Java在Java中计算纬度和经度坐标周围的“盒子”
【发布时间】:2013-10-18 14:07:56
【问题描述】:

我试图获得两个点,A 和 B,它们在中心点 C 周围水平和垂直距离各 5 公里。 因此,A 点和 B 点创建了一个边长为 10 公里的“盒子”,而 C 点正好位于该盒子的中心。 这是我的代码:

//Distance is 5 kilometers
float distance = 5;    

float latCenter = locationInfo.lastLat;
float lngCenter = locationInfo.lastLong;

// Calculate corner point distance in lat and long
float latDelta = distance/110.54f;
float longDelta = distance/(111.320f(float)Math.cos((double)latCenter));

// Calculate coordinates of the corner points
float latA = lat - latDelta;
float longA = lng - longDelta;
float latB = lat + latDelta;
float longB = lng + longDelta;

我知道这些是近似值,但在我的情况下,误差范围约为 1 公里的近似值是可以的。 垂直距离很好(10.06km),但水平距离只有6km左右,而不是10km。

我的公式有什么问题?我猜这是一些非常简单的数学错误,但我找不到它。我需要一个非常简单快捷的代码,所以我的计算基于这个 StackOverflow 答案:Simple calculations for working with lat/lon + km distance?

【问题讨论】:

    标签: java android distance latitude-longitude


    【解决方案1】:

    我会赌 度数 vs 弧度(来自 javadoc of cos):

    public static double cos(double a)

    返回角度的三角余弦值。特别案例: 如果参数为 NaN 或无穷大,则结果为 NaN。 结果必须在正确舍入结果的 1 ulp 范围内。结果必须是半单调的。

    参数: a - 一个角度,以弧度为单位。

    返回: 参数的余弦。

    【讨论】:

      猜你喜欢
      • 2012-07-14
      • 2015-10-04
      • 2013-08-07
      • 1970-01-01
      • 2016-02-03
      • 1970-01-01
      • 2014-12-16
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多