我有一些非常大的[地理格式]空间数据,我想将它们裁剪到英国地方当局区域多边形。在较小的数据上,我最初使用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,但似乎无法加快交叉路口。
如果有人可以帮助,将不胜感激。