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

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

主要目的:

实现了 站心坐标系和大地坐标系的转化(有什么用?为了实现由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)

(不同坐标系及原理自行百度)

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

  • 0
    点赞
  • 22
    收藏
    觉得还不错? 一键收藏
  • 4
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值