PostGIS:如何有效地查询大量多边形的多边形?

时间:2013-12-13 17:49:43

标签: postgis

我正在开发一个CAD程序,允许用户平移非常大的多边形层。例如,如果用户缩小,那么我可能需要渲染数百万个多边形。我想通过每帧渲染一些多边形来为用户慢慢绘制这个场景,但这意味着我需要一个能够从块中选择PostGIS数据库中矩形多边形区域的查询。这是我正在使用的表和索引:

create table POLYGON(ID serial8 primary key,
    LAYER_ID bigint not null,
    GEOM geometry(polygon,0) not null);

create index on POLYGON using gist(LAYER_ID, GEOM);

我想执行以下查询:

select POLYGON.ID, ST_AsBinary(POLYGON.GEOM) from POLYGON 
where LAYER_ID = ? and (ST_MakeEnvelope(?, ?, ?, ?, 0) && GEOM);

但该查询可能需要很长时间并返回大量结果。有什么方法可以将这个巨大的查询分成更小的查询吗?

我考虑使用“偏移”和“限制”,但我认为这不会起作用,因为我的结果没有订购。此外,就“偏移”而言,我相信postgres仍然需要查询它正在跳过的所有内容。

我可以尝试将多边形分成组,这样我就可以一次检索一个组,但是“gist”索引是否已经在内部以某种方式对我的几何进行了分区?我不想在“gist”索引之上构建另一个系统,除非我绝对必须这样做。

任何建议都将不胜感激。

0 个答案:

没有答案