相关问题在这里。
我注意到确保拓扑正确性对于GIS应用程序至关重要,这是因为来自用户或多边形布尔操作的输入可能会遇到严重的拓扑问题(即使多边形看起来正确),也会影响后续操作的质量。
干净多边形是地理向导用来确保拓扑正确性的方法。
我的问题不是关于如何使用现有软件包来确保面输入数据在拓扑上是正确的。相反,我的问题是有关这些软件包如何实施这些清洁程序的。换句话说,在给定一组多边形输入的情况下,可以用来确保解决所有拓扑错误的算法是什么?
相关问题在这里。
我注意到确保拓扑正确性对于GIS应用程序至关重要,这是因为来自用户或多边形布尔操作的输入可能会遇到严重的拓扑问题(即使多边形看起来正确),也会影响后续操作的质量。
干净多边形是地理向导用来确保拓扑正确性的方法。
我的问题不是关于如何使用现有软件包来确保面输入数据在拓扑上是正确的。相反,我的问题是有关这些软件包如何实施这些清洁程序的。换句话说,在给定一组多边形输入的情况下,可以用来确保解决所有拓扑错误的算法是什么?
Answers:
Google学术搜索快速搜索后,找到了以下引文不错的文章:
Thierry Ubeda和Max J.Egenhofer。GIS中的拓扑误差校正。空间数据库的进展,计算机科学讲义,1997,第1262/1997卷,281-297,DOI:10.1007 / 3-540-63238-7_35(PDF)
西尔维·瑟维尼(Sylvie Servigne),蒂埃里·乌维达(Thierry Ubeda),阿兰·普里切利(Alain Puricelli)和罗伯特·劳里尼(Robert Laurini)。 地理数据库空间一致性改进方法。GeoInformatica,2000,第4卷,第1号,7-34,DOI:10.1023 / A:1009824308542(PDF)
您可以在GRASS GIS的源代码和手册中找到有关拓扑清洗例程的详细说明:http : //grass.osgeo.org/programming7
清洗例程在此处编码:http : //trac.osgeo.org/grass/browser/grass/trunk/vector/v.clean
基本例程的示例:
此处概述了基本概念:http : //grass.osgeo.org/programming7/vectorlib.html#vlibTopoExamples
尽管不是算法,但此页面为您提供一些有关在ArcGIS工具“检查几何/修复几何”中“检查几何”查找的拓扑错误类型的信息。http://help.arcgis.com/zh-CN/arcgisdesktop/10.0/help/index.html#//00170000003v000000
Null geometry: The record will be deleted from the feature class. To keep records with null geometry, uncheck the tool dialog option Delete Features with Null Geometry, or in scripting set the delete_null parameter to KEEP_NULL.
Short segment: The geometry's short segment will be deleted.
Incorrect ring ordering: The geometry will be updated to have correct ring ordering.
Incorrect segment orientation: The geometry will be updated to have correct segment orientation.
Self intersections: the areas of overlap in a polygon will be dissolved.
Unclosed rings: The unclosed rings will be closed by connecting the ring's end points.
Empty parts: The parts that are null or empty will be deleted.
Duplicate vertex: One of the vertices will be deleted.
Mismatched attributes: The Z or M coordinate will be updated to match.
Discontinuous parts: Multiple parts will be created from the existing discontinuous part.
Empty Z values: The Z value will be set to 0.
我不认为有一种方法可以完全自动地纠正给定数据集中的拓扑错误。有些东西(例如悬垂物)可能能够自动拆分然后删除生成的悬垂物。但是,两个相邻多边形之间的条子又该如何与哪个条子合并以消除它呢?这类问题似乎需要用户输入。为了识别错误,我认为算法使用了DE-9IM的某种变体(在某些方面扩展了9个维度)。我认为您最好的选择是看Java拓扑套件(JTS)。特别是几何图形类。我认为这可以用于构建特定几何图形的不同组件,然后用于检查不同的拓扑问题。我从来没有做过,但是不久前就进行了研究。
如果您不熟悉Java,则GEOS是JTS的C ++风格,或者NetTopologySuite是C#的风格。
希望能有所帮助。
已经提到了ArcGIS的Integrate命令文档,但是ESRI还撰写了一篇技术论文“ 了解ArcGIS中的几何处理”,记录了Integrate(以及更广泛地涉及公差的地理处理操作)所使用的处理逻辑。重点是避免和纠正由地理处理产生的拓扑错误。给出了一些参考也可能有用。