我遇到的问题是,当我知道一个原点位置和到另一个点的偏移量(以米为单位)时,得到一个位置的经纬度
我想使用以下函数(或任何其他能给我正确的lat2和lon2的函数):
import geographiclib
geographiclib.geodesic.Geodesic.Direct(self, lat1, lon1, azi1, s12)
我有一些数据示例:
^{2}$这是我希望达到的结果:
azi1 = -120.95109978727244
s12 = 61691.57175978693
lat2 = 55.69834
lon2 = 10.77969
当我使用UTM2latlon转换器时,我得到的位置离我很远。。 我认为用来计算dx和dy的坐标系是ESPG:5596。在
由于距离很大,而且考虑到了地球的距离,塞塔戈拉定理不适用于计算s12和azi1。对功能等有什么建议吗。?在
您可以通过两个步骤获得接近预期值的结果:
但这种计算在概念上仍然是错误的。在
如果我们假设地球是一个球体(而不是椭球体),那么第二步(向北/向南)就可以了,因为你在子午线上移动,这是一个大圆。沿着一个大圆的任何一条路都是它的起点和终点之间最短的(在表面上)路径,除非它绕球体超过一半。测地线是椭球体上的最短路径,所以这很适合。在
然而,第一步,我们想向东走
^{pr2}$dx
米(或向西-dx
米)。沿着测地线往西走最初不会这样做,因为平行线(除了赤道)不是很好的圆/测地线。因此,计算的路径将偏离平行线,您可以通过查看中间位置很容易看到:那里的纬度(
tmp['lat2']
)不是我们的初始纬度,方位角(tmp['azi2']
)也从90度(直西方)变了!在因此,测地计算可能不是解决问题的正确方法。还请注意,当这样计算时,顺序或步骤(无论是先向北/向南,然后是东/西,还是先东/西,然后是北/南)将显著影响结果。在
哪个顺序是“正确的”(如果有的话)是由
dx
和dy
引用的投影/笛卡尔坐标系决定的。在谢谢你的尝试!在
不幸的是,我使用了一些旧的算法,所以“正确答案”是一个更简单的函数。在
相关问题 更多 >
编程相关推荐