创建逻辑示意图 (Schematics)

许可等级:BasicStandardAdvanced

摘要

创建逻辑示意图。

根据所选择的逻辑示意图构建器的不同,逻辑示意图的创建可基于要素图层、要素类、对象表、网络分析图层或 XML 数据。

用法

语法

CreateDiagram_schematics (out_location, out_name, diagram_type, {in_data}, {builder_options})
参数说明数据类型
out_location

要在其中创建逻辑示意图的目标逻辑示意图数据集或逻辑示意图文件夹。

警告警告:

此容器必须已经存在。

Schematic Dataset;Schematic Folder
out_name

要创建的逻辑示意图的名称。

String
diagram_type
[diagram_type,...]

要用于创建逻辑示意图的逻辑示意图模板。

String
in_data
[in_data,...]
(可选)

生成逻辑示意图所需的输入数据。

输入数据参数可指定生成逻辑示意图要基于的元素。对于大多数预定义的逻辑示意图构建器而言,必须指定此参数:

  • 对于那些使用配置成根据几何网络或网络数据集进行操作的“标准构建器”的逻辑示意图模板,“输入数据”参数必须至少引用一个要素图层、要素类或对象表。
  • 对于使用“网络数据集构建器”的逻辑示意图模板,“输入数据”参数必须引用唯一的网络分析图层。如果未执行相关网络分析,则在将已求解的分析图层用作输入之前,Schematics 会尝试执行该网络分析。
  • 对于与“XML 构建器”关联的逻辑示意图模板,如果逻辑示意图生成的数据具有外部组件,则“输入数据”参数可选。但是,如果未定义构建器属性的外部组件,则“输入数据”必须引用 XML 文件。在此两种情况下,输入 XML 数据必须根据 XMLBuilderDiagram XML 方案文件构建。
  • 对于那些使用配置成对自定义查询进行操作的“标准构建器”的逻辑示意图模板,则不需要输入数据。
警告警告:

对于使用“标准构建器”的逻辑示意图模板(当其配置成通过几何网络或网络数据集、XML 构建器和网络数据集构建器操作时),如果未指定输入数据,则不能生成逻辑示意图。

Table View;Data Element;Layer
builder_options
(可选)

逻辑示意图构建器创建参数。仅对于那些基于网络数据集构建器来指定是否合并结点的逻辑示意图,这些参数才是必需参数。

  • MERGE_NODES指定网络元素交汇点,其在生成的逻辑示意图中用单个逻辑示意图要素结点表示(沿路径分析的生成路径多次显示)。如果它们位于服务区分析的相同位置时,也可以合并中跨交汇点元素。
  • NO_MERGE_NODES指定将不合并逻辑示意图要素结点(默认)。
String

代码实例

使用几何网络数据的 CreateDiagram 和标准构建器 - 示例 1(独立 Python 脚本)

根据按几何网络形式组织的 GIS 要素创建示例逻辑示意图。

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

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

# Name: CreateDiagramStd.py
# Description: Create schematic diagrams sample from GIS 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"
    out_schDataset="ElecDemo"
    out_diagAName="FeederDiagram"
    out_diagBName="ElectricMainNetworkDiagram"
    out_diagTempName="GeoSchematic"
    input_FC1="ElectricNetwork/Feeder"
    input_FC2="ElectricNetwork/PrimaryLine"
    input_LayerName="PrimaryLineLayer"
    input_Filter="PHASECODE=135"

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

    # CreateDiagram from a feature class, Feeder
    arcpy.CreateDiagram_schematics(out_schDataset, out_diagAName, out_diagTempName, input_FC1)

    # CreateDiagram from a feature layer
    # 1) Creates a layer with the selection
    InputLayer = arcpy.MakeFeatureLayer_management(input_FC2, input_LayerName, input_Filter)
    # 2) Uses the layer as input of CreateDiagram
    arcpy.CreateDiagram_schematics(out_schDataset, out_diagBName, out_diagTempName, InputLayer)

    # 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)
CreateDiagram 和网络数据集构建器 - 示例 2(独立 Python 脚本)

根据求解的网络分析图层创建示例逻辑示意图。

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

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

# Name : CreateDiagramNDS.py
# Description : Create a schematic diagram from 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"
    out_schDataset="NA_SchematicDataset"
    out_diagAName="DiagramTour_MERGED"
    out_diagBName="DiagramTour_NOTMERGED"
    out_diagTempName="NADiagrams"
    in_NALayerName="Routes/Tour1"
    option1="MERGE_NODES"
    option2="NO_MERGE_NODES"

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

    # CreateDiagram from a solved route network analysis layer
    # 1) Solves the route network analysis layer, Tour1
    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 (option1)
    arcpy.CreateDiagram_schematics(out_schDataset, out_diagAName, out_diagTempName, in_NALayerName, option1)
    # b - A diagram where N nodes are created to represent a GIS point crossed N times along this route (option2)
    arcpy.CreateDiagram_schematics(out_schDataset, out_diagBName, out_diagTempName, in_NALayerName, 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 occured on line %i" % tb.tb_lineno
    print str(e)
CreateDiagram 和 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: CreateDiagramXML.py
# Description: Create a sample schematic diagram 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"
    out_schDataset="XMLDataset"
    out_diagName="XMLDiagramSample"
    out_diagTempName="XMLDiagrams"
    input_XmlFile="SampleNetworkData.xml"

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

    # CreateDiagram from a XML file, SampleNetworkData.xml file
    arcpy.CreateDiagram_schematics(out_schDataset, out_diagName, out_diagTempName, dataLocation + "/" + input_XmlFile)

    # 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)
使用自定义查询的 CreateDiagram 和标准构建器 - 示例 4(独立 Python 脚本)

根据自定义查询创建示例逻辑示意图。

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

  1. 启动 ArcCatalog。
  2. 此脚本使用 ElecDemo 教程地理数据库的副本,以避免覆盖原有的室内设施逻辑示意图:
    • 导航到目录树中的 C:\ArcGIS\ArcTutor\Schematics\Schematics_In_ArcMap 文件夹。
    • 复制并粘贴 ElecDemo 地理数据库。新建的 ElecDemo_1 地理数据库是脚本示例将要处理的数据库。
  3. 复制以下脚本并粘贴到 ArcCatalog 或 ArcMap Python 窗口。
  4. 按 ENTER 键。ArcGIS Schematics 扩展模块

# Name: CreateDiagramCustomQuery.py
# Description: Create a schematic diagram from custom queries
# Requirement: 

# 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_1.gdb"
    out_schDataset="ElecDemo"
    out_schFolder="Inside Plants"
    out_diagName="Substation 08"
    out_diagTempName="InsidePlants"

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

    # CreateDiagram from a diagram template configured from custom queries
    arcpy.CreateDiagram_schematics(out_schDataset + "/" + out_schFolder, out_diagName, out_diagTempName)

    # 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)

环境

相关主题

许可信息

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