更新逻辑示意图 (Schematics)

许可等级:BasicStandardAdvanced

摘要

更新逻辑示意图。

根据逻辑示意图构建器的不同,可基于要素图层、要素类、对象表、已求解的网络分析或 XML 文件来更新逻辑示意图。

用法

语法

UpdateDiagram_schematics (in_diagram, {in_data}, {builder_options})
参数说明数据类型
in_diagram

要更新的逻辑示意图图层。

Schematic Layer
in_data
[in_data,...]
(可选)

更新逻辑示意图时所依据的输入数据。

对于所有预定义的构建器,输入数据参数并不是必需的;该参数为可选参数:

  • 对于使用配置为根据自定义查询进行操作的“标准构建器”的逻辑示意图模板,不必设置输入表。
  • 对于使用“XML 构建器”的逻辑示意图模板,“输入数据”参数必须引用 XML 文件。
  • 对于使用“网络数据集构建器”的逻辑示意图模板,必须指定输入数据。该参数必须引用唯一的网络分析图层。如果未执行相关网络分析,则在将已求解的分析图层用作输入之前,Schematics 会尝试执行该网络分析。
  • 对于使用配置为根据几何网络或网络数据集进行操作的“标准构建器”的逻辑示意图模板,如果未指定“输入数据”参数,则“更新逻辑示意图”工具会根据用于生成逻辑示意图的要素/对象的初始设置,或者根据基于追踪参数(如果逻辑示意图根据高亮显示的追踪生成,则这些参数保留在逻辑示意图数据库中)的更新几何网络追踪结果进行处理。如果指定了“输入数据”参数,则该参数必须至少引用一个要素图层、要素类或对象表,这样才会根据“构建器选项”的值对此数据进行更新。

Table View;Data Element;Layer
builder_options
[builder_options,...]
(可选)

