空間データをデータベースで扱うにあたりどうしても避けて通れないのが,空間データがデータベース内でどう扱われているかを知ることである.
EXCEL のオブジェクトも本質を知っているわけではないが,プロパティやメソッドを知ることで「どう動いているか」は見当がつく.SQL Server でも同じことである.
第 1 部 空間データを扱う
本書のこの章では基本的原理を紹介する.SQL Server 2008 で空間データを効果的に使うためにこれを知っておく必要がある.本章のこれらの節では空間データとは何か,SQL Server がどうやって異なる種類の空間データ,つまり幾何学型および地理型のデータを扱うのか,また Microsoft .NET フレームワーク CLR を使ってそれらの空間データ型をどう実装するのか,その方法を説明する.
第 1 章 空間情報を定義する
空間データ解析は複雑なテーマの領域である.学術的な苦行の範囲の要素からなり,地理学,数学,天文学,そして地図作成を含んでいる.SQL Server 2008 の新しい空間の特徴を使い始めるにあたってこれらのテーマの深遠な理解までは必要ないが,理論的概念の基本的理解は必要であり,それには空間データを近似的に扱い,応用において効果的に扱うことを含む.
この章では次のことを学んでもらう.つまり,異なる空間参照系がいかにして空間内の位置を同定するか,またこれらの空間参照系が,地球上の特徴を表現する空間オブジェクトを定義するのにどう用いられるか,である.これらの概念は,一貫した正確な空間データを生成するための基本であり,本書の後半の章で議論する実際的な応用を通じて用いられることになる.
空間データとは何か?
空間データは空間内における物体の位置,形状,そして方向を記述する.本書では,最も一般的な応用として,特に地球上の物体の位置と形状の記述を心がけた.これは地理空間データとして知られる.地理空間データは地球上にある多くの異なる種類の物体の特徴を記述することができる.これらの物体は,例えばオフィスのビルや山嶺のような有形のものや,物理的なものかも知れないし,あるいは,国境線のような想像上の境界線などの,抽象的な特徴であるかも知れない.
空間データの用途
空間データは広範囲にわたる領域において使われる情報を提供する.いくつかの潜在的な応用例としては以下のようなものがある.
- 地域,国内,国際的な販売トレンドの解析
- 顧客と競合の近接に基づく新店舗展開の決定
- GPS 装置を用いた目的地へのナビゲーション
- 顧客が荷物の配達を追跡できるようにする
- 物流ネットワークにおける自動車のルート監視
- ある地域をもっとも効率的にカバーするためのネットワーク分配の最適化
- 地理に基づいたサービスの提供,たとえば,特定の住所の近くのアメニティのリスト
- 環境変化の評価,たとえば海面上昇により浸水のリスクに晒される住居を同定するなど
これらの例はすべて,構造的かつ一貫した方法で地球上の物体の位置と形状を記述する空間データの性能に依存している.
地球上の特徴を形どる
現実の生活では,地上の物体はしばしば複雑で不定形の形状をとる.これらの物体の特徴を正確に空間データのいずれかの項目として定義することは,不可能ではないにしても非常に困難であるかもしれない.そのかわりに,空間データはこれらの物体を簡素で幾何学的な形状として代表する.それらは実際の位置と形状を近似したものである.これらの形状はジオメトリと呼ばれる.
SQL Server 2008 は主に 3 種類のジオメトリをサポートしており,以下の空間情報を代表するのに使われる.すなわち Points, LineStrings および Polygons である.この節ではこれら3種類のそれぞれの特徴について順に述べ,その後,それらを用いてどうやって地上の特徴を表現するのかを述べる.
Points
Point は最も基本的なジオメトリであり,空間内の特異的な位置を定義するのに用いられる.1 個の Point オブジェクトは 0 次元であり,長さも面積も持たない.Figure 1-1 は 1 個の Point geometry の表現を示している.
地上の特徴を定義するために地理空間データを用いる際には,Point geometry は正確な位置を表現するのに用いられる.それは例えば,銀行や火山,都市の所在地や位置であるかも知れない.Figure 1-2 は,オーストラリアの主要都市を表現するのに用いられるいくつかの Point geometries を示している.
LineStrings
空間内の 2 つ以上の地点からなる系列を定義する際,我々はまず,ある地点から系列内の次の地点に直線を引くが,これを LineString と定義しよう.LineStrings は一つの系列内に二つ以上の明確な地点とそれらを接続する線分から構成される.LineStrings は 1 次元の空間オブジェクトであり,指定の長さを持つが,いかなる面積も持たない.
LineStrings は以下に追記するような特徴を有するかも知れない.
- 単純な LineString とは,経路内の地点間に引かれたどの線分も自分自身と交差しないものである
- 閉じた LineString とは,始点と終点が同一の地点のものである
- 単純かつ閉じた LineString とは,リングとして知られる.それは閉じた形状の辺縁部を代表しているように見えるが,実際には囲まれたその形状の面積を包含してはいない.それは単に線分そのものの上にある地点を定義しているに過ぎない.
LineStrings geometries の異なる例を Figure 1-3 に示す.
地理空間データにおいては,LineStrings は一般に次のような特徴を代表するのに使われる.つまり,道路や河川,配送経路や地球の輪郭などである.Figure 1-4 に多くの LineStrings が示してあるが,これらはフランスの主要な河川を示している.
Polygons
Polygon geometry は地点で接続された境界により定義され,閉じた LineString を形成し,それは外部リングと呼ばれる.リング自身の上にある地点を定義しただけの単純かつ閉じた LineString geometry とは対照的に,Polygon geometry は外部リングで囲まれた内部の面の上にある全ての地点を包含している.
全ての Polygon は一つの正確な外部リングを持ち,外部リングはその形状の全周を定義し,一つ以上の内部リングを有することがある.内部リングは空間の面を定義するが,その定義とは,外部リングの内側に含まれるが Polygon 内部の定義には含まれないということである.ゆえにそれらは,主な幾何学的に切り取られた「穴」と考えられる.
Polygon が一つ以上のリング,つまり単純で閉じた LineStrings から構成されるために,すべての Polygon はそれ自身が単純で閉じた geometry とみなされる.Polygon は 2 次元のオブジェクトであり,関連する長さと面積を有する.Polygon の長さとは,Polygon の持つすべてのリング(外部リング・内部リングの両者)の全周の合計であり,面積とは空間において外部リングの占める面積から内部リングの占める面積を差し引いて計算する.Figure 1-5 に Polygon geometry のいくつかの例を示す.
Polygon はしばしば,空間データにおいて地理的面積を代表するために用いられる.例えば,島や湖,政治的管轄,あるいは巨大な構造物などである.Figure 1-6 にPolygon geometry を示してあるが,これは北米大陸の 48 州を表現している.
適正な geometry を選択する
地球上の所与の物体を表現するのに用いる geometry の「正しい」型はない.どの geometry を用いるかの選択は,データをどう使うかによる.仮に顧客基盤の地理的な広がりを解析したい場合には,顧客の住居一つ一つの形状を表現するために Polygon geometry を使うこともできる.しかし,顧客の住所を一つの地点として考慮するほうがはるかに簡単である.逆に,小規模な土地計画を目的として詳細な解析を指揮する際には,すべての建造物,道路,および壁面に至るまで,長さと面積の情報を持つ Polygon で表現したいと思うだろう.それは可能な限り実際の形状に近い空間データを表現するのを確保するためである.
Geometry Collection における geometries の組み合わせ
時に,複数の geometry オブジェクトの組み合わせを用いて表現した地上の単一の物体について考慮することがあるかも知れない.例えば,中国の万里の長城は単一の連続した壁ではなく,むしろいくつもの分割された壁の要素からなる.このように,壁全体の形状は LineStrings の集合として広がっているとするのが理想的な表現である.同様に,複数の島嶼からなる一つの国家,例えば日本列島は Polygon の集合として表現でき,それぞれの一つが単一の独立した島を表現している.このようにいくつかの独立した geometries を含む一つの物体を定義する時,それは Geometry Collection と呼ばれる.一つの Geometry Collection はいくつでもどんな種類でも geometries を含むことができる.一つの Geometry Collection が同じ型の geometry を唯一複数の要素として持つような特殊なケースでは,それは MultiPoint, MultiLineString, または MultiPolygon geometry と言う.
内部,外部,そして境界を理解する
全ての geometry の形状は,その geometry に関連する空間を3つの領域に分割する.すなわち,内部,外部および境界である.トポロジカル数学において,これらの用語は非常に明確な定義を持つが,以下のように単純に考えればよい.
- geometry の内部は,その geometry により占める空間内にあるすべての points からなる.
- 外部は,その geometry により占められない空間内にあるすべての points からなる.
- geometry の境界は,その geometry の辺縁上にある points からなる.SQL Server において,すべての geometry は「トポロジー的に閉じている」とみなされる.つまり,geometry の境界線上にあるいかなる points も geometry 内部に収まる.
すべての geometry は一つ以上の内部および外部の points を特定することができるが,境界線上の points を含むある種の geometry は例外である.これらの異なる,各種 geometry の空間の領域の分類は以下のようになる.
Point and MultiPoint geometries:
単一の場所を代表し,その内部はそのオブジェクトにより定義された個々の point(s) で構成されている.しかし,それらは定義された境界を持たない.
LineString and MultiLineString geometries:
すべての points で構成される内部を有しており,それらの points は,定義された points の系列間に引かれた直線の線上にある.閉じていない LineString および MultiLineString は境界を有しており,その境界は LineString の始点と終点で構成されている.しかし,閉じた LineString は,始点と終点が同一の point である場合だが,境界を持たない.
Polygon and MultiPolygon geometries:
すべての points で構成される内部を有している.そこには外部リングの内側の points は含まれるが,内部リングの内側の points はすべて除外される.これらの型の geometry は外部リング自身を形成する閉じた LineString から構成され,その polygon で定義されるいかなる内部リングも一緒である.
これらの空間の分類間の区別が非常に重要になるのは,異なる空間オブジェクト間の関係を表現する時である.というのは,これらの関係は一般的に次の点に基づいているからである.つまり,問題にしている二つの geometry の内部か,外部か,境界かに関して,特定のポイントがどこにあるのか?例えば,二つの geometry が互いに交差しており,それらが共通に少なくとも一点だけを共有している場合など.しかし,それらの points が互いの geometry の境界を共有しているだけなら,それらは互いに単に接しているとみなされる.この概念については第 13 章で述べる.
geometry の位置決め
所与のオブジェクトを表現するための適正な geometry (Point, LineString, or Polygon) を選んだ後は,次に地球上の正しい位置に置く必要がある.幾何学的定義内のそれぞれの point を,それが表現する実体世界の位置に関連づけることでこれを行う.例えば,Polygon geometry を用いて米国国防省ペンタゴンの建物を表現したいとしよう.Polygon geometry の境界を定義する5つの頂点を特定し,建物の5つの角に関連づける必要がある.それで,実際にどうすればよいのか?
おそらく「緯度」「経度」という単語に親近感が湧くだろうし,地球上の位置を記述するのを見たことがあるだろう.まさにこの例であるが,単に経度と緯度の座標で,地理上のそれぞれの位置を地球上の関連する位置で表現できると考えたかも知れない.残念ながら,ことはそう簡単ではない.
ほとんどの人は考えもしないことだが,地上のいかなる地点も,それに関する唯一の経度や緯度を持つわけではない.実際,経度と緯度に関しては多くの座標系が存在し,地球上の所与の地点の座標はどの座標系を用いるかによって違ってくる.もっと言うと,経度と緯度の座標は位置を表現する唯一の手段ではない.他の種類の座標も存在しており,経度や緯度を全く用いずに物体の位置を定義できる.地球上であなたの定義する geometry の位置を特定する方法を理解するためには,異なる空間参照系を扱う方法をまず理解しなくてはならない.
座標系を用いて位置を記述する
空間参照系の目的とは,空間内の地点を明確に同定し記述することである.地球上の特徴を代表してきた様々な種類の地理をマークアップする空間データから,地点の位置を定義できるこの能力は必須である.空間内の地点の位置を記述するために,あらゆる空間参照系は基礎となる座標系に基づいている.所与の起源から所与の次元で地点の位置を記述する方法として,ある座標参照が伝統的かつ広く受け入れられている.n 座標の集合,例えば,(1, 2, 3, …, n) はそれ故にある地点の位置を n 次元空間の起源から記述するのに用いられてきた.
多くの異なる種類の座標系がある.地理空間データを SQL Server 2008 で用いる際には,地理座標系または投影座標系のいずれかに基づく空間参照系を用いる可能性が最も高いだろう.
地理座標系
地理座標系においては,地表面のいずれの地点も二つの座標を用いて定義できる.
緯度
ある計測地点の緯度座標とは,赤道面とその地点における地表面から描いた垂線との間の角度である.これは測地緯度の定義である.代替の定義として地心緯度があり,これは赤道面と,地表面と地球中心とを結ぶ直線との間の角度と定義される.
経度
経度座標とは,赤道面内で測定した角度のことであり,その角度とは地球の中心から測地点に引いた直線と本初子午線とが作る角度である.子午線とは地表面に引かれた仮想上の線であり,北極点と南極点を結び(それ故に技術的には直線と言うよりも円弧である),経度の測定される角度から選ばれたものである.
これらの概念は Figure 1-7 に示した.
注意
ある地点は経度が大きくなるほど東にあり,またある地点は緯度が大きくなるほど北にあるため,緯度と経度を地表面そのものの測定値であると勘違いするのも無理はない.しかし,そうではない例もある.緯度と経度は赤道面と本初子午線が地球の中心においてなす角度なのである.
経度および緯度の座標は両者とも角度であり,普通は度で測定する.この場合,経度は本初子午線から測定された値であり,- 180° から 180° の範囲にある.緯度とは赤道面から測定された値であり,-90° から 90° の範囲にある.-90° とは南極点であり,90° とは北極点である.
本初子午線から東へ向かう経度は正の値で記述されるか末尾に E の文字が追記される.本初子午線から西へ向かう経度は負の値で表現されるか,末尾に W が追記される.同様に,赤道面からの北緯は正の値として表現するか N の接尾辞がつく.一方,赤道面からの南緯は負の値として表現するか S の接尾辞がつく.
経度と緯度の値を表現するにはいくつか受け入れられている記法がある.最も一般に使われている方法は度分秒系 (DMS) であり,六十進法としても知られている.この記法では 1 度は 60 分に分割される.1 分はさらに 60 秒に分割される.51 度 15 分 32 秒という値は通常 51°15’32” と記述される.
この記法は GPS 受信機で最も一般的に用いられ,度,分および分の端数の小数の全体を表示するのに用いられる.同じ座標はそれ故に 51:15.53333333 と表記される.
小数記法は度と度の端数の小数を用いて座標を特定するのに用いられ,同じ座標をこの系で表現すると 51.25888889 となる.
小数表記への変換
SQL Server 2008 で用いるために地理座標を経度と緯度で表現したい場合には,小数度表記を用いるべきである.このフォーマットの利点はそれぞれの座標が単精度小数で表現できることである.DMS 座標系を小数記法に変換するには,以下の式を用いると良い.
Degrees + (Minutes/60) + (Seconds/3600) = Decimal Degrees
例えば,the US Central Intelligence Agency’s online edition of The World Factbook ではロンドンの地理座標を次のように示している.51 30 N, 0 10 W
これを小数記法で表記すると次のようになる.51.5 (Latitude), -0.166667 (Longitude)
座標値を DMS から小数表記に変換する際には,有効数字 15 桁まで正確な結果を記述する必要がある.それが,変換された座標の値が SQL Server に格納される精度だからである.
投影座標系
地理座標系とは対照的に,3次元空間,地球の球体モデル内の定義では,投影座標系は地表の地点の位置を平坦な二次元平面上にあるとして記述する.これについて考える単純な方法とは,地球上の位置というよりも,地図上の位置を記述する投影座標系とみなすことである.
仮に地球上のすべての地点が平面上にあると考えると,その平面上の位置を,なじみのあるデカルト座標の x, y を用いて定義できる.x, y はそれぞれ,原点を基準とした x 軸,y 軸からの距離を表す.投影座標系においては,これらの座標値は時に Figure 1-8 に示すように「東座標」(x 座標)や「北座標」(y 座標)と言及される.
投影座標系が,物体の位置を地球の表面を代表する平面上での距離を計算して記述するという理由から,北座標値や北座標値は線形測定単位(メートルやフィートなど)を用いて測定され,計算される.
座標系を地球に適用する
これまでのところ,理論空間内で地点を定義するために用いられてきた二つの座標系について定義した.地理座標系は,経度と緯度の角座標系を使い,投影座標系は x と y のデカルト座標系を使う.しかし,これらのいずれの系にも属しない一群の座標が存在し,地球上の地点を一意に識別できる.この追加の情報は知る必要がある.それらの座標系をどこから測定するのか,単位は何か,地球をモデル化するのに使う形状は何か?このため,空間参照系を検査する他の要素について知る必要がある.つまり,基準点,本初子午線および測定単位である.
基準点
基準点には地球の大きさと形についての情報が含まれている.具体的には,参照楕円体および参照フレームの詳細が含まれている.この情報を使って測地モデルを生成し,我々の座標系に適用できる.
地球の実際の形状は非常に複雑である.その表面には,山脈や渓谷のような不整形のトポロジカルな特徴があるのが見える.しかし仮にこれらの特徴を削除してこの惑星を平均海面とみなすことにしたとしても,地球はなお規則的な形状をしていない.実際,とてもユニークなことだが,地球物理学者たちは,地球の形状を記述するのに単独で使用される特定の単語を知っている.ジオイドという.
地球表面上のジオメトリーの位置を記述するために空間データを使う時には,理想的には,そのジオイドそのものに関連する位置を参照する座標を使いたいだろう.しかし,ジオイドの複雑で不整形の形態を正確にモデル化できる方法は存在せず,代わりに,ジオイドの近似として空間系を基礎としている.この近似を参照楕円体という.
測地学は地球の形態を測量し学習する科学である.測地モデルはゆえに地球の空間のモデルである.
参照楕円体
その名前にも関わらず,ある参照楕円体は正常に扁平回転楕円体を記述する.扁平回転楕円体はある楕円をその短軸周囲に回転させると3次元の形状として観察される.この空間データモデリングを使う時には,地球の回転楕円体モデルは常に扁平になる.その高さよりも幅が広くなり,潰れた球体に似ている.これは,赤道付近で膨らんでいるジオイドの形状のかなり良い近似である.
これは球体の重要な特徴であるが,ジオイドと違って,規則的な形であるとは,二つの変数によって正確に数学的に記述できることである.つまり,半長軸の長さ半長径(赤道面での地球の半径のこと)および短軸の長さ半短径(極点での地球の半径)である.それらを Figure 1-9 に示す.
回転楕円体とは球体を一つの軸で「平らに」したものである.楕円体は球体を二つの軸で平らにしたものである.つまり,球体の半径が x 軸, y 軸, z 軸それぞれで異なるということである.ゆえに,ジオイドの形状を記述するのに,世界の楕円体モデルは球体モデルよりもあまり正確ではない.というよりも参照楕円体はめったに真の楕円体に基づくとは言えず,むしろ単純な球体モデルに基づいている.
ある楕円体の属性を記述するもう一つの方法は,与えられた赤道半径の長さから楕円体の扁平率を求めることである.扁平率 f は楕円体がどの程度「押し潰されているか」を記述するのに使われ,次の式で計算する.
f = (a - b) / a
ここで a は半長軸の長さに等しく,b は半短軸の長さに等しい.
ほとんどの地球の楕円体モデルでは,短軸はわずかに長軸より短い程度であり,これは扁平率もまた小さいことを意味する.典型的には 0.003 前後である.簡略化のために,SQL Server 2008 を含む多くのシステムでは,代わりに扁平率の逆数を使用している.これは 1/f と記述し,次の式で計算する.
1/f = a / (a - b)
楕円体モデルの扁平率の逆数は典型的には 300 付近の値を取る.ジオイド全体の一部を代表するための参照楕円体は一つではない.いくつかの楕円体では,例えば WGS 84 は人工衛星の GPS システムを使う楕円体だが,ジオイド全体の形状の合理的な近似を提供している.他の楕円体では世界のある地域では非常に正確にジオイドを近似しているが,他の地域ではそれほど正確ではない.これらの楕円体は通常,ある特定の国にのみ適用される.例えば Airy 1830 楕円体は普通は英国で使われる.Figure 1-10 では,異なる楕円体モデルによって,ジオイドの異なる部分での精度において,どの程度違うのかを誇張して図示してある.
ジオイドを近似する異なる参照楕円体を指定することが,一群の座標の精度に影響することを認識するのは重要である.その座標は geometry を定義し,その geometry は楕円体が地球上の特徴の正確な位置と形状を反映し,その特徴は geometry が代表する.空間データを定義する楕円体を選択する際には,その楕円体を使って問題のデータが目的に合致するか慎重に検討しなくてはならない.
SQL Server 2008 は,地球の異なる部分で最良のジオイドの近似を求めるよう設計された,多くの異なる参照楕円体を識別する.Table 1-1 に,使用可能な参照楕円体で一般に使われるいくつかの属性を列挙する.
楕円体名 | 長軸 (m) | 短軸 (m) | 扁平率の逆数 | 用途 |
---|---|---|---|---|
Airy (1830) | 6377563.396 | 6356256.909 | 299.3249646 | 英国 |
Bessel(1841) | 6377397.155 | 6356078.963 | 299.1528128 | チェコスロバキア,日本,韓国 |
Clarke(1830) | 6378249.145 | 6356514.87 | 293.465 | アフリカ |
NAD 27 | 6378206.4 | 6356583.8 | 294.9786982 | 北米 |
NAD 83 | 6378137 | 6356752.3 | 298.2570249 | 北米 |
WGS 84 | 6378137 | 6356752.314 | 298.2572236 | 全世界 |
参照フレーム
地球そのものの位置を近似する方法として参照楕円体上の位置を定義するために座標系を使おうとしていることを思い出そう.確立した楕円体モデルを使うと,地球の表面上の正しい位置に並べるためには,そのモデルを配置する方法がいくつか必要になる.これを基準点のフレームを生成することで行う.
基準点は(通常は地球表面上に)位置し,それは,使われている楕円体に関連する座標系内部の座標として知られる.既知のポイントの座標の一群を確立することで,参照楕円体を正しい位置に固定するためにこれらのポイントを使うことができる.一度楕円体をこれらの既知のポイントに基づいて位置を設定すれば,選択した座標系を適用でき,地球上の他のどのポイントでも楕円体モデルに基づいて取得可能となる.基準点は時に,地球自体の場所に割り当てられる.つまり,北米測地系 1927 (NAD 27) は Clarke (1866) 参照楕円体を使い,主にカンザス州ミーダス牧場で位置を固定している.基準点は地球を周回する人工衛星の位置に割り当てられることもあり,GPS システムで使われる WGS 84 が実現している方法でもある.
一体化された時,参照楕円体と地上基準点のフレームの属性は基準点を構成する.全世界で使われる最も一般的な基準点は世界測地系 1984 であり,これを普通は WGS 84 という.これは携帯型 GPS システム同様に MapPoint および Google Earth で使われている.
本初子午線
本章の最初で定義したように,経度の地理座標とは,赤道平面においてその地点から地球の中心に引いた線と,地球の中心から本初子午線に引いた線との間の角度のことである.ゆえに空間参照には,我々が使っている本初子午線の定義の内包を必要とする.それはそこから経度の角度を測定する軸のことである.
よくある誤解の一つは,地球固有の基本的性質に基づいた唯一の本初子午線があるというものであるが,これは誤りである.どの空間参照系の本初子午線も単に経度ゼロの線を提供するよう人為的に選ばれただけで,他のすべての経度の座標はそこから計算で求める.一つの一般に使われる子午線はロンドンのグリニッジを通る子午線であるが,他にも多くのものがある.仮に違う本初子午線を使いたいなら,システムで使用する経度座標の値を全て変更する必要がある.
測定単位
緯度と経度の地理座標は一般に度数で計測されるが,ラジアンや他の角度単位で計測されることもある.あらゆる空間参照系は明示的に,指定した単位から 1 ラジアンへの換算係数とともに,測定された地理座標内の単位を記述しなければならない.例えば,ある空間参照系が度数で測定された座標を使っていて,π/180 の値(近似的に 0.017453293)を含めたいとしよう.この値はラジアンで計測すると 1 度に等しい.
投影座標系を使う時には,個別の座標値は地球表面上のある地点間の直線距離を表現する.それらは線形の計測単位で計測される.例えば,メートル,フィート,マイルやヤードなど.投影座標系に基づくどの空間参照系も,座標値が記述されるところでは,それゆえに線形の計測単位を記述しなければならない.
投影法
投影座標系は地球上の位置を二次元平面上,例えるなら地図上にあるがごとく定義していることを思い出そう.我々は地理空間データをほぼ毎日,二次元平面に投影して見ている.ストリートマップや道路アトラス,またはコンピュータのスクリーンを通して.湾曲した立体よりも平面上で動作するそれらの慣れ親しんだ,見かけ上のシンプルさが与えられると,投影座標系を使って地球上の地点を定義する方が,地理座標系をつかって定義するよりも,何とかしてより簡素であると考え始めるのも無理はないだろう.投影座標系に関する難しさとは,もちろん,地図投影を使わなければならないことである.
投影法とは,地球の三次元モデルを二次元への表現を生成するプロセスである.地図投影は,純粋な地理的手法(例えば古代の地図製作者の使った技術)でも数学的なアルゴリズムでもいずれを使っても構築されうる.しかし,どの手法を使っても,三次元の物体を二次元に投影する際に,結果の画像を何らかの方法で歪曲させることは避けられない.投影のプロセスの結果としてもたらされる歪曲は,地図上に表現される異なる要素の面積や形状,距離,さらには方向にまで影響するだろう.
投影法を変更することで,地図製作者たちは特定の機能についてはこれらの歪みを減らすことができるが,そうすることで他の機能の精度については妥協しなくてはならなくなる.地球上の全ての特徴を最高の状態で表現する唯一の理想的な地図投影などというものは存在しない.時間の経過とともに,異なる目的に合致する地図を生成するために,異なる方法でこれらの歪曲を補正する多くの投影法が開発されてきた.例えば,北極圏を航行する航海士に使われる地図を設計する時には,地球の北極圏の物体の方向と距離に対する精度を最大化する投影法が使われるが,それは赤道周辺諸国の形態の精度を犠牲にしている.
地図投影法を構築するための完全な詳細については本書の範囲を超える.しかし,次の節ではいくつかの一般的な地図投影法やその鍵となる特徴の検査を紹介する.
Hammer-Aitoff Projection
ハンメル図法は正積図法であり,世界を楕円で表示する.正積地図投影法とは相対的な物体の面積を維持するものの一つである.つまり,地図上の特定地域の面積を測定することにした時,それは対応する実際の世界の面積を代表するということである.しかし,これを行うために,形態的特徴は歪む.Figure 1-11 に示す.
Mercator Projection
メルカトル図法は正角図法の一例である.正角地図投影法とは局所の形態も結果として出力される地図上で維持されるあらゆる投影法である.
メルカトル図法は最初 1569 年にフランドルの地図製作者 Gerardus Mercator により開発され,それ以来広く使われてきた.それは特に航海における航行に使われた.というのは,メルカトル図法で使われた地図を使う時にはすべて,一定の方位をたどる船の経路が地図上では直線として描かれるからである.
メルカトル図法は赤道上の地点は全て正確に描く.しかし,赤道から離れるにつれて,特徴の歪みは,特にその地域の代表においては,ますますひどくなる.この投影法を使うことの一つの批判は,世界中の国々の地理的分布のせいで,多くの先進国は同じ大きさの途上国よりも大きな面積で描かれることだ,というものである.例えば,Figure 1-12 を見て,北米大陸(実際の大きさは 1900 万平方キロ)とアフリカ大陸(実際の大きさは 3000 万平方キロ)との相対的な大きさを比べると,両者はほぼ同じ大きさで描かれている.
この批判にも関わらず,メルカトル図法はなお多くのアプリケーションで一般に使われており,それには Google Map も含まれる.
Equirectangular Projection
正距円筒図法長方形図法は,これまで開発された初期の地図投影法の一つであり,西暦 100 年頃に Tyre のマリヌスが製作した.それは最も簡素な地図投影法の一つでもある.というのは,その地図投影法は x 軸上の経度と y 軸上の緯度との間隔度が等しいからである.
この投影法は空間データ解析には限られた用途しかない.というのは,これはまだ広く認知され,NASA satellite imagery of the world を描く目的で使われているにもかかわらず,地図上の形状の精度も面積の精度も表現できないからである.Figure 1-13 に正方形図法を使って作成した世界地図を示す.
Universal Tranverse Mercator Projection
ユニバーサル横メルカトル図法 (UTM) は単一の投影法ではなく,むしろ並列に配置された多くの投影法で構築されたグリッドである.UTM グリッドは全球を 60 枚に分割し,それをゾーンと呼び,各ゾーンは 6° の幅を持ち,ほぼ北極から南極までの広がりを持つ.そのグリッドは実際には極間距離を完全に有するわけではなく,南緯 80° から北緯 84° までの範囲にある.番号のつけられた各ゾーンはさらに赤道で北部と南部のゾーンに分割される.すべての UTM ゾーンは 1 から 60 までの番号で参照され,赤道より北か南かで N または S の接尾辞が付加される.Figure 1-14 に世界地図上の UTM ゾーンのグリッドを示し,UTM ゾーン 15N をハイライトした.
各 UTM ゾーン内部では,地球の特徴は横メルカトル図法を使って投影される.横メルカトル図法はメルカトル図法と同じ手法を使って開発されたが,横に 90° 回転している.この意味は,歪曲なしに赤道周辺の特徴を描く代わりに,横メルカトル図法が中央南北経線周辺の特徴を歪曲なしに代表しているということである.各 UTM ゾーンが相対的に狭いため,地球上のいかなる特徴もそれに含まれる UTM ゾーン中央経線に極めて近いところに位置しており,各ゾーン内の歪曲は非常に小さくなる.
UTM 投影法は,その定義するシステムが一貫して地球全体適用される限り,普遍的である.しかし,UTM 内部の各ゾーンが独自の投影法に基づいているため,その UTM 地図投影法はそれ自身がある単一の特定のゾーン内でしか正確な特徴を表現できない.
Projection Parameters
使われてきた投影法の手法に加えて,多くの追加すべきパラメーターが存在し,どの投影地図にも影響する.これらのパラメーターを Table 1-2 に示す.(参考:投影パラメータ,筆者注)
Parameter | Description |
---|---|
Azimuth | 方位角.北に対して投影の中心線のなす角 |
Central meridian | 中央子午線.x 座標を計測する際に原点として使われる経線 |
False easting | 記述された座標値が地図の範囲を超えた際に正の値にするために x 座標に加えられる値 |
False northing | 記述された座標値が地図の範囲を超えた際に正の値にするために y 座標に加えられる値 |
Latitude of cetner | 地図投影法の中心地点の緯度 |
Latitude of origin | y 座標を計測する際の原点として使われる緯度 |
Latitude of point | 地図投影法の基づく特定の地点の緯度 |
Longitude of center | 地図投影法の中心地点の緯度 |
Longitude of origin | |
Longitude of point | 地図投影法の基づく特定の地点の緯度 |
Scale factor | スケール因子.地図投影法において歪曲効果を除去するための係数 |
Standard parallel | 標準並列.地図に歪曲機能を持たせない緯度線 |
空間参照系を使う
空間参照系を構成するいくつかの部品を調べたところである.そのシステムによって地球表面上の特徴を定義することができ,地球上の特徴を表現する geometries を構築するために使うことができる.Table 1-3 に各コンポーネントの概要を示す.
Component | Function |
---|---|
Coordinate system | 座標系.数学的枠組みを特定し,原点からの相対的な位置を定義する |
Datum | 基準点.地球のモデルを記述し,その上に座標系を適用する.参照楕円体(地球の形態を近似した三次元の数学的形態)および参照フレーム(ポイントの集合,それにより地球上の正しい地点を並べて楕円体上に位置を決めることができる)を含む |
Prime meridian | 本初子午線.そこから経度を計測するために定義した基準線 |
Projection | 投影法.投影座標を使って位置を定義させるため,地球の表面から二次元の像を生成(例,地図など)するのに詳細なパラメータを要する |
Unit of measurement | 計測単位.座標値を表現するために適正な単位を提供する |
これら全てのエレガントな組み合わせを通じて,空間参照系を使って地球上のいかなる地点も一意に特定できる.
地球上の位置を投影座標系を使って記述できるようにするため,空間参照系はまず三次元の,(地理座標系として使われるであろう)世界の測地モデルを指定しなくてはならず,次に,そのモデルから,二次元に投影された地図像をいかにして生成すべきかという詳細な変数を記述しなくてはならない.この理由で,投影座標系に基づく空間参照系は,地理座標系に基づくのと同じ要素をすべて含まなくてはならず,同様に付加的な変数も投影法に必要とされる.
空間参照識別子
経度と緯度,または x 座標と y 座標を記述する時には必ず,それは geometries の中でただ一点の位置を記述することだが,観察された座標における空間参照系に関しても記述しなくてはならない.空間参照系内に含まれる外部情報がないと,座標タプルは単なる数学系内の数値の集合の要約となってしまう.空間参照は地理的または投影系から座標の要約を取得し,実際の地球表面上の位置に同定できるような文脈にそれらを置く.
しかし,座標のセットを書き留めるたびに基準点や本初子午線および測定単位(そして適用可能な投影法)の完全な詳細を書き出さなくてはならないのは実際面倒である.幸いなことに,さまざまな権威が簡単に覚えられて一意の整数参照番号を割り当ててくれており,空間参照系に必要なパラメーターを全て表現している.これらの参照番号を空間参照識別子 (SRID) と呼ぶ.
SRID を割り当てた一つの権威が the European Petroleum Survey Group (EPSG) であり,その参照識別子系は SQL Server 2008 に実装されている.位置座標の記述を調べる SQL Server における空間機能を使う時はいついかなる時でも,関連する EPSG SRID を常に提供しなくてはならない.
EPSG レジストリにより管理されている空間参照系の全詳細を見たい時は次のウェブサイトを参照のこと.http://www.epsg-registry.org.
SQL Server 2008 における空間参照
SQL Server 2008 は測地空間参照系で支持される全ての詳細を特殊なシステムテーブルに蓄積しており,sys.spatial_reference_systems という.このテーブル内の行は全て一意の空間参照系に対応しており,それにより SQL Server 2008 内の空間データを定義できる.
測地空間参照系で支持されるリストを見たいなら,下記コードを SQL Server Management Studio のクエリウィンドウで実行すればよい.
SELECT * FROM sys.spatial_reference_systems
Table 1-4 に sys.spatial_reference_systems テーブルの各列を列挙して記述した結果を示す.
Column Name | Description |
---|---|
spatial_reference_id | SQL Server 2008 内部で使用される整数の識別子で,このシステム内で参照される |
authority_name | この参照を定義する権限名 |
authorized_spatial_reference_id | このシステムで参照される権限により割り当てられた識別子 |
well_known_text | その空間参照系のパラメータで,既知のテキスト形式で表現される |
unit_of_measure | このシステムの線形測定を表現するために使用される単位のテキスト記述,例えば距離と長さなど |
unit_conversion_factor | メートルから他の測定単位への変換のスケール因子 |
この sys.spatial_reference_systems テーブルには,SQL Server によりサポートされる地理座標に基づく空間参照系のみが含まれる.テーブルに列挙した空間参照系に加えて,次の章で説明するいかなる投影空間参照系を定義することもできる.
現時点では,SQL Server 2008 において空間参照を定義するのに使用された唯一の権威は EPSG であるが,あらゆる内部 SRID はEPSG ナンバリングシステムに基づいている.その結果として,内部の spatial_reference_id の値はどのシステムにおいても authorized_spatial_reference_id と等しくなる.
Well-Known Text Format における空間参照を表現する
この sys.spatial_reference_systems テーブル内部に,SQL Server はそれに関連する詳細な空間データを Well-Known Text (WKT) フォーマットを使って蓄積する.それは,OGC により定義された,空間情報を定義する業界標準規格である.空間参照の WKT 記述は well_known_text 列に文字列として蓄積される.
空間参照を図示する方法は WKT フォーマットに代表される.さて,下記のクエリを走らせて EPSG:4326 空間参照の属性を調べてみよう.
SELECT well_Known_text FROM sys.spatial_reference_systems WHERE authority_name = 'EPSG' AND authorized_spatial_reference_id = 4326
結果を示す(破線とインデントは読みやすくするために付け加えた).
GEOGCS[ "WGS 84", DATUM[ "World Geodetic System 1984", ELLIPSOID[ "WGS 84", 6378137, 298.257223563 ] ], PRIMEM["Greenwich", 0], UNIT["Degree", 0.0174532925199433] ]
この結果を調査して空間参照系の構成要素を同定しよう.
座標系:WKT 空間参照の第1行目はどんな種類の座標系が使われているかを教えてくれるキーワードである.この例では,GEOGCS とは EPSG:4326 が地理座標参照系を使っていることを示している.仮にある空間参照系が投影座標に基づいている場合,WKT 代表は代わりに PROJCS で始まることになる.直後に続く座標系の種類の宣言はこの空間参照の名前である.この例では “WGS 84” 空間参照と記述している.
基準点:DATUM というキーワードに続く値は基準点のパラメーターを提供している.最初のパラメーターは使用される基準点の名前を与える.この例では “World Geodetic System 1984” 基準点である.それに続くパラメーターは参照楕円体である.この空間参照では “WGS 84” という楕円を使い,半長径が 6,378,137 m であり,扁平率の逆数が 298.257223563 である.
本初子午線:PRIMEM の値はこの系がグリニッジを本初子午線と定義していることを示しており,そこでは経度が 0 となる.
計測単位:その空間参照は角度測定の単位が “Degree” と表現されると指定する.0.0174532925199433 の値は変換因子であり,適正な単位に変換する際に必要となる.これは π/180 を示しており,ラジアンから度数へ角度測定を変換する際に必要となる.
地理空間参照と投影空間参照の違い
先述した章の結果と,投影座標系に基づく空間参照系の WKT 表現とを比較しよう.次の例では,UTM ゾーン北緯 10 度のWKT 表現を示しており,北米で使われる投影空間参照系である.この系で使われる SRID は EPSG:26910 である.
投影座標系のための空間参照には,地理座標系のためのパラメーターの完全なセットが含まれる点に注意しよう.それはカッコ内に埋め込まれており, GEOGCS キーワードが続く.この理由とは,投影系はまず地球の三次元の測地モデルを定義しなければならず,ゆえに,いくつかの付加的なパラメーターを指定しなければならないためであり,そのモデルを平面上に投影する必要があるからである.
空間参照系の比較
今や,次の事実に感謝すべきである.つまり,地球上のある所与の地点は多くの異なる座標を使って表現しうることや,一つ一つの地点が特定の空間参照系に対応することに.(逆に,その同じ座標値の集合が,その座標が所有する由来の空間参照系によっては,地球上の異なる地点を参照することになる)地球上の物体を表現するために SQL Server で空間データのアイテムを定義する時はいつでも,次の3つの情報が必要とされる.
- 物体を表現するのに使う geometry の種類(例えば Point, LineString, Polygon など)
- その geometry を定義する各ポイントの座標で,小数度表記で表現される
- その座標が所有される由来の空間参照系の一意の識別子(例,4326)
この実務用語を実証するために,地球上の特定の機能-スコットランドのネス湖-が異なる空間参照系でどのように表現されるか,比較してみよう.この例では,WGS 84 基準点に基づく地理座標系と,National Grid of Great Britain に基づく投影座標系とを使うことにする.
WGS 84
WGS 84 は最も一般的な測地空間参照系であり,GPS システムに使われている.WGS 84 楕円体に基づいており,ジオイド表面全体の合理的な近似を提供する.EPSG reference 4326 により参照される.WGS 84 システムでは,ネス湖は次の座標に位置する Point オブジェクトで表現される.
- Geomtery: Point
- Latitude/Longitude coordinates: (57.3, -4.5)
- SRID: 4326
National Grid of Great Britain
もっぱら国内の位置座標を参照するために,多くの国ではぞれぞれ独自のグリッドシステムを定義している.イギリス,アイルランド,ニュージーランド,マレーシア,シンガポール,オランダおよびスウェーデンは全て国立グリッドシステムを定義しており,それぞれの国内で局所の位置座標を表現するのに一般に使われている.
National Grid of Great Britain は横メルカトル投影法に基づく投影座標系を採用している.横メルカトル図法はメルカトル図法に近似しているが,赤道周辺に位置する形態を描く精度を犠牲にして,地図を回転させて与えられた子午線,つまり地球の両極を南北に走る線の周辺に位置する形態の精度を上げている.これにより横メルカトル投影法は,イギリスのような縦に長く横が狭い地図を描くにはさらに適切となる.基準点は Ordnance Survey of Great Britain 1936 (OSGB 36) であり,Airy 1830 楕円体を採用している.この楕円体はこの地域にわたるジオイドに最適な適合を提供する.この投影法の「真の」原点は北緯 49 度西経 2 度である.しかし,このグリッドシステム内での座標は実際には,真の原点から西に 400 km, 北に 100 km 離れた位置に「偽の」原点から記述されている.座標が計測される元の地点として偽の原点を使うことで,イギリス国内のいかなる地点の座標値も常に正の値となることが確保されている.このシステムの SRID は EPSG:27700 である.
このグリッドシステムは 100 km 四方の正方形の系列を重ね合わせることで構築されており,その系列は偽の原点から始まり,イギリス国土をカバーする.各正方形には 2 文字の識別子が与えられている.システム内の全地点を参照するには,内部に地点の存在する正方形の識別子を記述し,同時に,正方形の左下を起点としてメートル法でその地点の東座標と北座標を記述する.または,東座標と北座標は偽の原点を起点としてメートル法の絶対値で表現することもできる.このように,ネス湖はこのシステムでは次のように表現できる.
- Geometry: LineString
- Easting/northing coordenates: (238172, 808732), (261620, 839938)
- SRID: 27700
National Grid of Great Britain と WGS 84 から得られた座標値の比較を Figure 1-15 に示す.
これらは二つの例に過ぎないことを銘記されたい.この同じ形態が,異なる空間参照系の多くの他の座標セットにより記述できる.
要約
本章を読み終えた後は,地球上の形態の属性を記述するために空間データがどのように使われるのかを理解すべきである.
- 空間データは地球上の形態の代表を生成する.それは規則的な形を定義することにより,選択した形態の形と位置を近似するものである.SQL Server 2008 で使われうる三種類の基本的な形態は Points, LineStrings, Polygons である.地理空間データの中で使われる時,これらの形態は geometries と呼ばれる.
- これらの geometries のそれぞれは,geometries 全体を構成する points の系列の座標値を指定することで定義される.
- 地球上のある地点の位置を定義するには,空間参照系を使う.
- 空間参照系には座標系(投影座標系か地理座標系かいずれかを使って記述する),基準点(地球の形態を表現するモデルを記述する),本初子午線(そこから単位を測定する原点を定義する)および測定単位が含まれる.投影座標系を使ってある地点を記述する時,その空間参照系は使われた投影法の属性をも記述する.
- 地理座標系は物体の位置を緯度および経度と呼ばれる角度座標を使って定義し,それぞれ赤道および本初子午線から測定する.
- 投影座標系は物体の位置をデカルト座標を使って定義し,原点からの物体の距離を x 座標と y 座標を使って計測する.これらは東座標および北座標とも呼ばれる.
- ある地点の座標を記述する時には必ず,関連する空間参照系の詳細を与えることも必須である.空間参照系は付加的な情報を定義し,それにより座標参照に対して地球上のある地点の識別子を適用することができる.
- 簡便のために,空間参照系に単純な整数の識別子を指定することもできる.空間参照識別子 (SRID) という.
- SQL Server 2008 のサポートするすべての測地空間参照系の詳細は,sys.spatial_reference_systems と呼ばれるシステムテーブル内部に格納されている.
“第 1 章 空間情報を定義する (Beginning Spatial with SQL Server 2008)” への1件の返信