怎么用python自制计算公式_自制计算经纬度位移 python 程序
前兩天,我的老同學發郵件給我,希望我能制作一個能多點定位的,可以計算經度和緯度距離的在線計算器來幫助他的工作。當然還不止這些,同時他還希望能做以下相對的排序。
比如說,同一個位置的經緯度開始,移動向東南西北等不同方向位移的經緯度位置。
呵呵,真是個麻煩的家伙,現在雖然在做 IT,但荒廢了的地理知識還是記得些的,好吧,馬上有了思路,于是便答應了他。
說干就干,我想語言就選擇精于計算的 Python 來編碼,首先我先要推導一個完整的理論,然后再將它們變成代碼。
經和緯通常會以度作為計算單位,但在實際的計算中運用更多的是弧度的凈值。 Python 可以默認度的條件;弧度將只能用于內部功能實現。我將使用一個實例,即現在有一個半徑為 r,弧度的角度為 θ 長度為 rθ 的圓。好吧,我們假設地球是一個完美的球體,其實地理的運算,通常是把地球作為一個完美圓體的。
移動向北或南
設 R 是地球的半徑,弧度的角 φ 相對地球表面的弧長為 M=Rφ,因此一公里的弧長 M 對應 φ = m/R 角度。那么理想情況下,向正南正北移動將不改變經度。
移動向東或西
這個計算相對復雜一些,如果是平行于赤道,除了經緯度,那么計算方式就同上。但經緯度一旦發生變化,這種距離相對的經緯度也將發生劇烈變化。例如,一個沿著北極圈行進的經度,幾乎不可能像在赤道行進一樣。
那么假設你是在赤道以北的北緯 φ 度。按等價緯度 φ 為周長的圓,此圓定平行于赤道,是 COSφ 倍或以上的赤道周長大小。因此,在緯度 φθ 弧度的角度描畫出一個長度為 θ,M = R^COSφ的弧線。那么一公里的距離 m 向東或向西應對應 θ = M/(R COSφ) 的經度變化,向正東正西移動不會改變這個值。
這個就是這個工程與弧度角度的推導,Python 的余弦函數也會是在一個弧度上。Rikku 之所以像一個名偵探一樣道出精彩的推理,是為 Rikku 曾經沒少為這個遺忘已久的知識和運算絞盡腦汁所做的掩飾而已。
哦對了,經度和緯度,通常表示為度,所以 Python 的函數輸入和輸出需要做一些調整。
import math
earth_radius = 3960.0
degrees_to_radians = math.pi/180.0
radians_to_degrees = 180.0/math.pi
def change_in_latitude(miles):
"Given a distance north, return the change in latitude."
return (miles/earth_radius)*radians_to_degrees
def change_in_longitude(latitude, miles):
"Given a latitude and a distance west, return the change in longitude."
# Find the radius of a circle around the earth at given latitude.
r = earth_radius*math.cos(latitude*degrees_to_radians)
return (miles/r)*radians_to_degrees
總結
以上是生活随笔為你收集整理的怎么用python自制计算公式_自制计算经纬度位移 python 程序的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: python xlrd_python模块
- 下一篇: linux系统如何创建python文件_