Answers:
拓扑矢量模型将满足您的需求。在非拓扑存储(例如shapefile)中,几何之间的单个边存储两次。在拓扑向量中,区域与线分开存储,因此可以在不影响拓扑的情况下进行调整。我找不到合适的图,所以我创建了这个简单的示例,其中A,B和C的面积是根据将它们分开的线的交点(连接1-4)计算出来的。
ArcInfo将此模型用作coverage,GRASS将该模型用作默认矢量模型,并且可以将其与实验性PostGIS拓扑工具一起用于PostGIS 。也许一个更简单的解决方案是将数据转换为线条,删除多余的部分,然后在简化后重新创建多边形。
您想将多边形变成线,使这些线成为简单的coverage边缘,简化这些边缘,然后再次将其重新构建为多边形,最后使用多边形点将旧多边形的属性与新的。
CREATE TABLE rings AS SELECT (ST_DumpRings(polys)).geom AS rings FROM polytable;
CREATE TABLE simplerings AS SELECT ST_Union(rings) AS simplerings FROM rings;
CREATE TABLE newpolycollection AS SELECT ST_Polygonize(ST_Simplify(simplerings, 10.0)) AS geom FROM simplerings;
CREATE TABLE newpolysnoattributes AS SELECT (ST_Dump(geom)).geom FROM newpolycollection;
CREATE TABLE newpolytable AS SELECT new.geom, old.attr FROM newpolysnoattributes new, polytable old WHERE ST_Contains(new.geom, ST_PointOnSurface(old.polys));
上面有错误,但是核心概念在那里。如果愿意,您可以在一个查询中完成所有操作。
为避免此问题,应使用拓扑约束对数据建模。 http://mapshaper.org/完成。