さて、本日は ArcGIS Runtime SDK for .NET を使ってみようと思います。今まで興味はあったもののなかなか触る機会のなかった SDK なのでとても楽しみです。
ArcGIS Runtime SDK for .NET とは
ArcGIS Runtime SDK for .NET は Windows 及び iOS、Android プラットフォーム上で動作するネイティブ GIS アプリケーションの開発キットであり、Windows デスクトップや Windows タブレット、iOS、Android などの多様なプラットフォーム向けに様々な GIS 機能を持ったアプリケーションを開発することができます。
ArcGIS Runtime SDK for .NET | ESRIジャパン
特徴
ArcGIS Runtime SDK for .NET はファイルジオデータベースを読み込んで SA アプリを開発することもできるのですが、どちらかというと Web のデータにアクセスすることを前提にしている SDK だと思います。GIS は Web 化の傾向にあるので、時代のニーズにあった SDK といえるのではないでしょうか。
Web に重きを置いているので、バリバリデータを編集するようなアプリの開発を検討しているという方は ArcGIS Runtime SDK for .NET よりも ArcGIS Pro SDK を使用した方がいいかと思います。興味のある方は以下のエントリーを読んでみてください。
当ブログでは ArcGIS Pro SDK のサンプルなどは公開していないのですが、以下サイトでサンプルコードを公開しているので、ぜひ参考にしてみてください。
開発の前に必要なこと
ArcGIS Developer Subscription というサブスクリプションプログラムに登録する必要があります(無料)。製品詳細 | ESRIジャパン
また、SDK のインストールも行います。https://developers.arcgis.com/downloads/apis-and-sdks
今回やってみること
マップの作成とレイヤーの読み込み(始めてなのでまずは簡単なところから挑戦してみようと思います)
読み込むレイヤーは以下の日本地図です(ArcGIS Online で表示)。
実行環境
Windows10 64bit
Visual Studio 2017
ArcGIS Runtime SDK for .NET 100.7.0
サンプル
以下のサイトを参考にしてみました。 Add layers to a map | ArcGIS for Developers
using System; using System.Collections.Generic; using System.ComponentModel; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Runtime.CompilerServices; using Esri.ArcGISRuntime.Data; using Esri.ArcGISRuntime.Geometry; using Esri.ArcGISRuntime.Location; using Esri.ArcGISRuntime.Mapping; using Esri.ArcGISRuntime.Security; using Esri.ArcGISRuntime.Symbology; using Esri.ArcGISRuntime.Tasks; using Esri.ArcGISRuntime.UI; namespace RuntimeTest { /// <summary> /// Provides map data to an application /// </summary> public class MapViewModel : INotifyPropertyChanged { public MapViewModel() { CreateNewMap(); } private async void CreateNewMap() { // オープンストリートマップをベースマップにする Map newMap = new Map(Basemap.CreateOpenStreetMap()); // フィーチャレイヤーを読込 FeatureLayer featurelayer = new FeatureLayer(new Uri("https://services.arcgis.com/P3ePLMYs2RVChkJx/ArcGIS/rest/services/JPN_Boundaries_ECM/FeatureServer/0")); await featurelayer.LoadAsync(); // フィーチャレイヤーをマップに追加 newMap.OperationalLayers.Add(featurelayer); // 起動時の表示範囲を設定 newMap.InitialViewpoint = new Viewpoint(featurelayer.FullExtent); Map = newMap; } private Map _map = new Map(Basemap.CreateStreetsVector()); /// <summary> /// Gets or sets the map /// </summary> public Map Map { get { return _map; } set { _map = value; OnPropertyChanged(); } } /// <summary> /// Raises the <see cref="MapViewModel.PropertyChanged" /> event /// </summary> /// <param name="propertyName">The name of the property that has changed</param> protected void OnPropertyChanged([CallerMemberName] string propertyName = null) { var propertyChangedHandler = PropertyChanged; if (propertyChangedHandler != null) propertyChangedHandler(this, new PropertyChangedEventArgs(propertyName)); } public event PropertyChangedEventHandler PropertyChanged; } }
アプリが起動し、想定通りレイヤーも読み込まれました。ほとんど時間をかけずにここまでできました。本当に素晴らしいですね。自分でやったこととしては CreateNewMap() の作成とそれをコンストラクタで呼び出すことくらいです。あとはデフォルトのままで問題ありません。
今回初めて ArcGIS Runtime SDK for .NET を使ってみたのですが、単純にレイヤーを読み込んで少しカスタマイズするくらいだったら一日二日あればそれなりのものが作れてしまうのでは思うくらい簡単に扱える SDK だと思いました。さすが ArcGIS といったところでしょうか。次回以降はもっと機能を作りこもうと思います。本日は以上です。