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

摘要

此工具用于将逻辑示意图转换为要素类或 shapefile。

它允许将多个逻辑示意图导出到相同的要素类/shapefile(每个逻辑示意图要素类一个要素类/shapefile)中或每个逻辑示意图的不同要素类/shapefile(每个逻辑示意图要素类和每个逻辑示意图一个要素类/shapefile)中。

注注:

请参阅“脚本”示例部分,以了解此工具在应用中如何将逻辑示意图数据集中的所有逻辑示意图导出为要素。

用法

语法

ConvertDiagram_schematics (in_diagram, out_location, {reuse_fc}, {export_related_attributes}, {container_geometry}, {config_keyword})
参数说明数据类型
in_diagram

要转换的逻辑示意图。

Schematic diagram
out_location

要转换逻辑示意图的工作空间、要素数据集或文件夹。此容器必须已经存在。

Workspace;Feature dataset;Folder
reuse_fc
(可选)

指示输入逻辑示意图是否要作为基于相同逻辑示意图模板的其他逻辑示意图导出到相同的要素类/shapefile 中。

  • REUSE_FC必须使用该选项才能将由相同逻辑示意图模板实现的多个逻辑示意图导出到相同要素类/shapefile 中。指定的逻辑示意图将导出到某个要素数据集/文件夹的要素类/shapefile 中,其中,要素数据集/文件夹的名称与逻辑示意图模板的名称相对应,而每个要素类/shapefile 的名称对应于逻辑示意图模板关联的逻辑示意图要素类的名称。这是默认设置。
  • NO_REUSE_FC将逻辑示意图导出到在某个要素数据集/文件夹中新建的要素类/shapefile 中,其中,要素数据集/文件夹的名称是所导出逻辑示意图的逻辑示意图模板名称与逻辑示意图名称的组合,而每个要素类/shapefile 的名称是逻辑示意图要素类名称与逻辑示意图名称的组合。
String
export_related_attributes
(可选)

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

  • NO_RELATED_ATTRIBUTES输入逻辑示意图中的每个逻辑示意图要素只与其逻辑示意图要素类中的属性一并导出。这是默认设置。
  • EXPORT_RELATED_ATTRIBUTES输入逻辑示意图中的每个逻辑示意图要素将与其逻辑示意图要素类中的属性以及存储在关联要素类/对象表中且与关联的真实要素相关的所有属性一并导出。
注注:

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

注注:

如果使用重用现有结构选项,并且在没有关联的要素字段时此结构已经存在,则启用此选项不会产生任何效果。

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

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

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

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

String
config_keyword
(可选)

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

String

代码示例

ConvertDiagram GP 工具的脚本示例

以下脚本可以循环遍历逻辑示意图容器(即逻辑示意图数据集或逻辑示意图文件夹)中的所有逻辑示意图,并将其转换为输出位置中的要素。

使用此示例脚本的方法:

  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
# Author: ESRI

# import arcpy, sys, math
msgInputsErr = "Invalid arguments."
msgParseErr = "Cannot parse input arguments."
msgConvertErr = "Error during conversion."

msgNoLicenseAvailable = "Schematics license required"

# Search schematic diagrams recursively in the folders
# list 'pathList'  stores the result
	def RecursiveSearch(inCont, bRecursive):
		try:
			childs = inCont.Children
			dataset = childs.Next()
			while dataset:
				if dataset.DataType == "SchematicFolder" and bRecursive:
					RecursiveSearch(dataset, bRecursive)
				elif dataset.DataType == "SchematicDiagram":
					if diagramClassFilter == "" or diagramClassFilter == dataset.DiagramClassname:
						pathList.append(dataset.CatalogPath)
				dataset = childs.next()
		except:
			raise
	
try:
		if arcpy.CheckExtension("Schematics1") == "Available":
			arcpy.CheckOutExtension("Schematics")
		else:
			raise Exception(msgNoLicenseAvailable)
except Exception as exc:
		print exc
		raise

arcpy.OverWriteOutput = True

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

except:
	arcpy.AddError(msgConvertErr)
	raise

环境

相关主题

许可信息

ArcView: 需要 Schematics
ArcEditor: 需要 Schematics
ArcInfo: 需要 Schematics

7/10/2012