使用ArcPy拓扑检查的基本步骤

拓扑检查是GIS的特性,在ArcGIS可以使用多种方法进行检查,包括:python

一、在数据集上右键按向导创建;工具

二、使用拓扑工具箱的一系列工具分步创建;spa

三、建立模型工具,制做专门的拓扑工具;code

四、利用ArcPy灵活定制拓扑检查脚本;blog

五、使用ITopologyContainer等接口二次开发。接口

基本步骤

不管使用哪一种方式,拓扑检查都离不开如下的步骤:ip

建立拓扑:在数据集上新建一个用于拓扑的容器;utf-8

添加要素类:必须将须要参与拓扑检查的要素类添加到同一数据集的拓扑容器中;开发

设置容差:通常能够不设置,默认地理坐标是0.000000008983153度,投影坐标是0.0002米;it

添加规则:根据检查要素添加点、线、面的拓扑规则;

验证拓扑:若是前面步骤没有报错,表示建立拓扑完成,能够开始验证了;

查看结果:可能经过拓扑工具条查看拓扑结果,也能够导出为错误要素记录;

修改错误:拓扑检查的目的是修改拓扑错误,不一样的错误有相应的修改方式。

使用示例

下面是一个拓扑检查的示例,先由模型工具制做后,直接导出ArcPy脚本稍做修改(ESRI是否是很强大)。

# -*- coding: utf-8 -*-
# ---------------------------------------------------------------------------
# Fun   : NcTopology
# Author: gisweis
# Date  : 2019.10.8
# Email : 
# Notes : 
# ---------------------------------------------------------------------------


# Set the necessary product code
import arceditor
import arcpy
import os

# Script arguments
db = arcpy.GetParameterAsText(0)

arcpy.env.workspace = db
arcpy.env.overwriteOutput = True

# Local variables:
StrDataset = "StrDataset"
TraDataset = "TraDataset"
GQ_HOUA="GQ_HOUA"
GQ_BUIA="GQ_BUIA"
GQ_LRDA="GQ_LRDA"
GQ_LRRA="GQ_LRRA"

StrDataset_TP1 = "StrDataset_TP1"
StrDataset_TP1_PATH = StrDataset + os.sep + StrDataset_TP1

Not_Overlap = "Must Not Overlap (Area)"
Not_Gaps="Must Not Have Gaps (Area)"
BeCovered="Must Be Covered By Feature Class Of (Area-Area)"
Not_OverlapWith="Must Not Overlap With (Area-Area)"

# Process1: Create Topology
arcpy.CreateTopology_management(StrDataset, StrDataset_TP1, "")

# Process2: Add FeatureClass
arcpy.AddFeatureClassToTopology_management(StrDataset_TP1_PATH, GQ_HOUA, "1", "1")
arcpy.AddFeatureClassToTopology_management(StrDataset_TP1_PATH, GQ_BUIA, "1", "1")

arcpy.Copy_management(TraDataset + os.sep +GQ_LRDA, StrDataset + os.sep + GQ_LRDA+"_1", "")
arcpy.AddFeatureClassToTopology_management(StrDataset_TP1_PATH, GQ_LRDA+"_1", "1", "1")

arcpy.Copy_management(TraDataset + os.sep +GQ_LRRA, StrDataset + os.sep + GQ_LRRA+"_1", "")
arcpy.AddFeatureClassToTopology_management(StrDataset_TP1_PATH, GQ_LRRA+"_1", "1", "1")

# Process3: Set Tolerance
arcpy.SetClusterTolerance_management(StrDataset_TP1_PATH, "8.98315284119521E-09")

# Process4: Add Rule
arcpy.AddRuleToTopology_management(StrDataset_TP1_PATH, Not_Overlap, GQ_HOUA, "", "", "")
arcpy.AddRuleToTopology_management(StrDataset_TP1_PATH, Not_Overlap, GQ_BUIA, "", "", "")
arcpy.AddRuleToTopology_management(StrDataset_TP1_PATH, BeCovered, GQ_BUIA, "", GQ_HOUA, "")
arcpy.AddRuleToTopology_management(StrDataset_TP1_PATH, Not_OverlapWith, GQ_HOUA, "", GQ_LRDA+"_1", "")
arcpy.AddRuleToTopology_management(StrDataset_TP1_PATH, Not_OverlapWith, GQ_HOUA, "", GQ_LRRA+"_1", "")
# arcpy.AddRuleToTopology_management(StrDataset_TP1_PATH, Not_Gaps, GQ_HOUA, "", "", "")
# arcpy.AddRuleToTopology_management(StrDataset_TP1_PATH, Not_Gaps, GQ_BUIA, "", "", "")

# Process5: Validate Topology
arcpy.ValidateTopology_management(StrDataset_TP1_PATH)

# Process6: Delete
# 
# arcpy.Delete_management( StrDataset + os.sep +GQ_LRDA+"_1")
# arcpy.Delete_management( StrDataset + os.sep +GQ_LRRA+"_1")
相关文章
相关标签/搜索