Convert Diagram To Features (Schematics)
Summary
This tool converts a schematic diagram to feature classes or shapefiles.
It allows exporting of several diagrams either in the same feature classes/shapefiles (one feature class/shapefile per schematic feature class) or in different feature classes/shapefiles per diagram (one feature class/shapefile per schematic feature class and per diagram).
See the Script example section for a sample use of this tool that allows you to export all diagrams contained in a schematic dataset into features.
Usage
-
To convert a schematic diagram to feature classes, browse to and select a geodatabase/feature dataset for the specified output location parameter. To convert a schematic diagram to shapefiles, browse to and select a folder.
-
To export several diagrams in the same feature classes/shapefiles, check the Reuse Existing Structure option. To export several diagrams in different feature classes/shapefiles, uncheck the Reuse Existing Structure option.
-
Check the Export All Related Feature Attributes option if you want each schematic feature contained in the input schematic diagram to be exported with its schematic attributes and all the attributes related to its associated real feature.
-
The Export All Related Attribute Features option 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.
-
When the Reuse Existing Structure option is enabled and the structure has been created without the Export All Related Attribute Features option, enabling this option will have no effect; no field corresponding to the associated features can be created. Check the Export All Related Attribute Features option at the first diagram conversion if you want these attributes to be exported during each diagram conversion process.
-
Select POLYGON in Container Geometry if you want all containers contained in the input schematic diagram to be exported as a polygon feature. If you want such containers to be exported as polyline (or point) features, select POLYLINE (or POINT).
-
When working with the Reuse Existing Structure option while POLYGON (POLYLINE or POINT) has been chosen for the first diagram conversion, there is no way to change the conversion to POLYLINE or POINT (POLYGON) for the next conversions. If you want to change it, you must remove the structure and export your diagrams again.
-
Schematic feature nodes are usually converted to point features unless they are containers in the input schematic diagram. But if the structure is created from an input diagram that doesn't have a container or has empty containers, the feature class created for these schematic feature classes will be a point type feature class.
-
When the specified input schematic diagram has been already exported in the specified output location, it will be deleted before being re-created.
Syntax
Parameter | Explanation | Data Type |
in_diagram |
The schematic diagram to be converted. | Schematic diagram |
out_location |
Workspace, feature dataset, or folder in which the schematic diagram will be converted. This container must already exist. | Workspace;Feature dataset;Folder |
reuse_fc (Optional) |
Indicates whether the input schematic diagram will be exported in the same feature classes/shapefiles as the other diagrams based on the same diagram template.
| String |
export_related_attributes (Optional) |
Indicates whether all the attributes stored in the feature classes/object tables associated with the schematic feature classes contained in the export diagram will be also exported.
Note: If no associated feature class/table is specified for a schematic feature class, no feature attributes can be exported. Note: When using the Reuse Existing Structure option and the structure already exists without the associated feature fields, enabling this option will have no effect. | String |
container_geometry [container_geometry,...] (Optional) |
Indicates the geometry type of the features that will be created for the exported schematic containers contained in the input diagram.
Note: When using the Reuse Existing Structure option and the structure already exists with POLYGON (POLYLINE or POINT) feature classes created for container schematic features, there is no way to change the feature class type to POLYLINE or POINT (POLYGON) for the next conversions. | 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 ArcSDE only. | String |
Code Sample
The following script allows you to loop on all diagrams contained in a schematic container—that is, a schematic dataset or schematic folder—and converts them to features in an output location.
How to use this scripting example:
- 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
Required input parameters: An input schematic container (dataset or folder) + an output location (GDB, feature dataset, or folder for shapefiles)
Optional arguments: A recursive flag + adiagram class filter
Output derived location: A workspace or feature dataset
# 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