久しぶりに GeoDev Meetup に参加してきました。
2回目の参加となりますが、今回のもくもくタイムで「先日リリースされた ArcGIS Earth 1.6 の API を触ってみます。」と自己紹介したので先日ブログで紹介した ArcGIS Earth 1.6 の API を触ってみます。
とはいったものの、1年以上 Visual Studio を触ってなくて1時間以内にまったく新規のアプリを作るのは難しいと思ったので、Esri のサンプルを触って動かしてみる、ということにしました。
やったこと:ヘルプの確認
まずはヘルプを読みながら API の操作方法を確認してみました。下記 URL を少し翻訳してみます。
http://doc.arcgis.com/en/arcgis-earth/automation-api/use-api.htm
Automation API の使用
管理者設定
OS 管理者権限で、ArcGIS Earth のインストール ディレクトリー(例:C:\Program Files\ArcGIS\Earth\bin\plugins)にある ArcGISEarth.WCFNamedPipeIPC.json ファイルを変更して AcGIS Earth Automation API の設定ができます。
ArcGISEarth.WCFNamedPipeIPC.json { "autoStart": true }
autoStart 関数は ArcGIS Earth 起動時に自動的に Automaiton API を有効にします。デフォルトでは false に設定されています。autoStart=true に設定すると、ArcGIS Earth 起動時にローカルホストで WCF サービスをホストできるようになります。[Settings] ダイアログの [Advanced] ペーンで、automaiton API が使用できるかどうかが確認できます。
ArcGIS Earth への接続
接続の有効化
ArcGIS Earth Automation API はマシン上のプロセス間通信(interprocess communication:IPC)に WCF 名前付きパイプ トランスポート(WCF named pipe transport)のメカニズムを実装しています。一度接続が確立すれば、クライアントアプリケーションは ArcGIS Earth と通信することができます。
Automaiton API を使用するには、要求を送信するための特定のエンドポイント アドレスが必要です。ArcGIS Earth Automation APIのエンドポイントアドレスは "net.tcp// localhost/arcgisearth" として定義されています。
アプリの接続を設定するには、次の手順を実行します。
~~以下の翻訳は今後のがんばり次第~~~
やったこと:サンプル プログラムを動かす
ヘルプからリンクされているサンプル プログラムは ArcGIS Online 上で公開されています。
- 事前に Visual Studio Community 2017 と ArcGIS Earth 1.6 をインストールしておきます。
- Automation API Usage Sample のサンプルをダウンロードして解凍します。
- EarthAPITestClient.sln ソリューションを開きます。
- EarthAPITestClient プロジェクトをビルドします。
- bin フォルダー内に EarthAPITestClient.exe がビルドされるので起動します。
- ArcGIS Earth を起動します。
- EarthAPITestClient で [ConnectEarth] ボタンを押します。ArcGIS Earth が起動していれば、[Success] が表示されます。
- [Get Camera] ボタンを押して、現在のカメラ情報を取得します。JSON 形式で情報が取得されます。
- Visual Studio プロジェクト内にある sample.txt を開き、SetCamera の JSON 文字列をコピーし、Text info に貼り付け、[SetCamera] ボタンを押すと、指定したカメラ位置に地図が移動します。
- sample.txt を参考に、[SetCamera] [FlyTo] [AddLayer] [ClearLayers] [GetSnapshot] を押してみてください。
ということで、1行もコードを書かずに終わるということにはなりましたが、久しぶりに Visual Stuido を起動してみて、もう少しがんばろうと。
GeoDev Meetup も無事終了で楽しめました!