美文网首页
使用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