gpt4 book ai didi

postgis - 如何使用 PostGIS 高效查询大型多边形

转载 作者:行者123 更新时间:2023-12-01 02:54:51 28 4
gpt4 key购买 nike

我正在使用似乎过于分散而无法有效查询的 radio map 。当我询问一个点是否在多边形内时,响应时间为 20-40 秒(我已经测试了“内”/“包含”/“重叠”)。我使用 PostGIS 和 GeoDjango 来抽象查询。

多多边形列有一个 GiST 索引,我尝试了 VACUUM ANALYZE。我使用 PostgreSQL 8.3.7。和 Django 1.2。

这些 map 横跨大片地理区域。它们最初是由地形感知 radio 工具生成的,并且 the radio cells/polygons are therefore fragmented .

我的目标是查询多边形内的点(即信号可能覆盖或可能未覆盖的房屋)。

所有的 radio map 都由 100.000 到 300.000 个顶点(总数)组成,多边形数量变化很大。有些 map 的多边形少于 10 个。从那里它跳到 10.000 到 30.000 个多边形之间。多边形与顶点的比率似乎对完成查询所需的时间没有太大影响。

我使用投影坐标系,并对房屋和 radio 部门使用相同的系统。 Qgis 显示 radio 扇区和 map 正确放置在地形中。

我的测试查询是在一张 radio map 中一次只查询一所房子。我已经测试过像“内”/“包含”/“重叠”这样的查询,结果是一样的:

  • 如果房子“远离” radio map ,则为亚秒响应(我猜这是因为它在查询中自动使用的边界框之外)。
  • 如果房屋/点靠近或位于 radio map 内,则响应时间为 20-40 秒。

  • 我是否有其他方法来优化查询,或者我必须以某种方式更改/简化源 Material ?任何建议表示赞赏。

    最佳答案

    你好

    我要做的第一件事是将多多边形拆分为单个多边形并创建一个新索引。然后索引会更有效地工作。现在整个多面体有一个大的边界框,索引只能判断房子是否在边界框内。因此,与整个数据集相关的多边形越小,索引使用就越有效。甚至有一些技术可以将单个多边形拆分为带有网格的较小多边形,以使查询的索引部分更加有效。但是,第一件事是使用 ST_Dump() 将多个多边形拆分为单个多边形。如果你在同一个表中有很多属性,最好把它放到另一个表中,只保留一个 ID,告诉它属于哪个 radio map 。否则你会得到很多重复的属性数据。

    HTH
    尼克拉斯

    关于postgis - 如何使用 PostGIS 高效查询大型多边形,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3399825/

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