ダイアグラムの更新(Update Diagram) (Schematics)
サマリ
スケマティック ダイアグラムを更新します。
関連するスケマティック ビルダに応じて、フィーチャ レイヤ、フィーチャクラス、オブジェクト テーブル、解析済みのネットワーク解析、または XML データからダイアグラムを更新できます。
使用法
-
[入力データ] パラメータの指定は、ネットワーク データセット ビルダおよび XML ビルダと連動するダイアグラムでは必須です。ジオメトリック ネットワークまたはネットワーク データセットから動作するように構成されたスタンダード ビルダと連動するダイアグラムではオプションです。カスタム クエリから動作するように構成されたスタンダード ビルダと連動するダイアグラムでは、このパラメータは指定しません。
-
スタンダード ビルダによって実装された、ジオメトリック ネットワーク トレースから生成されたダイアグラムに対して [ダイアグラムの更新(Update Diagram)] ツールを使用した場合、ハイライトされたトレースからそのダイアグラムが最初に生成されたときに、スケマティック データセットに保存されたトレース パラメータに基づく更新トレース結果から更新が実行されます。
-
ジオメトリック ネットワークまたはネットワーク データセットを構成するフィーチャから更新を実行する必要がある場合、[入力データ] パラメータにすべてのフィーチャ レイヤを指定する必要はありません。スタンダード ビルダのプロパティで [接続ノードの追加] オプションを指定した場合、エッジ フィーチャまたはエッジ ネットワーク エレメントに関連するフィーチャ レイヤのみ指定可能ですが、更新にはそのジオメトリック ネットワークまたはネットワーク データセットに関連するすべてのフィーチャ レイヤ(ジャンクションおよびエッジ)が使用されます。
-
指定したスケマティック ダイアグラムに対して特定のレイアウトが保存されている場合、更新前にそのダイアグラム内に存在したスケマティック フィーチャが、最後に保存された位置に基づいて表示されます。更新時に新しいスケマティック フィーチャが導入された場合、そのフィーチャが対応する地理座標に配置されます。
構文
パラメータ | 説明 | データ タイプ |
in_diagram |
更新するスケマティック ダイアグラム レイヤ。 | Schematic Layer |
in_data [in_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 フォルダに移動します。
- GISDatabaseForXML ジオデータベースを右クリックし、[新規作成] をポイントして、[スケマティック データセット] をクリックします。
- 新しく作成するスケマティック データセットの名前として「XMLDataset」と入力し、Enter キーを押します。
- XMLDataset スケマティック データセットを右クリックし、[編集] をクリックします。
- データセット エディタのツリーで [XMLDataset] エントリを右クリックし、[新規スケマティック ダイアグラム テンプレート] をクリックします。
- [名前] テキスト ボックスに「XMLDiagrams」と入力します。
- [スケマティック ビルダ] セクションで [XML ビルダ] を選択します。
- [スケマティック ビルダ プロパティ] をクリックし、[スケマティック フィーチャクラスの自動作成] をオンにします。
- [ビルダ プロパティ] ダイアログ ボックスを閉じます。
- [OK] をクリックします。
- [スケマティック データセット エディタ] ツールバーの [保存] をクリックし、スケマティック データセット エディタを閉じます。
- 以下のスクリプトをコピーして、ArcCatalog または ArcMap Python ウィンドウに貼り付けます。
- 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)
ネットワーク データセット ビルダに基づくスケマティック ダイアグラムを更新します。
この Python スクリプトの例の使用方法は次のとおりです。
- ArcMap を起動します。
- C:\ArcGIS\ArcTutor\Schematics\Schematics_Configuration\Network_Dataset に保存されている ParisTours.mxd ファイルを開きます。
- [ジオプロセシング] → [ジオプロセシング オプション] の順にクリックします。
- [バックグラウンド処理] セクションの [有効] をオフにして、[OK] をクリックします。
- 以下のスクリプトをコピーして 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)