V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX 提问指南
tctc4869
V2EX  ›  问与答

有没有算经纬度坐标的直线距离的工具或网站?

  •  
  •   tctc4869 · 2020-09-17 08:37:03 +08:00 · 3631 次点击
    这是一个创建于 1529 天前的主题,其中的信息可能已经有所发展或是发生改变。

    已知两个经纬度坐标,算出两个经纬度坐标的直线距离,大家知道百度地图和高德地图怎么弄么?或者其他地图软件怎么算?

    当然可以通过第三方地图 api,根据算坐标之间距离的 api 编写代码实现,但是这比较麻烦,有没有现成的工具?

    30 条回复    2020-09-18 10:02:42 +08:00
    gimp
        1
    gimp  
       2020-09-17 08:41:07 +08:00
    WEBUG
        2
    WEBUG  
       2020-09-17 08:44:51 +08:00 via Android
    pgsql 的坐标插件也可以吧没用过
    liuxey
        3
    liuxey  
       2020-09-17 08:46:30 +08:00
    可以试试 redis 的 geo 数据结构,特别是 GEODIST command

    https://redis.io/commands#geo
    tctc4869
        4
    tctc4869  
    OP
       2020-09-17 08:52:39 +08:00
    @gimp 也可以
    yggd
        5
    yggd  
       2020-09-17 08:56:39 +08:00   ❤️ 2
    turf.js
    whileFalse
        6
    whileFalse  
       2020-09-17 09:09:45 +08:00
    直线距离……如果精度要求不高,用地球半径直接算不行吗
    maojy1989
        7
    maojy1989  
       2020-09-17 09:12:13 +08:00
    raptor
        8
    raptor  
       2020-09-17 09:16:30 +08:00
    以前用地球半径估算过,在中低纬度( 70 度以下)地区准确度还可以,复习一下几何学知识也不错。
    zjqzxc
        9
    zjqzxc  
       2020-09-17 09:16:53 +08:00
    精度要求不高的话,感觉这就是个用搜索引擎就能解决的数学题..找 API 不太必要吧
    weizhen199
        10
    weizhen199  
       2020-09-17 09:21:03 +08:00
    @raptor 是因为椭球的关系吗。
    Donss
        11
    Donss  
       2020-09-17 09:21:08 +08:00
    pgsql 里面的 postgis 可以使用,空间地理计算函数
    Molita
        12
    Molita  
       2020-09-17 09:21:10 +08:00
    弧长公式呀。。。
    liujavamail
        13
    liujavamail  
       2020-09-17 09:36:10 +08:00
    GeoHash 么? redis 可以做,postgresql 也可以
    luwies
        14
    luwies  
       2020-09-17 09:47:06 +08:00
    d(x1,y1,x2,y2)=r*arccos(sin(x1)*sin(x2)+cos(x1)*cos(x2)*cos(y1-y2)),其中,x1,y1 是纬度\经度的弧度单位,r 为地球半径。
    yunser
        15
    yunser  
       2020-09-17 09:48:15 +08:00
    两个月前做过一个计算距离的小工具,不知道好不好用。
    https://map.yunser.com/distance/calc
    sdshiyan2005
        16
    sdshiyan2005  
       2020-09-17 09:54:33 +08:00
    带入经纬度和半径直接算 haversine distance
    tctc4869
        17
    tctc4869  
    OP
       2020-09-17 09:58:55 +08:00
    @maojy1989 谢谢

    高德地图有没有这种示例?
    tctc4869
        18
    tctc4869  
    OP
       2020-09-17 10:07:55 +08:00
    @yunser 谢谢
    jucelin
        19
    jucelin  
       2020-09-17 10:08:32 +08:00
    tctc4869
        20
    tctc4869  
    OP
       2020-09-17 10:13:11 +08:00
    @yunser 我有个问题,你这个通过经纬度定位地图上,是基于哪个坐标系? wgs84?百度地图的 bd09?还是基于高德地图?
    tctc4869
        21
    tctc4869  
    OP
       2020-09-17 10:22:43 +08:00
    @jucelin 谢谢
    opengps
        22
    opengps  
       2020-09-17 10:35:13 +08:00 via Android
    就是一段 js 代码,用了球面工时,方法在我的博客里搜
    necomancer
        23
    necomancer  
       2020-09-17 11:53:29 +08:00
    http://www.xamfksw.com/zgzc/18475.html

    你还是找专门工具吧
    necomancer
        24
    necomancer  
       2020-09-17 11:56:07 +08:00
    sorry,上面是直接搜图的结果,文章太水了,这个靠谱点 https://zhuanlan.zhihu.com/p/35718920
    这形状大多数小工具是不好用的。
    Rheinmetal
        25
    Rheinmetal  
       2020-09-17 12:27:59 +08:00
    关键词: 地理信息系统
    精确计算需要了解坐标是哪个标准 对应哪个基准椭球面?
    yunser
        26
    yunser  
       2020-09-17 12:32:32 +08:00 via iPhone
    @tctc4869 经纬度不加说明,一般默认 WGS-84
    qiayue
        27
    qiayue  
       2020-09-17 12:33:59 +08:00
    有直接的计算方式,基本准确,大部分场景可用,
    wudicgi
        28
    wudicgi  
       2020-09-17 12:45:02 +08:00
    可以看下我这篇 blog 里的 PPT, 有标准的半正矢公式,和短距离下更快速的计算公式:
    《查找附近地点的算法 —— Geohash 》
    http://blog.wudilabs.org/entry/9354e9ac/
    yunser
        29
    yunser  
       2020-09-17 12:46:06 +08:00 via iPhone   ❤️ 1
    @tctc4869 想问一下,你的坐标是什么坐标系的?
    raptor
        30
    raptor  
       2020-09-18 10:02:42 +08:00
    @weizhen199 椭球是一方面,另一方面是计算精度问题,要高纬度算准也可以,计算量会大一些。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   886 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 30ms · UTC 20:39 · PVG 04:39 · LAX 12:39 · JFK 15:39
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.