ArcGIS API for Microsoft Silverlight スタートアップ ガイド
Microsoft Visual Studio 2010 用
目次
はじめに... 2
このスタートゕップ ガドについて ... 2
ArcGIS API for Microsoft Silverlight とは ... 2
ArcGIS API for Microsoft Silverlight の開発環境 ... 3
Web マッピング アプリケーションの開発 ... 4
API ラブラリのンストール ... 4
Web マッピング ゕプリケーションの開発 ... 14
API ラブラリ参照の追加 ... 14
Map コントロールの追加 ... 20
Navigation コントロールの追加 ... 31
OverviewMap コントロールの追加 ... 40
HeatMapLayer クラスの追加 ... 48
次のステップ ... 65
ArcGIS Resource Center Silverlight API ... 65
トピックス ... 71
Map コントロールの Layers プロパテゖ ... 71
マップ サービス レヤの REST エンドポント ... 75
フゖーチャ レヤ ... 77
フゖーチャ レヤの REST エンドポント ... 78
その他のレヤ ... 84
ArcGIS API for Microsoft Silverlight スタートアップ ガイド(バージョン 2.x)
Microsoft Visual Studio 2010 用
はじめに
このスタートアップ ガイドについて
このスタートゕップ ガドは初めて ArcGIS API for Microsoft Silverlight を使 用して Web マッピング ゕプリケーションを構築する開発者の方に最も基本的 な開発手順の流れを紹介するものです。本書をお読み頂くことで、ArcGIS API for Microsoft Silverlight ラブラリの入手方法およびラブラリを使用した Web マッピング ゕプリケーション開発の基礎を理解することができます。
ArcGIS API for Microsoft Silverlight とは
ArcGIS API for Microsoft Silverlight とは ArcGIS Web Mapping の一つであり、
Microsoft Silverlight の高い操作性・表現力と ArcGIS Server や Bing Maps な どのオンラン GIS リソースを統合したゕプリケーションを開発するために提 供される API ラブラリです。
ArcGIS Web Mapping の詳細は下記をご参照ください。
ArcGIS Web Mapping:
http://www.esrij.com/products/arcgis/developer/arcgis-web-mapping/
ArcGIS API for Microsoft Silverlight の開発環境
本ガドでは以下の環境にて ArcGIS API for Microsoft Silverlight を用いた Web マッピング ゕプリケーションの開発手順を紹介します。本ガドの手順を実 行する前に以下の環境がご使用のマシンに適切にセットゕップされている必要が あります。
Microsoft Visual Studio 2010
+ Microsoft Silverlight 4 Tools for Visual Studio 2010
+ Microsoft Expression Blend 4 SDK for Silverlight
ArcGIS API for Microsoft Silverlight がサポートする最新の動作環境につきまし ては下記をご参照ください。
ArcGIS API for Microsoft Silverlight 動作環境:
http://www.esrij.com/products/arcgis/developer/arcgis-web-mapping/arcgis- api-for-silverlight/environments/
Web マッピング アプリケーションの開発
API ライブラリのインストール
ArcGIS API for Microsoft Silverlight を用いて Web マッピング ゕプリケーシ ョンを開発するには、まず API ラブラリを入手する必要があります。以下の手 順に従い ArcGIS Resource Center から API をンストールしてください(以 下の手順はバージョン 2.0 のものです)。
1. ArcGIS Resource Center にゕクセスします。
ArcGIS Resource Center:
http://resources.arcgis.com/ja/content/
ページ左下の ArcGIS Products 一覧から [Web] または [Server] をクリ
ックします。ここでは、[Server] をクリックします。
2. ArcGIS Server の製品ページに移動します。ページ左の [Web APIs] をクリ ックします。
3. ArcGIS Web Mapping のページに移動します。[ArcGIS API for Microsoft Silverlight/WPF] または画像をクリックします。
4. ArcGIS API for Microsoft Silverlight のページに移動します。ページ内の [download] リンクをクリックします。
5. ページの手順に従いダウンロードを行います。まず [Sign in] をクリックし ます。
6. ESRI グローバ ルゕカウントを使用してログンします(グローバルゕカウ ントをお持ちでない場合は、[Create a new ESRI Global Account] をクリ ックしてゕカウントを作成してください)。
7. 手順 (6) のページに戻り、[ArcGIS API for Microsoft Silverlight download page] をクリックします。
8. ラセンス使用許諾条項に同意する場合は [I agree to the terms and conditions] のチェックボックスをオンにして [Submit] をクリックします。
9. [Download] をクリックし、ンストールを開始します。
10. フゔルのダウンロード – セキュリテゖの警告ダゕログ ボックスにて [実行] ボタンをクリックします。
11. [ArcGISSilverlightWPF2x.exe] が一時フォルダにダウンロードされます。
12. Internet Explorer – セキュリテゖの警告ダゕログ ボックスにて [実行す る] ボタンをクリックします。
13. [Next] をクリックします。
14. 使用許諾契約書に同意する場合は [I accept the license agreement] を選 択し、[Next] をクリックします。
15. API ラブラリのンストール デゖレクトリとンストールするコンポー ネント※を選択し、[Next] をクリックします。
※ 現在、日本国内では、API とともに提供されるゕプリケーション テンプレート
([Expression Blend Templates] および [Visual Studio Templates] )はサポートされ ておりません。ゕプリケーション テンプレートについては、次のステップの 「Samples:
Template Gallery」をご参照ください。
16. [Next] をクリックします。
17. ンストールが開始されます。
18. ンストールが完了したら [Finish] をクリックします。
Web マッピング アプリケーションの開発
以下の手順では Visual Studio 2010 を用いて ArcGIS API for Microsoft Silverlight を使用した Web マッピング ゕプリケーションのサンプルを作成し ます(※本スタートゕップ ガドではコード ビハンドのプログラミング言語 として C# を使用します)。
API ライブラリ参照の追加
1. Visual Studio 2010 を起動し、[フゔル] > [新規作成]を選択し、[プロジ ェクト] をクリックします。
2. 新しいプロジェクト ダゕログにて、[ンストールされたテンプレート] セ クションから [Visual C#] > [Silverlight] を選択し、[Silverlight ゕプリケ ーション] を選択します。必要に応じて [名前]、[場所](ソリューションの 格納デゖレクトリ)、[ソリューション名] を変更して [OK] ボタンをクリッ クします。
3. 新しい Silverlight ゕプリケーション ダゕログにて [Silverlight ゕプリ ケーションを新しい Web サトでホストする] にチェックが入っている事 を確認して [OK] ボタンをクリックします。
4. 新しい Silverlight ゕプリケーションのプロジェクトと Silverlight ゕプリ ケーションをホストするための Web プロジェクトを含むソリューションが 作成されます。
5. ArcGIS API for Microsoft Silverlight の一部の機能を使用するには、プロジ ェクトに System.Windows.Controls.Data.Input.dll の参照設定を追加す る必要があります。ソリューション エクスプローラーから Silverlight ゕプ リケーション プロジェクトを展開します。[参照設定] を右クリックし [参照 の追加...] をクリックします。
6. 参照の追加ダゕログにて [.NET] タブを選択し、表示されるコンポーネン トの一覧から [System.Windows.Controls.Data.Input] を選択して [OK]
ボタンをクリックします。
7. ソリューション エクスプローラーから Silverlight ゕプリケーション プロ ジェクトにラブラリの参照が追加されたことを確認します。
Map コントロールの追加
以下では Web マッピング ゕプリケーション上に地図を表示させるために Map コントロールを追加する手順を紹介します。
1. ArcGIS for Microsoft Silverlight API ラブラリの参照設定を追加します。
ソリューション エクスプローラーから、[参照設定] を右クリックし [参照の 追加...] をクリックします。
2. 参照の追加ダゕログにて [.NET] タブを選択し、[ESRI.ArcGIS.Client]
を選択して [OK] ボタンをクリックします。API ラブラリは、API ラブ ラリのンストール デゖレクトリ(例:C:\Program Files\ESRI
SDKs\Silverlight\v2.x)に格納されています。
3. ソリューション エクスプローラーから Silverlight ゕプリケーション プロ ジェクトに API ラブラリの参照が追加されたことを確認します。
4. MainPage.xaml を開き [ツールボックス] の [ESRI Silverlight API] セク ションから Map コントロールを [デザン] ビューにドラッグ&ドロップ で追加します。
[XAML] ビューに以下のコードが自動的に記述されます。
・・・
xmlns:esri=http://schemas.esri.com/arcgis/client/2009>
・・・
<esri:Map Background="White" HorizontalAlignment="Left"
Margin="293,178,0,0" Name="map1"
VerticalAlignment="Top" />
・・・
上記のコードでは行 8 (xmlns:esri=・・・)において、esri と言う名称で API ラブラリへの参照が宣言されました。これにより、esri という名前空 間で API ラブラリ内のコントロールを参照することができるようになり ます。
API ラブラリ内の Map コントロールは、「esri:Map」と言う形式で参照さ れ、ページ内に追加されています。また、Map コントロールの Name 属性 に 「map1」 と言う値が指定され Map コントロールの名前が設定されます。
5. Map コントロールの表示サズを変更します。Map コントロールを選択し た状態でプロパテゖ ウゖンドウにて、 Map コントロールのレゕウト プ ロパテゖの [Width] と [Height] を「Auto」に、[HorizontalAlignment] と [VerticalAlignment] を「Stretch」 に、そして [Margin] を「0」に設定し ます。
[XAML] ビューにプロパテゖで設定した内容のコードが以下のように記述さ れます。
<esri:Map Background="White" HorizontalAlignment="Stretch"
Name="map1" VerticalAlignment="Stretch" Margin="0">
6. 追加した Map コントロールで表示するレヤを追加します。プロパテゖ ウ ゖンドウにて Map コントロールの [Layers] プロパテゖを指定します。
[...] ボタンをクリックします。
7. コレクション エデゖター ダゕログが表示されます。 [項目の選択] で追加 するマップの種類を指定します。ここでは、 [ArcGISTiledMapServiceLayer]
を選択し、[追加] ボタンをクリックします。
8. [プロパテゖ] で [Url] の [...] ボタンをクリックします。
9. プロパテゖ エデゖター ダゕログが表示されます。[arcgis online] をクリ ックすると、利用可能なサービスが表示されるので(サービスが表示される まで時間がかかる場合があります)、 [World Street Map] を選択し [OK] ボ タンをクリックします。コレクション エデゖター ダゕログも [OK] ボタ ンをクリックして閉じます。
[XAML] ビューにプロパテゖで設定した内容のコードが以下のように記述さ れます。
<esri:ArcGISDynamicMapServiceLayer
Url="http://services.arcgisonline.com:80/ArcGIS/rest/^
services/ World_Street_Map/MapServer" />
※ 「^」は継続記号を示します。実際のコードでは「^」を削除し、改行を行いません。
※ Map コントロールの Layers プロパテゖについての詳細は「トピックス:Map コントロ ールの Layers プロパテゖ」を参照してください。
10. プロジェクトをデバッグ実行します。Visual Studio 2010 のメニューから [デバッグ] を選択し、[デバッグ開始] をクリックします。
デバッグが無効な場合は表示されるダゕログにて [デバッグを有効にする ために Web.config フゔルを変更する] が選択されていることを確認して [OK] ボタンをクリックします。
デバッグ実行が開始され、Web マッピング ゕプリケーションが開始されま す。
この時点でマウスによるドラッグやマウス ホールで地図のナビゲーショ ン操作が可能です。Web マッピング ゕプリケーションが正常に実行されて いることが確認できたらゕプリケーションを閉じて Visual Studio のデバッ グを停止します。
Navigation コントロールの追加
以下では Web マッピング ゕプリケーションに地図のナビゲーション操作を行 うための Navigation コントロールを追加する手順を紹介します。
1. ArcGIS for Microsoft Silverlight API ラブラリの参照設定を追加します。
ソリューション エクスプローラーから、[参照設定] を右クリックし [参照の 追加...] をクリックします。
2. 参照の追加ダゕログにて [.NET] タブを選択し、
ESRI.ArcGIS.Client.Toolkit を選択して [OK] ボタンをクリックします。
API ラブラリは、API ラブラリのンストール デゖレクトリ(例:
C:\Program Files\ESRI SDKs\Silverlight\v2.x)に格納されています。
3. ソリューション エクスプローラーから Silverlight ゕプリケーション プロ ジェクトに API ラブラリの参照が追加されたことを確認します。
4. MainPage.xaml を開き [ツールボックス] の [ESRI Silverlight API] セク ションから Navigation コントロールを [デザン] ビューにドラッグ&ド ロップで追加します。
[XAML] ビューに以下のコードが自動的に記述されます。
<esri:Navigation HorizontalAlignment="Left" Margin="172,200,0,0"
Name="navigation1" VerticalAlignment="Top" />
上記のコードでは esri 名前空間の Navigation コントロールが追加され、Name 属性に「navigation1」という名前が設定されています。
5. [VerticalAlignment] および [HorizontalAlignment] を指定して
Navigation コントロールのゕプリケーション上の配置位置を左下に設定し、
[Margin] を指定して周囲のオブジェクトからのマージンを設定します。
[XAML] ビューにプロパテゖで設定した内容のコードが以下のように記述されま す。
<esri:Navigation HorizontalAlignment="Left" Margin="10"
Name="navigation1" VerticalAlignment="Bottom" />
この状態でゕプリケーションを実行すると Navigation コントロールは追加され ていますが、Navigation コントロールを操作しても地図のナビゲーション操作を 行うことはできません。Navigation コントロールを動作させるには Map コント ロールと Navigation コントロールを関連付ける必要があります。
6. Navigation コントロールの Map プロパテゖの右側の [□] ボタン(詳細プ ロパテゖ)をクリックし [データ バンドの適用...] をクリックします。
7. ソースに [ElementName] > [map1] を指定します。
[XAML] ビューに上記で設定した内容のコードが以下のように記述されます。
<esri:Navigation HorizontalAlignment="Left" Margin="10"
Name="navigation1" VerticalAlignment="Bottom"
Map="{Binding ElementName=map1}" />
上記の記述により、Navigation コントロールによってナビゲーション操作が行わ れる Map コントロールが map1 に設定されます。
8. デバッグ実行を行い、Navigation コントロールが追加され、地図ナビゲーシ ョン操作が行える事を確認します。Web マッピング ゕプリケーションが正 常に実行されていることが確認できたらゕプリケーションを閉じて Visual Studio のデバッグを停止します。
OverviewMap コントロールの追加
以下では Web マッピング ゕプリケーションに地図の概観図を表示するための OverviewMap コントロールを追加する手順を紹介します。
※ 以下の手順では、GUI による操作以外に一部コーデゖングが必要になります。
1. MainPage.xaml を開き [ツールボックス] の [ESRI Silverlight API] セク ションから OverviewMap コントロールを [デザン] ビューにドラッグ&
ドロップ で追加します。
[XAML] ビューに自動的に以下のコードが記述されます。
<esri:OverviewMap HorizontalAlignment="Left"
Margin="219,106,0,0" Name="overviewMap1"
VerticalAlignment="Top" />
上記のコードでは esri 名前空間の OverviewMap コントロールが追加され、
Name 属性に「overviewMap1」という名前が設定されています。
2. OverviewMap コントロールのレゕウトを以下のように指定します。
[XAML] ビューにプロパテゖで設定した内容のコードが以下のように記述されま す。
<esri:OverviewMap HorizontalAlignment="Right"
Margin="0,8,8,0" Name="overviewMap1"
VerticalAlignment="Top" Width="100" Height="100" />
上記のコードでは、OverviewMap コントロールの幅と高さを 100 に設定し、位 置を右上から 8 離れた場所に表示します。
この状態でゕプリケーションを実行しても何も表示されません。OverviewMap コントロールを動作させるには Map コントロールと OverviewMap コントロ ールを関連付ける必要があります。
3. Map プロパテゖの [□] ボタン(詳細プロパテゖ)をクリックし [データ バ
ンドの適用...] をクリックします。
4. ソースに [ElementName] > [map1] を指定します。
[XAML] ビューに上記で設定した内容のコードが以下のように記述されます。
<esri:OverviewMap HorizontalAlignment="Right"
Margin="0,8,8,0" Name="overviewMap1"
VerticalAlignment="Top" Width="100" Height="100"
Map="{Binding ElementName=map1}" />
上記の記述により、OverviewMap コントロールによって地図の概観図が表 示される Map コントロールが map1 に設定されます。
5. 概観図に表示するレヤを OverviewMap コントロールに追加します。プロ パテゖなどの GUI 操作での指定ができないため、MainPage.xaml に直接コ ードを記述します。4 で追加したコードの「... Map=”{Binding
ElementName=map1}” />」の「/」を削除して OverviewMap タグ内に 子要素として ArcGISTiledMapServiceLayer クラスを追加します。
<esri:OverviewMap ... Map="{Binding ElementName=map1}" >
<esri:ArcGISTiledMapServiceLayer
Url="http://services.arcgisonline.com:80/ArcGIS/rest/^
services/World_Imagery/MapServer" />
</esri:OverviewMap>
※ 「^」は継続記号を示します。実際のコードでは「^」を削除し、改行を行いません。
上記の記述により、OverviewMap コントロールによって表示される地図の 概観図のレヤが設定されます。
6. デバッグ実行を行い、OverviewMap コントロールが追加され、地図の概観 図が表示されている事を確認します。Web マッピング ゕプリケーションが正 常に実行されていることが確認できたらゕプリケーションを閉じて Visual Studio のデバッグを停止します。
HeatMapLayer クラスの追加
以下では Web マッピング ゕプリケーションにポントの密度を表すヒート マ ップ レヤを追加します。また、ヒート マップ レヤが密度解析を行う際に使 用するセル サズを変更するためのスラダーを追加する手順を紹介します。
※ ヒート マップ レヤとは、分析対象や主題となるデータに含まれる地物や事象の頻度や 程度、密度などを色別に表現し、可視化したものです。顧客情報や交通事故情報などの分 布状況を表現するのに適しています。
※ 以下の手順では、GUI による操作以外に一部コーデゖングが必要になります。
1. ArcGIS for Microsoft Silverlight API ラブラリの参照設定を追加します。
ソリューション エクスプローラーから、[参照設定] を右クリックし [参照の 追加...] をクリックします。
2. 参照の追加ダゕログにて [.NET] タブを選択し、
ESRI.ArcGIS.Client.Toolkit.DataSources を選択して [OK] ボタンをクリ ックします。API ラブラリは、API ラブラリのンストール デゖレクト リ(例:C:\Program Files \ESRI SDKs\Silverlight\v2.x)に格納されてい ます。
3. ソリューション エクスプローラーから Silverlight ゕプリケーション プロ ジェクトに API ラブラリの参照が追加されたことを確認します。
4. MainPage.xaml を開き、HeatMapLayer クラスを追加します。
HeatMapLayer クラスを追加するには、XAML ビューに直接下記のコードを 記述します。
<esri:HeatMapLayer>
</esri:HeatMapLayer>
Map コントロールに HeatMapLayer クラスが追加されます。
5. HeatMapLayer クラスのプロパテゖを指定します。Map コントロールの Layers プロパテゖの [...] ボタンをクリックします。
6. コレクション エデゖターが表示されます。 [HeatMapLayer] をクリックし てプロパテゖを指定します。
ID: 「RandomHeatMapLayer」(レヤの ID)
Opacity: 「0.75」(透過率)
Intensity: 「20」(密度解析を行うためのセル サズを定義する値)
[XAML] ビューに上記で設定した内容のコードが以下のように記述されます。
<esri:HeatMapLayer ID="RandomHeatMapLayer" Intensity="20"
Opacity="0.75" />
7. ヒート マップ レヤ に表示するポントを追加する処理を
HeatMapLayer クラスの初期化ベントに記述します。HeatMapLayer クラ スの [Initialized] ベントをダブルクリックします。
8. MainPage.xaml.cs に [HeatMapLayer_Initialized] ベントが追加されま す。Silverlight ゕプリケーションでは「.xaml」フゔルにゕプリケーショ ンの外観を記述し、コード ビハンド フゔルと呼ばれるフゔル(C#の 場合は「.cs」、VB.NET の場合は「.vb」フゔル)にゕプリケーションのロ ジックを記述します。HeatMapLayer 型を使用するため、
ESRI.ArcGIS.Client.Toolkit.DataSources 名前空間の使用を宣言します。
using ESRI.ArcGIS.Client.Toolkit.DataSources;
9. ヒート マップ レヤにポントを追加する処理を下記のように記述します。
private void HeatMapLayer_Initialized(object sender, ^ EventArgs e)
{
HeatMapLayer layer = sender as HeatMapLayer;
Random rand = new Random();
for (int i = 0; i < 1000; i++)
{
double x = rand.NextDouble() * 40037507.0671618 - ^
19971868.8804086;
double y = rand.NextDouble() * 40037507.0671618 - ^
19971868.8804086;
layer.HeatMapPoints.Add(new ^
ESRI.ArcGIS.Client.Geometry.MapPoint(x, y));
}
}
※ 「^」は継続記号を示します。実際のコードでは「^」を削除し、改行を行いません。
上記のコードでは例としてランダムに発生させた 1000 のポントをヒート マ ップ レヤに追加しています。
10. MainPage.xaml には、次のコードが記述されます。
<esri:HeatMapLayer ID="RandomHeatMapLayer" Intensity="20"
Opacity="0.75" Initialized="HeatMapLayer_Initialized" />
HeatMapLayer クラスの Initialized ベントに [HeatMapLayer_Initialized]
が指定され、ヒート マップ レヤの初期化時に MainPage.xaml.cs に記述した コードが実行されます。
11. デバッグ実行を行い、ポントの密度を表すヒート マップ レヤが追加さ れている事を確認します。Web マッピング ゕプリケーションが正常に実行 されていることが確認できたらゕプリケーションを閉じて Visual Studio の デバッグを停止します。
12. ヒート マップ レヤのポントの密度解析を行うためのセル サズを変 更するスラダーを追加します。 [ツールボックス] > [すべての Silverlight コントロール] > [Slider] を [デザン] ビューにドラッグ&ドロップで追加 します。
[XAML] ビューに自動的に以下のコードが記述されます。
<Slider Height="23" HorizontalAlignment="Left"
Margin="227,165,0,0" Name="slider1" VerticalAlignment="Top"
Width="100" />
上記のコードでは Slider コントロールが追加され、Name 属性に「slider1」と いう名前が指定されています。
13. Slider コントロールのプロパテゖを下記のように指定します。
[XAML] ビューにプロパテゖで設定した内容のコードが以下のように記述されま す。
<Slider Height="23" HorizontalAlignment="Center"
Margin="0,0,0,20" Name="slider1"
VerticalAlignment="Bottom" Width="150"
Maximum="100" Minimum="1" />
Slider コントロールの表示位置と最小値/最大値が指定されます。
14. ヒート マップ レヤに追加したポントの密度解析を行うためのセル サ
ズを変更するために、HeatMapLayer と Slider コントロールを関連付け ます。Slider コントロールのタグ内に下記のコードを追加します。
Value="{Binding ElementName=map1,
Path=Layers[RandomHeatMapLayer].Intensity,
Mode=TwoWay}" />
上記の設定により、Slider コントロールによって操作される値が Map コントロ ール内の HeatMapLayer の Intensity に設定されます。
15. デバッグ実行を行い、スラダーの移動によって、密度解析を行うためのセ ル サズが変更されることを確認します。
以上でサンプル ゕプリケーションの開発は終了です。より高度なゕプリケーショ ンの開発に関する参考ドキュメントやサンプルの詳細については次のステップを ご参照ください。
次のステップ
本スタートゕップ ガドでは ArcGIS API for Microsoft Silverlight を用いた Web マッピング ゕプリケーションを開発するための最も基本的な開発手順につ いて紹介しました。今後、より高度なゕプリケーションを開発するためにはまず ArcGIS Resource Center をご参照ください。ArcGIS Resource Center には API の開発に必要となる参考ドキュメントやサンプルがすべて集約されています。
ArcGIS Resource Center Silverlight API
http://help.arcgis.com/en/webapi/silverlight/index.html
Samples:Interactive SDK
http://help.arcgis.com/en/webapi/silverlight/samples/start.htm
API を用いたラブ サンプルとその開発コードです。はじめて API による開発 を行う場合はまずこのサンプルと同じ Web ゕプリケーションを作成してみるこ とをお勧めします。
Samples:Symbol Gallery
http://help.arcgis.com/en/webapi/silverlight/samples/SymbolGalleryWeb/start.htm
グラフゖック レヤ などのシンボル表現に使用できるポント、ラン、ポリ ゴン用のシンボル ギャラリーです。ギャラリー内の XAML をコピー&ペーストす るだけでシンボルをゕプリケーションで利用することができます。
Samples:Template Gallery
http://help.arcgis.com/en/webapi/silverlight/samples/TemplateGalleryWeb/start.htm
ArcGIS API for Microsoft Silverlight のゕプリケーション テンプレート ギャラ リーです。背景地図切り換えや概観図といった基本機能を備えたテンプレート ゕ プリケーションのソリューションをダウンロードすることができます。
テンプレート ギャラリーのテンプレートのうち、一部のテンプレートについては 日本語化されたテンプレートのサンプルを ESRI ジャパンの製品ページからダウ ンロードすることもできます。
ArcGIS API for Microsoft Silverlight ダウンロード:
http://www.esrij.com/products/arcgis/developer/arcgis-web-mapping/arcg is-api-for-silverlight/downloads/
Concepts
http://help.arcgis.com/en/webapi/silverlight/help/index.html
API の概要、地図の追加や ArcGIS サービスの利用方法などの各種開発手法をま とめた開発者ヘルプです。
API Reference
http://help.arcgis.com/en/webapi/silverlight/apiref/api_start.htm
API のリフゔレンスです。API に含まれるクラスの各種プロパテゖ、メソッド等 を確認することができます。
Code Gallery
http://help.arcgis.com/en/webapi/silverlight/gallery.html
実際に運用されているラブ サンプルを閲覧したり、サンプル コードをダウン ロードしたりすることができます。
トピックス
Map コントロールの Layers プロパティ
ArcGIS API for Microsoft Silverlight を用いて作成された Web マッピング ゕ プリケーションには、地図を表示させるための Map コントロールが 1 つ以上追 加されています。Map コントロールにはゕプリケーション上で表示する地図の範 囲、縮尺、座標系などの情報が保持されており、1 つ以上のレヤ(顧客分布図な どの主題図や道路地図などの背景地図)を追加することができます。
<esri:Map>
<esri:Map.Layers>
<Layer x:Name="0" Url="..." />
<Layer x:Name="1" Url="..." />
<Layer x:Name="2" Url="..." />
</esri:Map.Layers>
</esri:Map>
上記の例のように Map コントロールの Layers プロパテゖには複数のレヤを 追加することが可能であり、Map コントロールに 1 番最初に追加されたレヤ
レイヤ2(例:顧客分布図)
レイヤ1(例:人口分布図)
レイヤ0(例:道路地図)
Mapコントロール
レイヤの種類
Map コントロールに追加できるレヤはそのデータ ソースの違いから、マップ サービス レヤとフゖーチャ レヤの 2 種類に分けることができます。
Map コントロールのレヤのデータ ソースの多くは、GIS サーバが提供するマ ップ サービスです。マップ サービス自身もほとんどの場合、複数のレヤから 構成されており、あらかじめサーバ管理者によって各マップ サービス内のレヤ がどのようなシンボルや色を使用して地図上に表示されるかが定義されています。
マップサービスはこの定義に従い、サーバ上で地図画像を生成しクラゕントに 配信します。
マップ サービス内のレヤではこのサーバ側で生成された地図画像をデータ ソ ースとして Map コントロールに表示します。
GIS サーバ
マップ サービス 地図画像の生成
地図画像の配信
マップ サービス レイヤ Map コントロール
GIS サーバ
マップ サービス レヤでは、あらかじめサーバ側で生成された地図画像をデー タ ソースとして使用するため、サーバ側で定義されたシンボルや色と異なる方法 で地図を表現することができません。一方で、フゖーチャ レヤではクラゕン ト ゕプリケーション上で動的にシンボルや色を設定することができます。フゖー チャ レヤはマップ サービスを構成する複数のレヤの 1 つに直接ゕクセスし、
そのレヤ内の地物の座標および属性情報を取得して、ゕプリケーション上で動 的に描画を行います。
Silverlight のゕプリケーションでは多くの場合において、シンボル情報等の変更 が必要ない背景地図にマップ サービス レヤを使用し、ユーザの操作に応じて 表示を対話的に変更する必要がある主題図にフゖーチャ レヤを使用します。
GIS サーバ マップ サービス Map コントロール
フィーチャ レイヤ
特定のレイヤから、
座標、属性情報を取得
クライアント側で 動的に描画
マップ サービス レイヤ
マップ サービス レヤが利用する GIS サーバのマップ サービスは、REST 形 式で公開されており、マップ サービス レヤはこの REST サービスのエンドポ
ントにゕクセスすることで、GIS サーバが生成したマップ サービスの画像を表 示することができます。マップ サービス レヤには、ArcGIS Server が公開す る様々なマップ サービス や Bing Maps サービスなど様々なサービスに対応す るために、以下のようなマップ サービス レヤ クラスが用意されています。
マップ サービス レイヤ クラス:
ArcGISTiledMapServiceLayer ArcGIS Server のマップ キャッシュ サービスをデータ ソース として使用します。
ArcGISDynamicMapServiceLayer ArcGIS Server のダイナミック マップ サービスをデータ ソー スとして使用します。
ArcGISImageServiceLayer ArcGIS Server のイメージ サービスをデータ ソースとして使用 します。
TileLayer Bing Maps のマップ イメージ サービスをデータ ソースとして
使用します。
マップ サービス レヤ クラスのデータ ソースを指定するには、クラスの Url 属性にマップ サービスの REST エンドポントを指定します。本スタートゕッ プ ガドで紹介したコードでは Esri 社がホストしている ArcGIS Online の世 界道路地図の REST エンドポントを <esri:ArcGISTiledMapServiceLayer>
タグの Url 属性に指定しています。
マップ サービス レイヤの REST エンドポイント
マップ サービス レヤが利用する ArcGIS Server のマップ サービスの REST エンドポントは ArcGIS Server をンストールするとサーバに構成される ArcGIS Services Directory と呼ばれる簡易 Web ゕプリケーションから確認す ることができます。以下の URL より Esri 社が公開している ArcGIS Server の マップ サービスの REST エンドポントを確認することができます。
ArcGIS Online ArcGIS Services Directory
http://server.arcgisonline.com/ArcGIS/Rest/Services
「Services:」セクションに表示されるサービスの一覧から使用したいサービスを クリックします。例えば世界道路地図 の REST エンドポントを確認するには、
Home ページにて、 [World_Street_Map] をクリックします。
World_Street_Map サービスの詳細が表示されます。サービスの REST エンドポ
ントはブラウザに表示される URL です。
※ ローカルの ArcGIS Server (ArcGIS Server 9.3.1 以降)の ArcGIS Services Directory は Windows メニューより [すべてのプログラム] > [ArcGIS] > [ArcGIS Server for Microsoft .NET Framework] > [ArcGIS Services Directory] と選択することでゕクセス できます。
※ Silverlight ゕプリケーションはセキュリテゖ上の理由から自身をホストしているドメ
ン以外のサービスを呼び出すことはできません。Silverlight ゕプリケーションに複数ドメ
ン間のゕクセスを許可する方法については下記をご参照ください。
Microsoft:ドメンの境界を越えてサービスを利用できるようにする
http://msdn.microsoft.com/ja-jp/library/cc197955(VS.95).aspx
フィーチャ レイヤ
前述した通り、フゖーチャ レヤ はマップ サービス レヤと異なり、マップ サービス内の 1 つのレヤから座標と属性情報を取得し、クラゕント側で動的 に描画を行います。以下は衛星写真(Bing Maps) のマップ サービス レヤ上に ポント フゖーチャ レヤを描画した例です。
フゖーチャ レヤを使用することで、上図のようなグラフゖック表現に加えて、
レヤ上の地物の動的な選択、ArcGIS Server のサービスと連携した、Web 編 集、時間遷移によるゕニメーション表現などを実装することができます。以下は マップ サービス レヤ上のフゖーチャ レヤの選択された地物(ポリゴン)の シンボルを動的に変更した例です。
フィーチャ レイヤの REST エンドポイント
フゖーチャ レヤ もマップ サービス レヤと同様に ArcGIS Server の REST サービスを利用します。しかしマップ サービス レヤと異なり、サービス内の 個別のレヤをリソースとして指定します。以下では、Esri 社が公開しているサ ンプル サーバからマップ サービスの個別のレヤの REST エンドポントを 確認します。
1. ESRI のサンプル サーバに接続し、[Specialty] フォルダをクリックします。
http://sampleserver1.arcgisonline.com/ArcGIS/rest/services/
2. Specialty フォルダ内の [ESRI_StatesCitiesRivers_USA] マップ サービス をクリックします。
3. ESRI_StatesCitiesRivers_USA のマップ サービス詳細が表示されます。こ のマップ サービスには、Cities (都市)、Rivers (河川)、States (州)の 3 つのレヤが含まれていることがわかります。[Cities] レヤをクリックし ます。
4. Cities レヤの詳細が表示されます。Cities サービスの REST エンドポン トはブラウザに表示される URL です。マップ サービス レヤ が使用する REST エンドポントと異なり、URL の最後にマップ サービス内のレヤ ID (/0)が指定されている点に注目してください。
5. 以下の例では上記手順で確認した、Cities レヤを ArcGIS Online の世界道 路地図の上に重ねています。フゖーチャ レヤ クラス(FeatureLayer)の Url プロパテゖに REST エンドポントを指定しています。その他に、
FeatureLayer の Where プロパテゖを使用して Cities レヤの
POP1990 列の値が 100000 よりも大きいレコード(人口が 10 万人以上)
のみを取得すると言う条件句を設定しています(Where="POP1990 >
100000")
<esri:Map x:Name="MyMap">
<esri:ArcGISTiledMapServiceLayer ^
Url="http://services.arcgisonline.com:80/ArcGIS/rest/^
services/World_Street_Map/MapServer" />
<esri:FeatureLayer ^
Url="http://sampleserver1.arcgisonline.com/ArcGIS/^
rest/services/Specialty/ESRI_StatesCitiesRivers_USA/^
MapServer/0"
Where="POP1990 > 100000"/>
</esri:Map>
FeatureLayer クラスにはその他にもサーバからのデータの取得方式を設定 する MODE プロパテゖや、自動的にポントを集約して表示するクラスタ シンボルを設定するための Clusterer プロパテゖなどが用意されています。
詳細は API Reference をご参照ください。
API Reference:FeatureLayer
http://help.arcgis.com/en/webapi/silverlight/apiref/ESRI.ArcGIS.Cl ient~ESRI.ArcGIS.Client.FeatureLayer.html
※ ローカルの ArcGIS Server (ArcGIS Server 9.3.1 以降)の ArcGIS Services Directory は Windows メニューより [すべてのプログラム] > [ArcGIS] > [ArcGIS Server for Microsoft .NET Framework] > [ArcGIS Services Directory] と選択することでゕクセス できます。
※ Silverlight ゕプリケーションはセキュリテゖ上の理由から自身をホストしているドメ
ン以外のサービスを呼び出すことはできません。Silverlight ゕプリケーションに複数ドメ
その他のレイヤ
ArcGIS API for Microsoft Silverlight/WPF 2.0 より API ラブラリに新たに ESRI.ArcGIS.Client.Toolkit.DataSources と言う名前空間が追加され、Map コン トロールに追加することができる以下の 5 つの拡張レヤ クラスが追加されて います。
HeatMapLayer
本手順書においても使用した ポントの密度を表現することが可能なヒート マ ップを表示するレヤ クラスです。このレヤを使用することで顧客情報や交通 事故情報などの様々な情報の分布状況を効果的に視覚化することができます。
OpenSreetMapLayer
オープンストリートマップをレヤとして表示するためのレヤ クラスです。オ ープンストリートマップとは、地理情報の自由な共有を目的として、誰でも自由 に利用・更新をすることができる世界的な地図作成プロジェクトです。
GeoRssLayer
地震の発生など位置情報を含んだ定期的な更新情報(Geo RSS)を動的にマップ 上に描画するためのレヤ クラスです。
WmsLayer
Open Geospatial Consortium (OGC) によって策定された地図配信の標準プロト コルである WMS (Web Map Service) を使用して地図をマップに表示するため のレヤ クラスです。
KmlLayer
Google Map や Google Earth で利用される KML を読み込み地図上に表示する ためのレヤ クラスです。
※ KmlLayer クラスを利用するには ArcGIS API for Microsoft Silverlight のバージョン 2.1 以上を使用する必要があります。
これらの拡張レヤ クラスについても、フゖーチャ レヤと同様にマップ サー ビス レヤなどと重ね合わせて使用することにより、より効果的でわかりやすい 地図ゕプリケーションを作成することができます。拡張レヤ クラスについても Interactive SDK サンプルにおいてサンプルが公開されています。
・ 本書の一部または全部を無断で転用または複製することを禁じます。
・ 本書に記載されている社名、商品名は、各社の商標および登録商標です。
・ 本書に記載されている内容は改良のため、予告なく変更される場合があります。
・ 本書の内容は参考情報の提供を目的としており、本書に含まれる情報はその使用 先の自己の責任において利用して頂く必要があります。
ArcGIS API for Microsoft Silverlight スタートアップ ガイド(v2.x)
2011年7月 第3版
発行/編集所 ESRIジャパン株式会社 http://www.esrij.com/
http://www.esrij.com/