免费LP经纬度筛查距离计算器.zip下载

文件名称:LP经纬度筛查距离计算器.zip 文件大小:1.09MB
文件类型:zip 更新时间:2022-03-25 10:06:47

内容简介:

经纬度筛查距离计算 v1.0

运行环境:windows 7/8/10

编译写语言go语言

编译工具GoLand

llnet

2021-03-17

1.本软件使用go语言编写;

2.使用需求:因工作需要,经常要筛选点位,特此在业余时间搞了个小工具;

3.功能:根据事例可以计算两点经纬度距离,十进制经纬度,也可以进行批量执行。

根据事例语法:

file1 file2 d 参数 name

文件1 文件2 范围(米) 参数   导出文件名

经纬度筛查距离计算器

语法:文件1 文件2 范围(米) 参数(n/a/all)

eg1: file1.txt file2.txt 200000 n 按指定范围导出到站点名称.txt

eg2: file1.txt file2.txt 200000 a 按指定范围导出到outfile.txt

*声明: 本程序在使用过程中有可能有bug,或者带来数据丢失风险,请备份重要数据后使用,使用本程序所造成的一切后果,与本作者无关。*

部分源代码: //经纬度

func latitude_longitude_distance(lon1, lat1, lon2, lat2 float64) (distance float64) {
    //赤道半径(单位m)
    //const EARTH_RADIUS = 6378137
    //极地半径(单位m)
    //const EARTH_RADIUS = 6356755
    //地球平均半径
    const EARTH_RADIUS = 6371004
    rad_lat1 := rads(lat1)
    rad_lon1 := rads(lon1)
    rad_lat2 := rads(lat2)
    rad_lon2 := rads(lon2)
    if rad_lat1 < 0 {
        rad_lat1 = math.Pi/2 + math.Abs(rad_lat1)
    }
    if rad_lat1 > 0 {
        rad_lat1 = math.Pi/2 - math.Abs(rad_lat1)
    }
    if rad_lon1 < 0 {
        rad_lon1 = math.Pi*2 - math.Abs(rad_lon1)
    }
    if rad_lat2 < 0 {
        rad_lat2 = math.Pi/2 + math.Abs(rad_lat2)
    }
    if rad_lat2 > 0 {
        rad_lat2 = math.Pi/2 - math.Abs(rad_lat2)
    }
    if rad_lon2 < 0 {
        rad_lon2 = math.Pi*2 - math.Abs(rad_lon2)
    }
    x1 := EARTH_RADIUS * math.Cos(rad_lon1) * math.Sin(rad_lat1)
    y1 := EARTH_RADIUS * math.Sin(rad_lon1) * math.Sin(rad_lat1)
    z1 := EARTH_RADIUS * math.Cos(rad_lat1)

    x2 := EARTH_RADIUS * math.Cos(rad_lon2) * math.Sin(rad_lat2)
    y2 := EARTH_RADIUS * math.Sin(rad_lon2) * math.Sin(rad_lat2)
    z2 := EARTH_RADIUS * math.Cos(rad_lat2)
    d := math.Sqrt((x1-x2)*(x1-x2) + (y1-y2)*(y1-y2) + (z1-z2)*(z1-z2))
    theta := math.Acos((EARTH_RADIUS*EARTH_RADIUS + EARTH_RADIUS*EARTH_RADIUS - d*d) / (2 * EARTH_RADIUS * EARTH_RADIUS))
    distance = theta * EARTH_RADIUS
    return
}

文件下载:

评论 抢沙发
头像
欢迎您留下宝贵的见解!
提交
头像

昵称

取消
昵称表情代码图片