Разбить линию по соответствию (Редактирование)

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

Разбивает объекты на основе совпадающих отношений для улучшения сегментации соответствующих линий.

При работе с линейными объектами в двух разных наборах данных – например, городская сеть дорог и федеральная сеть дорог – совпадающие отношения 1:1, а не многие-к-многим (m:n) будут способствовать задачам объединения, таким как передача атрибутов от одного источника к другому. Этот инструмент помогает превратить совпадения типа m:n в большее число совпадений типа 1:1.

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

Для каждой группы соответствия этот инструмент разбивает входные объекты на основе определенных свойств узла в сопоставляемых объектах. Узлом может быть висячий конец линии, псевдо узел между двумя линиями или соединение нескольких линий. Например, сопоставленная группа 1:2 означает, что один исходный объект соответствует двум целевым объектам, а два целевых объекта соединены в псевдо узле. Инструмент разобьет входную линию в местоположении вблизи целевого псевдо узла. Это нужно для того, чтобы улучшить соответствия между исходной и целевыми линиями, чтобы на следующем этапе сопоставления получилось больше совпадений типа 1:1, нужных для смешения.

Иллюстрация

Иллюстрация инструмента Разбить линию по соответствию

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

  • Выходной класс пространственных объектов содержит все входные объекты, которые были разбиты или остались не измененными, а также все их атрибуты. Добавлены следующие поля:

    • ORIG_FID– идентификаторы входных объектов.
    • SBM_LnFlag– сохраняет следующие значения:
      • Split – Линии, которые были разбиты.
      • Not split – Входные линии, оставшиеся не измененными.
      • Short match group – Линии, которые не могут участвовать в данном процессе, поскольку они не соответствуют значению параметра Минимальная длина группы сопоставления.

    Для сохранения местоположений, в которых линии были разбиты или не могли быть разбиты, может быть создан дополнительный класс точечных объектов. Эти точки можно использовать для проверки результата. Этот выходной результат включает следующие поля:

    • ORIG_FID– идентификаторы входных объектов в местах разбиения.
    • SBM_PtFlag– сохраняет следующие значения:
      • At vertex – местоположения, в которых входная линия была разбита в существующей вершине.
      • At nearest – местоположения, в которых входная линия была разбита на сопоставляемых объектах в ближайшем от узла местоположении.
      • Short segment – Местоположения, в которых входную линию невозможно разбить в соответствии с заданным значением Минимальной длины разбиения.
      • Out of range – местоположения, в которых входная линия не может быть разбита, потому что предполагаемое место разбиения находится вне пределов расстояния поиска. Некоторые из этих местоположений по-прежнему смогут использоваться для разбиения линий при последующей обработке.

      После проверки может появиться возможность разбить дополнительные линии, используя любые точки, которые помечены Short segment или как Out of range, с помощью инструмента Разбить линию в точке.

  • Используйте параметр Расстояние поиска для выбора подходящих местоположений для разбиения входящей линии от узла на сопоставляемых объектах. Чтобы повысить вероятность найти местоположение разбиения как можно ближе к узлу на сопоставляемых объектах, выводится внутреннее значение расстояния в зависимости от того, насколько близко к входному объекту расположен узел. Если полученное расстояние меньше трети расстояния поиска, полученное расстояние устанавливается на одну треть от расстояния поиска. Если полученное расстояние больше расстояния поиска, полученное значение расстояния устанавливается на расстояние поиска. Если полученное значение находится в промежутке, то оно используется без каких-либо изменений. Указанное расстояние поиска является максимальным значением, которое может быть использовано. Например, если в качестве расстояния поиска вы укажете 90 метров, то полученные значения расстояния, которые будут использоваться в данном процессе, будут составлять 30 метров, 90 метров и любые значения в промежутке между ними.

    Важно задать подходящее значение расстояния поиска. Хорошим выбором может оказаться значение, которое вы использовали в процессе предварительного сопоставления. Чем больше расстояние поиска, тем выше вероятность использования дальней вершины для разбиения входной линии, и выше вероятность найти самый удаленный узел, который не даст случиться разбиению.

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

    • Если псевдо узел сопоставления найдет псевдо входной узел, то разделения не произойдет.
    • Если не псевдо узел сопоставления найдет любой входной узел, разделения не произойдет. Например, если висячий узел сопоставления найдет входной узел на T-образном соединении, то входная линия не будет разделена.
    • Во всех других случаях входной объект будет разбит либо в единственной найденной вершине, либо в ближайшей найденной вершине, либо, если не будет найдено ни одной вершины – в ближайшем местоположении на входной линии. Но входная линия всегда разбивается, если псевдо узел сопоставления находит не псевдо входной узел.

  • Висячие линии могут быть разбиты с помощью параметра Разбить висячие объекты. Если висячая входная линия будет продолжена за сопоставляемым объектом на висячем конце, то по умолчанию она будет разбита. Висячая линия может разбиваться для определения фактического расстояния между исходными и целевыми объектами при последующем сопоставлении объектов.

  • Используйте параметр Минимальная длина группы сопоставления, чтобы исключить любые группы сопоставления, которые слишком коротки для разбиения относительно заданного значения. Если и общая длина входных объектов, и общая длина сопоставляемых объектов в определенной группе сопоставления будут меньше заданного значения, то такая группа будет исключена. Избегайте разбиения объектов в коротких группах сопоставления, чтобы предотвратить чрезмерное разбиение или неудовлетворительное разбиение. Все входные линии в коротких группах сопоставления записываются в выходной файл и получают пометку Short match group в поле SBM_LnFlag.

  • Используйте параметр Минимальная длина разбиения для предотвращения создания коротких линий. Если разбиение входной линии приведет к тому, что линия будет короче этого значения, входная линия разбиваться не будет. Точка в месте разбиения с пометкой Short segment в поле SBM_PtFlag будет записана в класс точечных объектов, если он был указан, в качестве эталона при проверке.

  • Используйте параметр Поля разбиения для указания одного или нескольких числовых полей, таких как поле измерения длины, чтобы значения этих полей были разбиты на основе пропорций линий разбиения.