逻辑示意图构建器更新选项。更新选项是可选的。这些选项取决于与实现指定逻辑示意图的逻辑示意图模板相关的构建器:

  • 根据自定义查询(标准构建器)生成的逻辑示意图:KEEP_MANUAL_MODIFNO_KEEP_MANUAL_MODIFREFRESH
  • 根据 XML 数据(XML 构建器)生成的逻辑示意图:KEEP_MANUAL_MODIFNO_KEEP_MANUAL_MODIF
  • 根据网络数据集(网络数据集构建器)的求解程序结果生成的逻辑示意图:NO_MERGE_NODES;KEEP_MANUAL_MODIFNO_MERGE_NODES;NO_KEEP_MANUAL_MODIFMERGE_NODES;KEEP_MANUAL_MODIFMERGE_NODES;NO_KEEP_MANUAL_MODIF
  • 根据构成几何网络或网络数据集(标准构建器)的要素生成的逻辑示意图:
    • 如果未指定输入数据参数,则是 KEEP_MANUAL_MODIFNO_KEEP_MANUAL_MODIFREFRESH
    • 如果指定了输入数据参数,则是 REBUILD;KEEP_MANUAL_MODIFREBUILD;NO_KEEP_MANUAL_MODIFAPPEND;KEEP_MANUAL_MODIFAPPEND;NO_KEEP_MANUAL_MODIFAPPEND_QUICK;KEEP_MANUAL_MODIFAPPEND_QUICK;NO_KEEP_MANUAL_MODIF

  • KEEP_MANUAL_MODIF默认选项,适用于未设置输入数据时,基于 XML 构建器或标准构建器的逻辑示意图。使用此选项可根据最初用于生成此逻辑示意图(标准逻辑示意图)的原始选择/追踪/查询,或根据最初用于生成此逻辑示意图(XML 逻辑示意图)的 XML 输入数据的更新版本(但是,可能已经手动移除/减去/重新连接的逻辑示意图要素还保留在更新的逻辑示意图中),来同步输入逻辑示意图内容。
  • NO_KEEP_MANUAL_MODIF此选项可用于未设置输入数据时,基于 XML 构建器或标准构建器的逻辑示意图。使用此选项可根据最初用于生成此逻辑示意图(标准逻辑示意图)的原始选择/追踪/查询,或根据最初用于生成此逻辑示意图(XML 逻辑示意图)的 XML 输入数据的更新版本(但是,更新的逻辑示意图中将恢复可能已经手动移除/减去/重新连接的逻辑示意图要素),来同步输入逻辑示意图内容。
  • REFRESH此选项可用于未设置输入数据时,基于“标准构建器”的逻辑示意图。使用此选项可将输入逻辑示意图中所有逻辑示意图要素的属性刷新为几何网络或网络数据集要素类中相关网络要素的当前状态。
  • REBUILD;KEEP_MANUAL_MODIF设置输入数据时,基于“标准构建器”的逻辑示意图的可用默认选项。如果想根据指定的输入要素图层、要素类或对象表彻底重建输入逻辑示意图,则可使用此选项;但是,可能会将已手动移除/减去/重新连接的逻辑示意图要素保留在更新的逻辑示意图中。
  • REBUILD;NO_KEEP_MANUAL_MODIF设置输入数据时,基于“标准构建器”的逻辑示意图的可用选项。如果想根据指定的输入要素图层、要素类或对象表彻底重建输入逻辑示意图,则可使用此选项;但是,更新的逻辑示意图中将恢复可能已经手动移除/减去/重新连接的逻辑示意图要素。
  • APPEND;KEEP_MANUAL_MODIF设置输入数据时,基于“标准构建器”的逻辑示意图的可用选项。如果想追加与指定输入要素图层、要素类或对象表相关的逻辑示意图要素并完全同步输入逻辑示意图内容,则可使用此选项;但是,可能已经手动移除/减去/重新连接的逻辑示意图要素将保留在更新的逻辑示意图中。
  • APPEND;NO_KEEP_MANUAL_MODIF设置输入数据时,基于“标准构建器”的逻辑示意图的可用选项。如果想追加与指定输入要素图层、要素类或对象表相关的逻辑示意图要素并完全同步输入逻辑示意图内容,则可使用此选项;但是,更新的逻辑示意图中将恢复可能已经手动移除/减去/重新连接的逻辑示意图要素。
  • APPEND_QUICK;KEEP_MANUAL_MODIF设置输入数据时,基于“标准构建器”的逻辑示意图的可用选项。如果想追加与指定输入要素图层、要素类或对象表相关的逻辑示意图要素并部分同步输入逻辑示意图内容,则可使用此选项;但是,可能已经手动移除/减去/重新连接的逻辑示意图要素将保留在更新的逻辑示意图中。
  • APPEND_QUICK;NO_KEEP_MANUAL_MODIF设置输入数据时,基于“标准构建器”的逻辑示意图的可用选项。如果想追加与指定输入要素图层、要素类或对象表相关的逻辑示意图要素并部分同步输入逻辑示意图内容,则可使用此选项;但是,更新的逻辑示意图中将恢复可能已经手动移除/减去/重新连接的逻辑示意图要素。
  • NO_MERGE_NODES;KEEP_MANUAL_MODIF基于“网络数据集构建器”的逻辑示意图的默认选项。使用此选项可根据指定的求解网络分析图层来更新输入逻辑示意图,而不合并此图层中多次出现的节点;但是,可能将已经手动移除/减去/重新连接的逻辑示意图要素保留在更新的逻辑示意图中。
  • NO_MERGE_NODES;NO_KEEP_MANUAL_MODIF基于“网络数据集构建器”的逻辑示意图的可用选项。使用此选项可根据指定的求解网络分析图层来更新输入逻辑示意图,而不合并此图层中多次出现的节点;但是,更新的逻辑示意图中将恢复可能已经手动移除/减去/重新连接的逻辑示意图要素。
  • MERGE_NODES;KEEP_MANUAL_MODIF基于“网络数据集构建器”的逻辑示意图的可用选项。使用此选项可根据指定的求解网络分析图层来更新输入逻辑示意图并合并此图层中出现多次的节点;但是,可能已经手动移除/减去/重新连接的逻辑示意图要素将保留在更新的逻辑示意图中。
  • MERGE_NODES;NO_KEEP_MANUAL_MODIF基于“网络数据集构建器”的逻辑示意图的可用选项。使用此选项可根据指定的求解网络分析图层来更新输入逻辑示意图并合并此图层中出现多次的节点;但是,更新的逻辑示意图中将恢复可能已经手动移除/减去/重新连接的逻辑示意图要素。
