Python的經緯度與xy坐標系相互轉換方式
更新時間:2024年02月01日 09:43:42 作者:kalani呀
這篇文章主要介紹了Python的經緯度與xy坐標系相互轉換方式,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
經緯度與xy坐標系相互轉換
代碼是已經運行過的,可以直接輸入參數使用
注意事項
- 經緯度參數不可以寫顛倒,否則會由于math.log參數不能為負數和0的原因報錯
- 由于地球半徑的不確定性,所以(x,y)與(lon, lat)相互轉換會有誤差
奉上代碼及運行結果
- 經緯度轉換成xy坐標
實例經維度參數 (114.5456282282352,36.631262731204049)
def millerToXY (lon, lat):
xy_coordinate = []
#地球周長
L = 6381372*math.pi*2
#平面展開,將周長視為X軸
W = L
#Y軸約等于周長一般
H = L/2
#米勒投影中的一個常數,范圍大約在正負2.3之間
mill = 2.3
#將經度從度數轉換為弧度
x = lon*math.pi/180
# 將緯度從度數轉換為弧度
y = lat*math.pi/180
#這里是米勒投影的轉換
y = 1.25*math.log(math.tan(0.25*math.pi+0.4*y))
# 這里將弧度轉為實際距離 ,轉換結果的單位是公里
x = (W/2)+(W/(2*math.pi))*x
y = (H/2)-(H/(2*mill))*y
xy_coordinate.append((int(round(x)),int(round(y))))
return xy_coordinate- xy坐標轉換成經緯度
def xy_to_coor(x, y):
lonlat_coordinate = []
L = 6381372 * math.pi*2
W = L
H = L/2
mill = 2.3
lat = ((H/2-y)*2*mill)/(1.25*H)
lat = ((math.atan(math.exp(lat))-0.25*math.pi)*180)/(0.4*math.pi)
lon = (x-W/2)*360/W
# TODO 最終需要確認經緯度保留小數點后幾位
lonlat_coordinate.append((round(lon,15),round(lat,15)))
return lonlat_coordinate- 調用兩個函數
import math print(millerToXY(114.5456282282352,36.631262731204049)) print(xy_to_coor(32805300, 7107399))
打印結果
[(32805300, 7107399)]
[(114.54562994611808, 36.63126574363226)]
總結
以上為個人經驗,希望能給大家一個參考,也希望大家多多支持腳本之家。

