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

给出两点之间的经纬度,计算两点之间的距离,使用如下公式:
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不用将度转成弧度计算三角函数值。

又学到了新的知识。

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

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容