我正在使用似乎过于分散而无法有效查询的无线电地图。当我询问单个点是否在多面体中时,响应时间为 20-40 秒(我已经测试了“内部”/“包含”/“重叠”)。我使用 PostGIS 和 GeoDjango 来抽象查询。
多多边形列有一个 GiST 索引,我尝试过 VACUUM ANALYZE。我使用 PostgreSQL 8.3.7。和 Django 1.2。
这些地图覆盖了广阔的地理区域。它们最初是由地形感知无线电工具生成的,因此无线电单元/多边形是碎片化的。
我的目标是查询多面体中的点(即信号可能覆盖也可能不覆盖的房屋)。
所有的无线电地图都由 100.000 到 300.000 个顶点(总计)组成,多边形的数量变化很大。有些地图的多边形少于 10 个。从那里它跳到 10.000 到 30.000 个多边形之间。多边形与顶点的比率似乎对完成查询所花费的时间影响不大。
我使用投影坐标系,并为房屋和无线电部门使用相同的系统。Qgis 显示无线电扇区和地图正确放置在地形中。
我的测试查询在一张无线电地图中一次只针对一所房子。我已经测试过像“within”/“contains”/“overlaps”这样的查询,结果是一样的:
如果房子“远离”无线电地图,则亚秒级响应(我猜这是因为它位于查询中自动使用的边界框之外)。
如果房屋/点靠近或在无线电地图内,则响应时间为 20-40 秒。
我是否有其他方法来优化查询,或者我必须以某种方式更改/简化源材料?任何建议表示赞赏。