纬度/经度距离计算
一个关于经纬度计算的简短问题。
我想要设置一个值,例如Lat:55.123456 Long -6.123456,并计算出距离任意距离的四个点。
作为给定的正方形,我想在左侧和右侧计算纬度的值。 因此红线距离起点1.5公里。 同样的经度,蓝线距离起点1.5公里。 输出将是4点,所有距离以公里为单位。
简而言之:纬度+ Y =纬度值X公里
目前与iPhone一起工作,并进行非常粗略的数据库计算。
编辑:只是为了澄清,距离是如此之短,曲率(因此准确性)不是一个问题。
在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);
那么,对于相对较小距离(小于100km)的粗略计算,您可以假设每纬度纬度为40_000_000 / 360 = 111 111米,经度为111 111 * cos(纬度)米。 这是因为米被定义为巴黎子午线的1 / 40_000_000部分;)。
否则,您应该使用大圆的距离,如评论中所述。 为了获得高精度,你还需要考虑到地球是稍扁球体而不是球体。
// 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 / centerLitude中。
公式有用达百公里。
链接地址: http://www.djcxy.com/p/70977.html上一篇: Latitude / Longitude Distance Calculation
下一篇: Calculating distance between two points (Latitude, Longitude)