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