Python的經(jīng)緯度與xy坐標(biāo)系相互轉(zhuǎn)換方式
經(jīng)緯度與xy坐標(biāo)系相互轉(zhuǎn)換
代碼是已經(jīng)運(yùn)行過(guò)的,可以直接輸入?yún)?shù)使用
注意事項(xiàng)
- 經(jīng)緯度參數(shù)不可以寫(xiě)顛倒,否則會(huì)由于math.log參數(shù)不能為負(fù)數(shù)和0的原因報(bào)錯(cuò)
- 由于地球半徑的不確定性,所以(x,y)與(lon, lat)相互轉(zhuǎn)換會(huì)有誤差
奉上代碼及運(yùn)行結(jié)果
- 經(jīng)緯度轉(zhuǎn)換成xy坐標(biāo)
實(shí)例經(jīng)維度參數(shù) (114.5456282282352,36.631262731204049)
def millerToXY (lon, lat):
xy_coordinate = []
#地球周長(zhǎng)
L = 6381372*math.pi*2
#平面展開(kāi),將周長(zhǎng)視為X軸
W = L
#Y軸約等于周長(zhǎng)一般
H = L/2
#米勒投影中的一個(gè)常數(shù),范圍大約在正負(fù)2.3之間
mill = 2.3
#將經(jīng)度從度數(shù)轉(zhuǎn)換為弧度
x = lon*math.pi/180
# 將緯度從度數(shù)轉(zhuǎn)換為弧度
y = lat*math.pi/180
#這里是米勒投影的轉(zhuǎn)換
y = 1.25*math.log(math.tan(0.25*math.pi+0.4*y))
# 這里將弧度轉(zhuǎn)為實(shí)際距離 ,轉(zhuǎn)換結(jié)果的單位是公里
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坐標(biāo)轉(zhuǎn)換成經(jīng)緯度
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 最終需要確認(rèn)經(jīng)緯度保留小數(shù)點(diǎn)后幾位
lonlat_coordinate.append((round(lon,15),round(lat,15)))
return lonlat_coordinate- 調(diào)用兩個(gè)函數(shù)
import math print(millerToXY(114.5456282282352,36.631262731204049)) print(xy_to_coor(32805300, 7107399))
打印結(jié)果
[(32805300, 7107399)]
[(114.54562994611808, 36.63126574363226)]
總結(jié)
以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
修復(fù)Python?Pandas數(shù)據(jù)標(biāo)記錯(cuò)誤的幾種方法總結(jié)
用于分析數(shù)據(jù)的?Python?庫(kù)稱為?Pandas,在?Pandas?中讀取數(shù)據(jù)最常見(jiàn)的方式是通過(guò)?CSV?文件,但?CSV?文件的限制是它應(yīng)該采用特定的格式,否則在標(biāo)記數(shù)據(jù)時(shí)會(huì)拋出錯(cuò)誤,在本文中,我們將討論修復(fù)?Python?Pandas?錯(cuò)誤標(biāo)記數(shù)據(jù)的各種方法2023-10-10
Python 基于jwt實(shí)現(xiàn)認(rèn)證機(jī)制流程解析
這篇文章主要介紹了python 基于jwt實(shí)現(xiàn)認(rèn)證機(jī)制流程解析,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2020-06-06
Python根據(jù)文件后綴實(shí)現(xiàn)文件夾整理
這篇文章主要為大家詳細(xì)介紹了Python如何根據(jù)文件后綴實(shí)現(xiàn)文件夾整理,文中的示例代碼講解詳細(xì),具有一定的借鑒價(jià)值,有需要的可以參考下2024-02-02
python爬蟲(chóng)爬取指定內(nèi)容的解決方法
這篇文章主要介紹了python爬蟲(chóng)爬取指定內(nèi)容,爬取一些網(wǎng)站下指定的內(nèi)容,一般來(lái)說(shuō)可以用xpath來(lái)直接從網(wǎng)頁(yè)上來(lái)獲取,但是當(dāng)我們獲取的內(nèi)容不唯一的時(shí)候我們無(wú)法選擇,我們所需要的、所指定的內(nèi)容,需要的朋友可以參考下2022-06-06
python實(shí)現(xiàn)定時(shí)提取實(shí)時(shí)日志程序
這篇文章主要為大家詳細(xì)介紹了python實(shí)現(xiàn)定時(shí)提取實(shí)時(shí)日志程序,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2018-06-06
python使用sqlite3時(shí)游標(biāo)使用方法
這篇文章主要為大家詳細(xì)介紹了python使用sqlite3時(shí)游標(biāo)的使用方法,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2018-03-03
Matplotlib自定義坐標(biāo)軸刻度的實(shí)現(xiàn)示例
這篇文章主要介紹了Matplotlib自定義坐標(biāo)軸刻度的實(shí)現(xiàn)示例,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2020-06-06
圖文詳解梯度下降算法的原理及Python實(shí)現(xiàn)
梯度下降是迭代法的一種,可以用于求解最小二乘問(wèn)題(線性和非線性都可以)。本文將通過(guò)圖文詳解梯度下降算法的原理及實(shí)現(xiàn),需要的可以參考一下2022-08-08

