Перед перемещением набора схематических данных, в котором содержится большое количество схематических представлений, рекомендуется проверить размер схематических представлений, которые вы хотите переместить, и проанализировать, как сконфигурирован этот набор схематических данных.
Процесс перемещения занимает много времени и требует много памяти в следующих ситуациях:
- У вас большое количество схем, которые надо перенести.
- Схемы, которые требуется перенести, содержат тысячи схематических представлений.
- В классах объектов схем имеются атрибуты схем типа Query, Function, Formatted или Script.
Для таких ситуаций рекомендуется выполнять перенос набора схематических данных в соответствии с правилами, содержащимися в разделе Перемещение больших наборов схематических данных шаг за шагом (Migrating large schematic datasets step by step) .
Раздел О параллельном выполнении операций по переносу схематических представлений (About performances when executing parallel processes for migrating schematic diagrams) содержит некоторые рекомендации по количеству компьютеров и числу процессов, которые будут выполняться параллельно для переноса большого числа схематических представлений в приемлемые сроки.
Перемещение больших наборов схематических данных шаг за шагом
Этап №1 – подготовка набора схематических данных к перемещению
Первый этап заключается в анализе настроек набора схематических данных pre-10, который необходимо переместить, и подготовке его к перемещению:
- Запустите ArcCatalog на клиенте pre-10, где установлено расширение ArcGIS Schematics.
- Найдите и выберите набор схематических данных pre-10, который вы хотите перенести, и отредактируйте его в Schematic Designer.
- Проанализируйте каждое определение класса объектов схемы и проверьте, имеются ли в классе объектов схемы атрибуты типа Query, Function, Formatted или Script.
- Как описывается в разделе Подготовка наборов схематических данных pre-10 (Preparing pre-10 schematic datasets):
- Убедитесь, что пространственная привязка задана для каждого класса объектов схемы.
- Настройте атрибут ContainerMark для каждого класса объектов узлов схемы, который должен быть перенесен как контейнер.
- Дополнительно, создайте в своем наборе схематических данных pre-10 временные папки схемы и переместите в них поднаборы схематических представлений.
Этап №2 – перенос определений наборов схематических данных
Второй этап заключается в переносе определений набора схематических данных:
- Запустите ArcCatalog
- В дереве Каталога щелкните правой кнопкой мыши на наборе схематических данных pre-10, который вы хотите перенести, и выберите Перенести в текущую версию Schematics (Migrate to the current Schematics version).
- В открывшемся диалоговом окне Выбрать тип геометрии (Select Geometry Type) укажите тип геометрии узла схемы и классов прорисовки, которые необходимо перенести.
- В открывшемся диалоговом окне Перенести в текущую версию Schematics (Migrate To The Current Schematics Version):
- Укажите выходной набор схематических данных, в который вы хотите выполнить перемещение.
- Отметьте Определения (Definitions) в секции Операция вывода (Output Activity).
- Нажмите ОК.
Этап №3 – одновременное перемещение разных поднаборов схематических представлений
Третий этап заключается в переносе схематических представлений, содержащихся в наборе схематических данных pre-10.
Он состоит в запуске нескольких параллельных процессов перемещения на разных компьютерах, когда каждый отдельный процесс перемещения работает на разных поднаборах схематических представлений.
На каждом компьютере с версией 10 необходимо запустить один или несколько процессов перемещения, как следует ниже:
- Запустите ArcCatalog
- В дереве Каталога щелкните правой кнопкой мыши на наборе схематических данных pre-10 и выберите Перенести в текущую версию Schematics (Migrate to the current Schematics version).
- Закройте диалоговое окно Выбрать тип геометрии (Select Geometry Type).
- В открывшемся диалоговом окне Перенести в текущую версию Schematics (Migrate To The Current Schematics Version):
- Укажите выходной набор схематических данных, в который вы хотите выполнить перемещение.
- В секции Операция вывода (Output Activity) выполните следующее:
- Отметьте Схемы (Diagrams).
- Отметьте Задать фильтры (Specify filters) и настройте фильтры, которые будут применены, чтобы определить, какой поднабор схематических представлений будет перенесен в этом процессе; например, создайте выражение SQL на основе FOLDERID, соответствующего временной папке, которую вы создали на этапе №1.
- Для схематических представлений, в которых содержатся объекты схемы с атрибутами типа Query, Function, Formatted или Script, снимите отметку С оценками атрибутов (With attribute evaluations).
- Нажмите ОК.
Этап №4 – Обновление атрибутов объектов схемы в перемещенных схематических представлениях (дополнительно)
Если в процессе перемещения поднабора схем отключить опцию С оценками атрибутов (With attribute evaluations), то не будет оцениваться ни один из атрибутов типа Query, Function, Formatted или Script, заданных для объектов схем в перемещенных схемах. В этом случае впоследствии необходимо обновить такие атрибуты.
Что касается схематических представлений на основе стандартного компоновщика (Standard builder) или настроенных пользовательскими запросами, то простой и быстрый способ обновления таких атрибутов иллюстрирует следующий пример скрипта Python. Он основан на инструменте Обновить схемы GP (Update Diagrams GP) и работает в разных ситуациях:
- Ситуация А – Обновление атрибутов на всех схематических представлениях, которые вы перенесли в определенную папку схемы
- Ситуация Б – Обновление атрибутов на всех перенесенных схематических представлениях, которые основаны на определенном шаблоне схемы
- Ситуация В – Обновление атрибутов на всех перенесенных схематических представлениях, которые не обновлялись n-ное количество дней
# Name: RefreshingAttributesInMigratedDiagrams.py
# Description: Refreshing attributes on schematic features contained in migrated diagrams
# Requirement: ArcGIS Schematics extension
# import system modules
import arcpy
msgNoLicenseAvailable = "ArcGIS Schematics extension license required"
try:
# Checks out the ArcGIS Schematics extension license
if arcpy.CheckExtension("Schematics") == "Available":
arcpy.CheckOutExtension("Schematics")
else:
raise Exception(msgNoLicenseAvailable)
# Sets Schematics general settings
dataLocation="C:/ArcGIS/ArcTutor/Schematics/Schematics_In_ArcMap"
gdbName="ElecDemo.gdb"
in_schDataset="ElecDemo"
in_schFolder="MyTemporaryFolderName"
in_diagTempName="GeoSchematic"
updateOption="REFRESH"
recOption1="RECURSIVE"
nbDays="60"
# Sets environment settings
arcpy.env.overwriteOutput = True
arcpy.env.workspace = dataLocation + "/" + gdbName
# Case A - Refreshing attributes on schematic diagrams that were migrated on a particular schematic folder.
arcpy.UpdateDiagrams_schematics(in_schDataset + "/" + in_schFolder1,"REFRESH")
# Case B - Refreshing attributes on all migrated schematic diagrams that are based on a specified diagram template.
arcpy.UpdateDiagrams_schematics(in_schDataset, "REFRESH", "RECURSIVE", in_diagTempName)
# Case C - Refreshing attributes on all migrated schematic diagrams that have not been updated for N days.
arcpy.UpdateDiagrams_schematics(in_schDataset, "REFRESH", "RECURSIVE", "#", nbDays)
# Returns the ArcGIS Schematics extension license
arcpy.CheckInExtension("Schematics")
print "Script completed successfully"
except Exception as e:
# If an error occurred, print line number and error message
import traceback, sys
tb = sys.exc_info()[2]
print "An error occurred on line %i" % tb.tb_lineno
print str(e)
Для того, чтобы атрибуты перемещенных схем обновились, сделайте следующее:
- Запустите ArcCatalog
- Скопируйте и вставьте свой скрипт в окно Python.
- Нажмите ENTER.
Этап №5 – реорганизация перемещенного набора схематических данных (дополнительно)
Когда вы создавали временные папки схемы в наборе схематических данных pre-10 для более простого перемещения схематических представлений в каждой из этих папок, временные папки также имелись и в перемещенном наборе схематических данных. Теперь вы можете перенести схематические представления, которые были перемещены в эти папки, в нужное вам местоположение схемы, а временные папки удалить.
О параллельном выполнении операций по переносу схематических представлений
Для перемещения большого количества схематических представлений значительного размера, например – схем с количеством объектов порядка 2000, рекомендуется выполнить несколько параллельных процессов перемещения на разных компьютерах, когда каждый отдельный процесс перемещения работает на разных поднаборах схематических представлений. В следующих разделах перечислены минимальные требования к компьютерам, достаточные для выполнения процесса перемещения, и к серверу баз данных, на который будет выполняться перемещение, включая рекомендации по определению размеров перемещаемых поднаборов для этих процессов.
Системные требования к клиентскому компьютеру ArcGIS Desktop 10.2
- Процессор: минимум двух-ядерный (Dual-core)
- Установленная память (RAM): минимум 4 GB для поддержки перемещения 1000 крупных схематических представлений, выполняя два параллельных процесса, каждый процесс выполняется на 500 схематических представлениях.
Рекомендуется запуск с 8 GB инсталлированной памяти для уровня загруженности ЦП при выполнении четырех параллельных процессов и перемещении 2000 крупных схем, по 500 схем на процесс.
Требования к компьютеру-серверу баз данных
- Инсталлированная память (RAM):минимум 16 GB
- Размер базы данных: С учетом того, что 1000 схем, в которых содержится 2000 объектов схемы, для каждой из которых требуется около 1,5 ГБ дискового пространства, размер базы данных должен быть корректно рассчитан так, чтобы поддерживался размер перемещаемых схем.
Определение размеров параллельно перемещаемых поднаборов
Скорость перемещения схематических представлений pre-10 из файловых в файловые или SDE базы геоданных весьма высокая – за один час перемещается 500 крупных схематических представлений. Много времени занимает перемещение в базы геоданных SDE схем, содержащихся в наборах схематических данных pre-10 и хранящихся в базах геоданных SDE – 500 крупных схем перемещаются около шести часов. Это время удваивается – примерно до 12 часов – в случае, если имеются атрибуты схем типа Query, Function, Formatted или Script, и в процессе переноса производится их оценка.
Если вам требуется перенести большое число схематических представлений, например – 10000 схем, то все эти схемы вы сможете перенести за одну ночь следующим образом:
- Разделите эти 10000 схематических представлений на 20 поднаборов, создав для них 20 временных папок схем.
- Установите 4 или 5 клиентских компьютеров Desktop 10.2.
- Запустите 4 или 5 параллельных процессов перемещения на каждом клиентском компьютере Desktop 10.2, чтобы каждый процесс выполнялся на определенном поднаборе схем, например, на определенной папке схем.