是否有人可以使用PostGIS解决此问题?
#1 楼
拓扑矢量模型将满足您的需求。在非拓扑存储(例如shapefile)中,几何之间的单个边被存储两次。在拓扑向量中,区域与线分开存储,因此可以在不影响拓扑的情况下进行调整。我找不到合适的图,所以我创建了这个简单的示例,其中A,B和C区域是根据将它们分开的线的交点(连接1-4)进行计算的。ArcInfo将此模型用作coverage,在GRASS中将其用作默认矢量模型,并且可以在PostGIS中结合实验性的PostGIS拓扑工具使用。也许更简单的解决方案是将您的数据转换为线条,删除多余的部分,然后在简化后重新创建多边形。
#2 楼
您想将多边形变成线,使这些线成为简单的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));
上面有错误,但核心概念在那里。如果愿意,您可以在一个查询中完成所有操作。
评论
我发现我无法ST_SIMPLIFY ST_UNION的一组LINESTRINGS(即,我可以简化复杂的多线串)
–Theo F
20/12/11的1:31
#3 楼
为避免此问题,应使用拓扑约束对数据进行建模。
http://mapshaper.org/可以。
评论
回复:您的最后一点:当然,如果将多边形转换为线,然后简化这些线,您仍然会遇到相同的问题。只有这一次,您的线条才会彼此不对齐。
–Theo F
20 Dec 10'在13:29
教程:trac.osgeo.org/postgis/wiki/…
– Francesco Frassinelli
20 Dec 27'9:36