Параметры

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

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

Feature Layer
Сопоставляемые объекты

Объекты, которые должны быть предварительно сопоставлены со входными объектами. Сопоставляемые объекты используются в качестве эталонных при разбиении входных объектов.

Feature Layer
Входная таблица сопоставлений

Таблица, которая содержит информацию о сопоставлении входных объектов с сопоставляемыми.

Table View
Выходной класс пространственных объектов

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

Feature Class
Расстояние поиска

Значение расстояния, которое используется для определения местоположений разбиения. Значение должно быть больше 0. Если единицы измерения не указаны, используются входные единицы измерения.

Linear Unit
Входные объекты для сопоставления
(Дополнительный)

Определяет, какие из входных объектов в таблице сопоставления являются исходными, а какие – целевыми объектами, чтобы были разбиты те объекты, которые должны быть разбиты.

  • Как исходные пространственные объектыВходные объекты сохраняются в таблице сопоставления как исходные пространственные объекты. Это значение по умолчанию
  • Как целевые пространственные объектыВходные объекты сохраняются в таблице сопоставления как целевые пространственные объекты.
String
Выходные точки разбиения
(Дополнительный)

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

Feature Class
Разбить висячие объекты.
(Дополнительный)

Определяет, будут ли разбиваться висячие линии.

  • Отмечено – висячие линии будут разбиты в соответствии с правилами разбиения данного инструмента. Это значение по умолчанию
  • Не отмечено – Висячие линии не будут разбиты.
Boolean
Минимальная длина группы сопоставления
(Дополнительный)

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

Linear Unit
Минимальная длина разбиения
(Дополнительный)

Минимальная длина отрезка разделения, которая может быть. Разбиение не произойдет, если один или оба отрезка, образующиеся в результате, будут короче, чем указанное значение.

Linear Unit
Поля разбиения
(Дополнительный)

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

Field

arcpy.edit.SplitLineByMatch(in_features, matched_features, in_match_table, out_feature_class, search_distance, {in_features_as}, {out_point_feature_class}, {split_dangle}, {min_match_group_length}, {min_split_length}, {split_fields})
ИмяОписаниеТип данных
in_features

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

Feature Layer
matched_features

Объекты, которые должны быть предварительно сопоставлены со входными объектами. Сопоставляемые объекты используются в качестве эталонных при разбиении входных объектов.

Feature Layer
in_match_table

Таблица, которая содержит информацию о сопоставлении входных объектов с сопоставляемыми.

Table View
out_feature_class

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

Feature Class
search_distance

Значение расстояния, которое используется для определения местоположений разбиения. Значение должно быть больше 0. Если единицы измерения не указаны, используются входные единицы измерения.

Linear Unit
in_features_as
(Дополнительный)

Определяет, какие из входных объектов в таблице сопоставления являются исходными, а какие – целевыми объектами, чтобы были разбиты те объекты, которые должны быть разбиты.

  • AS_SOURCEВходные объекты сохраняются в таблице сопоставления как исходные пространственные объекты. Это значение по умолчанию
  • AS_TARGETВходные объекты сохраняются в таблице сопоставления как целевые пространственные объекты.
String
out_point_feature_class
(Дополнительный)

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

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

Определяет, будут ли разбиваться висячие линии.

  • SPLIT_DANGLEВисячие линии будут разбиты в соответствии с правилами разбиения данного инструмента. Это значение по умолчанию
  • NO_SPLIT_DANGLEВисячие линии не будут разбиты.
Boolean
min_match_group_length
(Дополнительный)

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

Linear Unit
min_split_length
(Дополнительный)

Минимальная длина отрезка разделения, которая может быть. Разбиение не произойдет, если один или оба отрезка, образующиеся в результате, будут короче, чем указанное значение.

Linear Unit
split_fields
[split_field,...]
(Дополнительный)

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

Field

Пример кода

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

В следующем скрипте окна Python показано, как используется функция SplitLineByMatch в режиме прямого запуска.

import arcpy
arcpy.env.workspace = "C:/data/roads.gdb"
arcpy.edit.SplitLineByMatch("city_Roads", "county_Roads", "match_table",
                            "city_roads_split", "50 Meters")
SplitLineByMatch, пример 2 (автономный скрипт)

Следующий автономный скрипт является примером применения функции SplitLineByMatch в среде скриптов.

"""
Name:        SplitLineByMatch_example_script2.py
Description: Use DetectFeatureChanges to get initial matching and then use
             SplitLineByMatch to split the source and target to improve spatial
             correspondence. 
             Finally use TransferAttributes to transfer a field value from the
             split source to the split target features.
"""

# Import system modules
import arcpy

# Set environment settings
arcpy.env.overwriteOutput = True
arcpy.env.workspace = r"D:\conflation\Tools\splitlinebym\roads.gdb"

# Set local variables
sourceFeatures = "sourceRoads"
targetFeatures = "targetRoads"

dfcOutput = "DFC"
searchDistance = "100 Feet"
dfcMatchTable = "DFC_mtable"

slbmSourceOutput = "out_source"
slbmSourceOutputPts = "out_sourcePoints"
slbmTargetOutput = "out_target"
slbmTargetOutputPts = "out_targetPoints"
dangle = "SPLIT_DANGLE"
minSplitLength = "300 Feet"

transfer_fields = "Mile_Length"

# Use Detect Feature Changes tool to generate the needed match table
arcpy.management.DetectFeatureChanges(sourceFeatures, targetFeatures, dfcOutput, searchDistance, dfcMatchTable)

# Use Split Line By Match tool twice to split source and then target features to improve spatial correspondence
arcpy.edit.SplitLineByMatch(sourceFeatures, targetFeatures, dfcMatchTable, slbmSourceOutput, searchDistance,
                            "AS_SOURCE", slbmSourceOutputPts, dangle, "", minSplitLength)

arcpy.edit.SplitLineByMatch(targetFeatures, sourceFeatures, dfcMatchTable, slbmTargetOutput, searchDistance,
                            "AS_TARGET", slbmTargetOutputPts, dangle, "", minSplitLength)

# Perform attribute transfer using the split results
arcpy.edit.TransferAttributes(slbmSourceOutput, slbmTargetOutput, transfer_fields, searchDistance)

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

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

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