Краткая информация
Конвертирует схематическое представление в стандартные классы пространственных объектов или шейп-файлы.
Схематические представления хранятся в скрытых классах пространственных объектов, специфичных для Schematics, и требуют использования остальных таблиц и информации конфигурации схемы. Этот инструмент позволяет обмениваться схемами с другими пользователями, не передавая всего набора схематических данных, включающего все схемы и конфигурацию. Если вы планируете конвертировать несколько схем, вы можете выбрать, будут ли они все включены в один и тот же набор стандартных классов пространственных объектов или шейп-файлов, или у каждой схемы будет собственный набор классов объектов или шейп-файлов.
Использование
Чтобы конвертировать слой схематического представления в стандартные классы пространственных объектов, перейдите по дереву каталога и выберите базу геоданных/набор классов объектов для заданного параметра выходного пути. Чтобы конвертировать слой схематического представления в шейп-файлы, перейдите по дереву каталога и выберите папку.
Чтобы конвертировать несколько схем в одни и те же стандартные классы пространственных объектов/шейп-файлы, установите отметку Повторно использовать существующую структуру. Чтобы конвертировать несколько схем в разные стандартные классы пространственных объектов/шейп-файлы, снимите отметку Повторно использовать существующую структуру.
Отметьте Экспортировать все атрибуты связанных объектов, если вы хотите добавить все атрибуты реального класса объектов к записям схемы в процессе конвертации.
Опция Экспортировать все атрибуты связанных объектов работает только с классами объектов схемы, для которых известно значение поля Связанные класс объектов/таблица. Если для класса объектов схемы не указаны связанные класс объектов/таблицы, атрибуты связанных объектов нельзя экспортировать.
Выберите POLYGON в Геометрии контейнера, если вы хотите конвертировать все контейнеры во входном схематическом представлении в полигональный объект. Если вы хотите конвертировать такие контейнеры в полилинейные (или точечные) объекты, выберите POLYLINE (или POINT).
После конвертации заданного входного слоя схематического представления в заданном месте назначения, он будет удален перед повторным созданием.
Синтаксис
ConvertDiagram(in_diagram, out_location, {reuse_fc}, {export_related_attributes}, {container_geometry}, {config_keyword})
Параметр | Объяснение | Тип данных |
in_diagram | Слой схематического представления, который нужно конвертировать. | Schematic Layer |
out_location | Рабочая область или набор классов объектов, в которые будет конвертировано схематическое представление. Этот контейнер уже должен существовать. | Workspace;Feature Dataset |
reuse_fc (Дополнительный) | Указывает, будет ли входной слой схематического представления конвертирован в те же стандартные классы объектов/шейп-файлы, что и другие схемы на основе того же шаблона схемы.
| Boolean |
export_related_attributes (Дополнительный) | Указывает, будут ли также конвертированы все атрибуты, хранящиеся в реальных классах объектов/таблицах объектов, связанных с классами объектов схемы.
| Boolean |
container_geometry (Дополнительный) | Указывает тип геометрии объектов, которые будут созданы для конвертированных контейнеров, содержащихся во входной схеме.
| String |
config_keyword (Дополнительный) | Ключевое слово конфигурации, определяющее параметры хранения таблицы в реляционной системе управления базами данных (РСУБД) Это относится только к многопользовательская, рабочей группы или настольная база геоданных. | String |
Пример кода
ConvertDiagram, пример (инструмент-скрипт)
В примере скрипта ниже показано использование функции ConvertDiagram в инструменте-скрипте. Этот инструмент-скрипт поочередно обрабатывает все схемы, содержащиеся во входном контейнере схемы – т.е. наборе схематических данных или папке схемы, – и конвертирует их в стандартные объекты или шейп-файлы в месте назначения.Создание и настройка этого инструмента-скрипта.
- Скопируйте приведенный ниже скрипт в любой текстовый редактор и сохраните текстовый файл с расширением .ру
- Запустите ArcCatalog и откройте окно ArcToolbox.
- Добавьте новый скрипт:
- Введите его имя (например, ConvertDiagramsTool)
- В параметре Script File укажите py-файл, который вы только что создали.
- Затем задайте следующие пять параметров:
- Отображаемое имя: Входной контейнер схемы; Тип данных: Набор схематических данных или Папка схемы; Свойство типа=Обязательный, Свойство направления=Входной
- Отображаемое имя: Место назначения; Тип данных: Рабочая область или Набор классов объектов; Свойство типа=Обязательный, Свойство направления=Входной
- Отображаемое имя: Рекурсивный; Тип данных: Логический; Свойство типа=Обязательный, Свойство направления=Входной, Значение по умолчанию=Истина
- Отображаемое имя: Фильтр класса схем, Тип данных: Строка; Свойство типа=Необязательный, Свойство направления=Входной
- Отображаемое имя: Определенное место назначения, Тип данных: Рабочая область или Набор классов объектов; Свойство типа=Обязательный, Свойство направления=Выходной, Полученный из=Место_назначения
# 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
Параметры среды
Информация о лицензиях
- Basic: Требуется Данные схем (Schematics)
- Standard: Требуется Данные схем (Schematics)
- Advanced: Требуется Данные схем (Schematics)