关于拉特/长计算的快速问题。
我想拍一组值,例如Lat:55.123456 Long -6.123456并计算出任意距离的四个点。
作为给定的方格,我想在左侧和右侧计算出Latitude的值。因此红线距离起点1.5公里。同样,对于经度,蓝线距起点1.5km。输出将是4点,所有距离都以公里为单位。
简而言之:纬度+ Y =距离X公里的纬度值
目前使用iPhone进行非常粗略的数据库计算。
编辑:只是为了澄清,距离太短,曲率(因此准确性)不是问题。
答案 0 :(得分: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);
答案 1 :(得分:3)
嗯,对于距离相对较小(小于100公里)的粗略计算,您可以假设每纬度有40_000_000 / 360 = 111 111米,每经度度为111 111 * cos(纬度)米。这是因为仪表被定义为巴黎子午线的1 / 40_000_000部分;)。
否则你应该使用很大的圆距离,如评论中所述。为了获得高精度,您还需要考虑到地球是略微扁球体而不是球体。
答案 2 :(得分: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。
公式可达百公里。