我有2条地理路径,每条路径由多个点(纬度和经度)组成。 两个路径都以相同的坐标开始和结束。 如何找到2条路径之间的最大间隔距离?
答案 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将用于计算距离。
通过所有步骤迭代此过程并查找最高值可能是一种有效的方法。