位置を数値で表すとは、地球という球面上の点に座標という識別子を与えることである。その識別子の選び方と、球面を平面に変換する際の取り決めが、以後のすべての空間分析の性質を規定する。

緯度経度という標準と、その限界

位置を表す最も標準的な方式は緯度経度(latitude and longitude)で、スマートフォンの地図から衛星測位まで広く使われる [UC-009 §地理情報とは何か]。しかし緯度経度には扱いにくさがある。二つの座標値を組み合わせる必要があること、そして何桁まで精度の裏付けがあるかが一見して分からないことだ。プログラムが返す小数点以下15桁ほどの数値のうち、実際に意味を持つのは小数点以下6桁程度で、これがおよそ1メートルの精度に相当する [UC-009 §座標を指定するその他の方式]。記録された緯度経度が何桁まで有効かを確認せずに用いると、見かけの精度と実際の精度のあいだに齟齬が生じる。

この限界を補うために、グリッドに分割してIDを与える方式も考案されている。UberのH3は地球を六角形に分割し、各セルにIDを付与する。六角形を採用した理由は、隣り合うセルへの距離がすべて等しいという幾何学的な性質にある。一般的にグリッドの分割には三角形・四角形・六角形があるが、四角形では縦横と斜めで隣接グリッドへの距離が異なるのに対し、H3が用いる六角形はこの問題が生じない [UC-009 §座標を指定するその他の方式]。また、ズームインするほどIDが長くなる階層構造を持ち、IDそのものが解像度の情報を含む点も特徴的だ。三単語の組み合わせで位置を表すwhat3wordsも考案されているが、実際にはあまり普及していないとの評価がある [UC-009 §座標を指定するその他の方式]。

球面を平面に写す際の決断——地図投影法

地球全体を表示しようとすれば、三次元の球面を二次元の平面に写す操作が必要になる。球面を平面に押し込めるとどこかが必ず歪むため、長さ・面積・角度・形のすべてを同時に保存することはできない。投影法とは「何を捨てて何を保存するか」の選択であり、これまでに100種類以上の投影法が提案されてきた [UC-009 §地図投影法]。

保存の対象によって投影法の性格は分かれる。正角図法(conformal projection)は角度を保存し、正積図法(equal-area projection)は面積を、正距図法(equidistant projection)は中心から各点への距離を保存する。正距図法は、ある都市から各地までの距離を正しく示す航空路線図などに使われる [UC-009 §地図投影法]。

広く知られるメルカトル図法(Mercator)は、緯度と経度が直交する見やすい格子を作るが、極に近づくほど面積が拡大し、極域を描けない。これを改良したUTM(Universal Transverse Mercator、ユニバーサル横メルカトル図法)は、地球を経度6度ずつ60のゾーンに分割し、各ゾーンの中央子午線からの距離をx座標、赤道からの距離をy座標として定義することで、全体の歪みを最小化している [UC-009 §地図投影法]。

投影法を一つ選ぶことは、何を優先するかを決めると同時に、その他の幾何学的性質を犠牲にするという決定でもある。異なる投影法で作られたデータを重ね合わせる際には、この違いが誤差の源になる。

測地系——座標値の意味を決める基準

投影法と並んで重要な取り決めが測地系(geodetic system)で、地球の中心と形を定義する枠組みである。同じ場所でも基準の取り方によって座標値が変わるため、どの基準を使っているかを明示することが欠かせない [UC-009 §測地系と高さの基準]。

地球は完全な球ではなく、自転によって赤道方向にわずかに潰れた楕円体として近似される。かつて測地系は国ごとに異なり、日本も2000年ごろまで独自の測地系を用いていた。GPSの普及に伴い世界測地系WGS84(World Geodetic System 1984)が標準となり、日本も2000年に移行した。このとき全国の緯度経度値が変わり、古い地図を使ったカーナビゲーションで位置がずれるといった事例が生じた [UC-009 §測地系と地球の形]。異なる時期に作られたデータを統合する際には、どの測地系に基づくかを確認する必要がある。

高さの基準はさらに複雑で、複数の系が並立している。GPSが与える高度は基準楕円体の表面からの高さである。一方、日本で伝統的に使われてきた高さは、東京湾の平均海水面を基準とする。この平均海水面は、重力が釣り合う水面であるジオイド(geoid)面に対応するが、地下の岩石密度の不均一などによって重力の強さが場所ごとに異なるため、ジオイド面は不規則な形になる。そのためGPSが示す高さと海抜による高さは一致せず、精度が求められる場面では両者の差を補正する必要がある [UC-009 §高さは何を基準に測るか]。

空間を索引する——R-treeと空間検索

座標と投影法と測地系が決まれば、空間オブジェクトを格納し検索する仕組みが問題になる。対象が少なければ一件ずつ調べるリニアスキャンで足りるが、対象が100万、1000万件になるとそれは現実的でなく、オブジェクトをインデックス化するアルゴリズムが必要になる [UC-009 §空間検索を高速化する仕組み]。

1984年に提案されたR-tree(R木)はその代表的な構造で、大きな矩形から順に内側の小さな矩形へとたどることで、すべてのオブジェクトを調べることなく検索を完了できる [UC-009 §空間検索を高速化する仕組み]。

空間検索の典型的な操作には二種類ある。「ある領域に含まれるオブジェクトを探す」containsと、「ある地点から一定距離以内のオブジェクトを探す」withinで、後者はバッファリング(buffering)によって距離範囲を領域に変換したうえでcontains検索と組み合わせて実現する [UC-009 §空間検索を高速化する仕組み]。点・線・ポリゴンのあいだには、交わる・接する・含む・重なるといった空間関係が定義されており、これらを計算するライブラリとしてC/C++で実装されたGEOSが広く使われる [UC-009 §空間的な関係と操作]。Google Mapsのような地理情報サービスも、こうしたアルゴリズムによって空間検索を支えている [UC-009 §空間検索を高速化する仕組み]。

なお、地理空間上の座標と地名との対応づけについては「地名という接点」を、空間境界の時間的変化については「時間をもつ空間」を参照されたい。