Конвертировать схему в объекты (Схематика)

Уровень лицензии:BasicStandardAdvanced

Резюме

Конвертирует схематическое представление в стандартные классы пространственных объектов или шейп-файлы.

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

ПримечаниеПримечание:

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

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

Синтаксис

ConvertDiagram_schematics (in_diagram, out_location, {reuse_fc}, {export_related_attributes}, {container_geometry}, {config_keyword})
ПараметрОбъяснениеТип данных
in_diagram

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

Schematic Layer
out_location

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

Workspace;Feature Dataset
reuse_fc
[reuse_fc,...]
(дополнительно)

Указывает, будет ли входной слой схематического представления конвертирован в те же стандартные классы объектов/шейп-файлы, что и другие схемы на основе того же шаблона схемы.

  • REUSE_FCДолжна использоваться для конвертации заданной схемы в те же стандартные классы объектов/шейп-файлы, что и другие схемы на основе того же шаблона схемы, которые уже конвертированы или будут конвертированы. В этом случае, в зависимости от выбранного места назначения, заданная схема конвертируется:
    • В набор классов объектов, имя которого соответствует имени шаблона схемы, а имена классов объектов - именам классов объектов схемы.
    • В папку, имя которой соответствует имени шаблона схемы, а имена шейп-файлов в ней - именам классов объектов схемы.
    Это значение используется по умолчанию.
  • NO_REUSE_FCВходная схема конвертируется в новый класс объектов/папку с именем, являющимся конкатенацией имени шаблона входной схемы и имени схемы; при этом имя каждого класса объектов/шейп-файла является конкатенацией имени класса объектов схемы и имени схемы.
Boolean
export_related_attributes
(дополнительно)

Указывает, будут ли также конвертированы все атрибуты, хранящиеся в реальных классах объектов/таблицах объектов, связанных с классами объектов схемы.

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

Если для класса объектов схемы не указаны связанные класс объектов/таблица, атрибуты объектов нельзя конвертировать.

ПримечаниеПримечание:

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

Boolean
container_geometry
[container_geometry,...]
(дополнительно)

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

  • ПОЛИГОН (POLYGON)Каждый контейнер во входной схеме конвертируется в полигональный объект. Это значение используется по умолчанию.
  • ПОЛИЛИНИЯ (POLYLINE)Каждый контейнер во входной схеме конвертируется в полилинейный объект.
  • ТОЧКА (POINT)Каждый контейнер во входной схеме конвертируется в точечный объект.
ПримечаниеПримечание:

Если используется опция Повторно использовать существующую структуру (Reuse Existing Structure), и уже существует структура с ПОЛИГОНАЛЬНЫМИ (ПОЛИЛИНЕЙНЫМИ или ТОЧЕЧНЫМИ) классами объектов, созданными для контейнерных объектов схемы, то для последующих конвертаций нельзя поменять тип класса объектов на ПОЛИЛИНЕЙНЫЙ или ТОЧЕЧНЫЙ (ПОЛИГОНАЛЬНЫЙ).

String
config_keyword
(дополнительно)

Ключевое слово конфигурации, определяющее параметры хранения таблицы в реляционной системе управления базами данных (РСУБД) Это относится только к ArcSDE.

String

Пример кода

Пример (инструмент-скрипт) ConvertDiagram

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

