欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

导航坐标系WGS-84和大地坐标系的转化程序

程序员文章站 2022-04-04 12:57:56
...
航坐标系和大地坐标系的转化程序

主要目的:

实现了 站心坐标系和大地坐标系的转化(有什么用?为了实现由GPS坐标获得相对距离)

什么是站心坐标系呢?

以你为坐标原点,XYZ坐标系。

什么是大地坐标系呢?(WG-84坐标系)

GPS的输出坐标系,和地心坐标系不同。

本代码考虑了椭球修正,实测比较准确。

#encoding=UTF-8
'''
Created on 2016年9月26日
@author: sx
'''
import math
import numpy as np
PI= math.pi
a=6378137
b=6356755.00
e=0.016710219 
def deg(X):
    X=(X/180)*PI
    return X
def Translate(L,B,H):
    #L为经度,B为纬度,H为高度(补偿高度)
    L0=116
    B0=39.4877777
    H0=0
    print("GPS下经度、纬度、高度为",L,B,H)
    B=deg(B)
    L=deg(L)
    B0=deg(B0)
    L0=deg(L0)
    N=a/(math.sqrt(1-e*e*math.sin(B)*math.sin(B)))
    X=(N+H)*math.cos(B)*math.cos(L)
    Y=(N+H)*math.cos(B)*math.sin(L)
    Z=N*(1-e*e)*math.sin(B)
    N0=a/(math.sqrt(1-e*e*math.sin(B0)*math.sin(B0)))
    X0=(N0+H0)*math.cos(B0)*math.cos(L0)
    Y0=(N0+H0)*math.cos(B0)*math.sin(L0)
    Z0=N0*(1-e*e)*math.sin(B0)
    print("空间直角坐标系下X轴、Y轴、高度为",'%.3f'%X,'%.3f'%Y,'%.3f'%Z)
    mat=np.array([[-math.sin(L),math.cos(L),0],\
                 [-math.sin(B)*math.cos(L),-math.sin(B)*math.sin(L),math.cos(B)],\
                 [math.cos(B)*math.cos(L),math.cos(B)*math.sin(L),math.sin(B)]])
    arr=np.array([[X-X0],[Y-Y0],[Z-Z0]])
    res=np.dot(mat,arr)
    X2=res[0]
    Y2=res[1]
    print("站心坐标系下东偏向、北偏向",'%.3f'%X2,'%.3f'%Y2) 
Translate(116,41.08,0)(不同坐标系及原理自行百度)

公式见 《大地测量学原理》一书

转自:https://blog.csdn.net/sinat_33829806/article/details/54429876