将逻辑示意图转换为要素 (Schematics)

许可等级:BasicStandardAdvanced

摘要

将逻辑示意图转换为标准要素类或 shapefile。

逻辑示意图全部存储在 Schematics 特定的隐藏要素类中,并且需要其余逻辑示意图配置表和信息才能起作用。此工具可用于与其他用户共享逻辑示意图,而无需提供整个逻辑示意图数据集(包含全部逻辑示意图和配置)。如果打算转换多个逻辑示意图,则可选择是将其全部放置到同一组标准要素类或 shapefile 中,还是每个逻辑示意图分别拥有一组要素类或 shapefile。

注注:

有关用于转换逻辑示意图数据集或逻辑示意图文件夹中的所有逻辑示意图的脚本工具示例,请参阅“代码示例”部分。

用法

语法

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
[reuse_fc,...]
(可选)

指示是否要将输入逻辑示意图图层转换为与基于相同逻辑示意图模板的其他逻辑示意图相同的标准要素类/shapefile。

  • REUSE_FC将指定的逻辑示意图转换为与基于相同逻辑示意图模板的其他逻辑示意图(已转换或将被转换)相同的标准要素类/shapefile 时必须用到。在这种情况下,根据所选的输出位置将指定的逻辑示意图转换为:
    • 名称对应于逻辑示意图模板名称且每个要素类名称分别对应于逻辑示意图要素类名称的要素数据集。
    • 名称对应于逻辑示意图模板名称且每个 shapefile 名称分别对应于逻辑示意图要素类名称的文件夹。
    这是默认设置。
  • NO_REUSE_FC将输入逻辑示意图转换为新的要素数据集/文件夹,其中,要素数据集/文件夹的名称是输入逻辑示意图的模板名称与逻辑示意图名称的组合,而每个要素类/shapefile 的名称是逻辑示意图要素类名称与逻辑示意图名称的组合。
Boolean
export_related_attributes
(可选)

指示是否也一并转换与逻辑示意图要素类相关联的真实要素类/对象表中存储的所有属性。

  • NO_RELATED_ATTRIBUTES输入逻辑示意图中的每个逻辑示意图要素只与其逻辑示意图要素类中的属性一并转换。这是默认设置。
  • EXPORT_RELATED_ATTRIBUTES输入逻辑示意图中的每个逻辑示意图要素将与其逻辑示意图要素类中的属性以及与关联的真实要素相关的所有属性一并转换。
注注:

如果没有为逻辑示意图要素类指定关联要素类/表,则不能转换要素属性。

注注:

使用 REUSE_FCEXPORT_RELATED_ATTRIBUTES 时,必须存在具有关联要素字段的结构,以便转换相关属性。

Boolean
container_geometry
[container_geometry,...]
(可选)

指示要为输入逻辑示意图中已转换的逻辑示意图容器创建哪种几何类型的要素。

  • POLYGON将输入逻辑示意图中的每个容器转换为面要素。这是默认设置。
  • POLYLINE将输入逻辑示意图中的每个容器转换为折线要素。
  • POINT将输入逻辑示意图中的每个容器转换为点要素。
注注:

如果使用重用现有结构选项,并且在为容器逻辑示意图要素创建 POLYGON(POLYLINE 或 POINT)要素类时此结构已经存在,则在下次转换时无法将要素类类型更改为 POLYLINE 或 POINT (POLYGON)。

String
config_keyword
(可选)

配置关键字,用来确定关系数据库管理系统 (RDBMS) 中表的存储参数。它仅适用于 ArcSDE

String

代码实例

ConvertDiagram 示例(脚本工具)

以下脚本演示了如何在脚本工具中使用转换逻辑示意图 (ConvertDiagram) 函数。此脚本工具可以循环遍历输入逻辑示意图容器(即逻辑示意图数据集或逻辑示意图文件夹)中的所有逻辑示意图,并将其转换为输出位置中的标准要素或 shapefile。

创建和配置此脚本工具的方法:

  1. 将以下脚本复制到任意文本编辑器,然后另存为扩展名为 .py 的文本文件。
  2. 启动 ArcCatalog,然后打开 ArcToolbox 窗口。
  3. 添加新脚本:
    • 为其输入名称(例如 ConvertDiagramsTool)。
    • 对于“脚本文件”参数,指定刚刚创建的 .py 文件。
    • 然后指定以下五组参数:
      1. 显示名称:输入逻辑示意图容器;数据类型:逻辑示意图数据集或逻辑示意图文件夹;类型属性:必填;方向属性:输入
      2. 显示名称:输出位置;数据类型:工作空间或要素数据集;类型属性:必填;方向属性:输入
      3. 显示名称:递归;数据类型:布尔型;类型属性:必填;方向属性:输入;默认值:True
      4. 显示名称:逻辑示意图类过滤器;数据类型:字符串;类型属性:可选;方向属性:输入
      5. 显示名称:派生的输出位置;数据类型:工作空间或要素数据集;类型属性:必填;方向属性:输出;获取自:Output_Location

所需的输入参数:输入逻辑示意图容器(数据集或文件夹)+ 输出位置(GDB、要素数据集或 shapefile 的文件夹)

可选参数:递归标记 + 逻辑示意图类过滤器

输出派生位置:工作空间或要素数据集

# 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 for Desktop Basic: 需要 Schematics
ArcGIS for Desktop Standard: 需要 Schematics
ArcGIS for Desktop Advanced: 需要 Schematics
5/10/2014