Show Navigation | Hide Navigation

Multipart to Singlepart (Data Management)

Release 9.2
Last modified November 29, 2010
E-mail This Topic Printable Version Give Us Feedback


Related Topics

Separates (explodes) multipart features into separate singlepart features.


Illustration

Multipart to Singlepart illustration

Usage tips

Command line syntax
An overview of the Command Line window
MultipartToSinglepart_management <in_features> <out_feature_class>

Parameter Explanation Data Type
<in_features>

Each of the input feature's part(s) will be copied as individual features in the output feature class. If the input feature class is multipoint, the output feature class will contain points.

Feature Layer
<out_feature_class>

The feature class that will contain the results.

Feature Class
Data types for geoprocessing tool parameters


Command line example

MultipartToSinglepart c:/gdb.mdb/vegetation c:/gdb.mdb/vegetation_singlepart

Scripting syntax
About getting started with writing geoprocessing scripts
MultipartToSinglepart_management (in_features, out_feature_class)

Parameter Explanation Data Type
in_features (Required)

Each of the input feature's part(s) will be copied as individual features in the output feature class. If the input feature class is multipoint, the output feature class will contain points.

Feature Layer
out_feature_class (Required)

The feature class that will contain the results.

Feature Class

Data types for geoprocessing tool parameters


Script example

# Purpose: Break all multipart features into singlepart features, and generate a report of which features were separated.

# Create the geoprocessor
import arcgisscripting
gp = arcgisscripting.create()

# Create variables for the input and output feature classes
inFeatureClass = "c:/gdb.mdb/vegetation"
outFeatureClass = "c:/gdb.mdb/vegetation_singlepart"

# Use error trapping in case a problem occurs when running the tool
try:
    # Add a field to the input (if not already present), this will be used as a unique identifier
    if not gp.ListFields(inFeatureClass,"tmpUID").Next():
        gp.AddField(inFeatureClass, "tmpUID","double")

    # Determine what the name of the Object ID is
    fields = gp.listfields(inFeatureClass, "","oid")  
    OidFieldName = fields.next().name

    # Calculate the tmpUID to the OID since this is a Personal GDB, wrap the Field inside []
    exp = "[" + OidFieldName + "]"
    gp.CalculateField(inFeatureClass, "tmpUID", exp)

    # Run the tool to create a new fc with only singlepart features
    gp.MultipartToSinglepart(inFeatureClass,outFeatureClass)

    # Check if there is a different number of features in the output than there was in the input
    if (gp.GetCount(inFeatureClass) == (gp.GetCount(outFeatureClass))):
        print "The number of features in the input is the same as in the output, so no multipart features were found"
    else:
        # If there is a difference, print out the FID of the input features which were multipart
        gp.Frequency(outFeatureClass, outFeatureClass + "_freq", "tmpUID")

        # Use a search cursor to go through the table, and print the tmpUID
        print "Below is a list of the FIDs of all the multipart features from " + inFeatureClass
        rows = gp.SearchCursor(outFeatureClass + "_freq", "[FREQUENCY] > 1")
        row = rows.next()
        while row:
            print int(row.tmpUID)
            row = rows.next()

except:
    # If an error occurred, print out the error message
    print "Error occurred"
    print gp.GetMessages()

Please visit the Feedback page to comment or give suggestions on ArcGIS Desktop Help.
Copyright © Environmental Systems Research Institute, Inc.