String

代码实例

使用自定义查询的 UpdateDiagram 和标准构建器 - 示例 1(独立 Python 脚本)

更新完全通过自定义查询构建的示例逻辑示意图。这种情况下,只需要逻辑示意图名称参数。

以下 Python 脚本示例的运行方法:

  1. 启动 ArcCatalog 或 ArcMap,打开一个新的空地图。
  2. 将以下脚本复制并粘贴到 Python 窗口。
  3. 按 ENTER 键。

# Name: UpdateDiagramCustomQuery.py
# Description: Update a schematic diagram entirely built from custom queries
# Requirement: ArcGIS Schematics 扩展模块

# import system modules
import arcpy
msgNoLicenseAvailable = "ArcGIS Schematics 扩展模块 license required"

try:
    # Checks out the ArcGIS Schematics 扩展模块 license
    if arcpy.CheckExtension("Schematics") == "Available":
        arcpy.CheckOutExtension("Schematics")
    else:
        raise Exception(msgNoLicenseAvailable)

    # Sets Schematics general settings
    dataLocation="C:/ArcGIS/ArcTutor/Schematics/Schematics_In_ArcMap"
    gdbName="ElecDemo.gdb"
    in_schDataset="ElecDemo"
    in_schFolder="Inside Plants"
    in_diagName="Substation 08"
    builder_option1="REFRESH"

    # Sets environment settings
    arcpy.env.overwriteOutput = True
    arcpy.env.workspace = dataLocation + "/" + gdbName

    # UpdateDiagram by only refreshing attributes on the input diagram's schematic features 
    arcpy.UpdateDiagram_schematics(in_schDataset + "/" + in_schFolder + "/" + in_diagName, "#", builder_option1)

    # UpdateDiagram by fully synchronizing the input custom queries-based diagram (no parameters required)
    arcpy.UpdateDiagram_schematics(in_schDataset + "/" + in_schFolder + "/" + in_diagName)

    # Returns the ArcGIS Schematics 扩展模块 license
    arcpy.CheckInExtension("Schematics")

    print "Script completed successfully"

except Exception as e:
    # If an error occurred, print line number and error message
    import traceback, sys
    tb = sys.exc_info()[2]
    print "An error occurred on line %i" % tb.tb_lineno
    print str(e)
使用几何网络数据的 UpdateDiagram 和标准构建器 - 示例 2(独立 Python 脚本)

更新通过构成几何网络的要素构建的示例逻辑示意图。

以下 Python 脚本示例的运行方法:

  1. 启动 ArcCatalog 或 ArcMap,打开一个新的空地图。
  2. 将以下脚本复制并粘贴到 Python 窗口。
  3. 按 ENTER 键。

# Name: UpdateDiagramStd.py
# Description: Update schematic diagrams built from features organized into a geometric network
# Requirement: ArcGIS Schematics 扩展模块

# import system modules
import arcpy
msgNoLicenseAvailable = "ArcGIS Schematics 扩展模块 license required"

