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

如何优化查询一组坐标点是否在一组多边形内的问题

  •  
  •   yuzuhi · 2022-10-06 17:45:22 +08:00 · 879 次点击
    这是一个创建于 770 天前的主题,其中的信息可能已经有所发展或是发生改变。

    老哥们,求教一下。 pg 里有 1000 多组多边形,需求是查询一组( 1 ~ 48 个)坐标点在这些多边形之中的哪几个, 我完全不懂这一块,看了 1 天,写了一堆 or, 大概类似如下: where st_contains(polygon_column,pointA) OR st_contains(polygon_column,pointB) OR st_contains(polygon_column,pointC) OR st_contains(polygon_column,pointD) OR ...

    每次查询都要花将近 2 秒,请问有什么比较好的优化方法吗? 非常感谢

    4 条回复    2022-10-07 10:54:21 +08:00
    xiangyuecn
        1
    xiangyuecn  
       2022-10-06 20:52:07 +08:00
    几何图形列加上空间索引,用 union all 不要用 or ,数据库估计能做到 10-50ms 查一个坐标,48 个估计可以优化到 200-500ms 查询一次

    强推我的 AreaCity-Query-Geometry 开源工具,java 开源代码,1 秒查 1 万个以上的坐标在哪些图形里面,另外有提供 http 查询接口,围观: https://github.com/xiangyuecn/AreaCity-Query-Geometry 查询坐标飞快😅
    mmm159357456
        2
    mmm159357456  
       2022-10-06 22:00:32 +08:00
    如果是用 python 的,shapely 库有现成方法调用
    yuzuhi
        3
    yuzuhi  
    OP
       2022-10-07 10:54:04 +08:00
    @xiangyuecn

    感谢大佬,我研究下。
    yuzuhi
        4
    yuzuhi  
    OP
       2022-10-07 10:54:21 +08:00
    @mmm159357456
    后端是用 go ,不知道有什么库
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   5296 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 24ms · UTC 07:19 · PVG 15:19 · LAX 23:19 · JFK 02:19
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.