gpt4 book ai didi

postgresql - 从 lat/lng 表中查找包含点的多边形

转载 作者:行者123 更新时间:2023-11-29 11:46:51 26 4
gpt4 key购买 nike

我有一张表,地区:

| id | name     |
|----|----------|
| 1 | Jersey |
| 2 | Scotland |
...

和一张 RegionPoints 表(定义每个区域的边界框):

| id | regionid | lat   | lng   |
|----|----------|-------|-------|
| 1 | 1 | 49.27 | -2.27 |
| 2 | 1 | 49.27 | -1.99 |
| 3 | 1 | 49.15 | -2.27 |
| 4 | 1 | 49.15 | -1.99 |
...

给定纬度和经度,我想找到包含给定点的区域。

根据我的理解,我需要通过regionid聚合,然后使用 ST_ConcaveHull,然后使用 ST_Contains 使用纬度和经度进行查询,但是我担心的是,对于大量区域,为每个区域计算凹包会非常困难效率低下。

这是我第一次使用 PostGIS,所以有点卡。

最佳答案

是的,“即时”计算凹包对于大量数据可能效率低下。

此外,您将无法使用空间索引,因为您的几何图形是在查询时构建的。

使用 ST_MakeEnvelope 而不是 ST_ConcaveHull 将缓解该问题。

但是,正如 JGH 建议的那样,您应该将这些坐标作为多边形存储在 Regions 表中,使用 ST_MakeEnvelope 来创建它们。

然后构建空间索引并使用 ST_Contains 获取包含点的区域。

关于postgresql - 从 lat/lng 表中查找包含点的多边形,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47204168/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com