De multiparte a parte simple (Administración de datos)

Resumen

Crea una clase de entidad de entidades de parte simple separando entidades de entrada multiparte.

Ilustración

Ilustración de la herramienta De multiparte a parte simple

Uso

  • Los atributos de las entidades de entrada se mantendrán en la clase de entidad de salida. Se agregará un campo nuevo, ORIG_FID, a la clase de entidad de salida y se establecerá en los Id. de entidad de entrada.

  • Cada parte de una entidad multiparte se separará en entidades individuales en la clase de entidad de salida. Las entidades que ya son de parte simple no serán afectadas.

  • La mayoría de los tipos de entidades de salida serán iguales a los de entrada (los polígonos de entrada siguen siendo polígonos; las líneas de entrada siguen siendo líneas). Si las entidades de entrada son de tipo multipunto, la clase de entidad de salida será de tipo punto.

  • Para reconstruir entidades multiparte a partir de entidades de parte simple en función de un valor de campo común, como ORIG_FID, use la herramienta Disolver.

  • Una entidad multiparte se separará en las partes geométricas que la componen. Cada parte se puede definir mediante un conjunto de vértices que contienen coordenadas x, y y z organizadas como sigue:

    • Triángulos individuales que hacen referencia a tres vértices.
    • Franjas de triángulos definidas por varios triángulos que comparten sucesivamente un borde común.
    • Abanicos triangulares definidos por varios triángulos con un punto de origen común.
    • Anillos que representan una región coplanar cuyo límite viene definido por cuatro o más vértices.

Parámetros

EtiquetaExplicaciónTipo de datos
Entidades de entrada

Entidades de entrada que pueden ser de cualquier tipo de entidad.

Feature Layer
Clase de entidad de salida

Clase de entidad de salida que contiene entidades que varían según el tipo de entidad de entrada.

Feature Class

arcpy.management.MultipartToSinglepart(in_features, out_feature_class)
NombreExplicaciónTipo de datos
in_features

Entidades de entrada que pueden ser de cualquier tipo de entidad.

Feature Layer
out_feature_class

Clase de entidad de salida que contiene entidades que varían según el tipo de entidad de entrada.

Feature Class

Muestra de código

Ejemplo 1 de MultipartToSinglepart (ventana de Python)

La siguiente secuencia de comandos de la ventana de Python muestra cómo utilizar la función MultipartToSinglepart de modo inmediato.

import arcpy
arcpy.env.workspace = "C:/data"
arcpy.management.MultipartToSinglepart("landuse.shp",
                                       "c:/output/output.gdb/landuse_singlepart")
Ejemplo 2 de MultipartToSinglepart (secuencia de comandos independiente)

El siguiente script independiente es un ejemplo simple de cómo aplicar la función MultipartToSinglepart en un entorno de scripts.

# Name: MultipartToSinglepart_Example2.py
# Description: Break all multipart features into singlepart features,
#              and report which features were separated.

# Import system modules
import arcpy
 
# Create variables for the input and output feature classes
inFeatureClass = "c:/data/gdb.gdb/vegetation"
outFeatureClass = "c:/data/gdb.gdb/vegetation_singlepart"

try:
    # Create list of all fields in inFeatureClass
    fieldNameList = [field.name for field in arcpy.ListFields(inFeatureClass)]

    # Add a field to the input that will be used as a unique identifier
    arcpy.management.AddField(inFeatureClass, "tmpUID", "double")
 
    # Determine what the name of the Object ID is 
    OIDFieldName = arcpy.Describe(inFeatureClass).OIDFieldName
   
    # Calculate the tmpUID to the OID
    arcpy.management.CalculateField(inFeatureClass, "tmpUID",
                                    f"!{OIDFieldName}!", "PYTHON3")
 
    # Run the tool to create a new fc with only singlepart features
    arcpy.management.MultipartToSinglepart(inFeatureClass, outFeatureClass)
 
    # Check if there is a different number of features in the output
    #   than there was in the input
    inCount = int(arcpy.management.GetCount(inFeatureClass)[0])
    outCount = int(arcpy.management.GetCount(outFeatureClass)[0])
    
    if inCount != outCount:
        # If there is a difference, print the FID of the input 
        #   features that were multipart
        arcpy.analysis.Frequency(outFeatureClass,
                                 outFeatureClass + "_freq", "tmpUID")
 
        # Use a search cursor to go through the table, and print the tmpUID 
        print("Multipart features from {0}".format(inFeatureClass))
        for row in arcpy.da.SearchCursor(outFeatureClass + "_freq",
                                         ["tmpUID"], "FREQUENCY > 1"):
            print(int(row[0]))
    else:
        print("No multipart features were found")

except arcpy.ExecuteError:
    print(arcpy.GetMessages())
except Exception as err:
    print(err.args[0])

Temas relacionados