Summary
Converts a schematic diagram to standard feature classes or shapefiles.
Schematic diagrams are all stored in hidden feature classes that are specific to Schematics and need the rest of the schematic configuration tables and information to be useful. This tool allows you to share diagrams with other people without having to provide the entire schematic dataset, which includes all the diagrams and the configuration. If you plan to convert multiple diagrams, you can choose whether they will all be placed into the same set of standard feature classes or shapefiles or if each diagram will get its own set of feature classes or shapefiles.
Usage
To convert a schematic diagram layer to standard feature classes, browse to and select a geodatabase/feature dataset for the specified output location parameter. To convert a schematic diagram layer to shapefiles, browse to and select a folder.
To convert several diagrams into the same standard feature classes/shapefiles, check the Reuse Existing Structure option. To convert several diagrams into different standard feature classes/shapefiles, uncheck the Reuse Existing Structure option.
Check the Export All Related Feature Attributes option if you want to have all the real feature class attributes to be appended to the schematic records during the convert process.
The Export All Related Attribute Features option only works for schematic feature classes for which the Associated Feature Class/Table field value is known. If no associated feature class/table is specified for a schematic feature class, its related attribute features cannot be exported.
Select POLYGON in Container Geometry if you want all containers in the input schematic diagram to be converted as a polygon feature. If you want such containers to be converted as polyline (or point) features, select POLYLINE (or POINT).
When the specified input schematic diagram layer has already been converted in the specified output location, it will be deleted before being re-created.
Syntax
ConvertDiagram_schematics (in_diagram, out_location, {reuse_fc}, {export_related_attributes}, {container_geometry}, {config_keyword})
Parameter | Explanation | Data Type |
in_diagram | The schematic diagram layer to be converted. | Schematic Layer |
out_location | Workspace or feature dataset in which the schematic diagram will be converted. This container must already exist. | Workspace;Feature Dataset |
reuse_fc [reuse_fc,...] (Optional) | Indicates whether the input schematic diagram layer will be converted in the same standard feature classes/shapefiles as the other diagrams based on the same diagram template.
| Boolean |
export_related_attributes (Optional) | Indicates whether all the attributes stored in the real feature classes/object tables associated with the schematic feature classes will also be converted.
| Boolean |
container_geometry [container_geometry,...] (Optional) | Indicates the geometry type of the features that will be created for the converted schematic containers contained in the input diagram.
| String |
config_keyword (Optional) | The configuration keyword that determines the storage parameters of the table in a relational database management system (RDBMS). This is for enterprise, workgroup, or desktop geodatabase only. | String |
Code sample
ConvertDiagram example (script tool)
The following script demonstrates how to use the ConvertDiagram function in a script tool. This script tool loops on all diagrams contained in an input schematic container—that is, a schematic dataset or schematic folder—and converts them to standard features or shapefiles in an output location.How to create and configure this script tool:
- Copy the following script in any text editor and save the text file with the .py extension.
- Start ArcCatalog and open the ArcToolbox window.
- Add a new script:
- Type a name for it (ConvertDiagramsTool, for example).
- For the Script File parameter, specify the .py file you have just created.
- Then specify the five following parameters:
- Display Name: Input Schematic Container, Data Type: Schematic Dataset or Schematic Folder; Type Property=Required, Direction Property=Input
- Display Name: Output Location, Data Type: Workspace or Feature Dataset; Type Property=Required, Direction Property=Input
- Display Name: Recursive, Data Type: Boolean; Type Property=Required, Direction Property=Input, Default Value=True
- Display Name: Diagram Class Filter, Data Type: String; Type Property=Optional, Direction Property=Input
- Display Name: Derived Output Location, Data Type: Workspace or Feature Dataset; Type Property=Derived, Direction Property=Output, Obtained from=Output_Location
# Name: ConvertDiagrams.py
# Description: Convert schematic diagrams
# Requirement: ArcGIS Schematics extension
# import arcpy, sys, math
import arcpy, sys, math
msgInputsErr = "Invalid arguments."
msgParseErr = "Cannot parse input arguments."
msgConvertErr = "Error during conversion."
msgNoLicenseAvailable = "ArcGIS Schematics extension 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 extension 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 extension licence
arcpy.CheckInExtension("Schematics")
except:
arcpy.AddError(msgConvertErr)
raise
Environments
Licensing information
- ArcGIS for Desktop Basic: Requires Schematics
- ArcGIS for Desktop Standard: Requires Schematics
- ArcGIS for Desktop Advanced: Requires Schematics