Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/cmake/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
将km转换为gps坐标_Gps - Fatal编程技术网

将km转换为gps坐标

将km转换为gps坐标,gps,Gps,我必须看看是否有一些GPS坐标在我创建的圆中。当我说我正在创建那个圆时,我指的是:我有lat1,long1, 我的实际位置,我想测试是否有任何数据围绕这个位置,但 不远一公里。我试着用圆不等式:(x2-a2)2+(y2-b2)2纬度/Lng坐标不适用于Phytagoras公式,因为地球是一个球体,而不是平面 请参阅本手册: 你需要一个距离方程,看看你的纬度/lng和圆心的纬度/lng之间的距离是否小于R。这并不是那么简单。通常不能使用欧几里德距离。我认为你可以这样做: 正确的方法 正确的方法是

我必须看看是否有一些GPS坐标在我创建的圆中。当我说我正在创建那个圆时,我指的是:我有lat1,long1, 我的实际位置,我想测试是否有任何数据围绕这个位置,但
不远一公里。我试着用圆不等式:
(x2-a2)2+(y2-b2)2纬度/Lng坐标不适用于Phytagoras公式,因为地球是一个球体,而不是平面

请参阅本手册:


你需要一个距离方程,看看你的纬度/lng和圆心的纬度/lng之间的距离是否小于R。

这并不是那么简单。通常不能使用欧几里德距离。我认为你可以这样做:

正确的方法 正确的方法是计算大圆距离(地面上最短的步行距离),我从来没有真正理解过这一点,但是谷歌搜索很容易(adamk已经给了你一个链接)

懒惰的方式 假设你的点不是太靠近极点,而是彼此靠近。然后你可以使用纬度和经度,就像它们是欧几里德坐标一样。(这基本上是一些)。1度纬度将是(地球周长/360)长,1度经度将是(cos(纬度)*地球周长/360)长

完整的代码如下所示:

double distance_lazy(double lat1, double lon1, double lat2, double lon2){
    double xDist = (lat2 - lat1) * EARTH_CIRCUMFERENCE / 360.0;
    double yDist = cos(lat1) * (lon2 - lon1) * EARTH_CIRCUMFERENCE / 360.0;
    return sqrt(xDist^2 + yDist^2);
}
如果你们之间的距离只有几公里,这对整个欧洲来说应该很好。。。差不多吧

“奇怪的定义”方式 你可以说的另一件事是,“距离”是两个点之间的直线长度,即使它穿过地球。然后计算点的三维坐标,然后计算它们的欧几里德距离

double distance_straight_line(double lat1, double lon1, double lat2, double lon2){
    double x1 = cos(lat1) * cos(lon1) * EARTH_RADIUS;
    double y1 = sin(lat1) * cos(lon1) * EARTH_RADIUS;
    double z1 = sin(lon1) * EARTH_RADIUS;

    double x2 = cos(lat2) * cos(lon2) * EARTH_RADIUS;
    double y2 = sin(lat2) * cos(lon2) * EARTH_RADIUS;
    double z2 = sin(lon2) * EARTH_RADIUS;

    return sqrt((x2 - x1)^2 + (y2 - y1)^2 + (z2 - z1)^2);
}
同样,这将像预期的那样对彼此接近的点起作用,这一次它们可以在世界任何地方。如果你给它的分数彼此相差很远,输出将是正确的,但毫无用处(除非你非常擅长挖掘)


希望有帮助。

我正在尝试使用圆不等式:(x2-a2)2+(y2-b2)2