使用Julia給出兩點經(jīng)緯度直接計算距離

給出兩點之間的經(jīng)緯度,計算兩點之間的距離,使用如下公式:
2\times arcsin\sqrt{sin^2(\frac{Lat12}{2}) + cos(Lat1)\times cos(Lat2)\times sin^2(\frac{Lon12}{2})}\times 6378.137
三角函數(shù)不必說了,Lat12是兩點的緯度差,Lon是兩點的經(jīng)度差,Lat1和Lat2分別是兩點的緯度,6378.137為地球的半徑。

代碼如下:

#!/usr/local/bin/julia
args = ARGS # 解析命令行參數(shù)
while length(args) < 4
    println("你沒有在命令行參數(shù)輸入兩點的經(jīng)緯度,或輸入的經(jīng)緯度有缺失,請輸入經(jīng)緯度")
    println("請按照兩點經(jīng)緯度輸入:")
    push!(args, readline())
    end
A = (parse(Float64,args[1]), parse(Float64,args[2])) # A點經(jīng)緯度
B = (parse(Float64,args[3]), parse(Float64,args[4])) # B點經(jīng)緯度
println("第一個點的經(jīng)緯度:", A)
println("第二個點的經(jīng)緯度:", B)
a = A[2] - B[2] # AB兩點的緯度差
b = A[1] - B[1] # AB兩點的經(jīng)度差
r = 6378.137 # 地球半徑
s = 2asin(sqrt(sind(a/2)^2+cosd(A[2])*cosd(B[2])*sind(b/2)^2))*r # 計算函數(shù)5
println("兩點距離為:", s," km")
println("兩點距離為:", s*1000, " m")

兩種使用方式,如下:

julia1.png
julia2.png

一種是直接傳遞兩點之間的經(jīng)緯度,另一種是交互式輸入兩點之間的經(jīng)緯度。

當然了,第一個點傳遞進去,第二個點交互輸入也可以的

julia3.png

代碼不多,也很容易用其他語言寫,不過julia不用將度轉成弧度計算三角函數(shù)值。

又學到了新的知識。

度分秒的輸入形式暫不支持哈。

?著作權歸作者所有,轉載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容