Multi-parties vers une partie (Gestion des données)

Synthèse

Crée une classe d’entités contenant des entités en une partie en séparant des entités en entrée multi-parties.

Illustration

Illustration de l’outil Multi-parties vers une partie

Utilisation

  • Les attributs des entités en entrée seront conservés dans la classe d'entités points en sortie. Un nouveau champ, ORIG_FID, sera ajouté à la classe d'entités en sortie et défini sur les identifiants d'entité en entrée.

  • Chaque partie d'une entité multi-parties est séparée en entités individuelles dans la classe d'entités en sortie. Les entités qui sont déjà en une seule partie ne seront pas affectées.

  • La plupart des types d'entité en sortie seront les mêmes qu'en entrée (les polygones en entrée restent des polygones, les lignes en entrée restent des lignes). Si les entités en entrée sont de type multi-points, la classe d’entités en sortie sera de type point.

  • Pour reconstruire des entités multi-parties à partir d’entités en une partie en fonction d’une valeur de champ commun, comme ORIG_FID, utilisez l’outil Fusionner.

  • Une entité multipatch est séparée dans les différentes parties géométriques qui la composent. Chaque partie peut être définie par un ensemble de sommets contenant des coordonnées x, y et z dont l’organisation est la suivante :

    • Triangles individuels qui référencent trois sommets.
    • Bandes de triangle définies par plusieurs triangles qui partagent successivement un tronçon commun.
    • Eventails de triangles qui sont définis par plusieurs triangles avec un point d'origine commun.
    • Anneaux qui représentent une région co-planaire dont la limite est définie par quatre sommets ou plus.

Paramètres

ÉtiquetteExplicationType de données
Entités en entrée

Entités en entrée qui peuvent être de tout type.

Feature Layer
Classe d’entités en sortie

Classe d’entités en sortie contenant des entités qui varient en fonction du type d’entité en entrée.

Feature Class

arcpy.management.MultipartToSinglepart(in_features, out_feature_class)
NomExplicationType de données
in_features

Entités en entrée qui peuvent être de tout type.

Feature Layer
out_feature_class

Classe d’entités en sortie contenant des entités qui varient en fonction du type d’entité en entrée.

Feature Class

Exemple de code

Exemple 1 d’utilisation de la fonction MultipartToSinglepart (fenêtre Python)

Le script ci-dessous pour la fenêtre Python montre comment utiliser la fonction MultipartToSinglepart en mode immédiat.

import arcpy
arcpy.env.workspace = "C:/data"
arcpy.management.MultipartToSinglepart("landuse.shp",
                                       "c:/output/output.gdb/landuse_singlepart")
Exemple 2 d’utilisation de la fonction MultipartToSinglepart (script autonome)

Le script autonome ci-après est un exemple d’application simple de la fonction MultipartToSinglepart dans un environnement 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])

Rubriques connexes