描述
创建逻辑示意图。
根据所选择的逻辑示意图构建器的不同,逻辑示意图的创建可基于要素图层、要素类、对象表、网络分析图层或 XML 数据。
使用方法
如果输出逻辑示意图名称当前已存在,则其可能在重新创建之前被删除。为避免被删除,可以取消选中地理处理选项 对话框中的覆盖地理处理操作的输出框。
根据与为要创建的逻辑示意图指定的逻辑示意图模板所关联的逻辑示意图构建器的不同,确定是否需要输入数据参数:
- 对于基于配置成对几何网络或网络数据集进行操作时选择标准构建器的逻辑示意图模板,此参数是必需的。指定的输入表可以是要素图层、要素类或对象表。
- 对于基于网络数据集构建器的逻辑示意图模板,必须为输入数据参数指定唯一的网络分析图层。
- 对于基于 XML 构建器的逻辑示意图模板,必须为输入数据参数指定唯一的 XML 文件。
- 对于基于配置成对自定义查询进行操作时选择标准构建器的逻辑示意图模板,则不需要输入数据。
语法
arcpy.schematics.CreateDiagram(out_location, out_name, diagram_type, {in_data}, {builder_options})
参数 | 说明 | 数据类型 |
out_location | 要在其中创建逻辑示意图的目标逻辑示意图数据集或逻辑示意图文件夹。 | Schematic Dataset;Schematic Folder |
out_name | 要创建的逻辑示意图的名称。 | String |
diagram_type | 要用于创建逻辑示意图的逻辑示意图模板。 | String |
in_data [in_data,...] (可选) | 生成逻辑示意图所需的输入数据。 输入数据参数可指定生成逻辑示意图要基于的元素。对于大多数预定义的逻辑示意图构建器而言,必须指定此参数:
| Table View;Data Element;Layer |
builder_options (可选) | 逻辑示意图构建器创建参数。仅对于那些基于网络数据集构建器来指定是否合并结点的逻辑示意图,这些参数才是必需参数。
| String |
代码示例
使用几何网络数据的 CreateDiagram 和标准构建器 - 示例 1(独立 Python 脚本)
根据按几何网络形式组织的 GIS 要素创建示例逻辑示意图。以下 Python 脚本示例的运行方法:
- 启动 ArcCatalog 或 ArcMap,显示一个新的空地图。
- 将以下脚本复制并粘贴到 Python 窗口中。
- 按 Enter 键。
# Name: CreateDiagramStd.py
# Description: Create schematic diagrams sample from GIS features organized into a geometric network
# Requirement: ArcGIS Schematics extension
# import system modules
import arcpy
msgNoLicenseAvailable = "ArcGIS Schematics extension license required"
try:
# Checks out the ArcGIS Schematics extension 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 extension 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 脚本示例的运行方法:
- 启动 ArcMap。
- 打开存储在 C:\ArcGIS\ArcTutor\Schematics\Schematics_Configuration\Network_Dataset 中的 ParisTours.mxd 文件。
- 单击地理处理 > 地理处理选项。
- 取消选中后台处理部分上的启用,然后单击 OK。
- 将以下脚本复制并粘贴到 Python 窗口中。
- 按 Enter 键。
# Name : CreateDiagramNDS.py
# Description : Create a schematic diagram from the network dataset builder
# Requirement: ArcGIS Schematics extension,ArcGIS Network Analyst extension
# import system modules
import arcpy
msgNoLicenseSchematicsAvailable = "ArcGIS Schematics extension license required"
msgNoLicenseNetworkAnalystAvailable = "ArcGIS Network Analyst extension license required"
try:
# Checks out the ArcGIS Schematics extension licence
if arcpy.CheckExtension("Schematics") == "Available":
arcpy.CheckOutExtension("Schematics")
else:
raise Exception(msgNoLicenseSchematicsAvailable)
# Checks out the ArcGIS Network Analyst extension 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 脚本示例的运行方法:
- 启动 ArcCatalog。
- 创建并配置示例脚本中使用的逻辑示意图数据集:
- 导航至 Catalog 树中的 C:\ArcGIS\ArcTutor\Schematics\Schematics_Configuration\XML_Data 文件夹。
- 右键单击 GISDatabaseForXML 地理数据库,指向“新建”,然后单击“逻辑示意图数据集”。
- 输入 XMLDataset 作为新建逻辑示意图数据集的名称,然后按下 ENTER。
- 右键单击 XMLDataset 逻辑示意图数据集,然后单击编辑。
- 在“数据集编辑器”树中右键单击 XMLDataset 条目,然后单击新建逻辑示意图模板。
- 在名称文本框中输入 XMLDiagrams。
- 在逻辑示意图构建器部分中选择 XML 构建器。
- 单击逻辑示意图构建器属性,然后选中自动创建逻辑示意图要素类。
- 关闭构建器属性对话框。
- 单击“确定”。
- 单击逻辑示意图数据集编辑器工具条上的“保存”,然后关闭逻辑示意图数据集编辑器。
- 将以下脚本复制并粘贴到 ArcCatalog 或 ArcMap Python 窗口中。
- 按 Enter 键。
# Name: CreateDiagramXML.py
# Description: Create a sample schematic diagram based on the XML builder
# Requirement: ArcGIS Schematics extension
# import system modules
import arcpy
msgNoLicenseAvailable = "ArcGIS Schematics extension license required"
try:
# Checks out the ArcGIS Schematics extension 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 extension 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 脚本示例的使用方法:
- 启动 ArcCatalog。
- 此脚本使用 ElecDemo 教程地理数据库的副本,以避免覆盖原有的室内设施逻辑示意图:
- 导航至目录树中的 C:\ArcGIS\ArcTutor\Schematics\Schematics_In_ArcMap 文件夹。
- 复制并粘贴 ElecDemo 地理数据库。新建的 ElecDemo_1 地理数据库是脚本示例将要处理的数据库。
- 将以下脚本复制并粘贴到 ArcCatalog 或 ArcMap Python 窗口中。
- 按 Enter 键。ArcGIS Schematics extension
# Name: CreateDiagramCustomQuery.py
# Description: Create a schematic diagram from custom queries
# Requirement:
# import system modules
import arcpy
msgNoLicenseAvailable = "ArcGIS Schematics extension license required"
try:
# Checks out the ArcGIS Schematics extension 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 extension 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)
环境
许可信息
- Basic: 需要 Schematics
- Standard: 需要 Schematics
- Advanced: 需要 Schematics