はじめに
ArcGIS の開発者向けの製品では、ArcGIS Online / ArcGIS Enterprise でホスティングした様々な GIS データを利用できるような、API / SDK を提供しています。どの開発者向けの API / SDK を使うにしろ、これらの GIS データにアクセスするためのレイヤーを理解するのが、アプリケーションを開発する際の近道となります。
本記事では、ArcGIS の開発者製品を扱う上で重要なレイヤーの種類と特長について紹介していきます。ご紹介するレイヤーは、ArcGIS Online または ArcGIS Enterprise 上に作成されるレイヤーを想定しています。
なお、本記事は ArcGIS のコア コンセプトの Layers ページを参考にしています。
レイヤー
ArcGIS を使用してアプリケーションを構築する場合に、レイヤーは主要なコンテンツとなります。
ArcGIS で利用できるレイヤーは、ディスク上またはネットワーク経由で利用可能な ArcGIS REST API 、CSV ファイル、GeoJSON 、また他のファイルを介して公開される Web サービスに基づいています。
レイヤーは、ArcGIS の開発者製品である API および SDK を使用して、ネットワーク経由またはディスク上からロードされた任意のデータから作成され、アプリケーション内で利用することができます。
一時的なグラフィックは、API で作成できるグラフィック レイヤーを使用して地図上に表示することも可能です。
レイヤーは、マップやアプリケーションを作成するときに使用される地理的データの論理的集合で、大まかにフィーチャ レイヤーかタイル レイヤーのいずれかに分類することができます。
レイヤー タイプ | 概要 |
フィーチャ レイヤー | ポイントやポリゴンのようなフィーチャを扱うレイヤー ジオメトリおよび属性情報の編集または更新、オフラインデータベースと同期が可能 |
タイル レイヤー | 事前にキャッシュを作成し、サーバー上にキャッシュを配置しているレイヤー |
タイル レイヤー の例として、ベクター タイル マップはタイル レイヤーとなります。3D を表示するシーン レイヤーも、アプリケーション内でできるだけスムーズに表示を行うために建物などの 3D オブジェクトを含むフィーチャをキャッシュすることから、タイル レイヤーに分類することができます。
ArcGIS の主なレイヤー
ArcGIS Online と ArcGIS Enterprise は、編集、オフライン同期、ベースマップの使用など、地図アプリを開発・利用する上で一般的なユースケースを実現するためのさまざまなタイプのレイヤーをサポートしています。ArcGIS を使用してアプリケーションを作成するには、これらの種類のレイヤーを使用する方法を考慮することが重要です。
この表は、アプリケーション構築時に使用する主なレイヤータイプの一般的な使用例をまとめたものです。
レイヤーの種類 | REST API Service | ArcGIS Online※1 | ArcGIS Enterprise | キャッシュ作成の可否※2 | ユースケース |
Feature Layer | Feature Service | ○ | ○ | - | ベクター形式のデータのクエリ、レンダリング、編集などに利用 |
Tile Layer (タイル レイヤー) | Map Service | ○ | ○ | ○ | 変更頻度が低いベースマップやその他の複雑なデータセットに利用 |
Vector Tile Layer (ベクター タイル レイヤー) | Vector Tile Service | ○ | ○ | ○ | 変更頻度が低いベースマップやその他の複雑なデータセットに利用 |
Dynamic Map Layer (ダイナミック マップ レイヤー) | Map Service | - | ○ | - | 頻繁に変更される、または複雑なレンダリング要件が必要なデータセットを表示するために利用 |
Image Layer (イメージ レイヤー) | Image Service | - | ○ | - | 衛星画像や他の画像データのレンダリングと解析に利用 |
Scene Layer (シーン レイヤー) | Scene Service | ○ | ○ | ○ | 3Dデータセットの表示とレンダリングに利用 |
※1:ArcGIS Onlineではホストできないレイヤーもありますが、ArcGIS EnterpriseでホストされているレイヤーはArcGIS Onlineと共有できます。ArcGIS Server Webサービスを参照してください。
※2:キャッシュされたレイヤーは事前に表示のための処理が行われるため、クライアントへ高速で配信できます。キャッシュされていないレイヤーはデータベースクエリを作成し、HTTPキャッシュのみを利用します。
その他のレイヤー タイプ
ご紹介した主なレイヤー タイプの一覧に加え、ArcGIS Enterprise は多くのレイヤーをサポートしています。詳細な情報は、ArcGIS Enterprise の ヘルプ ドキュメント「ArcGIS を使用してサービスを公開する方法」をご参照ください。具体的なレイヤーについては公開できるサービスの種類でご紹介しています。(このドキュメントでは、レイヤー以外の GIS 解析を行うサービスについてもご紹介しています)。
レイヤー タイプのサポート状況は API / SDK によって異なるため、詳細は各製品のサンプルやリファレンスをご確認ください。
CSV、GeoRSS、KML などの一般的なファイルの種類のサポートに加え、ArcGIS の開発者向け API / SDK では、カスタム レイヤー タイプとして拡張可能なグラフィック レイヤーをサポートします。
レイヤーの使用
ArcGIS プラットフォームでは、複数の方法でレイヤーを作成、編集、共有できます。
上記で紹介しました ArcGIS の主なレイヤー タイプは、ArcGIS Online と ArcGIS Enterprise の基本コンポーネントである ArcGIS Server のインスタンスでホストされるサービスをサポートしており、ArcGIS の API / SDK は REST API を介して操作します。
開発者は REST API を使用してレイヤーを表示させるだけでなく、REST API に直接リクエストを送ることで、独自の GIS 機能をアプリケーションに追加することが可能です。
ArcGIS の API / SDK は、REST API を包含して設計されています。どの API / SDK もサポートするレイヤーをマップに追加することができます。
また、レイヤーの種類毎にクラスとして実装されており、実行可能な処理はメソッドとして定義しています。REST API を使用して同様の処理を行う場合に比べ、より扱いやすくなっています。
例えば、ArcGIS Runtime SDK for .NET(WPF)の API リファレンスから、フィーチャ テーブルが持つメソッドをみてみましょう。このクラスでは主にフィーチャ レイヤーが持つ属性情報へのクエリのためのメソッドを定義しています。REST API で同様の処理を行うためのリファレンスである Query (Feature Service) に比べ、可能な操作がわかりやすいのではないでしょうか。
レイヤーの扱い方は、リファレンスだけでなくサンプルをご紹介するページやガイドページからでも学ぶことができます。
ArcGIS API for JavaScript では、Intro to layers の sandbox で学習することができます。(このページを翻訳したはじめてのWeb マッピングアプリケーション開発:レイヤー表示編もご覧ください)ArcGIS Runtime SDK の各 OS では、ガイドページの基礎(Fundamentals)にレイヤーについての記述があります。(例:ArcGIS Runtime SDK for .NETのレイヤー)
ArcGIS プラットフォームで利用できる Web マップでは、各レイヤーを追加してひとつの主題図を作成することが可能です。
Web マップ自体は、JSON 形式でシンボルなどの設定を保持します。JSON データの中でレイヤーは ‘basemapLayers‘ または ‘operationalLayers‘ プロパティに追加されます。Web マップへレイヤーを追加するためには、ArcGIS Online または ArcGIS Enterprise のアイテム ID、または Map Service の URL のいずれかで参照できます。
Web マップを作成するためのツールであるマップビューアでは、レイヤーのシンボル定義や表示範囲などの定義を GUI から変更することが可能です。
Web マップへのレイヤーの追加の詳細については、ArcGIS Onlineの「レイヤーの追加」トピックを参照してください。
Web マップ利用における開発者のメリット
Webマップには、表示するレイヤーの情報や、シンボルなどの表現の定義など、アプリ実行時にも利用可能な設定情報を定義することができます。この内容は、開発したアプリケーションはもちろん、ArcGIS Apps でも適用して扱うことができます。また、Web マップはユーザ間で共有できます。詳細については、Webマップの概要およびWebマップの仕様(英語)を参照してください。
レイヤーの作成
レイヤーの作成方法は、ArcGIS の各製品によって異なります。
ArcGIS 製品と作成方法のガイドのリンクをレイヤー毎にご紹介します。
レイヤー | ArcGIS製品または学習コンテンツ | 作成方法またはガイドページ |
フィーチャ レイヤー | ArcGIS Online でのデータインポート(CSV、GeoJSON、シェープ ファイルまたはファイル ジオデータベース)の学習用のチュートリアル | |
フィーチャ レイヤー | ArcGIS チュートリアルズ | ArcGIS for Developer のダッシュボードから、ArcGIS Onlineへ空のフィーチャ レイヤーを定義についての学習用チュートリアル |
フィーチャ レイヤー | ArcGIS Online | ホスト フィーチャ レイヤーを公開する |
フィーチャ レイヤー | ArcGIS Enterprise | フィーチャレイヤーの作成と共有 |
フィーチャ レイヤー | ArcGIS Pro | フィーチャレイヤーの作成と共有 |
タイル レイヤー | ArcGIS Online | |
タイル レイヤー | ArcGIS Pro | ホスト タイル レイヤーの公開 |
ベクター タイル レイヤー | ArcGIS Pro | |
シーン レイヤー | ArcGIS Online | |
シーン レイヤー | ArcGIS Pro | シーン レイヤーの公開 |
ダイナミック マップ レイヤー | ArcMap | |
イメージ レイヤー | ArcMap |
Tips:開発者向け!レイヤーを扱うときに知りたいこと
ここからは、開発時に知っているスムーズに進めることができる実践的な内容を 2 つご紹介します。
レイヤーの種類の確認方法
ArcGIS Online または ArcGIS Enterprise に作成したレイヤーは、ポータルのアイテムの詳細ページから確認することができます。
アイテムの詳細ページでは、赤枠の部分でレイヤーの種類が確認できます。青枠の部分のどちらかをクリックすると、ArcGIS REST Services Directory のページが表示され、レイヤー定義を確認することができます。このページでは、対象のフィーチャ レイヤーに対してどのような処理を実行できるか調べることもできます。
ページの一番下には、このフィーチャレイヤーに対して行うことができる操作が並んでいます。例えば “Query”をクリックすると、別ページに移り、クエリを行うためのパラメータを入力して Web ブラウザ上で処理を実行することができます。このときのパラメータの定義方法は REST API に基づくものを入力します。
Feature Layer と Feature Layer (ホスト)の違い
アイテム詳細ページから”(ホスト)”表示となっていないレイヤーは、サービス化していないため、開発アプリ側で属性情報などの編集を行うことやオフラインで使用するための設定を適用することはできません。このレイヤーは、マップビューアから地図を作成する過程で“マップメモ“を作成し保存したり、マップビューアへ CSV ファイルをドラッグアンドドロップし、マップを保存すると作成できます。
”(ホスト)”表示になっている Feature Layer は、ArcGIS プラットフォームの中でも最も柔軟に利用いただけるデータとなります。Collector for ArcGIS などの ArcGIS Apps で利用するのは(ホスト)となっているレイヤーです。
REST API Service のリファレンス
“ArcGIS の主なレイヤー”でご紹介しました一覧を、もう一度ご覧ください。
“REST API Service”に記述がある名称は、開発者製品でレイヤーを操作する際に使う頻度が高いです。
Feature Service の REST API のリファレンスを見てみましょう。ここには各レイヤーの新機能の概要や、レイヤーに対して行うことができる処理が定義されています。
例えば、フィーチャサービスに対してクエリを実行したい場合、Feature Service の Query についてのリファレンスを参照すれば、どのようにリクエストを定義すればよいのか記述されています。
おわりに
今回は、ArcGIS のレイヤーについて、開発者製品を扱うための概要をお伝えしてきました。
みなさまが普段利用しているレイヤーについて、種別やそのレイヤーでできることをより深く調べることができる足掛かりになればと思います。
最後のトピックで取り上げた、レイヤー種別の判断とリファンスの参照方法は、筆者も開発の際によく利用しています。クエリを実行する際の条件文などは、ArcGIS REST Services Directory で試します。
みなさまの ArcGIS の開発お役に立てれば幸いです。
関連リンク集
ArcGIS 関連ページ
・ArcGIS for Developers(ESRIジャパン製品ページ)