ダイアグラムをフィーチャに変換 (Schematics)
サマリ
スケマティック ダイアグラムを標準フィーチャクラスまたはシェープファイルに変換します。
スケマティック ダイアグラムは、非表示のフィーチャクラスにすべて格納されます。これらのフィーチャクラスは Schematics に固有であり、残りのスケマティック構成テーブルおよび有効な情報を必要とします。このツールを使用することで、すべてのダイアグラムと構成が含まれるスケマティック データセット全体を提供しなくても、他のユーザとダイアグラムを共有することができます。複数のダイアグラムを変換しようとする場合、それらをすべて同じ一連の標準フィーチャクラスまたはシェープファイルに配置するのか、あるいは各ダイアグラムに専用のフィーチャクラスまたはシェープファイルを与えるのかを選択することができます。
スケマティック データセットまたはスケマティック フォルダに含まれるすべてのダイアグラムを変換できるスクリプト ツール サンプルについては、「コード サンプル」のセクションをご参照ください。
使用法
-
1 つのスケマティック ダイアグラム レイヤを標準フィーチャクラスに変換する場合は、出力場所パラメータに指定するジオデータベース/フィーチャ データセットを参照して選択します。スケマティック ダイアグラム レイヤをシェープファイルに変換する場合は、フォルダを参照して選択します。
-
複数のダイアグラムを同じ標準フィーチャクラス/シェープファイルに変換する場合は、[既存の構成を再使用] オプションをオンにします。複数のダイアグラムを異なる標準フィーチャクラス/シェープファイルに変換する場合は、[既存の構成を再使用] オプションをオフにします。
-
変換プロセス中に、実際のフィーチャクラスの属性をすべてスケマティック レコードに追加する場合、[すべての関連フィーチャの属性をエクスポート] オプションをオンにします。
-
[すべての関連フィーチャの属性をエクスポート] オプションは、関連フィーチャクラス/テーブルのフィールドの値が判明しているスケマティック フィーチャクラスの場合にのみ機能します。スケマティック フィーチャクラスの関連フィーチャクラス/テーブルが何も指定されていない場合、そのフィーチャクラスの関連属性フィーチャはエクスポートできません。
-
入力スケマティック ダイアグラムに含まれているすべてのコンテナをポリゴン フィーチャとして変換するには、[ジオメトリ コンテナ] で POLYGON を選択します。このようなコンテナをポリライン(またはポイント)フィーチャとして変換するには、POLYLINE(またはPOINT)を選択します。
注意:[既存の構成を再使用] オプションを使用する場合、最初のダイアグラムの変換でポリゴン(あるいはポリラインまたはポイント)を選択しているときに、その後の変換でポリラインまたはポイント(あるいはポリゴン)に変換内容を変更することはできません。変更したい場合は、構成を削除してからダイアグラムを再度変換する必要があります。
-
指定した入力スケマティック ダイアグラム レイヤが指定した出力場所にすでに変換されている場合、変換済みのものが削除されてから再作成されます。
構文
パラメータ | 説明 | データ タイプ |
in_diagram |
変換するスケマティック ダイアグラム レイヤ。 | Schematic Layer |
out_location |
スケマティック ダイアグラムの変換先のワークスペースまたはフィーチャ データセット。このコンテナはすでに存在している必要があります。 | Workspace;Feature Dataset |
reuse_fc [reuse_fc,...] (オプション) | 入力スケマティック ダイアグラム レイヤを、同じダイアグラム テンプレートに基づく他のダイアグラムと同じ標準フィーチャクラス/シェープファイルに変換するかどうかについて指定します。
| Boolean |
export_related_attributes (オプション) | スケマティック フィーチャクラスに関連付けられた実際のフィーチャクラス/オブジェクト テーブルに格納されているすべての属性を一緒に変換するかどうかを指定します。
注意: スケマティック フィーチャクラスの関連フィーチャクラス/テーブルが何も指定されていない場合、フィーチャの属性は変換できません。 注意: [REUSE_FC] と [EXPORT_RELATED_ATTRIBUTES] を使用する場合、関連属性を変換するには、関連するフィーチャ フィールドを含む構成がすでに存在している必要があります。 | Boolean |
container_geometry [container_geometry,...] (オプション) |
入力ダイアグラムに含まれている変換対象のスケマティック コンテナに対して作成するフィーチャのジオメトリ タイプを指定します。
注意: [既存の構成を再使用] オプションを使用する場合、既存の構成でコンテナ スケマティック フィーチャに対してポリゴン(あるいはポリラインまたはポイント)フィーチャクラスが作成されているときに、その後の変換で、ポリラインまたはポイント(あるいはポリゴン)にフィーチャクラス タイプを変更することはできません。 | String |
config_keyword (オプション) |
リレーショナル データベース管理システム(RDBMS)内のテーブルの格納パラメータを決定する構成キーワード。ArcSDE 専用。 | String |
コードのサンプル
次のスクリプトは、スクリプト ツールで ConvertDiagram 関数を使用する方法を示しています。このスクリプト ツールでは、入力スケマティック コンテナ(スケマティック データセットまたはスケマティック フォルダ)に含まれているすべてのダイアグラムに対してループ処理を行い、各ダイアグラムを出力場所にある標準フィーチャまたはシェープファイルに変換します。
このスクリプト ツールの作成方法および構成方法を以下に示します。
- 下記のスクリプトを任意のテキスト エディタにコピーし、拡張子「.py」を付けてテキスト ファイルを保存します。
- ArcCatalog を起動して ArcToolbox ウィンドウを開きます。
- 新しいスクリプトを次のように追加します。
- スクリプト名を入力します(ConvertDiagramsTool など)。
- [スクリプト ファイル] パラメータに、作成した *.py ファイルを指定します。
- その後、次の 5 つのパラメータを指定します。
- [表示名]: 入力スケマティック コンテナ、[データ タイプ]: スケマティック データセットまたはスケマティック フォルダ。[タイプ] プロパティ = 必須、[方向] プロパティ = 入力
- [表示名]: 出力場所、[データ タイプ]: ワークスペースまたはフィーチャ データセット。[タイプ] プロパティ = 必須、[方向] プロパティ = 入力
- [表示名]: 再帰、[データ タイプ]: ブール型。[タイプ] プロパティ = 必須、[方向] プロパティ = 入力、[デフォルト値] = True
- [表示名]: ダイアグラム クラス フィルタ、[データ タイプ]: 文字列。[タイプ] プロパティ = オプション、[方向] プロパティ = 入力
- [表示名]: 派生した出力場所、[データ タイプ]: ワークスペースまたはフィーチャ データセット。[タイプ] プロパティ = 派生、[方向] プロパティ = 出力、[取得元] = Output_Location
必須入力パラメータ: 入力スケマティック コンテナ(データセットまたはフォルダ)+ 出力場所(GDB、フィーチャ データセット、またはシェープファイルのフォルダ)
オプションの引数: 再帰フラグ + ダイアグラム クラス フィルタ
出力派生場所: ワークスペースまたはフィーチャ データセット
# 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