纬度/经度距离计算

一个关于经纬度计算的简短问题。

我想要设置一个值,例如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)