こちらは、ArcGIS アドベントカレンダー2025 の 13 日目の記事です。ほかの記事もぜひご覧ください。
本記事では、米国 Esri 社が公開している「What’s Special about Geospatial Data?」の記事を翻訳してご紹介します。
この記事では、開発者向けの地理空間データについて学びます。
もし以下のような経験があるなら、あなたはすでに地理空間データを取り扱う際の特有の課題に直面しているはずです。
こうした課題に対処するために過剰なコードを書いたり、複雑なデータ処理によってアプリケーションの動作が遅くなったりすることがあったかもしれません。
地理情報システム (GIS) の導入を支援してきた 10 年以上の経験から、ほとんどのコンピューター サイエンス学位やコーディング ブートキャンプではこのトピックが全く扱われていないことに、私は気づきました。
その結果、多くの開発者は他のデータに適用するのと同じツールや同じ考え方を使って、位置データも処理しようとするため、ロジックが複雑化し、拡張性が失われ、限界に直面してしまうのです。
本記事では、地理空間データの扱いが単なる「座標付きデータ」以上のものである理由、そして空間データベース・地理空間サーバー・API・マッピングSDKといった専門技術が業務に不可欠である理由を解説します。
地理空間データを扱う多くの場合、テーブル (行と列) を扱っていますが、各行にはそのレコードが世界のどこにあるかを定義する 1 つ以上の座標が含まれています。単一の点であることもあれば、経路を表す線や地域を囲む多角形であることもあります。
ここで重要な点:この位置データは、文字列や浮動小数点数のような通常のフィールドとして保存すべきではありません。標準のデータ型や SQL クエリーでは効率的に処理できない操作を実行する必要があるため、専用の空間フィールド型が必要となります。
地理空間データを効果的に扱うには、その多様な形式を理解する必要があります。なぜなら位置情報をモデル化する方法が、位置情報の保存・検索・利用方法に影響するためです。
多くの点で、これは問題に適したデータ構造を選ぶことに似ています。異なる形式は現実世界の異なるものを表し、内部では異なるロジックを必要とします。
知っておくべき 2 つの基本的な形式について説明します。
位置データは全て同じ性質を持つわけではありません。まず、離散的なオブジェクト (別名ジオメトリーまたはベクター データ) があります。これらは明確な境界を持つもの (店舗位置、建物の輪郭、道路、境界線など) です。これらは空間世界の「オブジェクト」と捉えることができ、一箇所に存在すること、明確に定義された境界からなる形状を持つこと、JSONで表現可能なこと、といった特徴を持ちます。
他には、標高・気温・騒音レベルなどの連続的なデータセットがあります。これは空間的に変化する値であり、明確な境界を持ちません。これらはグラデーションのような性質を持ち、単純な形状ではモデル化できません。通常はラスター データとして保存され、グリッドで構成されます。各セルは特定の位置での測定値を表し、分析や地図表現をするには異なるツールが必要です。
先に進む前に、離散オブジェクト、ジオメトリー、ベクター データの違いを明確にしておきます。関連はありますが、同じものではありません。
空間データの構造を議論する際、密接に関連しながらも異なる 2 つの概念を区別することが重要です。それを表現するために使用されるデータ モデル (ベクターかラスターか) と、データの種類 (離散的か連続的か) です。
ここで重要なことは、いずれのデータの種類でもベクターまたはラスターとして表現可能であることです。例えば土地被覆は概念的には離散的ですが、クラス別のラスター グリッドで表現されることが多く、標高は連続的ですがベクターの等高線で表現することも可能です。
これら 2 つの概念を分離して考えることで、「離散的=ベクター、連続的=ラスター」という誤解を回避できます。
:warning:注意:本記事の残りの部分では説明を簡潔にするため、離散的データを表現するベクターデータの管理方法を主に取り上げます。ラスター データセットも地理空間情報を扱う作業において同様に重要ですが、ベクター データとは異なる課題も持っており説明が難解となるため、ここでは扱いません。
離散的データセットを表現する最も一般的なジオメトリーは以下の通りです:
ただし、マルチポイント、曲線、曲線エッジや穴を持つポリゴンなど、より複雑なジオメトリータイプも存在します。3D 環境では、メッシュやボクセルといった3Dオブジェクトも扱います。これらは 3 次元空間における表面、体積、実世界の構造を表現します。
これらの空間データは単なる視覚的要素というだけではなく、クエリーや交差処理、結合処理する際の方法も規定します。また、パフォーマンス、精度、インデックス戦略にも影響を与えるため、空間データベースではネイティブ フィールド タイプとして扱われます。
位置情報が含まれるデータであれば、標準的なフィルタリングや結合をはるかに超えた分析が可能です。空間データベースはSQL を拡張し、空間における物体の関係性の分析と、空間的な整合性を考慮した操作を可能にします。
これらの機能の一部を探ってみましょう。
これらは空間における 2 つのジオメトリー間の関係を評価するブール演算です。新しいジオメトリーを生成せず、TRUE/FALSEの判定や、フィルター/結合で使用されます。
例えば、従来のデータベースでは ID や名前でテーブルを結合します。しかし空間データベースでは、位置情報に基づいて行を結合 (空間結合) でき、キーではなく空間的な近接性を利用してデータを結合できます。
異なるジオメトリー タイプ間の交差演算の例:
より詳しく知りたい方はこちら: Types of geometry operations.
空間的な操作は新しいジオメトリーを生成する操作で、分析や表現のワークフローで頻繁に使用されます。
例:
もう 1 つの強力な空間操作がテッセレーションです。空間を規則的で重なり合わない図形 (一般的に正方形、六角形、三角形) に分割し、領域を完全に覆うジオメトリーを生成します。
テッセレーションは空間分析において、地域間でデータを集計・比較する方法を標準化するために広く利用されています。分析以外にも、テッセレーションはユーザー エクスペリエンスとパフォーマンスを向上させるユースケースにおいても頻繁に使用されます。
詳しくは空間分析の詳細およびテッセレーションの使用方法をご覧ください。
ジオメトリーやTRUE/FALSEを返す以外の空間的な操作として、2 点間の距離、多角形の面積、経路の長さなどの測定値の算出があります。
これらの操作は定量値を返すことで、結果のソート、統計による有意性の表示、順序付けやフィルターのサポートに使用されます。
主なユースケース:
空間的な誤りが容易に発生することから、空間分析を行う前に、データの正確性を確保することが不可欠です。空間的な矛盾として多いのはポリゴンの重複、区画間の隙間、道路区間の断絶などがあり、いずれも分析の妥当性を損なう可能性があります。
通常のデータ システムの中で、`NOT NULL`、外部キー、一意性制約を定義するのと同じように、地理空間システムでは空間的正確性を保つためにトポロジー ルールを定義できます。
例:
これらのルールはデータ品質を維持し、下流のアプリケーション・地図・分析における論理エラーを防止します。
ここまで空間データの保存、クエリー、分析の方法について説明してきましたが、次は大規模で複雑な地理空間データセットの効率的な扱いについてです。
空間データの量と複雑さが増すにつれて、パフォーマンスへの要求も高まり、これを解決するにはハードウェアの高速化だけでは不十分です。空間操作の固有の性質を考慮した、専門的な技術と戦略を適用する必要があります。
反応が速く拡張性の高い地理空間アプリケーションを実現する主な技術として、空間インデックス、ジオメトリーの簡略化、タイル化などが挙げられます。
地理空間データセットには、数千から数百万ものフィーチャが含まれることがよくあります。これらは、局所的なオブジェクトの小さな集合から、国、政府間地域、大洋横断ゾーン、さらには全世界をカバーするデータセットまで多岐にわたります。これらのフィーチャは数千もの頂点を含む場合があり、処理が複雑になります。
高速な空間クエリー (例:インターセクションや内包) を実行するため、空間データベースは R-tree などの特殊な空間インデックスを使用します。これらのインデックスはフィーチャをバウンディング ボックスで整理し、検索対象の領域を絞る機能で、通常のデータベースにおける B-tree インデックスによってクエリーを高速化する仕組みと類似しています。
空間インデックスとは、バウンディング ボックス (各ジオメトリーを完全に包含する四角形) を用いて複雑な形状を簡略化するものです。
上の図では、各フィーチャ (A、B、C、D) がバウンディング ボックスで囲まれており、空間インデックスが保存するのは各フィーチャのジオメトリーではなくこのバウンディングボックスです。
フィーチャ A と交差するフィーチャを特定する場合、空間インデックスは A のバウンディングボックスと交差しているバウンディング ボックスを持つフィーチャを候補とする、高速な初期フィルタリングを実行します。この例では B と D が特定されます。
このステップにより、明らかに無関係なジオメトリー (C など) が候補から外され、パフォーマンスが大幅に向上します。
次に、データベースは候補のフィーチャ (B と D) に対して精密な幾何学的検証を行い、実際にジオメトリーが交差しているフィーチャを特定します。
この 2 段階プロセス:バウンディング ボックスによるフィルタリングとそれに続く正確な幾何学的比較こそが、特に大規模で複雑なデータセットを扱う際に空間クエリーを効率化する一因となっています。
空間インデックスなしでは、単純なクエリーでさえ全ジオメトリーのスキャンが必要となり、規模が大きくなるほど処理が難しくなります。
次に適切な詳細レベルで地図を表示することについてです。地図アプリケーションを構築する際、ユーザーはパンやズームを行います。ズームイン時には問題なく見えるデータセットも、ズームアウトすると処理が困難になり、効率的なレンダリングが難しくなる場合があります。
処理速度を維持するには、データを動的に適応させる必要があります:
簡略化とタイル化がなければ、大規模な地理空間データのレンダリングはすぐにボトルネックとなります。レイヤー全体をメモリーに読み込み、あらゆる縮尺で過度に詳細なジオメトリーを処理し、レンダリングの遅延、帯域幅の大量使用、ユーザー インターフェースの応答不良に対処せざるを得なくなるでしょう。
地図は地理空間データとの主要な対話的手段であり、データの表現方法がユーザー体験を左右します。縮尺に基づく可視性制御、適切なシンボル化などの技術により、明確で高性能な地図設計が可能となります。
空間データを効果的に扱い、高速で対話的かつ洞察に富む地理空間アプリケーションを構築するには、専門的なマッピング ツールが必要です。
これらのツールには、次のような機能面での工夫が必要です:
クライアントサイドのマッピング技術がなければ、パフォーマンス最適化、描画ロジック、対話的な動作、UI コンポーネントなど、多くのツールが既に対応している機能を一から自分で作り直すことになってしまいます。
優れた地図構築やユーザー エクスペリエンスの実現には、コーディングやデータ、ロジックだけではなく、スタイルやラベルなどによる提示のしかたが、異なる縮尺や文脈でどのように変わるか、ということも重要です。
優れた開発体験には、設計・開発・テスト・改良を容易にして、ゼロからスタイル設定を始める必要が無いようにすることが必要です。
具体的には以下が実現されることで、開発が加速されデザイン品質を向上させることができます:
こうしたデータ探索、地図作成、さらには分析ツールの例として、ArcGIS Map Viewer が挙げられます。
そして、地図のスタイル編集ツールの一例として挙げられるのが、Vector Tile Style Editor です。
開発ツールや地図デザインツールがなければ、当てずっぽうで地図の見た目を変えることとなり、その度にコードを編集して見栄えを確認する、という作業を繰り返す必要があります。これでは、プロジェクト間で一貫性を維持するのが難しくなり、本来デザイナーがもっと効率よくできる作業のはずが、開発者に過剰な作業負荷をかけてしまうこととなります。
あらゆるソフトウェア システムと同様に、地理空間システム内での互換性も重要です。このセクションでは、システム間の統合や連携作業において、空間参照、ファイル形式、API 仕様の重要性について説明します。
位置情報を表現する唯一の普遍的な方法はありません。GPS で使用され緯度経度で表される最も広く知られた空間参照システムは WGS84 です。しかし多くのデータセット、特にオープン データ ポータルや政府機関からのものは、UTM や Web Mercator など他の空間参照システムを使用しており、これらの位置を表現する形式は異なります (例:度数ではなくメートル単位で表すなど) 。
空間参照は互換性を保証するだけでなく、精度確保においても極めて重要です。文字エンコーディング (例:UTF-8 と ISO-8859-1 など) を混在させると文字が正しく表示されないのと同様に、異なる座標系を持つ空間データを再投影せずに混在させると、誤った位置にフィーチャが表示されたり、まったく表示されなくなったりすることがあります。
以下の画像は、同じ座標が 2 つの異なるシステムで表現された場合、地球上の異なる位置が示されている例です。
詳細については、開発者向けドキュメントの「Spatial reference」の項目をご確認ください。
すべての地理空間データ形式は、データ自体の空間参照とジオメトリーを (明示的または暗黙的に) 定義します。GeoJSON、Esri JSON、TopoJSON、GeoPackage、シェープ ファイルなどのよく知られた形式は、単なる座標データだけでなく、必要なメタデータも保持できるように設計されています。
単純な CSV ファイルにも座標が含まれていることはありますが、空間的な文脈を持っていません。上記の地理空間データ形式には、空間参照情報、属性値の構造、投影法の種類などの重要な情報が含まれているため、異なるシステム間でも正確にデータを解釈・スタイリング・統合することができます。
このような地理空間データを API 経由で簡単に見つけて活用できるようにするために、地理空間コンテンツ向けに明示的に設計された、確立したオープンな技術仕様があります。例えば、WMS、WFS、OGC API などの OGC 標準、ならびに当社の ArcGIS REST API および STAC などがあります。
これらの API は通常、以下を公開します:
開発者にとって、地理空間 API を理解することは、既存のツールやワークフローを活用することで開発時間を節約できるという点だけでなく、異なるプラットフォーム間でも互換性のあるソリューションを構築できるという点でも重要です。これらの API は、広く知られた仕様に従うことで、空間データへの一貫したアクセスを提供し、カスタムパースや手動変換、座標修正の必要性を減らします。
これらの API は、標準の仕様に従うことで空間データへの一貫したアクセスを提供します。これにより、独自のデータ形式の解析や、手動でのデータ変換・座標修正、といった手間を省くことができます。
これまで見てきたように、地理空間データは単なる「座標付きデータ」ではありません。位置データに苦労したことがあれば思い当たる節があると思いますが、位置データの取り扱いには新たなツールと思考法を必要とする固有の課題があります。
そこで朗報です。支援ツールのエコシステムが構築されています。空間データベース、地理空間サーバー、クライアントサイドSDK、専門的な地図設計ツールなど、地理空間データ処理に特化したツールを活用すれば、時間と労力を節約できます。
さらに詳しく知りたい場合は、Interactive Learner GIS と弊社の開発者ガイドのチェックをお勧めします。ホスティング型クラウド サービスに関心があれば、ArcGISフィーチャ サービス、ベクター タイル サービス、マップ タイル サービスの詳細を解説するブログシリーズも開始しています(後日こちらのブログも一部翻訳予定です)。