Полигон в линию (Управление данными (Data Management))
Краткая информация
Создает класс пространственных объектов, содержащий линии, которые конвертируются из границ полигонов с и без учета соседних полигонов.
Рисунок
Использование
Если флажок Идентифицировать и хранить информацию о соседних полигонов установлен (опция neighbor_option установлена как IDENTIFY_NEIGHBORS в скриптах), для каждого выходного объекта будет сохранена информация о соседних полигонах. Как показано выше, границы конвертируются в линии, с учетом пересечений и общих сегментов; два новых поля, LEFT_FID и RIGHT_FID, будут добавлены в выходной класс объектов и установлены на идентификаторы объектов входных полигонов слева и справа от каждой выходной линии. Атрибты входных объектов не будут поддерживаться в выходном классе объектов. Ниже детально проанализирован сам процесс и варианты выходных данных:
- В полигональной геометрии, выходная граница всегда строится в направлении по часовой стрелке. Если полигон имеет отверстие, граница отверстия (или внутренняя) всегда строится в направлении против часовой стрелки. Таким образом, для полигона, у которого нет соседей слева (с внешней стороны) от его внешней границы и слева (с внутренней стороны) от границы отверстия, результирующие линии будут иметь значение -1 для LEFT_FID и идентификатор полигонального объекта как RIGHT_FID.
- Если полигон содержит другой полигон, будет создана одна выходная линия в направлении по часовой стрелке, представляющая общую границу, где LEFT_FID установлен на идентификатор объекта внешнего полигона, а RIGHT_FID установлен на идентификатор объекта внутреннего полигона.
- Если два полигона имеют общую часть границы, будет создана одна выходная линия, представляющая общий сегмент. Направление линии будет произвольным; LEFT_FID и RIGHT_FID будут установлены на идентификатор левого и правого полигональных объектов соответственно.
- Если полигон перекрывает другой полигон, будут созданы две выходные линии, представляющие каждую границу пересечения дважды: первая линия будет представлять внешнюю границу одного из перекрывающихся полигонов, таким образом, LEFT_FID — это идентификатор объекта полигона, который он пересекает, а RIGHT_FID будет ее собственным идентификатором полигона; вторая линия будет в противоположном направлении, разбивая другие полигоны, таким образом LEFT_FID и RIGHT_FID будут такими же, как другие идентификаторы полигонального объекта.
- Составные объекты во входных полигонах не поддерживаются; все выходные линии простые.
-
Если флажок Идентифицировать и хранить информацию о соседних полигонов не установлен (neighbor_option установлено на IGNORE_NEIGHBORS в скриптах), информация о соседних полигонах будет игнорироваться. Каждая граница входного полигона будет записана как отдельный линейный объект. Составной полигон станет составной линией в выходных данных. Атрибуты входных объектов будут скопированы в выходной класс объектов. Новое поле, ORIG_FID, будет добавлено к выходным даным и установлено на идентификатор входного объекта каждой линии.
-
Для входных объектов параметрических (истиных) кривых, выходные линии остануться истиными кривыми, даже если они разбиты. Не применяется к данным шейп-файла.
-
Для обработки очень больших наборов данных при работе инструмента используется разбивка на листы, для повышения производительности и масштабируемости. Для получения более подробной информации см. Геообработка больших наборов данных.
Синтаксис
Параметр | Объяснение | Тип данных |
in_features |
Входные объекты, которые должны быть полигонами. | Feature Layer |
out_feature_class |
Выходной класс линейных объектов. | Feature Class |
neighbor_option (дополнительно) |
Устанавливает, нужно ли идентифицировать и хранить информацию о соседних полигонах.
| Boolean |
Пример кода
Пример скрипта Python для выполнения функции Полигон в линию (Polygon To Line) с запуском из окна Python в ArcGIS.
import arcpy
from arcpy import env
env.workspace = "C:/data"
arcpy.PolygonToLine_management("Habitat_Analysis.gdb/vegtype",
"C:/output/Output.gdb/vegtype_lines",
"IGNORE_NEIGHBORS")
Пример скрипта Python для выполнения функции Полигон в линию (Polygon To Line) в автономном режиме.
# Name: PolygonToLine_Example2.py
# Description: Use PolygonToLine function to convert polygons to lines,
# and report how many shared or overlapping boundary lines
# were found.
# Author: ESRI
# import system modules
import arcpy
from arcpy import env
# Set environment settings
env.workspace = "C:/data/landcovers.gdb"
# Create variables for the input and output feature classes
inFeatureClass = "bldgs"
outFeatureClass = "bldgs_lines"
# Use error trapping in case a problem occurs when running the tool
try:
# Run PolygonToLine to convert polygons to lines using default neighbor_option
arcpy.PolygonToLine_management(inFeatureClass, outFeatureClass)
# Select lines that have LEFT_FID values greater than -1
arcpy.MakeFeatureLayer_management(outFeatureClass, "selection_lyr",
"\"LEFT_FID\" > -1")
result = arcpy.GetCount_management("selection_lyr")
if (result.getOutput(0) == "0"):
print "No overlapping or shared boundary lines were found."
else:
print result.getOutput(0) + " overlapping or shared " +\
"boundary lines were found."
except Exception, e:
# If an error occurred, print line number and error message
import traceback, sys
tb = sys.exc_info()[2]
print "Line %i" % tb.tb_lineno
print e.message