现有A、B两点的xy坐标位置,A点的坐标为(19573,-19145)B点的坐标为
-19646,17527,已知A点的经纬度为(118.81877912721681,32.28919981944475),B点的经纬度为(118.81327445028852,32.2877569526169),需要根据AB两点的xy坐标和经纬度得出转换公式。
现有A、B两点的xy坐标位置,A点的坐标为(19573,-19145)B点的坐标为
-19646,17527,已知A点的经纬度为(118.81877912721681,32.28919981944475),B点的经纬度为(118.81327445028852,32.2877569526169),需要根据AB两点的xy坐标和经纬度得出转换公式。
简单写了个推理过程,计算用的python的numpy库。
import numpy as np
np.set_printoptions(precision=16) #设置下输出长度
a=[19573.0,-19145.0]
aa=[118.81877912721681,32.28919981944475]
b=[-19646.0,17527.0]
bb=[118.81327445028852,32.2877569526169]
A=np.array([a,b],dtype=np.float64) #将a和b合并在一起
B=np.array([aa,bb],dtype=np.float64) #将aa和bb合并
inv_A=np.linalg.inv(A) #A的逆矩阵
X= np.linalg.inv(A).dot(B) #这个步骤就是 M=A-1 *b
print("#############变换矩阵:#################")
print(X)
print("###############验证结果:#####################")
print("A点坐标变换结果:")
print(np.array(a).dot(X))
print("B点坐标变换结果:")
print(np.array(b).dot(X))
#out
#############变换矩阵:#################
[[-0.1317705429596557 -0.035808893778398 ]
[-0.140922622955161 -0.0382959873462538]]
###############验证结果:#####################
A点坐标变换结果:
[118.8187791272162 32.28919981944466]
B点坐标变换结果:
[118.8132744502891 32.28775695261709]
X=[ a b
c d ]
所以最后的结果是坐标A[x,y]换算到经纬度的换算公式
经度=a*x+c*y= -0.13177054*x-0.14092262 *y
纬度=b*x+d*y=-0.03580889*x -0.03829599*y