ダイアグラムをフィーチャに変換(Convert Diagram To Features) (Schematics)
サマリ
スケマティック ダイアグラムをフィーチャクラスまたはシェープファイルに変換します。
複数のダイアグラムを同じフィーチャクラス/シェープファイル(スケマティック フィーチャクラスごとに 1 つのフィーチャクラス/シェープファイル)にエクスポートするか、またはダイアグラムごとに異なるフィーチャクラス/シェープファイル(スケマティック フィーチャクラスごと、およびダイアグラムごとに 1 つのフィーチャクラス/シェープファイル)にエクスポートすることができます。
注意:1 つのスケマティック データセットに含まれているすべてのダイアグラムをフィーチャにエクスポートする場合のこのツールの使用例については、サンプル スクリプトのセクションをご参照ください。
使用法
-
1 つのスケマティック ダイアグラムをフィーチャクラスに変換する場合は、出力場所パラメータに指定するジオデータベース/フィーチャ データセットを参照して選択します。スケマティック ダイアグラムをシェープファイルに変換する場合は、フォルダを参照して選択します。
-
同じフィーチャクラス/シェープファイルの複数のダイアグラムをエクスポートする場合は、[既存の構成を再使用] オプションをオンにします。別のフィーチャクラス/シェープファイルの複数のダイアグラムをエクスポートする場合は、[既存の構成を再使用] オプションをオフにします。
-
入力スケマティック ダイアグラムに含まれている各スケマティック フィーチャを、そのスケマティック属性およびそのスケマティック フィーチャに関連付けられた実際のフィーチャのすべての関連属性と一緒にエクスポートする場合は、[すべての関連フィーチャの属性をエクスポート] をオンにします。
-
[すべての関連フィーチャの属性をエクスポート] オプションは、関連フィーチャクラス/テーブルのフィールドの値が判明している場合にのみ機能します。スケマティック フィーチャクラスの関連フィーチャクラス/テーブルが何も指定されていない場合、そのフィーチャクラスの関連属性フィーチャはエクスポートできません。
-
[既存の構成を再使用] オプションを有効にしても、既存の構成が [すべての関連フィーチャの属性をエクスポート] オプションをオフにして作成されている場合は、このオプションは無効になり、関連付けられたフィーチャに対応するフィールドは何も作成されません。ダイアグラムの各変換プロセスで関連フィーチャの属性がエクスポートされるようにするには、最初のダイアグラムの変換時に [すべての関連フィーチャの属性をエクスポート] オプションをオンにします。
-
入力スケマティック ダイアグラムに含まれているすべてのコンテナをポリゴン フィーチャとしてエクスポートするには、[ジオメトリ コンテナ] で POLYGON を選択します。このようなコンテナをポリライン(またはポイント)フィーチャとしてエクスポートするには、POLYLINE(またはPOINT)を選択します。
-
[既存の構成を再使用] オプションを使用する場合、最初のダイアグラムの変換でPOLYGON(あるいは POLYLINE または POINT)を選択しているときに、その後の変換で POLYLINE または POINT(あるいは POLYGON)に変換内容を変更することはできません。変更したい場合は、構成を削除してからダイアグラムを再度エクスポートする必要があります。
-
スケマティック フィーチャ ノードが入力スケマティック ダイアグラム内でコンテナになっていない場合、通常はポイント フィーチャに変換されます。しかし、コンテナを持たないか、または空のコンテナしか持たない入力ダイアグラムから構成が作成される場合、このようなスケマティック フィーチャクラスに対して作成されるフィーチャクラスは、ポイント タイプのフィーチャクラスになります。
-
指定した入力スケマティック ダイアグラムが指定した出力場所にすでにエクスポートされている場合、エクスポート済みのものが削除されてから再作成されます。
構文
| パラメータ | 説明 | データ タイプ |
in_diagram |
変換するスケマティック ダイアグラム。 | Schematic diagram |
out_location |
スケマティック ダイアグラムの変換先のワークスペース、フィーチャ データセット、またはフォルダ。このコンテナはすでに存在している必要があります。 | Workspace;Feature dataset;Folder |
reuse_fc (オプション) |
入力スケマティック ダイアグラムを、同じダイアグラム テンプレートに基づく他のダイアグラムと同じフィーチャクラス/シェープファイルにエクスポートするかどうかを指定します。
| String |
export_related_attributes (オプション) |
エクスポート ダイアグラムに含まれているスケマティック フィーチャクラスに関連付けられたフィーチャクラス/オブジェクト テーブルに格納されているすべての属性を一緒にエクスポートするかどうかを指定します。
注意:スケマティック フィーチャクラスの関連フィーチャクラス/テーブルが何も指定されていない場合、フィーチャの属性はエクスポートできません。 注意:[既存の構成を再使用] オプションを有効にしても、既存の構成に関連付けられたフィーチャ フィールドが存在しない場合は何も起こりません。 | String |
container_geometry [container_geometry,...] (オプション) |
入力ダイアグラムに含まれているエクスポート対象のスケマティック コンテナに対して作成するフィーチャのジオメトリ タイプを指定します。
注意:[既存の構成を再使用] オプションを使用する場合、既存の構成でコンテナ スケマティック フィーチャに対して POLYGON(あるいは POLYLINE または POINT)フィーチャクラスが作成されているときに、その後の変換で、POLYLINE または POINT(あるいは POLYGON)にフィーチャクラス タイプを変更することはできません。 | String |
config_keyword (オプション) |
リレーショナル データベース管理システム(RDBMS)内のテーブルの格納パラメータを決定する構成キーワード。ArcSDE 専用。 | String |
コードのサンプル
下記のスクリプトでは、スケマティック コンテナ(スケマティック データセットまたはスケマティック フォルダ)に含まれているすべてのダイアグラムに対してループ処理を行い、各ダイアグラムを出力場所にあるフィーチャに変換します。
このサンプル スクリプトの使用方法は次のとおりです。
- 下記のスクリプトを任意のテキスト エディタにコピーし、拡張子「.py」を付けてテキスト ファイルを保存します。
- ArcCatalog を起動して ArcToolbox ウィンドウを開きます。
- 新しいスクリプトを次のように追加します。
- スクリプト名を入力します(ConvertDiagramsTool など)。
- [スクリプト ファイル] パラメータに、作成した *.py ファイルを指定します。
- その後、次の 5 つのパラメータを指定します。
- [表示名]: 入力スケマティック コンテナ、[データ タイプ]: スケマティック データセットまたはスケマティック フォルダ。[タイプ] プロパティ = 必須、[方向] プロパティ = 入力
- [表示名]: 出力場所、[データ タイプ]: ワークスペースまたはフィーチャ データセット。[タイプ] プロパティ = 必須、[方向] プロパティ = 入力
- [表示名]: 再帰、[データ タイプ]: ブール型。[タイプ] プロパティ = 必須、[方向] プロパティ = 入力、[デフォルト値] = True
- [表示名]: ダイアグラム クラス フィルタ、[データ タイプ]: 文字列。[タイプ] プロパティ = オプション、[方向] プロパティ = 入力
- [表示名]: 派生した出力場所、[データ タイプ]: ワークスペースまたはフィーチャ データセット。[タイプ] プロパティ = 派生、[方向] プロパティ = 出力、[取得元] = Output_Location
必須入力パラメータ: 入力スケマティック コンテナ(データセットまたはフォルダ)+ 出力場所(GDB、フィーチャ データセット、またはシェープファイルのフォルダ)
オプションの引数: 再帰フラグ + ダイアグラム クラス フィルタ
出力派生場所: ワークスペースまたはフィーチャ データセット
# Name: ConvertDiagrams.py
# Description: Convert schematic diagrams
# Author: ESRI
# import arcpy, sys, math
msgInputsErr = "Invalid arguments."
msgParseErr = "Cannot parse input arguments."
msgConvertErr = "Error during conversion."
msgNoLicenseAvailable = "Schematics license required"
# Search schematic diagrams recursively in the folders
# list 'pathList' stores the result
def RecursiveSearch(inCont, bRecursive):
try:
childs = inCont.Children
dataset = childs.Next()
while dataset:
if dataset.DataType == "SchematicFolder" and bRecursive:
RecursiveSearch(dataset, bRecursive)
elif dataset.DataType == "SchematicDiagram":
if diagramClassFilter == "" or diagramClassFilter == dataset.DiagramClassname:
pathList.append(dataset.CatalogPath)
dataset = childs.next()
except:
raise
try:
if arcpy.CheckExtension("Schematics1") == "Available":
arcpy.CheckOutExtension("Schematics")
else:
raise Exception(msgNoLicenseAvailable)
except Exception as exc:
print exc
raise
arcpy.OverWriteOutput = True
# Decode 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
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()
except:
arcpy.AddError(msgConvertErr)
raise