try:
    # Checks out the ArcGIS Schematics 扩展模块 license
    if arcpy.CheckExtension("Schematics") == "Available":
        arcpy.CheckOutExtension("Schematics")
    else:
        raise Exception(msgNoLicenseAvailable)

    # Sets Schematics general settings
    dataLocation="C:/ArcGIS/ArcTutor/Schematics/Schematics_In_ArcMap"
    gdbName="ElecDemo.gdb"
    in_schDataset="ElecDemo"
    in_schFolder="Feeders"
    in_diagTempName="GeoSchematic"
    # Sets variables used for the A/ UpdateDiagram sample
    in_diagAName="Feeder 0801-Rice Creek"
    # Sets variables used for the B/ UpdateDiagram sample
    in_diagBName="Feeder 0802-Goldmine"
    # Sets variables used for the C/ UpdateDiagram sample
    in_diagCName="WholeElectricNetworkDiagram"
    input_ForCDiag="ElectricNetwork/PrimaryLine;ElectricNetwork/SecondaryLine"    
    input_FC1="ElectricNetwork/PrimaryLine"
    # Sets variables used for the D/ UpdateDiagram sample
    in_diagDName="FeederDiagram"
    input_ForDDiag="ElectricNetwork/Feeder"
    input_FC2="ElectricNetwork/Substation"
    # Sets variables used for the E/ UpdateDiagram sample
    in_diagEName="FeederDiagramBIS"
    input_ForEDiag="ElectricNetwork/Feeder"
    input_FC3="ElectricNetwork/ServiceLocation"
    # Sets variables used for the F/ UpdateDiagram sample
    input_LayerName="PrimaryLineLayer"
    input_Filter="PHASECODE=135"    
    in_diagFName="PrimaryLinesDiagram"

    # Sets  builder_options variables for diagram Update
    # - For simply refreshing the diagram's attributes only
    U_option1="REFRESH"
    # - For rebuilding the diagram from a different input
    U_option2="REBUILD;KEEP_MANUAL_MODIF"
    U_option2BIS="REBUILD;NO_KEEP_MANUAL_MODIF"
    # - For appending new features to the diagram with a partial synchronization of its content
    U_option3="APPEND_QUICK;KEEP_MANUAL_MODIF"
    U_option3BIS="APPEND_QUICK;NO_KEEP_MANUAL_MODIF"
    # - For appending new features to the diagram with a full synchronization of its content
    U_option4="APPEND;KEEP_MANUAL_MODIF"
    U_option4BIS="APPEND;NO_KEEP_MANUAL_MODIF"

    # Sets environment settings
    arcpy.env.overwriteOutput = True
    arcpy.env.workspace = dataLocation + "/" + gdbName

    # Creates some new diagrams that will be used to exemplify the C/, D/, E/ and F/ UpdateDiagram samples
    arcpy.CreateDiagram_schematics(in_schDataset, in_diagCName, in_diagTempName, input_ForCDiag)
    arcpy.CreateDiagram_schematics(in_schDataset, in_diagDName, in_diagTempName, input_ForDDiag)
    arcpy.CreateDiagram_schematics(in_schDataset, in_diagEName, in_diagTempName, input_ForEDiag)
    InputLayer = arcpy.MakeFeatureLayer_management(input_FC1, input_LayerName, input_Filter)
    arcpy.CreateDiagram_schematics(in_schDataset, in_diagFName, in_diagTempName, InputLayer)

    # A/ UpdateDiagram by fully synchronizing the diagram content; no udpate parameters required
    arcpy.UpdateDiagram_schematics(in_schDataset + "/" + in_schFolder + "/" + in_diagAName)

    # B/ UpdateDiagram by only refreshing attributes on the input diagram's schematic features
    arcpy.UpdateDiagram_schematics(in_schDataset + "/" + in_schFolder + "/" + in_diagBName, "#", U_option1)

    # C/ UpdateDiagram by rebuilding the input diagram from a feature class
    arcpy.UpdateDiagram_schematics(in_schDataset + "/" + in_diagCName, input_FC1, U_option2)

    # D/ UpdateDiagram by appending new features to the input diagram with a partial synchronization
    arcpy.UpdateDiagram_schematics(in_schDataset + "/" + in_diagDName, input_FC2, U_option3)

    # E/ UpdateDiagram by appending new features to the input diagram with a full synchronization
    arcpy.UpdateDiagram_schematics(in_schDataset + "/" + in_diagEName, input_FC3, U_option4)

    # F/ UpdateDiagram by rebuilding the input diagram from an input layer
    arcpy.UpdateDiagram_schematics(in_schDataset + "/" + in_diagFName, InputLayer, U_option2)

    # Returns the ArcGIS Schematics 扩展模块 license
    arcpy.CheckInExtension("Schematics")

    print "Script completed successfully"