Создание и настройка этого инструмента-скрипта.

  1. Скопируйте приведенный ниже скрипт в любой текстовый редактор и сохраните текстовый файл с расширением .ру
  2. Запустите ArcCatalog и откройте окно ArcToolbox.
  3. Добавьте новый скрипт:
    • Введите его имя (например, ConvertDiagramsTool)
    • В параметре Script File укажите py-файл, который вы только что создали.
    • Затем задайте следующие пять параметров:
      1. Отображаемое имя: Входной контейнер схемы; Тип данных: Набор схематических данных или Папка схемы; Свойство типа=Обязательный, Свойство направления=Входной
      2. Отображаемое имя: Место назначения; Тип данных: Рабочая область или Набор классов объектов; Свойство типа=Обязательный, Свойство направления=Входной
      3. Отображаемое имя: Рекурсивный; Тип данных: Логический; Свойство типа=Обязательный, Свойство направления=Входной, Значение по умолчанию=Истина
      4. Отображаемое имя: Фильтр класса схем, Тип данных: Строка; Свойство типа=Необязательный, Свойство направления=Входной
      5. Отображаемое имя: Определенное место назначения, Тип данных: Рабочая область или Набор классов объектов; Свойство типа=Обязательный, Свойство направления=Выходной, Полученный из=Место_назначения

Требуемые входные параметры: Входной контейнер схемы (набор данных или папка) + место назначения (БГД, набор классов объектов или папка для шейп-файлов)

Необязательные аргументы: Флаг рекурсии + фильтр класса схем

Определенное место назначения: Рабочая область или набор классов объектов.

# Name: ConvertDiagrams.py
# Description: Convert schematic diagrams
# Requirement: Дополнительный модуль ArcGIS Schematics

# import arcpy, sys, math
import arcpy, sys, math
msgInputsErr = "Invalid arguments."
msgParseErr = "Cannot parse input arguments."
msgConvertErr = "Error during conversion."

msgNoLicenseAvailable = "Дополнительный модуль ArcGIS Schematics license required"

# Recursively searches for schematic diagrams in the folders
def RecursiveSearch(inCont, bRecursive):
    try:
        childs = inCont.Children
        dataset = None
        for dataset in childs:
            if dataset.DataType == "SchematicFolder" and bRecursive:
                RecursiveSearch(dataset, bRecursive)
            elif dataset.DataType == "SchematicDiagram":
                if diagramClassFilter == "" or diagramClassFilter == dataset.DiagramClassname:
                    pathList.append(dataset.CatalogPath)
    except:
        raise
    
try:
# Checks out the Дополнительный модуль ArcGIS Schematics license    
    if arcpy.CheckExtension("Schematics") == "Available":
        arcpy.CheckOutExtension("Schematics")
    else:
        raise Exception(msgNoLicenseAvailable)
except Exception as exc:
    print exc
    raise

arcpy.env.overwriteOutput = True


# Decodes parameters
try:
    inputContainer = arcpy.GetParameterAsText(0)
    outputLocation = arcpy.GetParameterAsText(1)
    recursive = arcpy.GetParameterAsText(2)
    if recursive == "false":
        recursive = None
    diagramClassFilter = arcpy.GetParameterAsText(3)
    
    if inputContainer == "":
        raise Exception()
    
except:
    print msgParseErr
    arcpy.AddError(msgParseErr)
    raise

# Main code
try:
    pathList = []   # List for diagram names to convert
    arcpy.SetProgressorLabel("Searching diagrams to convert...")
    RecursiveSearch(arcpy.Describe(inputContainer), recursive)

    arcpy.SetProgressor("step", "Converting...", 0, len(pathList), 1)

    for path in pathList:
        # Execute convert
        mes = "Converting Schematic Diagram : " + path
        # Set the progressor label
        arcpy.SetProgressorLabel(mes)
        arcpy.AddMessage(mes)
        arcpy.ConvertDiagram_schematics(path, outputLocation, "REUSE_FC", "NO_RELATED_ATTRIBUTES", "#")
        arcpy.SetProgressorPosition()

    # Returns the Дополнительный модуль ArcGIS Schematics licence
    arcpy.CheckInExtension("Schematics")

except:
    arcpy.AddError(msgConvertErr)
    raise

Параметры среды

Связанные темы

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

ArcGIS for Desktop Basic: Требует Схематика (Schematics)
ArcGIS for Desktop Standard: Требует Схематика (Schematics)
ArcGIS for Desktop Advanced: Требует Схематика (Schematics)
9/11/2013