Обновить схему (Update Diagram) (Схематика)
Резюме
Обновить схематическое представление.
В зависимости от компоновщика схемы обновление схемы может быть основано на слоях объектов, классах объектов, таблицах объектов, произведенном сетевом анализе или файле XML.
Использование
-
Параметр Входные данные (Input Data) необходим для схем, работающих с Компоновщиком набора сетевых данных (Network Dataset builder) и XML компоновщиком (XML builder). И необязателен для схем, работающих со Стандартным компоновщиком, настроенным для работы из геометрической сети или набора сетевых данных (Standard builder when it is configured to operate from a geometric network or a network dataset). Параметр не нужно задавать для схем, работающих со Стандартным компоновщиком, настроенным для работы из пользовательских запросов (Standard builder when it is configured to operate from custom queries).
-
При использовании инструмента Обновить схему (Update Diagram) для схем, реализованных с помощью Стандартного компоновщика (Standard builder), созданного из трассировки геометрической сети, обновление происходит из обновленного результата трассировки, основанного на параметрах трассировки, сохраненных в наборе схематических данных при первом создании схемы из выделенной трассировки.
-
Когда обновление должно производится из объектов, составляющих геометрическую сеть или набор сетевых данных, все слои объектов в параметре Входные данные (Input Data) можно не задавать. Если в свойствах Стандартного компоновщика (Standard builder) задана опция Добавить соединенные узлы (Add connected nodes), можно указать только слои объектов, связанные с объектами ребер или элементы ребер сети, даже если для обновления будут использоваться все слои объектов, связанные с геометрической сетью или набором сетевых данных (соединения и ребра).
-
Если для заданного схематического представления была сохранена какая-нибудь компоновка, объекты схемы, бывшие в схеме до обновления, отображаются в соответствии с их последним сохраненным местоположением, а новые объекты схемы, которые могли быть вставлены в ходе обновления, размещаются в соответствии с их географическими координатами.
Синтаксис
Параметр | Объяснение | Тип данных |
in_diagram |
Обновляемый слой схематического представления. | Schematic Layer |
in_data [in_data,...] (дополнительно) |
Входные данные, на которых будет основываться схема. Параметр Входные данные (Input Data) не требуется для всех предопределенных компоновщиков, это дополнительный параметр:
| Table View;Data Element;Layer |
builder_options [builder_options,...] (дополнительно) |
Опции обновления компоновщика схемы. Опции обновления необязательны. Они зависят от компоновщика, связанного с шаблоном схемы, реализующим заданное схематическое представление:
| String |
Пример кода
Обновляет образец схематического представления, полностью построенного из пользовательских запросов. В этом случае требуется только параметр имени схемы.
Как запустить этот пример скрипта Python:
- Запустите ArcCatalog или ArcMap с новой пустой картой.
- Скопируйте приведенный ниже скрипт в Окно Python:
- Нажмите ENTER.
# Name: UpdateDiagramCustomQuery.py
# Description: Update a schematic diagram entirely built from custom queries
# Requirement: Дополнительный модуль ArcGIS Schematics
# import system modules
import arcpy
msgNoLicenseAvailable = "Дополнительный модуль ArcGIS Schematics license required"
try:
# Checks out the Дополнительный модуль ArcGIS Schematics license
if arcpy.CheckExtension("Schematics") == "Available":
arcpy.CheckOutExtension("Schematics")
else:
raise Exception(msgNoLicenseAvailable)
# Sets environment settings
arcpy.env.overwriteOutput = True
arcpy.env.workspace = "C:\ArcGIS\ArcTutor\Schematics\Schematics_In_ArcMap\ElecDemo.gdb"
# UpdateDiagram by only refreshing the attributes on schematic features contained in the input diagram; builder_options=REFRESH
arcpy.UpdateDiagram_schematics("ElecDemo\Inside Plants\Substation 08", "#", "REFRESH")
# UpdateDiagram by fully synchronizing the diagram content regarding the custom queries; no udpate parameters required
arcpy.UpdateDiagram_schematics("ElecDemo\Inside Plants\Substation 08")
# Returns the Дополнительный модуль ArcGIS Schematics 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)
Обновляет образцы схематических представлений, созданных из объектов, организованных в геометрическую сеть.
Как запустить этот пример скрипта Python:
- Запустите ArcCatalog или ArcMap с новой пустой картой.
- Скопируйте приведенный ниже скрипт в Окно Python:
- Нажмите ENTER.
# Name: UpdateDiagramStd.py
# Description: Update schematic diagrams built from features organized into a geometric network
# Requirement: Дополнительный модуль ArcGIS Schematics
# import system modules
import arcpy
msgNoLicenseAvailable = "Дополнительный модуль ArcGIS Schematics license required"
try:
# Checks out the Дополнительный модуль ArcGIS Schematics license
if arcpy.CheckExtension("Schematics") == "Available":
arcpy.CheckOutExtension("Schematics")
else:
raise Exception(msgNoLicenseAvailable)
# Sets environment settings
arcpy.env.overwriteOutput = True
arcpy.env.workspace = "C:\ArcGIS\ArcTutor\Schematics\Schematics_In_ArcMap\ElecDemo.gdb"
# Creates some new diagrams that will be used to exemplify the UpdateDiagram command:
arcpy.CreateDiagram_schematics("ElecDemo", "FeederDiagram", "GeoSchematic", "ElectricNetwork\Feeder")
arcpy.CreateDiagram_schematics("ElecDemo", "FeederDiagramBIS", "GeoSchematic", "ElectricNetwork\Feeder")
arcpy.CreateDiagram_schematics("ElecDemo", "WholeElectricNetworkDiagram", "GeoSchematic", "ElectricNetwork\PrimaryLine;ElectricNetwork\SecondaryLine")
InputLayer = arcpy.MakeFeatureLayer_management("ElectricNetwork\PrimaryLine","PrimaryLineLayer", "PHASECODE =135")
arcpy.CreateDiagram_schematics("ElecDemo", "PrimaryLinesDiagram", "GeoSchematic", InputLayer)
# UpdateDiagram by fully synchronizing the diagram content regarding the original network features that were used to initially generate it; no udpate parameters required
arcpy.UpdateDiagram_schematics("ElecDemo\Feeders\Feeder 0801-Rice Creek")
# UpdateDiagram by only refreshing the attributes on schematic features contained in the input diagram; builder_options=REFRESH
arcpy.UpdateDiagram_schematics("ElecDemo\Feeders\Feeder 0802-Goldmine", "#", "REFRESH")
# UpdateDiagram by rebuilding the input diagram from a feature class; builder_options=REBUILD;KEEP_MANUAL_MODIF or REBUILD;NO_KEEP_MANUAL_MODIF
arcpy.UpdateDiagram_schematics("ElecDemo\WholeElectricNetworkDiagram", "ElectricNetwork\PrimaryLine", "REBUILD;KEEP_MANUAL_MODIF")
# UpdateDiagram by appending new features to the input diagram with a partial synchronization of the diagram content; builder_options=APPEND_QUICK;KEEP_MANUAL_MODIF or APPEND_QUICK;NO_KEEP_MANUAL_MODIF
arcpy.UpdateDiagram_schematics("ElecDemo\FeederDiagram", "ElectricNetwork\Substation", "APPEND_QUICK;KEEP_MANUAL_MODIF")
# UpdateDiagram by appending new features to the input diagram with a full synchronization of the diagram content; builder_options=APPEND;KEEP_MANUAL_MODIF or APPEND;NO_KEEP_MANUAL_MODIF
arcpy.UpdateDiagram_schematics("ElecDemo\FeederDiagramBIS", "ElectricNetwork\ServiceLocation", "APPEND;KEEP_MANUAL_MODIF")
# UpdateDiagram by rebuilding the input diagram from an input layer; builder_options=REBUILD;KEEP_MANUAL_MODIF or REBUILD;NO_KEEP_MANUAL_MODIF
arcpy.UpdateDiagram_schematics("ElecDemo\PrimaryLinesDiagram", InputLayer, "REBUILD;KEEP_MANUAL_MODIF")
# Returns the Дополнительный модуль ArcGIS Schematics 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)
Обновляет образец схематического представления на основе XML компоновщика.
Как запустить этот пример скрипта Python:
- Запустите ArcCatalog
- Создание и настройка набора схематических данных, используемого в ходе работы примера скрипта:
- Перейдите в папку C:\ArcGIS\ArcTutor\Schematics\Schematics_Configuration\XML_Data в дереве Каталога (Catalog).
- Щелкните правой кнопкой мыши базу геоданных GISDatabaseForXML, выберите Новый (New), а затем щелкните Набор схематических данных (Schematic Dataset).
- Введите XMLDataset в качестве имени только что созданного набора схематических данных и нажмите клавишу ENTER.
- Щелкните правой кнопкой мыши набор схематических данных XMLDataset и щелкните Редактировать (Edit).
- Щелкните правой кнопкой мыши элемент XMLDataset в дереве Редактора набора данных (Dataset Editor) и щелкните Новый шаблон схематического представления (New Schematic Diagram Template).
- Введите XMLDiagrams в текстовое поле Имя (Name).
- Выберите XML-компоновщик (XML Builder) в разделе Компоновщик схемы (Schematic Builder).
- Щелкните Свойства компоновщика схемы (Schematic Builder Properties) и отметьте флажком Автоматическое создание класса объектов схемы (Automatic schematic feature class creation).
- Закройте диалоговое окно Свойства компоновщика (Builder Properties).
- Нажмите OK.
- Щелкните Сохранить (Save) на панели инструментов Редактор набора схематических данных (Schematic Dataset Editor) и закройте Редактора.
- Скопируйте и вставьте следующий скрипт в окно Python в ArcCatalog или ArcMap:
- Нажмите ENTER.
# Name: UpdateDiagramXML.py
# Description: Update schematic diagrams based on the XML builder
# Requirement: Дополнительный модуль ArcGIS Schematics
# import system modules
import arcpy
msgNoLicenseAvailable = "Дополнительный модуль ArcGIS Schematics license required"
try:
# Checks out the Дополнительный модуль ArcGIS Schematics license
if arcpy.CheckExtension("Schematics") == "Available":
arcpy.CheckOutExtension("Schematics")
else:
raise Exception(msgNoLicenseAvailable)
# Sets environment settings
arcpy.env.overwriteOutput = True
arcpy.env.workspace = "C:\ArcGIS\ArcTutor\Schematics\Schematics_Configuration\XML_Data\GISDatabaseForXML.gdb"
# CreateDiagram from a XML file, SampleNetworkFeeder1.xml
arcpy.CreateDiagram_schematics("XMLDataset", "XMLDiagramFeeder1", "XMLDiagrams", "C:\ArcGIS\ArcTutor\Schematics\Schematics_Configuration\XML_Data\SampleNetworkFeeder1.xml")
# Updates the XMLDiagramFeeder1 diagram from another XML file, SampleNetworkUpdatedFeeder1.xml
arcpy.UpdateDiagram_schematics("XMLDataset\XMLDiagramFeeder1", "C:\ArcGIS\ArcTutor\Schematics\Schematics_Configuration\XML_Data\SampleNetworkUpdatedFeeder1.xml")
# Returns the Дополнительный модуль ArcGIS Schematics 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)
Обновляет схематические представления, основанные на Компоновщике набора сетевых данных (Network Dataset builder).
Как использовать этот пример скрипта Python:
- Запустите ArcMap.
- Откройте файл Open the ParisTours.mxd, хранящийся в C:\ArcGIS\ArcTutor\Schematics\Schematics_Configuration\Network_Dataset.
- Щелкните Геообработка (Geoprocessing) > Опции геообработки (Geoprocessing Options).
- Снимите флажок с Включить (Enable) в разделе Обработка в фоновом режиме (Background Processing) и щелкните ОК.
- Скопируйте приведенный ниже скрипт в Окно Python:
# Name: UpdateDiagramNDS.py
# Description: Update sample schematic diagrams based on the Network Dataset builder
# Requirement: Дополнительный модуль ArcGIS Schematics,Дополнительный модуль ArcGIS Network Analyst
# import system modules
import arcpy
msgNoLicenseSchematicsAvailable = "Дополнительный модуль ArcGIS Schematics license required"
msgNoLicenseNetworkAnalystAvailable = "Дополнительный модуль ArcGIS Network Analyst license required"
try:
# Checks out the Дополнительный модуль ArcGIS Schematics licence
if arcpy.CheckExtension("Schematics") == "Available":
arcpy.CheckOutExtension("Schematics")
else:
raise Exception(msgNoLicenseSchematicsAvailable)
# Checks out the Дополнительный модуль ArcGIS Network Analyst licence
if arcpy.CheckExtension("Network") == "Available":
arcpy.CheckOutExtension("Network")
else:
raise Exception(msgNoLicenseNetworkAnalystAvailable)
# Sets environment settings
arcpy.env.overwriteOutput = True
arcpy.env.workspace = "C:\ArcGIS\ArcTutor\Schematics\Schematics_Configuration\Network_Dataset\NetworkAnalyst_Schematics.gdb"
# UpdateDiagram from a solved route network analysis layer
# 1) Solves the route network analysis layer,
arcpy.Solve_na("Routes\Tour2")
# 2) Creates diagrams from this solved route network analysis layer
# a - DiagramTour_A diagram, created with merged nodes to represent network junctions which are crossed several times along the resultant route (MERGE_NODES option)
arcpy.CreateDiagram_schematics("NA_SchematicDataset", "DiagramTour2_A", "NADiagrams", "Routes\Tour2", "MERGE_NODES")
# b - DiagramTour_B diagram, without merged nodes (NO_MERGE_NODES option)
arcpy.CreateDiagram_schematics("NA_SchematicDataset", "DiagramTour2_B", "NADiagrams", "Routes\Tour2", "NO_MERGE_NODES")
# 3) Updates those diagrams from the same solved route network analysis layer by changing the merge nodes option
arcpy.UpdateDiagram_schematics("NA_SchematicDataset\DiagramTour2_A", "Routes\Tour2", "NO_MERGE_NODES;KEEP_MANUAL_MODIF")
arcpy.UpdateDiagram_schematics("NA_SchematicDataset\DiagramTour2_B", "Routes\Tour2", "MERGE_NODES;KEEP_MANUAL_MODIF")
# Returns the licences
arcpy.CheckInExtension("Schematics")
arcpy.CheckInExtension("Network")
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)