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

2022-10-06 17:45:22 +08:00
 yuzuhi

老哥们,求教一下。 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 秒,请问有什么比较好的优化方法吗? 非常感谢

722 次点击
所在节点    问与答
4 条回复
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
2022-10-06 22:00:32 +08:00
如果是用 python 的,shapely 库有现成方法调用
yuzuhi
2022-10-07 10:54:04 +08:00
@xiangyuecn

感谢大佬,我研究下。
yuzuhi
2022-10-07 10:54:21 +08:00
@mmm159357456
后端是用 go ,不知道有什么库

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/884906

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX