Как работают инструменты Соседи полигона и Соседи полигона (Попарно)

В этом разделе описывается, как инструменты Соседи полигона и Соседи полигона (Попарно) находят соседей и заполняют выходную таблицу.

Поиск отношений между соседями и вычисление статистики

Соседние отношения определяются следующим образом:

  • Перекрывающиеся соседи — полигоны, все или часть областей которых перекрываются.
  • Соседи по ребру — полигоны, которые имеют общие или соприкасающиеся границы.
  • Соседи по узлу — полигоны, которые соприкасаются в точке (для инструмента Соседи полигона граница либо соприкасается, либо пересекается; для инструмента Соседи по полигону (Попарно) граница соприкасается).

Для инструмента Соседи полигона соседние полигоны определяются с использованием тех же правил для полигонов, что и для инструмента Пересечение.

Для инструмента Соседи полигона (Попарно) соседние полигоны определяются с использованием тех же правил для полигонов, что и для инструмента Попарное пересечение.

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

  1. Выберите полигон для использования в качестве исходного объекта.
  2. Найдите все полигоны, которые пересекают исходный полигон (найдите соседей).
  3. Для первого найденного соседа проанализируйте следующее для исходного полигона:
    • Когда соседний полигон является перекрывающимся и включен параметр Включить перекрывающиеся области, выполняется следующее:
      1. Добавляется поле AREA в выходную таблицу.
      2. Вычисляется площадь перекрытия.
      3. Записывается вычисленная площадь для использования в поле AREA выходной таблицы.
      4. Записывается 0 для использования в поле LENGTH выходной таблицы.
      5. Записывается 0 для использования в поле NODE_COUNT выходной таблицы.

        Анализ пересекающихся соседей завершен.

      6. Анализируется следующий соседний полигон.
    • Когда соседний полигон является соседним по ребру, выполняются следующие действия:
      1. Вычисляется длина совпадающей границы.
      2. Записывается вычисленная длина для использования в поле LENGTH выходной таблицы.
      3. Записывается 0 для использования в поле NODE_COUNT выходной таблицы.

        Анализ соседей по ребру завершен.

      4. Анализируется следующий соседний полигон.
    • Когда соседний полигон является соседним по узлу, выполняются следующие действия:
      1. Найдите количество раз, когда соседний полигон пересекает и касается (для инструмента Соседи по полигону (Попарно) используются только касания) исходного полигона в точке.
      2. Это число записывается для использования в поле NODE_COUNT выходной таблицы.
      3. Записывается 0 для использования в поле LENGTH выходной таблицы.

        Анализ соседей по узлу завершен.

      4. Анализируется следующий соседний полигон.

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

Примеры параметра Отчет по полям

В нижеприведенных подразделах описаны примеры использования параметра Отчет по полям:

Использование поля с уникальными значениями для каждого отдельного полигона

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

Входные данные

В таблице ниже показан результат использования поля myCode в качестве значения параметра Отчет по полям. Префиксами в именах поля источника и поля соседа являются src_myCode и nbr_myCode.

Выходная таблица

Использование поля со значениями, определяющими уникальные группы полигонов

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

Входные данные

Ниже показан результат использования поля myClass в качестве значения параметра Отчет по полям:

  • Для группы A и других полигонов группы A общая длина совпадающих ребер равна 1200, которая получается из шести совпадающих ребер среди полигонов группы A.
    Примечание:

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

  • Между группами A и B есть только два ребра, которые совпадают, с общей длиной 200. Это также происходит между группой В и группой А.
  • Между группами A и C есть три совпадающих ребра общей длиной 300. То же самое относится и к группам C и A.
  • Для группы B с другими полигонами группы B, в отличие от группы A, не было обнаружено отношений соседства, поэтому в выходных данных ничего не сообщается.

Выходная таблица

Использование нескольких полей с комбинированными значениями, определяющими уникальные группы полигонов

В этом примере значения в поле myZone представляют одну классификацию полигонов, а значения в поле myClass представляют вторую классификацию.

Входные данные

Если два поля, myZone и myClass, заданы в качестве значения параметра Отчет по полям, объединенные значения этих двух полей приведут к следующим уникальным группам полигонов:

  • Группа Z1-A
  • Группа Z1-C
  • Группа Z2-A
  • Группа Z2-B
  • Группа Z2-C

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

  • Исходная группа Z1-A имеет шесть совпадающих ребер внутри группы (аналогично группе A в предыдущем примере), а общая длина совпадающих ребер равна 600.
  • Исходная группа Z1-A является соседом по ребру с соседней группой Z1-C, и общая длина совпадающих ребер равна 200.
  • Исходная группа Z1-A является соседом по ребру с соседней группой Z2-A, и общая длина совпадающих ребер равна 300.
  • Исходная группа Z1-A не является соседней по ребру с группой Z1-B, но граница группы Z1-B касается исходной группы Z1-A в узле и является соседней по узлу. Следовательно, значение поля LENGTH равно 0, а значение поля NODE_COUNT равно 1.

Выходная таблица

Входные данные с перекрывающимися полигонами и без них

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

Входные данные, не содержащие перекрывающиеся полигоны

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

Параметр Включить область перекрытия не включен

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

  • Полигон 2 имеет совпадающее ребро с полигоном 1, поэтому он является соседом по ребру. В поле LENGTH записывается длина совпадающего ребра, равная 100. Анализ соседей по узлу пропущен, и поле NODE_COUNT имеет значение 0. То же самое относится и к полигону 4.
  • Полигон 5 не имеет совпадающего ребра с полигоном 1, и поле LENGTH имеет значение 0. Однако полигон 5 касается полигона 1 в одной точке, поэтому он является соседним по узлу с полигоном 1 и имеет значение 1 для поля NODE_COUNT.

