ArcGIS をベースとしたアプリの開発を行う場合に、ArcGIS Runtime SDK や ArcGIS API for JavaScript といった Esri 製の SDK/API をご提供していますが、Esri はその他にも多くのオープンソースの開発ライブラリを提供しています。
今回はオープンソース ライブラリの node.js を使用した Node ArcGIS について紹介します。
Node ArcGIS には幾つかの機能が実装されており、今回は ArcGIS Online のアイテム情報の検索についてご紹介します。
1.Node ArcGIS とは
Node ArcGIS とは、ArcGIS プラットフォーム(ArcGIS Online および ArcGIS Enterprise)とのインタフェース用のクライアント ライブラリで、コンテンツやユーザー・グループなどの管理を行うことに特化したライブラリです。
ユーザー情報の閲覧や更新、ユーザーが登録しているコンテンツの削除や更新など、多くのデータが存在する場合は、UI を操作することによる個別処理ではなく、プログラムを組んで一括で処理したい場合があります。そのようなときに Node ArcGIS を利用することで簡単に処理できます。
Node ArcGIS の仕様は Github 上で公開されています。
http://esri.github.io/node-arcgis/
2.Node ArcGIS の利用
ブラウザ上で ArcGIS Online から目的のアイテム情報を探す場合、時間を要することがあります。そこで、今回は Node ArcGIS を利用して ArcGIS Online から目的のアイテム情報の検索を行いました。
まず、はじめに Node ArcGIS を使用するために npm コマンドからインストールします。
$ npm install arcgis
arcgis モジュールをロードしてインスタンス化して使用します。
ArcGIS プラットフォームへのアクセスにはトークンが必要です。
var arcgis = require(‘arcgis’); var ago = arcgis({token: '-9JLzF_siaVbSBIjRxoBvsWl5jArTSqZ9KDwkn4t_MvMKf-CggNf23FMQbSgKg3eYj_4tQxeC6_clA5kdvMvYR_6lHJ2nM97tSaj1QdqcRzXIUFoEvU8q45BvPCniNRTSQ0OvgaiR7Qt8--ZJuMt2w..'});
※ ArcGIS for Developers でアプリケーション登録を行うことで、認証プロセスで必要となるアプリケーション認証情報(クライアントID、クライアント シークレット、トークン)を取得できます。
2-1.アイテムの検索(キーワードを利用した検索)
ArcGIS Online のアイテム情報、ユーザー・グループ情報を対象にして検索を行います。
アイテム検索には search メソッドを使用します。
次のコードは search メソッドを使用した例です。検索パラメータとして queryString と num を使用しました。queryString には 'owner:esri AND (type:"Feature Service")' を指定し、num には 10 を指定して 10件の結果を取得しています。検索は Esri が所有するフィーチャ サービスを検索しました。
index.js
router.get('/', function(req, res, next) { var options = { queryString: 'owner:esri AND (type:"Feature Service")', num: 10 }; ago.search(options) .then(function(result) { console.log(result.results); res.render('index', { title: 'ArcGIS', featureService: result.results}); }); });
【リクエスト パラメータ】
Option Default Description
queryString | ‘“”’’ | 検索文字列(「コンテンツ検索」を参照) |
num | 100 | 1 ページあたりの検索結果 |
page | 0 | ページ番号(たとえば、1 を指定すると 2 ページ目【100~200番目の結果】を表示します。) |
sort | ‘created’ | 検索結果をソートするフィールド |
order | ‘desc’ | 検索結果の表示順(昇順または降順) ‘asc’ or ‘desc’ |
リクエスト結果
リクエスト結果として『id、owner、title、type、url、access』の各情報を表示しました。
※ express を使用し、リクエスト結果を jade で表示しています。
Search メソッドのリクエスト結果の詳細な仕様は Node ArcGIS の API リファレンスをご参照ください。
2-2.アイテムの詳細情報の検索
アイテム ID からアイテムの詳細情報を検索します。
アイテム詳細情報へのアクセスには item メソッドを使用します。また、検索だけではなくアイテム情報の削除や更新なども行えます。
次のコードは、アイテム ID からアイテム情報を取得する例です。取得したアイテムに対しての削除や更新を行う場合は、item.delete や item.update メソッドで処理できます。
index.js
router.get('/item/:id', function(req, res, next) { var itemId = req.params.id; ago.item(itemId) .then(function(item) { console.log(item); res.render('item', { title: 'ArcGIS', item: item }); }); });
【リクエスト パラメータ】
アイテム ID の文字列(例:0c112e237b874ee6ab58dba66933ac5e)
リクエスト結果
URL からアイテム ID を指定して、そのアイテム ID の情報を表示しました。アイテム情報として、『title、description、snippet、spatialReference、extent、url、size』の各情報を表示しました。
※ express を使用し、リクエスト結果を jade で表示しています。
item メソッドのリクエスト結果の詳細な仕様は Node ArcGIS の API リファレンスをご参照ください。
3.まとめ
普段、筆者も ArcGIS Online や ArcGIS Enterprise の管理はブラウザの UI 操作で行うことが多く、アイテム数が多い場合は一括で処理したいと思うことがあります。Node ArcGIS は、アイテム情報の検索だけではなくアイテム情報の更新や削除などの機能もあるので、それらの機能を利用して一括処理できるプログラムを組むことで業務の効率化にも繋がると思いました。
Node ArcGIS ですが、ここで紹介した以外にもユーザー管理やグループ管理など多くの機能があるので、興味がある方はぜひ触ってみてください。
また、Node ArcGIS と同じように ArcGIS Online や ArcGIS Enterprise の管理を行うことができる開発ツールとして ArcGIS API for Python もあるので、興味のある方は触ってみてください。
今回作成したサンプルは、私の GitHub にも公開していますので、ぜひ、触ってみてください!
ValueCreation/node-arcgis | GitHub
■関連リンク