チュートリアル: KML サービスの公開
KML ケーパビリティが有効な状態の ArcGIS Server マップ サービスを公開することによって、Web 上で KML を動的に提供することができます。これによってクライアントはマップ サービスに接続して、特定の地理領域の KML データをリクエストすることができます。KML は、RESTの マップの生成、KML の生成、およびクエリの操作のいずれか、ArcGIS Services Directory 内の表示: Google Earth リンク、またはサービスへの正しい URL が埋め込まれた KML ネットワーク リンク ドキュメントを通じて提供されます。
このチュートリアルでは、3D 立ち上げが適用されたフィーチャを作成する手順を示します。まず初めに ArcGlobe を使用して、3D 立ち上げプロパティを設定してレイヤファイルを作成します。次に、ArcMap にレイヤを追加して、レイヤ シンボルを設定し、KML 内のフィーチャに関連する説明テキストを設定します。次に、KML ケーパビリティが有効化されたサービスとしてマップを公開します。最後に、他のユーザが KML に簡単にアクセスできるよう、サーバ上で KML ネットワーク リンクを作成します。
ArcGlobe および ArcMap でのデータの準備
Z 値や属性に基づく立ち上げなどの 3D 属性を持つフィーチャクラスを公開するには、ArcGlobe でフィーチャクラス レイヤのプロパティを編集し、それらをレイヤ ファイルとして保存した後、そのレイヤ ファイルを ArcMap ドキュメントに追加する必要があります。以下に、ArcGlobe での立ち上げの適用方法、および後で ArcMap で使用することができる対応するレイヤファイルの保存方法の手順を示します。
- ArcGlobe を起動し、フィーチャクラスを追加します。
- コンテンツ ウィンドウで、レイヤを右クリックして [プロパティ] をクリックします。
- [グローブの立ち上げ] タブをクリックします。
-
[レイヤのフィーチャを立ち上げます] チェックボックス、および [立ち上げポリゴンの底面は描画しない] チェックボックスをオンにします。また、立ち上げの適用方法で [各フィーチャの標高値から立ち上げ] を選択します。
-
立ち上げの値または条件式を設定します。これによって、フィーチャがマップから飛び出す度合いを決定します。式を構築する上での詳細が必要な場合には、(小型計算機のようなボタンを使用して)[式の設定] ダイアログ ボックスを開きます。この場合は、各ポリゴン フィーチャを、POP04_SQMI 属性の値を 250(外観だけのために選択される任意の値)で掛けて、この値をフィーチャの標高値に足した値で立ち上げます。必要に応じた表示設定を得るために、条件式で試してみる必要があるかもしれません。
- レイヤ ファイルの立ち上げを設定して、それが三次元に見えたら、レイヤを右クリックして [レイヤ ファイルとして保存] を選択します。ArcGIS Server SOC アカウントにデータの読み取り権限があるディスク内の場所にそれを保存します。
- これでデータの 3D プロパティを定義できました。次に 2D レイヤのプロパティを設定します。ArcMap を開いて、[データの追加] をクリックします。
- ArcGlobe で保存した新しいレイヤ ファイル(*.lyr)を参照して、[追加] をクリックします。レイヤは ArcMap 内に 3D で表示されませんが、そのマップを Google Earth または ArcGIS Explorer で表示すると 3D で表示されます。
- レイヤを右クリックし、ショートカット メニューから [プロパティ] を選択して、レイヤのプロパティを設定します。
-
[一般] タブをクリックし、レイヤの縮尺範囲を編集して、説明を入力します。この説明は、KML レイヤの説明として KML クライアントで表示され、HTML の記法を用いることができます。
-
[表示] タブをクリックし、必要であれば、レイヤの透過設定を変更します。透過度が小さく設定されると、ユーザは下のマップを透かして見ることができます。
-
[シンボル] タブをクリックし、必要であれば、シンボルの描画プロパティを変更します。微妙なグラデーションの塗りつぶしによって、3D の隣接フィーチャを区別することができます。
-
[フィールド] タブをクリックし、マップ サービスを通じてアクセスすることのできるフィールドを設定します。フィーチャクラスのすべてのフィールドに、KMLSnippet エイリアスを使用することもできます。KMLSnippet エイリアスを設定したフィールドの値は、KML クライアントのコンテンツ ウィンドウで各フィーチャのアイコンの下に表示されます。KMLSnippet エイリアス フィールドの値には、HTML の記法を用いることができます。
- 必要に応じて、データに適用したいフィルタ設定またはテーブル結合およびリレートを設定します。この設定を行うには、[フィルタ設定] および [属性の結合とリレート] タブをそれぞれ使用します。
- 必要に応じて、[ラベル] タブをクリックして、適用したいラベリングを指定します。KML は、ポイント フィーチャに対して、色、サイズ、ラベル条件式をサポートします。KML は、ラインまたはポリゴンに対するラベリングをサポートしていません。
-
[HTML ポップアップ] タブをクリックして、[ポップアップ ツールを使用してレイヤのコンテンツを表示] をチェックします。次に、形式のオプションの 1 つを選択します。これによって各フィーチャに対する KML の説明、つまりフィーチャをクリックするとバルーン吹出しに表示されるコンテンツが決定します。説明文を装飾的に見せるために、HTML、JavaScript、スタイルシートを使用するか、または単に試してみるだけならば、HTML 形式で表示するために [表示フィールドをテーブルとして表示] デフォルト オプションを選択することができます。
- [OK] をクリックして、レイヤ プロパティ ダイアログ ボックスを閉じ、[ファイル] → [保存] の順にクリックしてマップ ドキュメント(*.mxd)を保存します。
KML サービスの公開
マップ ドキュメントを完成したら、ArcGIS Server マップ サービスとして公開する必要があります。マップ サービスは、その KML ケーパビリティが有効である限り、KML を生成することができます。デフォルトでは、KML ケーパビリティは有効になっています。
以下に、ArcMap の [カタログ] ウィンドウ内でサービスを公開する手順を示します。ArcGIS Server Manager を使ってサービスを作成したい場合は、「Manager での GIS リソースのサーバへの公開」で説明する手順に従ってください。
- ArcMap 内で、[ウィンドウ] → [カタログ] の順にクリックします。
- カタログ ツリーで、公開したいマップ ドキュメント(*.mxd)を選択します。選択すれば、マップ サービス定義(*.msd files)も KML として公開できることに注意してください。
- マップ ドキュメントを右クリックし、[ArcGIS Server で公開] を選択します。
- サービスに名前を付け、サービスを公開したいフォルダを選択します。[次へ] をクリックします。
- [ArcGIS Server で公開] ウィザードの次のページでは、KML ケーパビリティが有効にされています。チェックされたままの状態で、[次へ] をクリックします。
- ウィザードの 3 ページ目で作成するものの概要を確認し、[完了] をクリックします。
- サービスが公開され、カタログ ツリーの [GIS Servers] ノードを展開し、サービスを ArcMap の [コンテンツ ウィンドウ] にドラッグすることによって、サービスをプレビューすることができます。
KML サービスのプロパティの設定
KML サービスを公開した後、サービスのプロパティをデフォルトから変更することができます。そのための手順は次のとおりです。
- カタログ ツリーで、サービスを右クリックし、[停止] をクリックします。
- サービスを右クリックし、[サービス プロパティ] をクリックします。
- [ケーパビリティ] タブをクリックし、KML をクリックします(チェックボックスをオフにしないように注意してください)。
-
下のパネルでプロパティを編集します。
- KML サービスから返される KML の制限法を選択します。KML 互換性モードオプションによって、サービスが主に Google マップまたは Google モバイルで使用される場合には、機能の限定されたサブセットのみを含むことを選択することができます。これによってパフォーマンスが向上します。
- KML サービスから返されるフィーチャの制限、出力 DPI、および出力イメージのサイズを制限する方法を選択します。
- [NetworkLinkControl タグの使用] オプションを使用して、サービスがクライアントからリクエストされる頻度を制限します。
- [OK] をクリックして、[サービス プロパティ] ダイアログ ボックスを閉じます。
- カタログ ツリーで、サービスを右クリックし、[開始] をクリックします。
ArcGIS Server Services Directory で提供される REST KML の操作
各 ArcGIS Server では、デフォルトで Services Directory が提供されており、これにより REST を使用してサービスの検索および操作をすることができます。KML サービスの操作を習得するために Services Directory を使用することができます。
- Web ブラウザを使用して [ArcGIS Services Directory] に移動します。URL は、http://<ArcGIS Server の名前>/<ArcGIS Server のインスタンス名>/rest/services です。例:http://MyServer/ArcGIS/rest/services.
- 地理的範囲を持つすべてのサービスのフットプリントを表示するリンク、「フットプリント表示: Google Earth」に注目してください。
- Services Directory 内で、新たに公開されたサービスへのリンクをクリックしてください。
- 表示: Google Earthリンクをクリックして、サービスのグラウンド オーバーレイを示す KMZ ドキュメントを開きます。または、サービスがキャッシュされている場合には、KML Region対応のスーパー オーバーレイが表示されます。このリンクではベクタを取得できないことに注意してください。
- Services Directory に戻って、サービス内の任意のレイヤをクリックします。
- ページの下部にある [クエリ] リンクをクリックします。これによってフォームが開き、そこでレイヤを検索する多くのパラメータを指定することができます。最後のオプションは、レスポンスを受けるためのフォーマットです。ここで KML を選択すると、クエリに対する結果を含む KMZ ドキュメントが表示されます。
- Services Directory 内のサービスのページに戻ります。
- ページの下部にある [KML の生成] をクリックします。このリンクでは Web フォームが表示され、そこで KML へ返すレイヤを選択することができます。オプションである [フィーチャ レイヤはベクタとし、ラスタ レイヤはイメージとする] を選択することによって、サービスからベクタを動的に返すことを選択することもできます。
ネットワーク リンクの公開
KML ネットワーク リンクを公開することにより、サーバ上で KML を利用しやすい形式で提供することができます。ネットワーク リンクは Manager で公開します。そうすると、ArcGIS Explorer または Google Earth でネットワーク リンクを追加できます。
- ArcGIS Server Manager にログインします。
- [サービス] タブをクリックし、[KML ネットワーク リンク] タブをクリックします。
- [ネットワーク リンクの作成] をクリックします。
- KML の名前と、必要に応じて短い説明と長い説明を入力します。[次へ] をクリックします。
- [マップ サービス] ドロップダウン リストで、公開したばかりのマップ サービスを選択します。また、KML ネットワーク リンクを使用して公開したいレイヤを選択します。
- [フィーチャ レイヤはベクタとし、ラスタ レイヤはイメージとする] オプションを選択します。立ち上げが適用されたフィーチャはベクタなので、このオプションを選択する必要があります。オプションを選択しなければ、「平らな」ラスタ イメージが表示されます。[次へ] をクリックします。
- ウィザードの最後のページでは、必要に応じて、[更新]、[表示]、[ホスト名] パラメータを調整することができます。さらに、最初の 2 つの説明のうちどちらをコンテンツ ウィンドウ内の各フィーチャに追加するか設定する、デフォルトの KML スニペットの振舞いの制御を選択することができます。このチュートリアルでは、デフォルト値のままでかまいません。
- [完了] をクリックして、KML ネットワーク リンクを作成します。Manager で [KML ネットワーク リンク] ページに戻ると、新しいネットワーク リンクの URL が表示されます(たとえば:http://myServer/ArcGIS/kml/networklink1.kmz など)。この URL をクリックまたはコピー&ペーストして、Google Earth または ArcGIS Explorer に KML ネットワーク リンクを追加します。