Входные данные с выходной таблицей

Параметр Включить область перекрытия включен

Когда параметр Включить область перекрытия включен, в выходной таблице будет содержаться поле AREA. Все значения поля AREA будут равны 0, так как ни один из полигонов не перекрывается. Анализ соседей по ребру и узлу продолжается, и значения полей LENGTH и NODE_COUNT такие же, как в примере со сравнимым параметром Отчет по полям.

Входные данные, содержащие перекрывающиеся полигоны

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

Параметр Включить область перекрытия не включен

Среди следующих четырех полигонов перекрывающиеся соседи, соседи по ребру и соседи по узлу встречаются только один раз между любыми двумя полигонами. Когда параметр Включить область перекрытия отключен, инструмент будет проверять только наличие соседей по ребру и узлу (в данном порядке), а в выходных данных не будет поля AREA. Используя полигон 1 в качестве исходного полигона в качестве примера, можно найти три соседних полигона, и в таблице результатов, приведенной ниже, представлена следующая информация:

  • Оба полигона 2 и 5 имеют совпадающее ребро с полигоном 1, и в поле LENGTH записана длина ребра, равная 20. Анализ соседних узлов пропускается, даже если полигон 2 пересекает полигон 1 в какой-то точке. Поле NODE_COUNT имеет значение 0.
  • Полигон 4 имеет совпадающее ребро с полигоном 1, и в поле LENGTH записана длина ребра, равная 100.

Входные данные и выходная таблица

Параметр Включить область перекрытия включен

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

  • Полигон 2 перекрывает полигон 1, и в поле AREA записывается площадь перекрытия, равная 1600. Анализ соседних ребер и узлов пропускается, даже если полигон 2 имеет совпадающее ребро с полигоном 1 и пересекает его в точке. Поля LENGTH и NODE_COUNT имеют значение 0.
  • Полигон 4 имеет совпадающее ребро с полигоном 1, и в поле LENGTH записана длина ребра, равная 100.
  • Полигон 5 имеет совпадающее ребро с полигоном 1, и в поле LENGTH записана длина ребра, равная 20. Анализ соседних узлов пропускается, даже если они касаются полигона 1 в точке (для инструмента Соседи по полигону (Попарно) используются только касания, поэтому ситуация пересечения не рассматривается). Поле NODE_COUNT имеет значение 0.

Входные данные и выходная таблица

Входные данные содержат полигоны, которые пересекают другой полигон более одного раза

Во входных данных, используемых в примерах, описанных ниже, перекрывающиеся соседи, соседи по ребру и соседи по узлу встречаются более одного раза между двумя полигонами. Значения в выходных полях - AREA, LENGTH и NODE_COUNT - представляют собой суммы всех случаев в каждом типе соседства.

Параметр Включить область перекрытия не включен

Два полигона, изображенные ниже, перекрываются в двух местах и имеют два совпадающих ребра. Если параметр Включить область перекрытия не включен, инструмент не анализирует перекрытие между двумя объектами. Он находит два совпадающих ребра и записывает в поле LENGTH сумму двух длин совпадающих ребер, равную 40. Анализ соседей по узлу пропущен, поэтому в поле NODE_COUNT записывается значение 0. Это относится к полигону 1, который является исходным полигоном, а полигон 2 - соседним, и наоборот.

Параметр Включить область перекрытия включен

Для тех же двух полигонов, приведенных ниже, если параметр Включить область перекрытия включен, инструмент находит два перекрытия областей и записывает в поле AREA сумму двух областей, равную 800. Анализ соседей по ребру и узлу пропущен, поэтому в поля LENGTH и NODE_COUNT записывается значение 0. Это относится к полигону 1, который является исходным полигоном, а полигон 2 - соседним, и наоборот.

Входные данные и выходные таблицы

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

Для обоих инструментов в этом сценарии совпадающие ребра не найдены, и в поле LENGTH записывается 0. Инструменты продолжают анализ соседей по узлу, инструмент Соседи полигона обнаруживает, что границы пересекаются дважды, в то время как инструмент Соседи полигона (Попарно) не учитывает перекрестные отношения и возвращает пустой результат. Поскольку инструмент Соседи полигона учитывает перекрестные отношения, он записывает в поле NODE_COUNT значение 2. Это относится к полигону 1, который является исходным полигоном, а полигон 2 - соседним, и наоборот, как показано в выходной таблице ниже:

Входные данные и выходная таблица

Особые случаи

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

Полигон, закрывающий отверстие другого полигона

В этом случае в полигоне 2 есть отверстие, которое закрывается полигоном 1. Эти два полигона не перекрываются, поэтому анализ на наличие перекрывающихся соседей не требуется. Если полигон 1 является исходным полигоном, а полигон 2 имеет ребро, равное 200, совпадающее с ребром полигона 1, это значение записывается в поле LENGTH. Значение поля NODE_COUNT равно 0. Аналогично, если исходным полигоном является полигон 2, то ребро полигона 1 совпадает с ребром полигона 2 на 200, что приводит к одинаковым значениям в поле LENGTH для каждой записи.

Входные данные и выходная таблица

Полигон, полностью перекрывающий другой полигон

В этом случае полигоны 1 и 2 перекрывают друг друга. Вам необходимо включить параметр Включить область перекрытия, чтобы это отношение соседства было обнаружено в анализе. Как для полигона 1, являющегося источником, так и для полигона 2, являющегося соседним, и наоборот, площадь перекрытия, равная 2500, указана в таблице результатов ниже.

Входные данные и выходная таблица