Полигон в линию (Управление данными)

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

Создает класс линейных объектов, конвертированных из границ полигонов. Вы можете задать параметры инструмента, чтобы анализировались общие сегменты и ID полигональных объектов. Или можно задать параметры инструмента, чтобы для каждого входного полигона создавался замкнутый линейный объект.

Иллюстрация

Иллюстрация инструмента Полигон в линию

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

  • Если параметр Идентифицировать и сохранять информацию о соседних полигонах отмечен, то будут анализироваться отношения между соседними полигонами. Границы конвертируются в линии с учетом пересечений и общих сегментов. К выходным данным будут добавлены следующие поля:

    • LEFT_FID— ID объекта входного полигона слева от выходной линии.
    • RIGHT_FID— ID объекта входного полигона справа от выходной линии.
    Атрибуты входных объектов не будут сохранены в выходных данных.

    Ниже детально проанализирован сам процесс и варианты выходных данных:

    • В полигональной геометрии, выходная граница всегда строится в направлении по часовой стрелке. Если полигон имеет отверстие, граница отверстия (или внутренняя граница) всегда сохраняется в направлении против часовой стрелки. Таким образом, для полигона, у которого нет соседей слева (с внешней стороны) от его внешней границы и слева (с внутренней стороны) от границы отверстия, результирующие линии будут иметь значение -1 для значения поля LEFT_FID и идентификатор полигонального объекта как значение поля RIGHT_FID.
    • Если полигон содержит другой полигон, будет создана одна выходная линия в направлении по часовой стрелке, представляющая общую границу, где значение поля LEFT_FID установлено на идентификатор объекта внешнего полигона, а RIGHT_FID установлено на идентификатор объекта внутреннего полигона.
    • Если два полигона имеют общую часть границы, будет создана одна выходная линия, представляющая общий сегмент. Направление линии будет произвольным, и значения полей LEFT_FID и RIGHT_FID будут установлены на идентификатор левого и правого полигональных объектов соответственно.
    • Если полигон перекрывает другой полигон, будут созданы две выходные линии, представляющие каждую границу пересечения дважды. Первая линия представляет внешнюю границу одного из перекрывающихся полигонов, и значение ее поля LEFT_FID — это идентификатор объекта пересекаемого полигона, а RIGHT_FID будет ее собственным идентификатором полигонального объекта. Вторая линия проходит в противоположном направлении, разбивая другой полигон, таким образом, значения полей LEFT_FID и RIGHT_FID будут такими же, как и другой идентификатор полигонального объекта.
    • Входные составные объекты не сохраняются; выходные линии будут простыми.

    Для всех входных объектов, которые являются параметрическими (истинными) кривыми, выходные линии останутся истинными кривыми, даже если они разбиты.

    Для обработки очень больших наборов данных используется разбивка на листы, для повышения производительности и масштабируемости.

  • Если параметр Идентифицировать и сохранять информацию о соседних полигонах не отмечен, все входные полигоны будут конвертированы в отдельные линейные объекты. Любые составные полигоны будут конвертированы в составные линии.

    Поле ORIG_FID будет добавлено к выходным данным с идентификатором объекта каждой входной линии. Атрибуты входных объектов будут сохранены в выходных данных.

Параметры

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

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

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

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

Feature Class
Идентифицировать и хранить информацию о соседних полигонах
(Дополнительный)

Указывает, будут ли отношения между соседними полигонами идентифицироваться и сохраняться в выходных данных.

  • Отмечено - отношения между соседними полигонами будут идентифицироваться и сохраняться в выходных данных. Если различные сегменты полигона имеют общую границу с другими полигонами, граница будет разбита, так чтобы каждый уникально хранящийся сегмент стал линией с двумя идентификаторами объектов соседних полигонов, хранящихся в выходных данных. Это значение по умолчанию
  • Не отмечено - отношения между соседними полигонами будут игнорироваться; граница каждого полигона станет линейным объектом с исходным идентификатором полигонального объекта, хранящимся в выходных данных.

Boolean

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

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

Feature Layer
out_feature_class

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

Feature Class
neighbor_option
(Дополнительный)

Указывает, будут ли отношения между соседними полигонами идентифицироваться и сохраняться в выходных данных.

  • IDENTIFY_NEIGHBORSОтношения между соседними полигонами будут идентифицироваться и сохраняться в выходных данных. Если различные сегменты полигона имеют общую границу с другими полигонами, граница будет разбита, так чтобы каждый уникально хранящийся сегмент стал линией с двумя идентификаторами объектов соседних полигонов, хранящихся в выходных данных. Это значение по умолчанию
  • IGNORE_NEIGHBORSОтношения между соседними полигонами будут игнорироваться; граница каждого полигона станет линейным объектом с исходным идентификатором полигонального объекта, хранящимся в выходных данных.
Boolean

Пример кода

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

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

import arcpy
arcpy.env.workspace = "C:/data"
arcpy.management.PolygonToLine("Habitat_Analysis.gdb/vegtype", 
                               "C:/output/Output.gdb/vegtype_lines",
                               "IGNORE_NEIGHBORS")
PolygonToLine, пример 2 (автономный скрипт)

Этот автономный скрипт - это пример использования функции PolygonToLine.

# Name: PolygonToLine_Example2.py
# Description: Use the PolygonToLine function to convert polygons to lines,
#              and report how many shared or overlapping boundary lines
#              were found.

# Import system modules 
import arcpy

# Set environment settings
arcpy.env.workspace = "C:/data/landcovers.gdb"
 
# Create variables for the input and output feature classes
inFeatureClass = "bldgs"
outFeatureClass = "bldgs_lines"
 
# Run PolygonToLine to convert polygons to lines using default neighbor_option
arcpy.management.PolygonToLine(inFeatureClass, outFeatureClass)

# Select lines that have LEFT_FID values greater than -1
arcpy.management.MakeFeatureLayer(outFeatureClass, "selection_lyr", 
                                  "\"LEFT_FID\" > -1")
result = arcpy.management.GetCount("selection_lyr")

if result[0] == "0":
    print("No overlapping or shared boundary lines were found.")
else:
    print(f"{result[0]} overlapping or shared boundary lines were found.")

Информация о лицензиях

  • Basic: Нет
  • Standard: Нет
  • Advanced: Да

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