美文网首页
使用Julia给出两点经纬度直接计算距离

使用Julia给出两点经纬度直接计算距离

作者: 灵木er | 来源:发表于2021-07-03 23:36 被阅读0次

给出两点之间的经纬度,计算两点之间的距离,使用如下公式:
2\times arcsin\sqrt{sin^2(\frac{Lat12}{2}) + cos(Lat1)\times cos(Lat2)\times sin^2(\frac{Lon12}{2})}\times 6378.137
三角函数不必说了,Lat12是两点的纬度差,Lon是两点的经度差,Lat1和Lat2分别是两点的纬度,6378.137为地球的半径。

代码如下:

#!/usr/local/bin/julia
args = ARGS # 解析命令行参数
while length(args) < 4
    println("你没有在命令行参数输入两点的经纬度,或输入的经纬度有缺失,请输入经纬度")
    println("请按照两点经纬度输入:")
    push!(args, readline())
    end
A = (parse(Float64,args[1]), parse(Float64,args[2])) # A点经纬度
B = (parse(Float64,args[3]), parse(Float64,args[4])) # B点经纬度
println("第一个点的经纬度:", A)
println("第二个点的经纬度:", B)
a = A[2] - B[2] # AB两点的纬度差
b = A[1] - B[1] # AB两点的经度差
r = 6378.137 # 地球半径
s = 2asin(sqrt(sind(a/2)^2+cosd(A[2])*cosd(B[2])*sind(b/2)^2))*r # 计算函数5
println("两点距离为:", s," km")
println("两点距离为:", s*1000, " m")

两种使用方式,如下:

julia1.png julia2.png

一种是直接传递两点之间的经纬度,另一种是交互式输入两点之间的经纬度。

当然了,第一个点传递进去,第二个点交互输入也可以的

julia3.png

代码不多,也很容易用其他语言写,不过julia不用将度转成弧度计算三角函数值。

又学到了新的知识。

度分秒的输入形式暂不支持哈。

相关文章

网友评论

      本文标题:使用Julia给出两点经纬度直接计算距离

      本文链接:https://www.haomeiwen.com/subject/veapultx.html