摘要
将逻辑示意图转换为标准要素类或 shapefile。
逻辑示意图全部存储在 Schematics 特定的隐藏要素类中,并且需要其余逻辑示意图配置表和信息才能起作用。此工具可用于与其他用户共享逻辑示意图,而无需提供整个逻辑示意图数据集(包含全部逻辑示意图和配置)。如果打算转换多个逻辑示意图,则可选择是将其全部放置到同一组标准要素类或 shapefile 中,还是每个逻辑示意图分别拥有一组要素类或 shapefile。
用法
要将逻辑示意图图层转换为标准要素类,请浏览至特定输出位置参数的地理数据库/要素数据集并将其选中。要将逻辑示意图图层转换为 shapefile,请浏览至文件夹并将其选中。
要将多个逻辑示意图转换为相同的标准要素类/shapefile,请选中重用现有结构选项。要将多个逻辑示意图转换为不同的标准要素类/shapefile,请取消选中重用现有结构选项。
如果希望在转换过程中将所有真实要素类属性附加到逻辑示意图记录,请选中导出所有相关要素属性。
导出所有相关属性要素选项仅适用于“关联要素类/表”字段值已知的逻辑示意图要素类。如果没有为逻辑示意图要素类指定关联要素类/表,则不能导出其相关的属性要素。
如果希望将输入逻辑示意图中的所有容器转换为面要素,请选择容器几何中的 POLYGON。如果希望将此类容器转换为折线要素或点要素,请选择 POLYLINE(或 POINT)。
如果指定的输入逻辑示意图图层已转换到指定的输出位置,则重新创建之前会将其删除。
语法
ConvertDiagram_schematics (in_diagram, out_location, {reuse_fc}, {export_related_attributes}, {container_geometry}, {config_keyword})
参数 | 说明 | 数据类型 |
in_diagram | 要转换的逻辑示意图图层。 | Schematic Layer |
out_location | 要转换逻辑示意图的工作空间或要素数据集。此容器必须已经存在。 | Workspace;Feature Dataset |
reuse_fc (可选) | 指示是否要将输入逻辑示意图图层转换为与基于相同逻辑示意图模板的其他逻辑示意图相同的标准要素类/shapefile。
| Boolean |
export_related_attributes (可选) | 指示是否也一并转换与逻辑示意图要素类相关联的真实要素类/对象表中存储的所有属性。
| Boolean |
container_geometry (可选) | 指示要为输入逻辑示意图中已转换的逻辑示意图容器创建哪种几何类型的要素。
| String |
config_keyword (可选) | 配置关键字,用来确定关系数据库管理系统 (RDBMS) 中表的存储参数。它仅适用于 企业级、工作组或桌面地理数据库。 | String |
代码示例
ConvertDiagram 示例(脚本工具)
以下脚本演示了如何在脚本工具中使用 ConvertDiagram 函数。此脚本工具可以循环遍历输入逻辑示意图容器(即逻辑示意图数据集或逻辑示意图文件夹)中的所有逻辑示意图,并将其转换为输出位置中的标准要素或 shapefile。创建和配置此脚本工具的方法:
- 将以下脚本复制到任意文本编辑器,然后另存为扩展名为 .py 的文本文件。
- 启动 ArcCatalog,然后打开 ArcToolbox 窗口。
- 添加新脚本:
- 为其输入名称(例如 ConvertDiagramsTool)。
- 对于“脚本文件”参数,指定刚刚创建的 .py 文件。
- 然后指定以下五组参数:
- 显示名称:输入逻辑示意图容器,数据类型:逻辑示意图数据集或逻辑示意图文件夹,类型属性:必填,方向属性:输入
- 显示名称:输出位置,数据类型:工作空间或要素数据集;类型属性:必填,方向属性:输入
- 显示名称:递归,数据类型:布尔型;类型属性:必填,方向属性:输入,默认值:True
- 显示名称:逻辑示意图类过滤器,数据类型:字符串;类型属性:可选,方向属性:输入
- 显示名称:派生的输出位置,数据类型:工作空间或要素数据集;类型属性:派生,方向属性:输出,获取自:Output_Location
# Name: ConvertDiagrams.py
# Description: Convert schematic diagrams
# Requirement: ArcGIS Schematics 扩展模块
# import arcpy, sys, math
import arcpy, sys, math
msgInputsErr = "Invalid arguments."
msgParseErr = "Cannot parse input arguments."
msgConvertErr = "Error during conversion."
msgNoLicenseAvailable = "ArcGIS Schematics 扩展模块 license required"
# Recursively searches for schematic diagrams in the folders
def RecursiveSearch(inCont, bRecursive):
try:
childs = inCont.Children
dataset = None
for dataset in childs:
if dataset.DataType == "SchematicFolder" and bRecursive:
RecursiveSearch(dataset, bRecursive)
elif dataset.DataType == "SchematicDiagram":
if diagramClassFilter == "" or diagramClassFilter == dataset.DiagramClassname:
pathList.append(dataset.CatalogPath)
except:
raise
try:
# Checks out the ArcGIS Schematics 扩展模块 license
if arcpy.CheckExtension("Schematics") == "Available":
arcpy.CheckOutExtension("Schematics")
else:
raise Exception(msgNoLicenseAvailable)
except Exception as exc:
print exc
raise
arcpy.env.overwriteOutput = True
# Decodes parameters
try:
inputContainer = arcpy.GetParameterAsText(0)
outputLocation = arcpy.GetParameterAsText(1)
recursive = arcpy.GetParameterAsText(2)
if recursive == "false":
recursive = None
diagramClassFilter = arcpy.GetParameterAsText(3)
if inputContainer == "":
raise Exception()
except:
print msgParseErr
arcpy.AddError(msgParseErr)
raise
# Main code
try:
pathList = [] # List for diagram names to convert
arcpy.SetProgressorLabel("Searching diagrams to convert...")
RecursiveSearch(arcpy.Describe(inputContainer), recursive)
arcpy.SetProgressor("step", "Converting...", 0, len(pathList), 1)
for path in pathList:
# Execute convert
mes = "Converting Schematic Diagram : " + path
# Set the progressor label
arcpy.SetProgressorLabel(mes)
arcpy.AddMessage(mes)
arcpy.ConvertDiagram_schematics(path, outputLocation, "REUSE_FC", "NO_RELATED_ATTRIBUTES", "#")
arcpy.SetProgressorPosition()
# Returns the ArcGIS Schematics 扩展模块 licence
arcpy.CheckInExtension("Schematics")
except:
arcpy.AddError(msgConvertErr)
raise
环境
许可信息
- ArcGIS Desktop Basic: 需要 Schematics
- ArcGIS Desktop Standard: 需要 Schematics
- ArcGIS Desktop Advanced: 需要 Schematics