導航座標系和大地座標系的轉化程式
主要目的:
實現了 站心座標系和大地座標系的轉化(有什麼用?為了實現由gps座標獲得相對距離)
什麼是站心座標系呢?
以你為座標原點,xyz座標系。
什麼是大地座標系呢?(wg-84座標系)
gps的輸出座標系,和地心座標系不同。
本**考慮了橢球修正,實測比較準確。
#encoding=utf-8
'''created on 2023年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)
公式見 《大地測量學原理》一書 大地座標系 地理座標系 投影座標系
大地座標系 是大地測量中以參考橢球面為基準面建立起來的座標系。地面點的位置用 大地經度 大地緯度和大地高度 表示。大地座標系的確立包括選擇乙個橢球 對橢球進行定位和確定大地起算資料。乙個形狀 大小和定位 定向都已確定的地球橢球叫參考橢球。參考橢球一旦確定,則標誌著大地座標系已經建立。大地座標系是一種...
詳解座標系及座標變換 大地座標系(一)
以前讀大學的時候,沒有好好的把座標系學一下,到工作的時候才發現座標系是如此的重要。如果說資料是gis的血肉 那麼座標系就是gis的靈魂。離開這個靈魂gis就是乙個空殼,毫無意義。在gis中座標系被分為兩大類,大地座標系 地理座標系 和投影座標系。大地座標系屬於參心座標系,座標系中的點位於球面上,如w...
左手座標系和右手座標系
今天記錄一下一些基本的數學知識,左手座標系和右手座標系。這些對於搞影象開發或者遊戲開發的朋友來說,應該是很基礎的東西,不過對於大部分人來說還是比較陌生的知識。之所以看這方面資料主要是因為在使用android camera使用matrix的過程中,發現需要一些數學理論支援才能理解。這是為了後面使用an...