如何解决如何计算地图上第二点的坐标?
Example picture我有地图上第一个点的坐标,这些点之间有一个距离,并且相对于基本点(从罗盘)有一个旋转角度。请告诉我如何计算地图上第二个点的坐标?
我试图采用公式来找到点之间的距离并重建它,但是我无法弄清楚如何使用旋转度,最后我完全感到困惑。
解决方法
这个问题可以有多种答案,具体取决于您所指的纬度,经度和指南针,以及您要求的精度是什么。
最简单的情况是,纬度和经度相对于地球的球形模型(地球半径为R),并且亚米精度足够。然后我们可以计算:
lat1Rad = lat1 * pi/180 // latitude of source point in radians
lon1Rad = lon1 * pi/180 // longitude of source point in radians
slat = R // R is earth radius
slon = R*cos( lat1Rad)
bRad = compass*pi/180 // compass reading in radians
dN = dist*cos( bRad) // change in northing
dE = dist*sin( bRad) // change in easting
lat2Rad = lat1Rad + dN/slat // target latitude in radians
lon2Rad = remainder( lon2Rad + dE/slon,2.0*pi) // target longitude in radians
这只是平面几何,只是经度的比例(即经度的微小变化值得多少米)随纬度的余弦变化。
在100m的距离上应该优于毫米,而在1km的距离上应该优于厘米。
您可能会想知道计算寿命的余数的电话。在您的特定情况下不是必需的(即可以省略),但是多年来,我养成了编写代码的习惯,即使您在180 East(或West)附近也可以使用
一些更复杂的情况: 您的纬度和经度可能与地球的椭圆模型有关(例如WGS84)。在这种情况下,需要使用所用椭球的详细信息来不同地计算slat和slon变量。
您的指南针是一个磁性设备。在这种情况下,您需要校正指南针的磁变化(也称为磁偏角)以获取相对于真实北向的读数。
您需要更高的精度。在大地测量学中,通常将问题解释为跟随点之间的大地测量学(球形地球的大圆)。然后,需要完全重写代码。对于球形地球,有(相对)简单的公式可以使用。对于椭圆形地球,周围有代码可以执行此计算。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。