我有特定地点的经度和纬度,我想计算距离,所以我怎么计算它?如何计算经度和纬度两点之间的距离?
回答
CLLocation *location1 = [[CLLocation alloc] initWithLatitude:lat1 longitude:long1];
CLLocation *location2 = [[CLLocation alloc] initWithLatitude:lat2 longitude:long2];
NSLog(@"Distance i meters: %f", [location1 distanceFromLocation:location2]);
[location1 release];
[location2 release];
您还需要添加CoreLocation.framework
到您的项目,并添加import语句:
#import <CoreLocation/CoreLocation.h>
这可能不是这样做的最有效的方法,但它会奏效。
您可以将经纬度指定的两个位置视为向量。假定坐标已被转换成cartesion坐标,计算两个向量的点积。
由于V1 =(X1,Y1,Z1)和V2 =(X2,Y2,Z2),然后...
v1 dot v2 = magnitude(v1) * magnitude(v2) * cos (theta)
便利,V1和V2的幅度是一样的..地球的半径(R)。
x1*x2 + y1*y2 + z1*z2 = R*R*cos(theta)
解决θ。
theta = acos ((x1*x2 + y1*y2 + z1*z2)/(R * R));
现在你有两个向量之间的角度弧度。悫当旅行横跨地球的表面是这样的两个点的距离...
distance = theta * R.
有可能是一个更简单的方法完全球面坐标的范围内做到这一点,但我在这方面的数学太模糊 - 因此转换为笛卡尔坐标。
要转换成直角坐标系...
让阿尔法是纬度,和β是经度。
x = R * cos (alpha) * cos (beta)
y = R * sin (alpha)
z = R * cos (alpha) * sin (beta)
不要忘记,数学函数通常以弧度为单位,纬度/经度以度为单位。
请注意,这是一个近似值,因为地球更像是一个扁球体(它变成梨形,更准确),其表面不平整。 – outis 2010-04-16 18:32:35
请参阅'proj.4'网站,以了解地球使用球形模型的错误(http://trac.osgeo.org/proj/wiki/GeodesicCalculations)。底线,他们说,如果你为R选择一个好的价值,你可以用这种方法在1%以内。 – mtrw 2010-04-17 00:00:35
+1。据推测,这个答案可能是“如何计算一个大圆路线”(航海导航术语)。 UPVOTE免责声明:我没有能力验证这个数学。我只是羡慕制作它的能力,我推崇清晰的表述。 – Smandoli 2010-04-19 15:49:16
我已经完成了数学计算,现在可以大大简化解决方案。
想象一下,如果我们旋转地球,使我们的第一个矢量在0度和0度的经度。第二个矢量将位于(alpha2 - alpha1)纬度和(beta2 - beta1)纬度。
由于...
sin(0) = 0 and cos(0) = 1
我们的点积simplies到...
cos(delta_alpha) * cos(delta_beta) = cos(theta)
数学的其余部分保持不变。
theta = acos (cos(delta_alpha) * cos(delta_beta))
distance = radius * theta
希望这会有所帮助。
- 1. 计算两个纬度 - 经度点之间的距离? - 钛
- 2. 计算两点之间的距离(经度,纬度)
- 3. 如何找到纬度/经度/纬度点之间的距离?
- 4. 使用纬度经度和海拔(海拔)计算两点之间的距离
- 5. PIG:计算纬度和经度对之间的最大距离
- 6. Sql查询计算2纬度和经度之间的距离
- 7. J2ME - 计算2纬度和经度之间的距离
- 8. 如何使用angulajs计算两个纬度和经度之间的距离?
- 9. 两个经纬度之间的距离
- 10. 分别计算两个纬度和两个经度之间的距离
- 11. 计算距离另一纬度/经度点米的纬度和经度
- 12. 计算两个长/经纬度之间的距离
- 13. 在excel中,如何计算两组大点与经纬度之间的距离?
- 14. 如何快速估算两个(纬度,经度)点之间的距离?
- 15. SQL Server计算2组经度/纬度列之间的距离
- 16. 如何计算距离另一点一定距离的点的纬度/经度?
- 17. 计算两个纬度和经度地理坐标之间的距离
- 18. 用于计算两个纬度和经度之间距离的MySQL函数
- 19. 使用rethinkdb 2个经纬度点之间计算距离
- 20. 测量两个纬度/经度点之间的距离
- 21. PHP两点之间的距离纬度经度
- 22. 获取两个经度纬度点之间的驾驶距离
- 23. 使用距离和参考点计算经度和纬度
- 24. 如何根据纬度和经度获得两个地点之间的距离?
- 25. 两个经度和纬度之间的距离
- 26. 如何使用纬度和经度计算距离和方位?
- 27. 如何使用我的位置来计算使用纬度和经度的两点之间的距离
- 28. 如何使用纬度和经度计算距离?
- 29. 如何使用相应的纬度和经度值计算两个地点之间的距离?
- 30. 根据起点,方位和距离计算新经度和纬度的计算?
你不能从经度和纬度获得距离。距离需要两个纬度和经度。 – 2010-04-16 10:34:00
这已经是几个最近的SO问题的主题,看看周围。 – 2010-04-16 10:34:11
我有2纬度和经度... – 2010-04-16 10:39:44