except Exception as e:
    # If an error occurred, print line number and error message
    import traceback, sys
    tb = sys.exc_info()[2]
    print "An error occurred on line %i" % tb.tb_lineno
    print str(e)
UpdateDiagram 和 XML 构建器 - 示例 3(独立 Python 脚本)

更新基于“XML 构建器”的示例逻辑示意图。

以下 Python 脚本示例的运行方法:

  1. 启动 ArcCatalog。
  2. 创建并配置示例脚本中使用的逻辑示意图数据集:
    • 导航到目录树中的 C:\ArcGIS\ArcTutor\Schematics\Schematics_Configuration\XML_Data 文件夹。
    • 右键单击 GISDatabaseForXML 地理数据库,指向“新建”,然后单击“逻辑示意图数据集”。
    • 输入 XMLDataset 作为新建逻辑示意图数据集的名称,然后按 Enter 键。
    • 右键单击 XMLDataset 逻辑示意图数据集,然后单击“编辑”。
    • 在“数据集编辑器”树中,右键单击 XMLDataset 条目,然后单击“新建逻辑示意图模板”。
    • 在“名称”文本框中输入 XMLDiagrams。
    • 在“逻辑示意图构建器”部分中,选择“XML 构建器”。
    • 单击“逻辑示意图构建器属性”,然后选中“自动创建逻辑示意图要素类”。
    • 关闭“构建器属性”对话框。
    • 单击“确定”。
    • 单击“逻辑示意图数据集编辑器”工具条上的“保存”,然后关闭“逻辑示意图数据集编辑器”。
  3. 复制以下脚本并粘贴到 ArcCatalog 或 ArcMap Python 窗口。
  4. 按 Enter 键。

# Name: UpdateDiagramXML.py
# Description: Update schematic diagrams based on the XML builder
# Requirement: ArcGIS Schematics 扩展模块

# import system modules
import arcpy
msgNoLicenseAvailable = "ArcGIS Schematics 扩展模块 license required"

try:
    # Checks out the ArcGIS Schematics 扩展模块 license
    if arcpy.CheckExtension("Schematics") == "Available":
        arcpy.CheckOutExtension("Schematics")
    else:
        raise Exception(msgNoLicenseAvailable)

    # Sets Schematics general settings
    dataLocation="C:/ArcGIS/ArcTutor/Schematics/Schematics_Configuration/XML_Data"
    gdbName="GISDatabaseForXML.gdb"
    in_schDataset="XMLDataset"
    in_diagName="XMLDiagramFeeder1"
    in_diagTempName="XMLDiagrams"
    input_XmlFile1="SampleNetworkFeeder1.xml"
    input_XmlFile2="SampleNetworkUpdatedFeeder1.xml"

    # Sets environment settings
    arcpy.env.overwriteOutput = True
    arcpy.env.workspace = dataLocation + "/" + gdbName

    # CreateDiagram from a XML file, SampleNetworkFeeder1.xml
    arcpy.CreateDiagram_schematics(in_schDataset, in_diagName, in_diagTempName, dataLocation + "/" + input_XmlFile1)

    # Updates the XMLDiagramFeeder1 diagram from another XML file, SampleNetworkUpdatedFeeder1.xml
    arcpy.UpdateDiagram_schematics(in_schDataset + "/" + in_diagName, dataLocation + "/" + input_XmlFile2)

    # Returns the ArcGIS Schematics 扩展模块 license
    arcpy.CheckInExtension("Schematics")

    print "Script completed successfully"

except Exception as e:
    # If an error occurred, print line number and error message import traceback, sys
    tb = sys.exc_info()[2]
    print "An error occured on line %i" % tb.tb_lineno
    print str(e)
UpdateDiagram 和网络数据集构建器 - 示例 4(独立 Python 脚本)

