我有一个10公里x 10公里地形图的3D模型,我从草图中导入,模型只是一堆X,Y,Z点(其中X +是北,Z +是直的向上,垂直于地面)
我知道(0,0,0)点的纬度经度值。因此,给定X,Y,Z点如何获得其纬度经度值?
我需要非常准确,所以你不能假设地球是一个完美的球体(你可以假设它是一个椭圆体)
答案 0 :(得分:1)
为获得最佳精确度,您需要知道绘制地图的地图投影。您应该能够从地图中找到它。例如,在英国,军械测量地图使用OSGB36数据,投影是横向墨卡托。投影告诉您如何将地理(lat,long为基准椭球)坐标转换为地图坐标(东向和北向)以及如何进行反向计算,这正是您想要的。
如果你不知道投影,那么下一个最好的事情就是如果你能从地图中找到它们,它们经常被写在上面 - 投影的比例因子和收敛地图上的一些点。关键在于地图北(北轴指向的方向)和真北(北极从一个点的方向,纬度轴的方向)之间通常存在缓慢的空间变化差异,并且始终存在缓慢变化的比例因子,地图坐标中的距离与真实距离的比率。请注意,这与打印地图的比例(英寸到一英里或其他)不同,它是投影的属性。
超过10平方公里,将比例和收敛视为常数是合理准确的。然后给定一个x,y点,使用
计算0,0的地图b = atan2(x,y)
并通过减去收敛将其转换为真实方位。
您还可以通过
计算地图距离r = hypot(x,y)*S
其中S是地图的比例,例如如果你在x坐标中改变1表示距离为100米,则S为100
并通过除以比例因子将r转换为真实距离。
最后,你想要计算纬度,长给定距离和来自给定点的方位(纬度,长度为0,0)。准确的方法是使用Vincenty's formulae。
这里要注意的一点是,如果在地图上引用的比例和收敛将相对于地图构造中使用的椭圆体,那么您将计算该椭圆体的纬度,长坐标。