【发布时间】:2016-11-12 07:23:51
【问题描述】:
我正在尝试溶解一个多边形表的边界,这些多边形表是半径为 5 公里的 ST_Buffers,并将它们转储到另一个表中。第一个表包含大约 1000 万个多边形。 包含多边形的表是:
CREATE TABLE poly_5km(gid serial PRIMARY KEY, bufferType varchar, the_geog geography(POLYGON,4326) );
这是我要创建的表:
CREATE TABLE buffer_5km(gid serial PRIMARY KEY, bufferType varchar, the_geog geography(POLYGON,4326) );
INSERT INTO buffer_5km(gid,bufferType,the_geog) VALUES (1,'test',(SELECT (ST_Dump(ST_Multi(ST_Union(ST_MakeValid(poly_5km.the_geog::geometry))))).geom::geography FROM poly_5km WHERE poly_5km.bufferType= 'test'));
但是每当我运行插入语句时,我都会收到此错误:
ERROR: array size exceeds the maximum allowed (1073741823)
谁能告诉我我做错了什么?
【问题讨论】:
-
您的选择占用了太多内存。批处理过程呢??
-
是系统内存还是列大小限制?我的系统上有 16 GB RAM。我也试过
ST_MemUnion。但它太慢了,需要很长时间才能运行。 -
你加载太多尝试使用 64 位或批量大小的进程。
-
@AlvaroJoao 批处理是什么意思?
标签: performance postgresql postgis