更新基于“网络数据集构建器”的逻辑示意图。

此 Python 脚本示例的运行方法:

  1. 启动 ArcMap。
  2. 打开存储在 C:\ArcGIS\ArcTutor\Schematics\Schematics_Configuration\Network_Dataset 中的 ParisTours.mxd 文件。
  3. 单击“地理处理”>“地理处理选项”。
  4. 在“后台处理”部分中,取消选中“启用”,然后单击“确定”。
  5. 复制以下脚本并粘贴到 Python 窗口。

# Name: UpdateDiagramNDS.py
# Description: Update sample schematic diagrams based on the Network Dataset builder
# Requirement: ArcGIS Schematics 扩展模块,ArcGIS Network Analyst 扩展模块 

# import system modules
import arcpy
msgNoLicenseSchematicsAvailable = "ArcGIS Schematics 扩展模块 license required"
msgNoLicenseNetworkAnalystAvailable = "ArcGIS Network Analyst 扩展模块 license required"

try:
    # Checks out the ArcGIS Schematics 扩展模块 licence
    if arcpy.CheckExtension("Schematics") == "Available":
        arcpy.CheckOutExtension("Schematics")
    else:
        raise Exception(msgNoLicenseSchematicsAvailable)

    # Checks out the ArcGIS Network Analyst 扩展模块 licence
    if arcpy.CheckExtension("Network") == "Available":
        arcpy.CheckOutExtension("Network")
    else:
        raise Exception(msgNoLicenseNetworkAnalystAvailable)

    # Sets general settings
    dataLocation="C:/ArcGIS/ArcTutor/Schematics/Schematics_Configuration/Network_Dataset"
    gdbName="NetworkAnalyst_Schematics.gdb"
    in_schDataset="NA_SchematicDataset"
    in_diagAName="DiagramTour2_A"
    in_diagBName="DiagramTour2_B"
    in_diagTempName="NADiagrams"
    in_NALayerName="Routes/Tour2"
    # builder_options variables for diagram Generation and Update
    G_option1="MERGE_NODES"
    G_option2="NO_MERGE_NODES"
    U_option1="NO_MERGE_NODES;KEEP_MANUAL_MODIF"
    U_option2="MERGE_NODES;KEEP_MANUAL_MODIF"

    # Sets environment settings
    arcpy.env.overwriteOutput = True
    arcpy.env.workspace = dataLocation + "/" + gdbName

    # UpdateDiagram from a solved route network analysis layer
    # 1) Solves the route network analysis layer, 
    arcpy.Solve_na(in_NALayerName)
    # 2) Creates diagrams from this solved route network analysis layer
    # a - A diagram where a single node is created to represent a GIS point crossed N times along this route (G_option1)
    arcpy.CreateDiagram_schematics(in_schDataset, in_diagAName, in_diagTempName, in_NALayerName, G_option1)
    # b - A diagram where N nodes are created to represent a GIS point crossed N times along this route (G_option2)
    arcpy.CreateDiagram_schematics(in_schDataset, in_diagBName, in_diagTempName, in_NALayerName, G_option2)
    # 3) Updates those diagrams from the same solved route network analysis layer by changing the merge nodes option
    arcpy.UpdateDiagram_schematics(in_schDataset + "/" + in_diagAName, in_NALayerName, U_option1)
    arcpy.UpdateDiagram_schematics(in_schDataset + "/" + in_diagBName, in_NALayerName, U_option2)

    # Returns the licences
    arcpy.CheckInExtension("Schematics")
    arcpy.CheckInExtension("Network")

    print "Script completed successfully"

except Exception as e:
    # If an error occurred, print line number and error message
    import traceback, sys
    tb = sys.exc_info()[2]
    print "An error occurred on line %i" % tb.tb_lineno
    print str(e)

环境

此工具不使用任何地理处理环境

相关主题

许可信息

ArcGIS for Desktop Basic: 需要 Schematics
ArcGIS for Desktop Standard: 需要 Schematics
ArcGIS for Desktop Advanced: 需要 Schematics
5/10/2014