|
DOC
|
はじめに この記事は、「Pro SDK を使用した ArcGIS Pro の拡張」シリーズの第 2 弾です。 本シリーズでは、ArcGIS Pro SDK (以下、Pro SDK) を使用した ArcGIS Pro の拡張方法をご紹介しています。前回の記事では、Pro SDK とはどういった開発製品かということと、ArcGIS Pro でどのようなカスタマイズが可能なのかをご紹介しました。 今回は、開発環境の構築方法についてご紹介します。 第 1 弾: ArcGIS Pro SDK とは? 第 2 弾:環境構築(本記事) 第 3 弾:アドインプロジェクトの構成 第 4 弾:アドインの開発 第 5 弾:管理構成画面のカスタマイズ 開発環境の準備 Pro SDK を用いて ArcGIS Pro の拡張アドインを開発するには、一般的に統合開発環境として Microsoft Visual Studio (以下、Visual Studio) を使用します。そのため、Pro SDK がサポートするバージョンの Windows OS と Microsoft Visual Studio が適切にセットアップされている必要があります。 Pro SDK がサポートする最新の動作環境につきましては下記をご参照ください。 ArcGIS Pro SDK for .NET 動作環境 Pro SDK のインストール方法 Pro SDK のインストールには、次の2つの方法があります。 最新バージョンのインストール:Visual Studio の [拡張機能] からインストールする方法 旧バージョンのインストール:GitHub からインストーラーをダウンロードしてインストールする方法 ※ Visual Studio では、インストールできるバージョンは最新のバージョンのみですので、旧バージョンのインストールを行う場合は、GitHub からインストーラーをダウンロードします。 最新バージョンのインストール Visual Studio の [拡張機能] を使用した最新バージョンのインストール方法をご紹介します。 1.Visual Studio を起動します。 2.Visual Studio の [拡張機能] メニューの [拡張機能の管理] を選択します。 3.[オンライン] 項目の [Visual Studio Marketplace] を選択します 4.右上の検索ボックスに 「ArcGIS Pro SDK」と入力します。検索結果として「ArcGIS Pro SDK for .NET」と「ArcGIS Pro SDK for .NET(Utilities)」、「ArcGIS Pro SDK for .NET(Migration)」が表示されます。 5.「ArcGIS Pro SDK for .NET」 と 「ArcGIS Pro SDK for .NET (Utilities) 」 をそれぞれ選択し、[ダウンロード] をクリックします。 ※ Pro SDK 2.x から 3.x への移行が必要な場合は「ArcGIS Pro SDK for .NET(Migration)」もダウンロードします。詳細は Pro 3.x への移行をご参照ください。 6.インストール内容を Visual Studio に反映させるため、ダイアログの下部に表示されている [閉じる] をクリックして、一度 Visual Studio を終了します。 7.[VSIX Installer] ダイアログが表示されます。[Modify] をクリックして、ArcGIS Pro SDK for .NET をインストールします。 8.Visual Studio に ArcGIS Pro SDK for .NET のテンプレートとユーティリティがインストールされていることを確認します。 再度、Visual Studio を起動して [新しいプロジェクトの作成] メニューの [すべてのプロジェクトの種類] で [ArcGIS Pro SDK] を選択します。C#および Visual Basic 用の新しいプロジェクトテンプレートのリストに「ArcGIS Pro モジュール アドイン」、「ArcGIS Pro 構成管理」など、Pro SDK のテンプレートが表示されていれば、インストールは完了しています。 旧バージョンのインストール 旧バージョンの SDK をインストールするには、GitHub からインストーラーファイルをダウンロードする必要があります。 1.下記の URL から GitHub のサイトにアクセスし Pro SDK の任意のバージョンのを選択します。 https://github.com/Esri/arcgis-pro-sdk/releases 2.[Assets] 内にある「proapp-sdk-templates.vsix」と「proapp-sdk-utilities.visx」をダウンロードします。 3.ダウンロードした「proapp-sdk-templates.vsix」と「proapp-sdk-utilities.visx」のファイルをダブルクリックすると VSIX インストーラーが起動しますので、[Install] をクリックしてインストールを行います。 確認は、「最新バージョンのインストール手順の 8 」と同じ方法で確認します。 Visual Studio の設定 Visual Studio では、Pro SDK の自動更新がデフォルトでオンとなっています。 ArcGIS Pro と ArcGIS Pro SDK のバージョンが異なると、アドインの使用時などにエラーが発生してしまいます。そのため、自動更新をオフにすることを推奨しています。 Visual Studio で、[ツール] メニュー → [オプション] → [環境] → [拡張機能] から[拡張機能を自動的に更新する] のチェックを外し、[OK] をクリックすることで、自動更新をオフに設定することが可能です。 これで開発環境の構築は完了です。 次回は、Pro SDK で実装するための基本構成などについてご紹介していきます。 関連リンク ArcGIS Pro SDK ArcGIS Developers 開発リソース集 ArcGIS Pro SDK サンプル集(GitHub) API リファレンス チュートリアル
... View more
04-27-2018
12:55 AM
|
0
|
0
|
4114
|
|
POST
|
After checking with 100.2.1, TextSymbol could not be displayed, but do you know something? Surface placement—ArcGIS Runtime SDK for .NET Samples | ArcGIS for Developers arcgis-runtime-samples-dotnet/SurfacePlacements.xaml.cs at master · Esri/arcgis-runtime-samples-dotnet · GitHub
... View more
04-25-2018
05:08 AM
|
0
|
0
|
890
|
|
POST
|
Is there an example of sample code and usage in Pro SDK? Is it possible to change the renderer using Arcade? Examples of this profile in context https://developers.arcgis.com/arcade/guide/profiles/
... View more
04-03-2018
11:48 PM
|
0
|
2
|
1889
|
|
POST
|
Hi Uma, Is it OK to digitally sign using C:\Program Files\ArcGIS\Pro\bin\ArcGISSignAddIn.exe?
... View more
04-01-2018
09:07 PM
|
0
|
1
|
4967
|
|
POST
|
Sorry, the question is ambiguous and I am sorry. Are there restrictions on licensing in virtualized environments? For example, licenses can not be used to develop Internet-based or server-based value-added applications. It is NG or the like that acts like a server.
... View more
03-27-2018
02:20 AM
|
0
|
0
|
2278
|
|
DOC
|
はじめに この記事は、「ArcGIS API for Python を使ってみよう」シリーズその④です。 当シリーズでは、ArcGIS API for Python(以下、Python API)の使い方などをご紹介しています。 前回の記事では、ArcGIS Online 上のアイテムの検索方法をご紹介しました。 今回は、ArcGIS Online 上のアイテムを削除する方法をご紹介します。 ArcGIS Online 上のアイテム削除 検索と同様に、 Python API を使用することで ArcGIS Online 上のアイテムを操作することができます。 今回は例としてアイテムの削除を行ってみましょう。 今回は次の 3 種類のの要素で ArcGIS Online 上のアイテムを指定します。 アイテムのタイトル名 タグ フォルダー アイテムの削除は、ContentManeger クラスの delete() メソッドを使用します。 実行コードと解説 実際に実行するコードを記述して解説します。 シリーズ③でご紹介した方法で検索した各アイテムに対して削除を行います。それでは順番に見ていきましょう。 タイトルで検索したアイテムの削除 アイテム タイトル(kanazawaParking)で検索した「kanazawaParking.csv」ファイルを削除します。 タイトルを指定して検索した結果をアイテムオブジェクトとして取得できますので、Contents Manager クラスの delete() メソッドを使用して削除します。 # アイテム タイトル (kanazawaParking.csv) で検索
search_title_result = gis.content.search(query="title:kanazawaParking type:CSV")
# アイテム タイトル (kanazawaParking.csv) で検索したデータの削除
search_title_result[0].delete() タグで検索したアイテムの削除 タグで検索した結果のアイテムを削除します。 検索結果が複数ある場合は配列で取得できるので、for 文を使って 1 つずつ削除します。 # タグで検索
search_tags_result = gis.content.search(query="tags:geodev_jp")
search_tags_result
# タグで検索したデータを削除
for tag_result in search_tags_result:
tag_result.delete() フォルダーを削除 アイテム単位だけでなく、フォルダーも削除することができます。 ユーザーが所有しているフォルダーを検索して、フォルダーごとアイテムを削除したい時などに便利です。 ここでは、geodev_201803/15 というフォルダーを削除します。 フォルダーの削除は content オブジェクトの delete_folder () メソッドを使用します。 # 指定したフォルダーを削除
gis.content.delete_folder("geodev_201803/15") ※ フォルダーを削除する場合は、フォルダー内に存在するアイテムも一緒に削除されます。 ここまで、3 回に分けて ArcGIS Online 上のアイテムの追加・検索・削除の方法をひととおり見てきましたが、いかがでしたか? Python API を使用することで、ArcGIS Online 上のアイテム管理の効率が上がり、皆さんの業務にも活かせるのではないでしょうか。 全体のコードは ESRIジャパン GitHub 上で公開しています。 ぜひ、みなさんもお試しください! 次回は、Web マップを作成する方法をご紹介します。 関連リンク集 ArcGIS 関連ページ ・ArcGIS API for Python(ESRIジャパン製品ページ) ・ArcGIS for Developers(ESRIジャパン製品ページ) ・ArcGIS Online(ESRIジャパン製品ページ) ・ArcGIS for Developers 開発リソース集 ・ESRIジャパン オープンデータポータル ・ArcGIS API for Python(米国Esri ページ(英語)) シリーズブログ 関連ページ ・ArcGIS API for Python を使ってみよう:できることや使いどころ ・ArcGIS API for Python を使ってみよう ①:Jupyter Notebook で使うための環境構築 ・ArcGIS API for Python を使ってみよう:ArcGIS Pro からの環境構築 (ArcGIS Pro 2.1) ・ArcGIS API for Python を使ってみよう ②:ローカル端末から ArcGIS Online へデータを作成してみよう ・ArcGIS API for Python を使ってみよう ③:ArcGIS Online のアイテムを検索してみよう ・ArcGIS API for Python を使ってみよう ④:ArcGIS Online 上のアイテムを削除してみよう ・ArcGIS API for Python を使ってみよう ⑤:Web マップを作成してみよう ・ArcGIS API for Python を使ってみよう ⑥:解析ツールを使ってみよう ArcGIS 開発リソース集 ・ArcGIS for API for Pythonのコンセプト ・インストールガイド ・ArcGIS for API for Pythonのための基礎環境:conda入門
... View more
03-26-2018
06:33 PM
|
1
|
0
|
3575
|
|
POST
|
System requirements for 100.2.1—ArcGIS Runtime SDK for .NET (WPF) | ArcGIS for Developers Connect the application of ArcGIS Runtime with VDI (part called virtual) and use it. ※ 1. It is not a support environment but there is no problem as a license ・ Total number of users connected and used: 500 ・ Number of simultaneous users of VDI connection: 100 ※ 2. In the case above, we consider it as 500 licenses, but are there any problems?
... View more
03-26-2018
07:12 AM
|
0
|
3
|
2378
|
|
DOC
|
はじめに 弊社では、東京公共交通オープンデータチャレンジのアプリケーション部門に応募しました(応募受付期間:2017年12月7日~2018年3月15日)。応募規定により審査終了まではアプリケーションを無償公開しているため、この機会に、第 1 回目は応募したアプリケーションの概要を紹介し、第 2 回ではアプリケーション開発で利用した技術にフォーカスして紹介していきます。 東京公共交通オープンデータチャレンジとは? 東京公共交通オープンデータチャレンジは、公共交通オープンデータ協議会が主催しています。このイベントは、本協議会に参画する交通事業者が、それぞれの保有するデータを一般の開発者に対して公開し、それらのデータを使ったアプリケーションやアイデアを募集するコンテストです。 コンテストでは、JR 東日本、東京メトロ、東京都交通局をはじめ、12 社の鉄道事業者、10 社のバス事業者、3 社の航空事業者からデータが公開されています。データとしては路線情報、時刻表情報などの静的データのほか、電車やバスのリアルタイムな位置情報や運行情報、航空機の発着情報などの動的データも公開されます。 応募したアプリケーションについて 応募した作品は、東京メトロ全路線における電車遅延状況がリアルタイムに一目で分かる Web アプリケーション「リアルタイム列車遅延マップ」です。 次の URL からリアルタイム列車遅延マップにアクセスすることができますので、ぜひご覧ください! なお、コンテストの結果発表・表彰式が 4 月下旬ですので、それに合わせて公開しています。 注)2018年5月15日でオープンデータチャレンジは終了しましたので、 本アプリの公開も終了いたしました。アクセスいただきましてありがとうございます。 1. アプリケーションのコンセプトと利用シーン 東京メトロ全路線の遅延情報を、直感的に手軽に見えるようにして、列車利用のタイミングを図れるようにしました。 それは例えば、企業で活用する場合ならば悪天候による帰宅や待機の指示を総務部門が出したり、社員自身が通勤のタイミングを検討する際に利用することを想定しています。 電車の遅延は様々な原因から起きるので、気象情報や Twitter の情報も表示することで、総合的な状況把握を可能にしました。 2. アプリケーションのシステム構成 地図情報を扱うための GIS (地理情報システム) サーバーを構築 GIS サーバー上で遅延情報をリアルタイムに配信する仕組みを構築 直感的に状況が分かるよう、駅や路線、遅延状況を地図上に可視化 利用者の UX を意識した UI 設計 3. アプリケーションの機能 ① 東京メトロの駅と路線を地図上に表示 ⇒ 全路線の遅延状況が一目でわかります。 ② 1分以上の電車の遅延情報を表示 ⇒ 遅延区間をクリックすることで何分遅延しているか分かります。 ③ Twitterからの遅延情報を表示 ⇒ 遅延情報を含むツイートを路線ごとに表示することにより、具体的な状況が把握できます。 ④ 現在から 1 時間後までの気象データを地図上に表示 ⇒ 気象情報により、今後の状況も予測可能です。 おわりに リアルタイム列車遅延マップは、一般に公開していますので、ぜひ皆さんも触ってみてください!また、触った感想などを Twitter や ブログなど、各ソーシャルメディアでも気軽に発信していただけると幸いです。 また、こういう機能があったら面白いなど、アプリに対してのアドバイスがあれば Twitter で #geodev_jp をつけてつぶやいていただくと、キャッチします! 次回は、リアルタイム列車遅延マップ開発に利用した技術内容を中心に紹介したいと思います。 関連リンク リアルタイム列車遅延マップ 東京公共交通オープンデータチャレンジ
... View more
03-22-2018
10:29 PM
|
0
|
0
|
4613
|
|
POST
|
Hello Uma, Thank you for the information. I will try it from Visual Studio. Regards, Takahiro Kamiya.
... View more
03-19-2018
08:53 PM
|
0
|
0
|
4967
|
|
POST
|
Hello Uma, Thank you for the information. The build action was not done. In this case, can not gdb folder directly? Also, if there is another executable file such as GDAL, is it OK with the build action setting? Regards, Takahiro Kamiya.
... View more
03-18-2018
11:18 PM
|
0
|
0
|
4967
|
|
DOC
|
はじめに ArcGIS Pro は、3D 対応、高パフォーマンス、優れた操作性を実現した高機能デスクトップ GIS アプリケーションです。ArcGIS Online との親和性も高く、組み合わせて利用することでより効率的な活用ができます。そこで、ArcGIS Pro のカスタマイズを行う開発者の方に向けて、ArcGIS Pro SDK for .NET(以下 Pro SDK)を使用した ArcGIS Pro の拡張アドインを作成する流れをシリーズで紹介していきます。 第 1 弾:ArcGIS Pro SDK とは?(本記事) 第 2 弾:環境構築 第 3 弾:アドインプロジェクトの構成 第 4 弾:アドインの開発 第 5 弾:管理構成画面のカスタマイズ ArcGIS Pro のカスタマイズについて ArcGIS Pro をカスタマイズする場合は、ユーザーが利用する目的に応じてカスタマイズ方法を検討する必要があります。 ArcGIS Pro のカスタマイズとして、3つのアプローチ方法があります。 1.タスク機能によるワークフローの設定 ArcGIS Pro では、タスクと呼ばれる機能が使用できます。このタスクでは、反復可能なワークフローやジオプロセシング ツール、独自のジオプロセシング モデルを組み込むことができます。具体的には、一連の操作や処理をタスク ファイルとして保存することで、第三者がステップにしたがって同様の操作や処理を行うことができます。 2.ModelBuilder と Python スクリプトによる処理の自動化 ModelBuilder と呼ばれるジオプロセシング ワークフローを構築するためビジュアル プログラミング言語を使用した処理フローモデルの作成、および ArcPy を使用した Python スクリプトの開発によって ArcGIS Pro の処理の自動化が可能です。このアプローチでは、データ処理やバッチ処理、および反復な操作などを自動化するための処理フローモデルやスクリプト (Python) が作成できます。 3.Pro SDK を使用した独自のカスタムツールとソリューション構成の拡張 Pro SDK を使用することで独自のカスタムツールとソリューションが拡張できます。Microsoft Visual Studio と .NET を使用することで、Pro の独自のカスタムツールや UI をアドインとして開発することができます。また、ユーザーの利用目的に応じたソリューションも構成できます。 Pro SDK とは Pro SDK とは ArcGIS Pro のアドイン開発、構成拡張をコンセプトにしたソフトウェア開発キットです。Pro SDK では、.NET Framework が提供する TAP による非同期プログラミング、統合言語クエリ (LINQ)、Windows Presentation Foundation (WPF)、MVVM などの最新の .NET 機能と ArcGIS Pro を使用してアドインが開発できます。 Pro SDK でできること Pro SDK を利用することで ArcGIS Pro の画面上に表示されている既存のタブメニューを変更したり、独自のタブメニューを追加したりするなどの機能拡張を行うことができます。 また、アドインとして独自のウィンドウ、外部の API を利用したデータの編集、保存などが可能です。アドインは、拡張したタブ内に設置したボタンから起動することができます。 Pro SDK を使用した開発例として UI のカスタマイズについて紹介します。 ① リボン インターフェースのカスタマイズ リボン内にある既存のボタン(マップ タブ内のブックマーク ボタン)を削除することができます。 ② 新規タブの作成 リボン上に新規にタブを作成することができます。 ③ アイテム数とフィーチャ レイヤー数の取得 カウントボタンをクリックして、プロジェクトに追加しているアイテム数とフィーチャ レイヤー数を表示するといったアドインを開発することもできます。 次回は、 開発を始めるにあたって Pro SDK の環境を構築する方法をご紹介します。 関連リンク ArcGIS Pro SDK ArcGIS Developers 開発リソース集 ArcGIS Pro SDK サンプル集(GitHub) API リファレンス チュートリアル
... View more
03-16-2018
03:42 AM
|
0
|
0
|
5337
|
|
POST
|
Hello Uma, The file geodatabase included in template is broken. I made it possible to download the file just in case. http://firestorage.jp/download/a842e36aaa60b107b79576be0ee56d491d9323ef Regards, Takahiro Kamiya.
... View more
03-16-2018
01:16 AM
|
0
|
2
|
4967
|
|
POST
|
When digitally signing with ArcGISSignAddIn.exe of Pro, Although you can sign it, if you install and run the add-in, it will not work properly. The cause was that the file name was broken in the middle and broken when including the geodatabase in the add-in. Is there a workaround? I want to grant a digital signature without file loss, Is there a way to sign other than using ArcGISSignAddIn.exe?
... View more
03-15-2018
06:22 AM
|
0
|
8
|
5264
|
|
POST
|
Hello, I am also suffering from the same thing in C #. Either code did not work. // code example 1
var service_Url = "https://services5.arcgis.com/HzGpeRqGvs5TMkVr/arcgis/rest/services/SampleData_LatLon/FeatureServer/0/";
var featureId = "1";
string request = String.Format(@"{0}/{1}/addAttachment", service_Url, featureId);
var fileName = @"D:\ArcGIS Runtime SDK for .NET v100.2\data\2017-12-21_1447.png";
var content = new MultipartFormDataContent();
var fileContent = new StreamContent(File.OpenRead(fileName));
fileContent.Headers.ContentDisposition = new ContentDispositionHeaderValue("attachment")
{
FileName = Path.GetFileName(fileName)
};
content.Add(fileContent);
var httpClient = new HttpClient();
HttpResponseMessage response = httpClient.PostAsync(request, content).Result;
// code example 2
var fileContent = new StreamContent(File.OpenRead(fileName));
fileContent.Headers.ContentDisposition = new ContentDispositionHeaderValue("attachment")
{
FileName = Path.GetFileName(fileName)
};
using (var client = new HttpClient())
{
var req = new HttpRequestMessage();
req.RequestUri = new Uri("http://services5.arcgis.com/HzGpeRqGvs5TMkVr/arcgis/rest/services/SampleData_LatLon/FeatureServer/0/1/addAttachment");
req.Method = HttpMethod.Post;
req.Content = fileContent;
req.Content.Headers.Add("Content-Type", "image/png");
await client.SendAsync(req);
}
https://developers.arcgis.com/rest/services-reference/add-attachment.htm Is it necessary to set the content type, file name, etc. for the 'attachment' parameter?
... View more
02-02-2018
02:31 AM
|
0
|
1
|
4685
|
|
DOC
|
今回、株式会社ヴァル研究所が提供している「駅すぱあと Web サービス」を Xamarin で利用してみました。 駅すぱあと Web サービスの API を利用して駅情報を取得して、駅情報を地図にマッピングするというシンプルな地図アプリを作成しましたので、それについて紹介したいと思います。 地図アプリは、Xamarin.Forms を利用して SDK には、ArcGIS Runtime SDK for .NET ※1を利用しています。 ※1 ArcGIS Runtime SDK for .NET は、ArcGIS プラットフォームを利用した地図開発用の SDK です。Windows プラットフォーム向けの開発キットですが、Xamarin.Forms、Xamarin.iOS、Xamarin.Android にも対応しています。 1.駅すぱあと Web サービスとは 駅すぱあと Web サービスとは、株式会社ヴァル研究所が提供しているサービスで、交通情報の API です。 メンテナンスフリーの鉄道情報を 0 円(フリープラン)から提供しており、経路探索や路線情報、交通費計算などの各種機能を、サービスやシステムに組み込み、高機能化を実現することが可能です。 また、フリープランは個人に限らず、企業でも利用することができるため、手軽に利用できるところも魅力的です。 今回はフリープランを利用しました。フリープランでは、駅情報や駅の付加情報(出口情報や福祉施設情報など)、さらに路線や会社情報まで取得することができます。API の仕様書もしっかりとまとめられているので簡単に開発を進めることができました。 2.Xamarin.Forms で API の利用から地図表示まで 今回作成した地図アプリは、入力された駅名をAPI経由で検索して、検索にヒットした駅の位置情報を地図上にポイントとして表示しています。駅名の属性情報はポップアップ画面に表示しました。 ① 駅情報 API の利用 駅情報 API では、駅名称や駅の読みかな、駅コード、交通種別などを取得することができます。もちろん、駅の場所として、緯度・経度情報も取得できます。 駅情報 API の詳細な仕様についてはこちらをご参照してください。 API のレスポンスデータは JSON 形式で返却されます。Xamarin.Forms で JSON 形式のデータを扱う場合にはいくつか便利なライブラリがありますが、今回は、Json.NET というライブラリを利用しました。こちらは、.NET 用のオープンソースの JSON ライブラリで、JSON の作成からパース、検索までを行うことができ、JSON のデータを扱う場合にはとても便利なライブラリです。 コードの実装(C#) API のリクエストや JSON オブジェクトの作成は、HttpService クラスを作成して、そのクラス内で行っています。API へのリクエストは、HttpClient クラスを利用しています。これはアプリケーション内で HTTP リクエストを投げたい場合に使うクラスで、.NET Framework 4.5 で新設されています。 そして、API のリクエスト結果は、Json.NET を利用して、JSON をオブジェクトにデシリアライズしています。JSON をオブジェクトにすることで、データの取り出しなどが楽になります。 // 駅すぱあと Web サービスの駅情報 API の URL
string queryString = api_Endpoint + "/v1/json/station?key=" + api_key + "&" + "gcs=wgs84&" + "name=" + Ekiworld;
// HttpService クラスからリクエストを投げて、リクエスト結果を JSON オブジェクトで取得
JObject results = await HttpService.getDataFromService(queryString).ConfigureAwait(false);
var resultset = results["ResultSet"];
:
HttpService クラス public class HttpService
{
private static HttpClient client = new HttpClient();
public static async Task<JObject> getDataFromService(string queryString)
{
JObject data = null;
// HttpClient クラスを利用して、駅すぱあと Web サービスの URL を指定
var response = await client.GetAsync(queryString);
if ((response != null) && !((int)response.StatusCode >= 400))
{
string json = response.Content.ReadAsStringAsync().Result;
// JSON をオブジェクトにデシリアライズ
data = (JObject)JsonConvert.DeserializeObject(json);
}
return data;
}
}
② 地図上に駅情報を表示 Xamarin.Forms での地図表示には ArcGIS Runtime SDK for .NET を利用しています。API で取得した駅情報を地図上に表示し、地図上の駅をクリックすると駅情報をポップアップ画面に表示します。 コードの実装(C#) 駅情報の表示には FeatureCollectionLayer クラスを利用しました。これは、座標などの位置情報を持ったジオメトリや属性情報の地物をフィーチャとして作成し、作成したフィーチャの集合をレイヤー オブジェクトとして定義したものです。 データはデータベースのテーブルのように管理して扱うことができるため、データの取得や更新などを行う場合にも便利です。 // フィーチャ コレクションのインスタンス化 ※ フィーチャ コレクションとは、ジオメトリや属性情報の地物として作成したフィーチャのリストになります。
FeatureCollection featuresCollection = new FeatureCollection();
foreach (Ekiworld Eki in Ekis)
{
// フィールド情報を定義
List<Field> pointFields = new List<Field>();
Field stationName = new Field(FieldType.Text, "stationName", Eki.stationName, 50);
Field stationCode = new Field(FieldType.Text, "stationCode", Eki.stationCode, 50);
Field stationYomi = new Field(FieldType.Text, "stationYomi", Eki.stationYomi, 50);
:
pointFields.Add(stationName);
pointFields.Add(stationCode);
pointFields.Add(stationYomi);
// 作成したフィールド情報やジオメトリタイプからフィーチャ コレクションテーブルをインスタンス化
FeatureCollectionTable pointsTable = new FeatureCollectionTable(pointFields, GeometryType.Point, SpatialReferences.Wgs84);
pointsTable.Renderer = CreateRenderer(GeometryType.Point);
// 新しいポイント フィーチャを作成し、ジオメトリと属性値を設定
Feature pointFeature = pointsTable.CreateFeature();
pointFeature.SetAttributeValue(stationName, Eki.stationName);
:
MapPoint point = new MapPoint(Eki.longi_d, Eki.lati_d, SpatialReferences.Wgs84);
pointFeature.Geometry = point;
await pointsTable.AddFeatureAsync(pointFeature);
// フィーチャ コレクションにフィーチャ コレクションテーブルを追加
featuresCollection.Tables.Add(pointsTable);
}
// フィーチャ コレクションからフィーチャ コレクションレイヤーをインスタンス化
FeatureCollectionLayer collectionLayer = new FeatureCollectionLayer(featuresCollection);
// フィーチャ コレクションレイヤーを Map に追加
MyMapView.Map.OperationalLayers.Add(collectionLayer);
地図上の任意の駅をクリックした時に、その駅情報を判別して情報を取得するために、GeoView.IdentifyLayerAsync メソッドを使用しました。このメソッドでは、データの取得条件として、レイヤーの指定やポップアップの要素だけを含めるかどうかや、レスポンス結果のデータ件数などを指定することができます。また、クリック地点のポイントを識別するために、クリック地点からの許容範囲も指定することができます。地図をクリックした時のイベントを制御できるため、目的に合わせて利用することができます。 var layer = MyMapView.Map.OperationalLayers[0]; // レイヤーの指定
var pixelTolerance = 20; // クリック地点からの許容範囲
var returnPopupsOnly = false; //ポップアップの要素だけを含めるか
var maxResults = 1; // レスポンス結果の MAX値
// IdentifyLayerAsync メソッドの定義
var idResults = await MyMapView.IdentifyLayerAsync(layer, e.Position, pixelTolerance, returnPopupsOnly, maxResults);
if (idResults.SublayerResults.Count > 0)
{
foreach (var sr in idResults.SublayerResults)
{
// SublayerResults 内の GeoElements からフィーチャの情報を取得
foreach (GeoElement idElement in sr.GeoElements)
{
Feature idFeature = idElement as Feature;
stationName = idFeature.FeatureTable.GetField("stationName").Alias;
:
}
}
}
GeoView.IdentifyLayerAsync メソッドから取得した駅情報から属性情報を取得して、ポップアップ画面に表示します。上記で指定したポップアップの要素を利用することもできますが、今回はシンプルに表示したかったので、GeoView.ShowCalloutAt メソッドを使用しました。このメソッドでは、クリック地点の緯度・経度、ポップアップ画面に表示する内容を指定することで、呼び出せます。 string mapLocationDescription = string.Format("Lat:{0:F3} Long:{1:F3}", lati_d, longi_d);
// 駅情報の座標を指定して、CalloutDefinition をインスタンス化
CalloutDefinition myCalloutDefinition = new CalloutDefinition("Location:", mapLocationDescription);
// myCalloutDefinition に ポップアップに表示させたい内容を指定(Text、DetailText 、BttonImage)
myCalloutDefinition.Text = prefName + " : " + stationName;
myCalloutDefinition.DetailText = stationYomi;
RuntimeImage rtImg = new RuntimeImage(new Uri("https://cdn0.iconfinder.com/data/icons/business-finance-vol-14-2/512/69-128.png"));
await rtImg.LoadAsync();
myCalloutDefinition.ButtonImage = rtImg;
// クリック地点の座標と、ポップアップに表示する内容を指定することで、ShowCalloutAt が呼ばれる
MyMapView.ShowCalloutAt(e.Location, myCalloutDefinition);
3.最後に Xamarin でもWeb API を簡単に利用できるのも魅力的ですし、Web API で取得した情報は ArcGIS でも活用できますので、地図アプリのサービスの幅が広がると思います。また、駅すぱあと Web サービスは、今回使用した駅情報 API 以外にも「駅の付加情報」や「路線の運行路線や平均路線情報」などもありますので、それらの API も活用することでもっと面白いアプリが作成できると思いました。 次回も Xamarin とサードパーティのサービスを活用したアプリについて紹介したいと思います。 今回作成したサンプル アプリケーションは、ESRIジャパンの GitHub にも公開していますので、ぜひ、触ってみてください! GitHub - EsriJapan/arcgis-samples-dotnet: ArcGIS Runtime SDK for .NET のサンプル集 ■関連リンク ArcGIS for Developers(Esri | ESRIジャパン) ArcGIS for Developers 開発リソース集 Esri Japan GitHub 駅すぱあと Web サービス
... View more
12-18-2017
10:07 PM
|
1
|
0
|
3007
|
| Title | Kudos | Posted |
|---|---|---|
| 1 | 06-26-2018 06:14 PM | |
| 1 | 07-04-2018 06:21 PM | |
| 1 | 03-26-2018 06:33 PM | |
| 1 | 12-18-2017 10:07 PM | |
| 1 | 10-31-2017 07:37 PM |
| Online Status |
Offline
|
| Date Last Visited |
05-18-2026
09:12 PM
|