演習 6: クイックスタート ガイド - カスタム クエリから動作するようにスタンダード ビルダを構成する
ADO または ODBC 接続によって接続できるほとんどのデータからスケマティック ダイアグラムを生成することができます(データがジオデータベース内になくてもかまいません)。スタンダード ビルダは通常、選択またはトレース操作後にマップでハイライトされている GIS フィーチャからダイアグラムを生成する場合に使用しますが、ジオデータベース内にないデータや、純粋な表形式の非空間データからダイアグラムを生成するように構成することもできます。この構成では、データソースに対して直接実行される SQL クエリを作成しなければならないので、SQL クエリの作成経験があり、データとその構造を十分に理解している必要があります。この演習では、スケマティック ダイアグラム テンプレートを作成し、表形式の非空間データからダイアグラムを生成するように構成する方法を学びます。使用するデータは、C:\ArcGIS\ArcTutor\Schematics\Schematics_Configuration\Mixed_Data にある Brazil.gdb チュートリアル データベースに保存されています。演習 1 で作成した SchematicBuilderSamples スケマティック データセットを使用して、ダイアグラム テンプレートを構成します。
この演習のスクリーン ショットには、これまでの演習で作成した構成パラメータが表示されています。ただし、この演習を行う前にそれらの演習を完了している必要はありません。これまでの演習を完了していなくても、この演習で説明する手順を実行できます。
使用するソース データを確認する
この構成の第 1 段階では、データを使用するためのクエリを構成できるように、データを確認して、データに接続します。
- ArcCatalog アプリケーションを起動します。
- C:\ArcGIS\ArcTutor\Schematics\Schematics_Configuration\Mixed_Data に移動します。
-
[Brazil.gdb] エントリをダブルクリックして、その内容を開きます。
カタログ ウィンドウの [コンテンツ] タブに、ISP_ で始まるテーブルが 3 つ表示されます。ISP は Inside Plant(プラント内)を意味し、これらのテーブル内のレコードはガス プラントの内部作業を表します。ガス プラント自体は、ジオメトリック ネットワークに含まれる実際のフィーチャであり、パイプライン フィーチャ データセット内の pug_PUG_gas_plants フィーチャクラスにあります。
-
[pipelines] フィーチャ データセットをダブルクリックして、ジオメトリック ネットワーク フィーチャクラスを表示します。
- [pug_PUG_gas_plants] フィーチャクラスを選択し、[プレビュー] タブをクリックします。
- [プレビュー] タブの一番下にある [プレビュー] ドロップダウン リストから [テーブル] を選択して、データを表示します。
-
スクロールバーを使用して、[NAME] フィールドと [PLANT_NMBER] フィールドの両方が表示されるようにスクロールします。
注意:
両方のフィールドを同時に表示するには、列のサイズを調整しなければならない場合があります。
PLANT_NUMBER データと NAME データの両方があるのは 3 つのガス プラントだけです。ここでは、ArcMap のエンド ユーザが、名前に基づいて、これらのプラントのいずれかのダイアグラムを生成できるようにします(エンド ユーザはプラント番号を知らなくてもかまいません)。ただし、ISP_ テーブルのレコードに対してクエリを実行するには、PLANT_NUMBER が必要です。そのため、これらはどちらもこのフィーチャクラスの重要な詳細情報です。
-
カタログ ツリーから [ISP_EQUIPMENTS] テーブルを選択します。
[プレビュー] タブにテーブルとして表示されます。
-
[NUMBER_] 列と [PLANT_NUMBER] 列の両方が表示されるように、[プレビュー] タブをスクロールします。
[NUMBER_] 列には、各レコードの一意の番号が表示されます。[PLANT_NUMBER] 列には、各レコードが存在するガス プラントが表示されます。構成時の基本的な考え方としては、Aracaui プラント(プラント番号 = 101)のダイアグラムをユーザに表示する場合、PLANT_NUMBER 101 の ISP_EQUIPMENTS レコードすべてを取得するクエリを実行する必要があります。
-
カタログ ツリーで [ISP_VALVES] を選択します。
このテーブルの構造は基本的に同じで、[NUMBER_] 列と [PLANT_NUMBER] 列があります。
-
次に、カタログ ツリーで [ISP_PIPES] テーブルをクリックします。
このテーブルは、このカスタム クエリ アプリケーションにとって重要です。このテーブルから、ISP_EQUIPMENTS レコードと ISP_VALVES レコードとの間の接続性がわかります。
-
[FROM_NODE_NUM] 列と [TO_NODE_NUM] 列が表示されるように、[プレビュー] タブをスクロールします。
このテーブルの各行(プラント内の個々のパイプ)について、それらの列の値と ISP_EQUIPMENTS テーブルまたは ISP_VALVES テーブルの NUMBER_ 列の値との照合に基づいて、接続先および接続元を確認することができます。
外部データベースに接続する
-
C:\ArcGIS\ArcTutor\Schematics\TutorialSchematicDB ジオデータベースに保存されている SchematicBuilderSamples スケマティック データセットを編集します。そのためには、ArcCatalog を使用してこのデータベースを参照し、データセットを右クリックして、[編集] メニュー オプション を選択します。
注意:
この演習のスクリーン ショットには、これまでの演習で作成した構成パラメータが表示されています。ただし、この演習を行う前にそれらの演習を完了している必要はありません。これまでの演習を完了していなくても、この演習で説明する手順を実行できます。
-
先に進む前に、Brazil.gdb データベースで確認したデータを指すデータ ソースを新しく作成する必要があります。残りの構成では、このデータ ソースを使用します。
-
スケマティック データセット エディタのツリーで [データ ソース] フォルダを右クリックし、[新規データ ソース] をクリックします。
[プロパティ] タブに新しいデータ ソースの情報が表示されます。デフォルト名をそのまま使用します。Brazil.gdb はファイル ジオデータベースなので、[タイプ] フィールドの値も正しく設定されています。
-
[GDB ファイル] テキスト ボックスの端にある [Esri ファイル ジオデータベースを参照] ボタンをクリックします。
[Esri ファイル GDB 接続] ダイアログ ボックスが開きます。
- C:\ArcGIS\ArcTutor\Schematics\Schematics_Configuration\Mixed_Data にある [Brazil.gdb] データベースを参照し、選択します。
- [選択] ボタンをクリックして、ダイアログ ボックスを閉じます。
- [プロパティ] タブで [OK] をクリックします。
これで、他のデータベースへの接続が確立されました。
-
スケマティック データセット エディタのツリーで [データ ソース] フォルダを右クリックし、[新規データ ソース] をクリックします。
スタンダード ビルダに基づくスケマティック ダイアグラム テンプレートを作成する
第 2 段階では、表形式のデータからダイアグラムを生成するときに使用するスケマティック ダイアグラム テンプレートを作成します。
-
データセット エディタのツリーで [SchematicBuilderSamples] エントリを右クリックし、[新規スケマティック ダイアグラム テンプレート] メニュー項目をクリックします。
エディタ ウィンドウの右側に、新しいスケマティック ダイアグラム テンプレートの [プロパティ] タブが自動的に表示されます。
- [名前] ボックスに、「DiagramsFromCustomQueries」と入力します。
- [スケマティック ビルダ] セクションで [スタンダード ビルダ] を選択します。
-
[OK] をクリックします。
データセット エディタのツリーに、DiagramsFromCustomQueries ダイアグラム テンプレートのエントリが表示されます。エディタ ウィンドウの右側に、3 つのタブ([関連付け]、[レイアウト]、および [ルール])が新たに表示されます。
- スケマティック データセット エディタのツリーで [DiagramsFromCustomQueries] エントリをクリックして、構成作業を開始します。
-
[プロパティ] タブの [クエリ] エリアにある [クエリ/識別子エディタ] ボタン をクリックします。
[クエリ/識別子エディタ] ダイアログ ボックスが開きます。
注意:独自のプロジェクトで、フィルタリングする必要がないデータを使用している場合、ダイアグラム テンプレートについてはこれ以上構成を行う必要はないので、スケマティック フィーチャクラスに関する作業を開始します。ここではフィルタリングが必要なので、ダイアグラム テンプレート レベルでフィルタを設定する必要があります。
-
[データ ソース] ドロップダウン リストを使用して、前述の「外部データベースに接続する」で作成した [NewDataSource] エントリを選択します。
[テーブル] リストに、そのデータ ソース内で見つかったすべてのテーブルが表示されます。ここでは、ガス プラント名とその番号のリストを取得します。
-
[テーブル] リストをスクロールして、[pug_PUG_gas_plants] のエントリを探します。そのエントリをダブルクリックします。
[クエリ] セクションにクエリが追加されます。そのテーブルのすべての列が返ります。ここでは、ArcMap のエンド ユーザに名前のみのリストが表示されるようにします。そのため、[識別子] セクションで名前フィールドを指定します。
-
フォームの一番下にある [フィールド] リストで [NAME] エントリをダブルクリックして、[識別子] リストに追加します。
- [OK] をクリックして、フォームを閉じます。
-
プラント番号を取得するための属性を追加します(これは、スケマティック フィーチャクラスに対するクエリを作成する際に、データをフィルタリングするために使用します)。データセット エディタのツリーで [DiagramsFromCustomQueries] エントリを右クリックし、ポップアップ メニューから [新規属性] を選択します。
エディタの右側に [新規属性] の [プロパティ] タブが開きます。Schematics には、さまざまなタイプの属性が用意されています。ここでは、すでに作成したクエリからフィールドを取得します。[タイプ] がデフォルトで [フィールド] に設定されているので、そのままにします。
- [名前] フィールドに、「PlantNum」と入力します。
- [フィールド] リストをスクロールして、[PLANT_NUMBER] を表示します。そのエントリをダブルクリックして、[識別子] リストに追加します。
-
[OK] をクリックして、この属性の定義を終了します。
- [スケマティック データセット エディタ] ツールバーの [保存] をクリックします。
スケマティック フィーチャクラスを作成する
-
データセット エディタのツリーで [DiagramsFromCustomQueries] ダイアグラム テンプレート エントリを右クリックし、[新規スケマティック フィーチャクラス] メニュー項目をクリックします。
エディタ ウィンドウの右側に、新しいスケマティック フィーチャクラスの [プロパティ] タブが自動的に表示されます。
- [名前] フィールドに、「ISP_Equipments」と入力します。
-
[OK] をクリックします。
-
データセット エディタのツリーで [DiagramsFromCustomQueries] ダイアグラム テンプレート エントリを右クリックし、[新規スケマティック フィーチャクラス] メニュー項目をクリックします。
エディタ ウィンドウの右側に、新しいスケマティック フィーチャクラスの [プロパティ] タブが自動的に表示されます。
- [名前] フィールドに、「ISP_Valves」と入力します。
-
[OK] をクリックします。
-
データセット エディタのツリーで [DiagramsFromCustomQueries] ダイアグラム テンプレート エントリを右クリックし、[新規スケマティック フィーチャクラス] メニュー項目をクリックします。
エディタ ウィンドウの右側に、新しいスケマティック フィーチャクラスの [プロパティ] タブが自動的に表示されます。
- [名前] フィールドに、「ISP_Pipes」と入力します。
-
[タイプ] ドロップダウン リストで [リンク] を選択します。
パイプ レコードはバルブと設備との間のリンクです。
-
[OK] をクリックします。
- [スケマティック データセット エディタ] ツールバーの [保存] をクリックします。
ISP_Equipments スケマティック フィーチャクラスを構成する
-
マウスを使用して、スケマティック データセット エディタのツリーで [ISP_Equipments] エントリをクリックします。
このスケマティック フィーチャクラスの [プロパティ] タブが開きます。
-
[クエリ] セクションの [評価モード] ドロップダウン リストから [生成/更新時のクエリ] を選択します。
[クエリ/識別子エディタ] ボタン が有効になります。
-
[クエリ/識別子エディタ] ボタン をクリックします。
[クエリ/識別子エディタ] ダイアログ ボックスが開きます。
-
[データ ソース] ドロップダウン リストから [NewDataSource] エントリを選択します。
-
[テーブル] リストで [ISP_EQUIPMENTS] エントリをダブルクリックします。
[クエリ] セクションにクエリが自動的に追加されます。
-
ただし、ここでは、ダイアグラムの生成時にユーザが選択するガス プラントの番号に基づいてレコードが適切にフィルタリングされるように、クエリを変更する必要があります。自動的に追加されたクエリの最後に「where plant_number = ?」というテキストを追加して、クエリを変更します。
このテキストを入力すると、新しい [パラメータ] セクションが自動的に開きます。[パラメータ] セクションでは、「?」の代わりにクエリに渡す属性を指定することができます。構成に含まれている属性は 1 つだけなので、その属性がすでに選択されています。
- ただし、1 か所を変更する必要があります。デフォルトでは、[テキスト] チェックボックスがオンになっています。しかし、このデータは数値なので、このチェックボックスを変更しなければなりません。[テキスト] チェックボックスをクリックして、オフにします。
-
必要に応じて、この時点でクエリをテストすることができます。[テスト値] フィールドに有効な PlantNum(たとえば、Aracaiu ガス プラントの場合は 101)を入力し、[結果の表示] ボタンをクリックします。
クエリが正しく評価されると、その値を持つレコードのみが表示されます。
-
[フィールド] リストで [NUMBER_] エントリをダブルクリックして、[識別子] リストに追加します。
ダイアグラムのすべてのスケマティック フィーチャは、一意に特定されなければなりません。この例では、NUMBER_ フィールドが、データを取得するために使用するすべてのテーブルで一意です。独自の例では、一意の値があることを確認する必要があります。場合によっては、値が必ず一意になるように、特別な作業を行わなければならないことがあります。
- [OK] をクリックして、この定義を終了します。
ISP_Valves スケマティック フィーチャクラスを構成する
-
マウスを使用して、データセット エディタのツリーで [ISP_Valves] エントリをクリックします。
このスケマティック フィーチャクラスの [プロパティ] タブが開きます。
- [クエリ] セクションの [評価モード] ドロップダウン リストから [生成/更新時のクエリ] を選択します。
-
[プロパティ] タブで [クエリ/識別子エディタ] ボタン をクリックします。
[クエリ/識別子エディタ] ダイアログ ボックスが開きます。
- [データ ソース] ドロップダウン リストから [NewDataSource] エントリを選択します。
-
[テーブル] リストで [ISP_VALVES] エントリをダブルクリックします。
[クエリ] セクションにクエリが自動的に追加されます。
-
ダイアグラムの生成時にユーザが選択するガス プラントの番号に基づいてレコードが適切にフィルタリングされるように、クエリを変更する必要があります。自動的に追加されたクエリの最後に「where plant_number = ?」というテキストを追加して、クエリを変更します。
このテキストを入力すると、新しい [パラメータ] セクションが自動的に開きます。[パラメータ] セクションでは、「?」の代わりにクエリに渡す属性を指定することができます。構成に含まれている属性は 1 つだけなので、その属性がすでに選択されています。
- ただし、1 か所を変更する必要があります。デフォルトでは、[テキスト] チェックボックスがオンになっています。しかし、このデータは数値なので、このチェックボックスを変更しなければなりません。[テキスト] チェックボックスをクリックして、オフにします。
-
必要に応じて、この時点でクエリをテストすることができます。[テスト値] フィールドに有効な PlantNum(たとえば、Aracaiu ガス プラントの場合は 101)を入力し、[結果の表示] ボタンをクリックします。
クエリが正しく評価されると、その値を持つレコードのみが表示されます。
-
[フィールド] リストで [NUMBER_] エントリをダブルクリックして、[識別子] リストに追加します。
ダイアグラムのすべてのスケマティック フィーチャは、一意に特定されなければなりません。この例では、NUMBER_ フィールドが、データを取得するために使用するすべてのテーブルで一意です。独自の例では、一意の値があることを確認する必要があります。場合によっては、値が必ず一意になるように、特別な作業を行わなければならないことがあります。
-
[OK] をクリックして、この定義を終了します。
[クエリ/識別子エディタ] ダイアログ ボックスが閉じ、ISP_Valves スケマティック フィーチャクラスの [プロパティ] タブは次のようになります。
ISP_Pipes スケマティック フィーチャクラスを構成する
フィーチャクラスの構成の最後のセクションでは、フィーチャクラスの名前と、クエリを実行するテーブルの名前を除いて、これまでとほとんど同じ手順を実行します。ここでは、クエリの構成は同じですが、さらにいくつかの作業を行って、ノード間の接続に使用するフィールドを指定する属性を定義する必要があります。
-
マウスを使用して、データセット エディタのツリーで [ISP_Pipes] エントリをクリックします。
このスケマティック フィーチャクラスの [プロパティ] タブが開きます。
- [クエリ] セクションの [評価モード] ドロップダウン リストから [生成/更新時のクエリ] を選択します。
-
[プロパティ] タブで [クエリ/識別子エディタ] ボタン をクリックします。
[クエリ/識別子エディタ] ダイアログ ボックスが開きます。
- [データ ソース] ドロップダウン リストから [NewDataSource] エントリを選択します。
-
[テーブル] リストで [ISP_PIPES] エントリをダブルクリックします。
[クエリ] セクションにクエリが自動的に追加されます。
-
ダイアグラムの生成時にユーザが選択するガス プラントの番号に基づいてレコードが適切にフィルタリングされるように、クエリを変更する必要があります。自動的に追加されたクエリの最後に「where plant_number = ?」というテキストを追加して、クエリを変更します。
このテキストを入力すると、新しい [パラメータ] セクションが自動的に開きます。[パラメータ] セクションでは、「?」の代わりにクエリに渡す属性を指定することができます。構成に含まれている属性は 1 つだけなので、その属性がすでに選択されています。
- ただし、1 か所を変更する必要があります。デフォルトでは、[テキスト] チェックボックスがオンになっています。しかし、このデータは数値なので、このチェックボックスを変更しなければなりません。[テキスト] チェックボックスをクリックして、オフにします。
-
必要に応じて、この時点でクエリをテストすることができます。[テスト値] フィールドに有効な PlantNum(たとえば、Aracaiu ガス プラントの場合は 101)を入力し、[結果の表示] ボタンをクリックします。
クエリが正しく評価されると、その値を持つレコードのみが表示されます。
-
[フィールド] リストで [OBJECTID_] エントリをダブルクリックして、[識別子] リストに追加します。
ダイアグラムのすべてのスケマティック フィーチャは、一意に特定されなければなりません。この例では、OBJECTID フィールドが、データを取得するために使用するすべてのテーブルで一意です。独自の例では、一意の値があることを確認する必要があります。場合によっては、値が必ず一意になるように、特別な作業を行わなければならないことがあります。
-
[OK] をクリックして、この部分の ISP_Pipes の定義を終了します。
[クエリ/識別子エディタ] ダイアログ ボックスが閉じ、ISP_Pipes スケマティック フィーチャクラスの [プロパティ] タブは次のようになります。
-
スケマティック データセット エディタのツリーで [ISP_Pipes] エントリを右クリックし、[新規属性] を選択します。
新しい属性の [プロパティ] タブが開きます。
-
[名前] ドロップダウン リストを使用して、あらかじめ定義されている属性のリストから [OriginNode] を選択します。
この属性リストは、システムであらかじめ定義されています。これらの属性はすべて、システムの特定の機能に影響します。OriginNode は、始点(原点)として接続するノードをリンクに指示する属性です。
- [フィールド] リストで [FROM_NODE_NUM] エントリをダブルクリックして、[識別子] リストに追加します。ISP_PIPES テーブルのこのフィールドには、各パイプの始点接続情報が保持されています。
-
[OK] をクリックして、この属性の構成を終了します。
-
データセット エディタのツリーで [ISP_Pipes] エントリを右クリックし、[新規属性] を選択します。
新しい属性の [プロパティ] タブが開きます。
-
[名前] ドロップダウン リストを使用して、あらかじめ定義されている属性のリストから [ExtremityNode] を選択します。
ExtremityNode は、終点(端点)として接続するノードをリンクに指示する属性です。
- [フィールド] リストで [TO_NODE_NUM] エントリをダブルクリックして、[識別子] リストに追加します。ISP_PIPES テーブルのこのフィールドには、各パイプの終点接続情報が保持されています。
-
[OK] をクリックして、この属性の構成を終了します。
- エディタ ツールバーの [保存] ボタンをクリックします。
- スケマティック データセット エディタを閉じます。
カスタム クエリ スケマティック ダイアグラムを生成する
ここでは、新しく作成した DiagramsFromCustomQueries ダイアグラム テンプレートに基づく最初のスケマティック ダイアグラムを生成します。
- ArcMap を空のマップ ドキュメントで開始します。
-
[スケマティック] ツールバーの [スケマティック ダイアグラムの新規作成] ボタン をクリックします。
[スケマティック ダイアグラムの新規作成] ダイアログ ボックスが開きます。
- [スケマティック データセットまたはフォルダ] フィールドの右側にある参照ボタンをクリックして、[スケマティック データセット、またはスケマティック フォルダを選択] ダイアログ ボックスを開きます。
- 演習 1 で C:\ArcGIS\ArcTutor\Schematics に作成した [TutorialSchematicDB] ジオデータベースを参照し、選択します。
-
このジオデータベースをダブルクリックし、[SchematicBuilderSamples] スケマティック データセットを選択します。
- [追加] ボタンをクリックします。
-
[スケマティック ダイアグラムのテンプレート] ドロップダウン リストで [DiagramsFromCustomQueries] ダイアグラム テンプレートが選択されていることを確認します。
[スケマティック ダイアグラム名] セクションでは、[ARACAIU] がすでに選択されています。このリスト内でアルファベット順で最初のダイアグラムが ARACAIU であるためです。
-
[スケマティック ダイアグラム名] ドロップダウンの矢印をクリックして、pug_PUG_gas_plants テーブルから取得されたすべてのガス プラント名が含まれていることを確認します。
ここでは、番号ではなく、わかりやすい名前がユーザに表示されるようにします。そのために、PlantNum 属性を構成に追加しました。
-
[ARACAIU] が選択されたままであることを確認します。
-
[OK] をクリックして、ダイアグラムを生成します。
これらの表形式のレコードには座標がなかったため、すべてのノードが自動的に 0.0 座標に配置されています。データに x および y 情報が含まれていれば、ダイアグラムの最初の位置が 0,0 に配置される代わりに、データの x および y を使用するように、ノード スケマティック フィーチャクラスごとに属性をあらかじめ定義しておくことができます。どちらの場合も、ユーザは編集セッションを開始し、アルゴリズムなどをダイアグラムに適用できます。