我正在寻找一个函数来分解表中多边形要素之间的共享边界。ST_UNION()几乎可以满足我的要求,但是它会根据图层中的所有多边形创建一个多面体,无论它们是否共享公共边界。我宁愿只溶解彼此接触的多边形之间的边界。我认为,应该有某种使用ST_TOUCHES()的方法,但是对于溶解函数的需求似乎太普遍了,如果没有内置函数可以实现这一点,我会感到惊讶。
用例如下所示:我下载了一个欧洲大国的Corine Landcover数据,我想消除不同森林类型之间的界限(一张桌子中约有75,000个多边形)。我尝试了ST_UNION,但由于出现“内存不足”错误而失败了(不过30,000个多边形确实起作用了):
create table corine00 as
select st_union(the_geom) as the_geom,
sum(area_ha) as area_ha,
substr(code_00,1,2) as code_00
from clc00_c31_forests
group by substr(code_00,1,2)
注意:所有森林代码均以“ 31”开头,而我使用的是PostGIS 1.4,GEOS版本:3.2.0-CAPI-1.6.0