Составной в простые (Управление данными)

Краткая информация

Создает класс простых пространственных объектов путем разделения составных входных объектов.

Иллюстрация

Иллюстрация инструмента Составной в простые

Использование

  • Атрибуты входных объектов будут скопированы в выходной класс объектов. Новое поле ORIG_FID будет добавлено к выходному классу объектов, оно будет содержать ID входных объектов.

  • Каждая часть составного объекта будет выделена в отдельные объекты в выходном классе объектов. Пространственные объекты, которые уже являются простыми, не будут подвержены влиянию.

  • Большинство типов выходных объектов будут такими же, как входные (входные полигоны останутся полигонами; входные линии останутся линиями). Если входные объекты являются мультиточечными, в выходном классе будут точечные объекты.

  • Для восстановления составных объектов из простых на основе значения общего поля, например, ORIG_FID, используйте инструмент Слияние по атрибуту.

  • Объект-мультипатч будет разделен на составные геометрические части. Каждая часть может задаваться набором вершин, содержащих координаты x, y и z, упорядоченных так:

    • Отдельные треугольники, использующие 3 вершины.
    • Полосы треугольников, задающиеся несколькими треугольниками, имеющими одно общее ребро.
    • Вееры треугольников, задающиеся несколькими треугольниками, использующими одну начальную точку.
    • Кольца, представляющие плоскостную область, границы которой задаются 4 или более вершинами.

Параметры

ПодписьОписаниеТип данных
Входные объекты

Входные объекты могут быть любого типа геометрии.

Feature Layer
Выходной класс объектов

Выходной класс объектов, содержащий пространственные объекты, которые зависят от типа входных объектов.

Feature Class

arcpy.management.MultipartToSinglepart(in_features, out_feature_class)
ИмяОписаниеТип данных
in_features

Входные объекты могут быть любого типа геометрии.

Feature Layer
out_feature_class

Выходной класс объектов, содержащий пространственные объекты, которые зависят от типа входных объектов.

Feature Class

Пример кода

MultipartToSinglepart, пример 1 (окно Python)

Пример скрипта окна Python для использования функции MultipartToSinglepart в режиме прямого запуска.

import arcpy
arcpy.env.workspace = "C:/data"
arcpy.management.MultipartToSinglepart("landuse.shp",
                                       "c:/output/output.gdb/landuse_singlepart")
MultipartToSinglepart, пример 2 (автономный скрипт)

Пример скрипта Python является простым примером выполнения функции MultipartToSinglepart в среде написания скриптов.

# 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])

Связанные разделы