两条路径之间的最大间隔距离

时间:2015-11-20 22:30:40

标签: geography

我有2条地理路径,每条路径由多个点(纬度和经度)组成。 两个路径都以相同的坐标开始和结束。 如何找到2条路径之间的最大间隔距离?

1 个答案:

答案 0 :(得分:0)

您可以使用毕达哥拉斯(Pythagoras)计算路径距离的最大值。定理,并使用sqrt(pow((lat2 - lat1), 2) + pow((long2 - long1), 2))。如果需要更高的精度,您可能会也可能不会使用Haversine公式(地球是一个球体,对于使用适合平面几何的公式的长路径会产生相当大的误差)

可以用C语言实现Haversine:

float R = 6371.0; //Radius of the earth in km
float dlat = lat2 - lat1; //latitudes in radians
float dlong = long2 - long1;
float a = sin(dlat/2)*sin(dlat/2) + cos(lat1)*cos(lat2)*sin(dlong/2)*sin(dlong/2);
float c = 2 * atan2( sqrt(a), sqrt(1-a) );
float d = R * c; //distance in km

将十进制度数转换为弧度:

float toRad(float degrees_coord) { 
  return degrees_coord * MATH_PI / 180.0;
}

MATH_PI,sqrt()和pow()都在库math.h中 请记住#include <math.h>

如果两条路径的长度不同,则必须重新映射采样:说路径#1有100步,路径#2有150步,即路径#1和步骤30的步骤20的位置路径#2将用于计算距离。

通过所有步骤迭代此过程并查找最高值可能是一种有效的方法。