5

关于纬度/经度计算的快速问题。

我想取一个值集,例如 Lat: 55.123456 Long -6.123456 并计算出任意距离的四个点。

在此处输入图像描述

作为给定的正方形,我想计算出左侧和右侧的纬度值。因此,红线距离起点 1.5 公里。同样对于经度,蓝线将距离起点 1.5 公里。输出将是 4 个点,所有距离以公里为单位。

简而言之:纬度 + Y = X 公里以外的纬度值

目前使用 iPhone 进行非常粗略的数据库计算。

编辑:澄清一下,距离太短以至于曲率(因此准确性)不是问题。

4

3 回答 3

6

在 OBJ-C 中,这应该是一个不错的解决方案:

float r_earth = 6378 * 1000; //Work in meters for everything
float dy = 3000; //A point 3km away
float dx = 3000; //A point 3km away
float new_latitude  = latitude  + (dy / r_earth) * (180 / M_PI);
float new_longitude = longitude + (dx / r_earth) * (180 / M_PI) / cos(latitude * 180/M_PI);
于 2013-03-24T21:53:00.247 回答
3

好吧,对于距离相对较小(小于 100 公里)的粗略计算,您可以假设每个纬度有 40_000_000/360=111 111 米,每经度有 111 111*cos(latitude) 米。这是因为一米被定义为巴黎子午线的 1/40_000_000 部分;)。

否则,您应该使用很大的圆距,如评论中所述。为了获得高精度,您还需要考虑到地球是略呈扁球形而不是球体。

于 2013-03-24T21:39:08.837 回答
1
// parameter: offset in meters
float offsetM = 1500; // 1.5km

// degrees / earth circumfence
float degreesPerMeter = 360.0 / 40 000 000;
float toRad = 180 / M_PI;

float latOffsetMeters = offsetM * degreesPerMeter;
float lonOffsetMeters = offsetM * degreesPerMeter * cos (centerLatitude * toRad);

现在只需将 +/- latOffsetMeters 和 +/- lonOffsetMeters 添加到您的 centerLatitude/centerLongitude。

公式可用于数百公里。

于 2013-03-24T23:53:50.563 回答