POSTGIS优化

时间:2018-07-20 22:07:15

标签: performance postgis intersection clip

我有一些非常大的[地理格式]空间数据,我想将它们裁剪到英国地方当局区域多边形。在较小的数据上,我最初使用POSTGIS中的ST_INTERSECTION函数 [如下]:

    CREATE TABLE *year_n* AS
    SELECT  *,
    (ST_Intersection(*data1.coordinates,data2.geom*))
    FROM    *data1*,*data2*
    WHERE   laa_boundary.lad15nm = '*local authority name*'
    AND     ST_Intersects(*data1.coordinates,data2.geom*)

此后,我采用了以下方法:

SET work_mem ='1500MB';

    CREATE TABLE *year_n* AS
    SELECT t1.*,
    (CASE 
    WHEN ST_Contains(t1.geom,t2.geom)
    THEN  t2.geom 
    WHEN ST_Within(t1.geom,t2.geom)
    THEN t1.coordinates
    ELSE ST_Intersection(t1.geom,t2.geom)
    END) AS os_geom
    FROM    topographic_layer AS t1 
    JOIN    local_authority_boundary AS t2
    ON ST_Intersects(t1.geom,t2.geom);

关于这两种方法,我都在使用空间索引。到目前为止,对于我的大多数数据,第二种方法已经足够快。但是,我导入的最新数据约为11300MB,这种方法无法应付。

我想知道是否有人遇到过类似的问题并在Postgis或R中开发了解决方案?我尝试使用ST_SUBDIVIDE,但似乎无法加快交叉路口。

如果有人可以帮助,将不胜感激。

0 个答案:

没有答案