Создание топологии

Доступно с лицензией Standard или Advanced.

Основным методом создания новой топологии в ArcGIS Pro является применение мастера Создать топологию. Когда вы освоите создание топологии, вы сможете автоматизировать этот процесс, используя различные инструменты геообработки.

Создание топологии при помощи мастера Создать топологию

Для создания топологии при помощи мастера Создать топологию выполните следующие шаги:

  1. На панели Каталог щелкните правой кнопкой на наборе классов объектов, в который хотите добавить топологию, и щелкните Новый > Создать топологию.
  2. Введите название новой топологии и укажите кластерный допуск. Для допуска x,y будет взято значение по умолчанию, использующееся в наборе классов объектов. Наилучшим значением будет 0.001 м или его эквивалент в единицах вашей пространственной привязки (например, 0.003281 футов или 0.0000000556 градусов, если ваши данные хранятся в футах или десятичных градусах широты-долготы, соответственно).
  3. Поставьте отметки для классов объектов, которые будут участвовать в топологии. Вам будет показан список всех классов пространственных объектов из набора классов объектов.
  4. Установите ранги координатной точности для каждого класса пространственных объектов в топологии.

    Если один или несколько классов объектов содержат z-значения координат, щелкните Свойства Z, чтобы задать z-ранги Допуск по Z используется для определения минимально допустимого интервала z-значений или высот между вершинами. Например, два соседних пространственных объекта с разной высотой могут иметь общее ребро. Однако, у них совпадают только координаты вершин x и y, а не z координаты (высоты). Допуск по z помогает корректно обрабатывать информацию при валидации или при операциях с кластерами. Значение допуска по z, используемое по умолчанию, совпадает со значением по умолчанию допуска x,y (0.001 м в реальных единицах).

  5. ЩелкнитеДалее.
  6. Теперь вы создадите правила топологии для участвующих в ней классов объектов и подтипов. Выберите класс объектов в ниспадающем меню Класс пространственных объектов 1. Если вы собираетесь создать правило, связанное с подтипами, для выбора подтипа используйте ниспадающее меню Подтип 1.
  7. В следующем столбце выберите соответствующее Правило. Правила помогают структурировать пространственные отношения между объектами, управлять геометрией, общей для объектов, и проверять ее.
  8. Если это необходимо для выбранного правила, завершите его, указав второй класс объектов и подтип в ниспадающих меню Класс пространственных объектов 2 и Подтип 2.
  9. Повторите шаги 6,7 и 8, чтобы создать столько правил, сколько необходимо. По завершении нажмите Далее.
  10. Просмотрите итоговую информацию и нажмите Готово. Вы только что добавили новую топологию в набор классов объектов. Появится сообщение с предложением проверить топологию в наборе классов объектов. Если в нем имеются данные, нажмите Да.

Создание топологии при помощи инструментов геообработки

ArcToolbox содержит различные инструменты геообработки для топологии. Группа инструментов Топология находится в наборе инструментов Управление данными.

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

Для создания топологии при помощи инструмента Создать топологию выполните следующие шаги:

  1. Выберите классы объектов, которые будут участвовать в топологии. Добавьте эти классы объектов к топологии, используя инструмент геообработки Добавить класс объектов к топологии.

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

  2. Теперь, когда вы создали топологию и добавили к ней несколько классов объектов, можно добавить набор правил, используя инструмент геообработки Добавить правило к топологии. Правила помогают структурировать пространственные отношения между объектами, управлять геометрией, общей для объектов, и проверять ее.

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

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

Ниже приведен пример автономного скрипта Python, который можно использовать для создания топологии и добавления к ней нескольких классов объектов и правил:

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

import arcpy
import os
# Input variables
input_dataset = r"C:\MyProjects\MyProject.gdb\fds"
topo_name = "Topology"
cluster_tol = 0.001
input_fc = r"C:\MyProjects\MyProject.gdb\fds\fc1 1 1;C:\MyProjects\MyProject.gdb\fds\fc2 1 1"
rules = r"'Must Not Overlap (Area)' C:\MyProjects\MyProject.gdb\fds\fc1 # C:\MyProjects\MyProject.gdb\fds\fc1 #;'Must Be Covered By Feature Class Of (Area-Area)' C:\MyProjects\MyProject.gdb\fds\fc1 # C:\MyProjects\MyProject.gdb\fds\fc2 #"
validate = "true"
# Create the topology
out_topo = arcpy.CreateTopology_management(input_dataset, topo_name, cluster_tol)
print("Created topology.")
# Loop through the list of feature classes and add them to the topology
input_fcL = input_fc.split(";")
for fc in input_fcL:
    param = fc.rsplit(" ", 2)
    in_fc = param[0]
    xy_rank = param[1]
    z_rank = param[2]
    arcpy.AddFeatureClassToTopology_management(out_topo, in_fc, xy_rank, z_rank)
    print(arcpy.GetMessages())
    
# Loop through the list of rules and add rules to the topology
rulesL = rules.split(";")
for rule in rulesL:
    r = rule.rsplit(" ", 4)
    rule_type = r[0].replace("'","")
    in_fc1 = r[1]
    subtype1 = r[2]
    in_fc2 = r[3]
    subtype2 = r[4]
    arcpy.AddRuleToTopology_management(out_topo, rule_type, in_fc1, subtype1, in_fc2, subtype2)
    print(arcpy.GetMessages())
    
# Validate the topology
if validate == "true":
    try:
        arcpy.ValidateTopology_management(out_topo)
    except:
        print(arcpy.GetMessages())
print("Finished.")