地理空間データを扱う前に知っておきたい地理空間データの心得
地理空間データは座標系やデータの種類、複数データの重ね方など、他のデータとは異なる点が多くあります。本記事では、そんな地理空間データの入門編として押さえて起きたいポイントをまとめました!
普段データを扱われるエンジニアの方でも、地理空間データは「少しハードルが高いな」という印象を持たれる方も多いのではないでしょうか。
座標系やデータの種類、複数データの重ね方など、他のデータとは異なる点が多くあります。
本記事では、そんな地理空間データの入門編として押さえて起きたいポイントをまとめました!
—————
本記事の作成にあたり、藤村英範様にご協力いただきました。
この場を借りて御礼申し上げます。
1. 地理空間データの種類
地理空間データとは
国土地理院によると、地理空間データ(地理空間情報)は以下のように定義されています。
地理空間情報とは、空間上の特定の地点又は区域の位置を示す情報(位置情報)とそれに関連付けられた様々な事象に関する情報、もしくは位置情報のみからなる情報をいう。
ちょっと難しい言葉が使われていますが、要するに位置情報のついたデータのことです。
私たちの周りを見てみると、地理空間データはたくさんあります。
例えば、飲食店の位置情報です。○○駅周辺の居酒屋と検索をかけたり、地図を見ながらレストランに向かう経験がある方も多いのではないでしょうか。これも立派な地理空間データです。
他にも「○○ジャンクションを先頭に何kmの渋滞です。」と言う渋滞情報も、○○ジャンクションという位置情報がついた地理空間データですし、宙畑でたびたびご紹介する衛星データも地球上のある地点を撮影しているので、地理空間データです。
これらの地理空間データは、それぞれ単独のデータとして扱うこともできますが、位置情報を使って、同じ地図上に複数のデータを重ね合わせることで新しい知見を得ることができます。これをマッシュアップと言います。
数あるデータ解析の中でも特殊な知識が必要となる地理空間データですが、ひとたび理解すれば、ビジネスにも役立つより深い解析を行うことができます。
以降では、地理空間データについて詳しくご紹介していきます。
データそのものの形式としては大きく分けて2つあります。ラスタ形式とベクトル形式です。
ラスタ
ラスタ形式は、二次元配列のピクセルにそれぞれ値が入っている形式で、簡単に言うと画像形式です。
ラスタ形式の場合、情報は画像の中の画素値(色)として格納されます。
格納される値として、大きく分けて2種類あります。
一つは、画素値として人が分けた分類に応じて値を入れていくもので、狭義な意味でこれを「ラスタ形式」ということもあります。
例えば地図情報の場合、道や建物がある決まった色で塗られることで、私たちは地図から情報を取得することができるのです。
ラスタ形式の特徴として以下のような点が挙げられます。
・描画速度が速い
・作成に手間がかかる
・機械的に判読することが難しい
もう一つの種類は、衛星データや航空写真などセンサで得られた値を2次元形式で表現するもので、こちらは狭義の画像形式とも呼ばれます。
画素にはそれぞれのセンサで捉えた電波(光を含む)の強さを、デジタル値に変換して格納されています。
この時、画素値は複数のレイヤーに分けて格納されています。
カラー画像は赤・青・緑の3つのレイヤーから構成されています。これはラスタバンドと呼ばれています。カラー画像はこのバンドを合成することによって生成をされているのです。
衛星データの場合、赤・青・緑だけでなく、赤外線の領域なども観測しているためバンドは3つとは限りません。
光の波長って何? なぜ人工衛星は人間の目に見えないものが見えるのか
Geotiff形式・JPEG2000形式
ファイル形式としては、Geotiff形式やJPEG2000形式など、通常の画像形式に対して位置情報を付与した形式のものがよく使われています。
衛星データの場合、一般的な画像よりも1ピクセルあたりのビット数(ビット深度)が多いことがあります。通常のpngやjpegなどの画像では、ビット深度は8bitであることが一般的ですが、12bitや16bitなどその大きさはデータによってまちまちです。
光学画像やSAR画像の処理レベルの高いものはGeotiff形式であるものが多いです。一般的な画像ソフトで扱うことができます。
CEOS形式
衛星データではCEOS(セオス、Committee on Earth Observation Satellites)形式と呼ばれる形式が用いられている場合があります。
CEOS形式の場合、データ毎にどのバイトにどんな情報が格納されているかが定義されており、利用者はドキュメントを確認して所望のデータを取り出す必要があります。
普通の画像と異なる種類の画像(SAR画像)や、生データに近い処理レベルの低い画像ではGeotiffだと落ちてしまう情報もあり、独自のCEOS形式になっています。また、Geotiffが今より一般的になる前の光学画像でもCEOS形式のことがあるようです。
ベクトル
もう一つの形式がベクトル形式です。
ベクトル形式は点、線、面で構成されるデータ形式のことです。
ラスタ形式とベクトル形式は例えるなら、ラスタ形式はPCにプリインストールされているペイントで描かれた地図、ベクトル形式はMicrosoftのPowerPoint(R)やAdobeのIllustratorをイメージしていただくと良いかもしれません。
ベクトル形式では形状の変更や色など表現方法の変更が容易ですが、読み込みはすでに描画されているラスタ形式の方が早いです。
また、その地図上に何が写っているか(例えば、駅や駐車場など)を探す場合、ラスタ形式では目で見て色やマークなどから判断することになりますが、ベクトル形式の場合そういった属性情報がそのまま格納されていれば、人間が探すことも、機械的に探すことも容易です。
ベクトル形式のデータの例として、OpenStreetMapがあります。マッパーと呼ばれる地図を更新していくメンバーは、地図の編集を容易に行うことができます。
ファイル形式
ベクトル形式としてよく用いられる形式としてはShapefile形式、GeoJSON形式、KML形式などが挙げられます。
シェープファイル | GeoJSON | KML | |
提唱者 | Esri社 | ー | Keyhole社
(現Google Earth) |
ベースとなる
データ形式 |
ー | JSON形式 | XML形式 |
エディター | ArcGISを初めとするGISソフト | テキストエディタ | Google マップ
Google Earth
|
備考 | ラスタ形式も扱える |
・シェープファイル(Shapefile)形式
シェープファイル形式はGISソフト大手Esri社が提唱したもっとも一般的な形式で、国土交通省でもこの形式で、行政区域や交通網など様々な情報を公開しています(GISホームページ/国土交通省)。
シェープファイルは複数のファイルで構成されることが特徴です。それぞれの役割は以下の通りです。
拡張子 | 必須 | 説明 |
.shp | ○ | メインのファイル。図形の情報を格納する。 |
.shx | ○ | 図形のインデックス情報を格納 |
.dbf | ○ | 図形の属性情報を格納 |
.prj | 図形の持つ座標系の定義情報を格納 | |
.sbn
および.sbx |
空間インデックスを格納 |
.prjファイル以外のファイルはバイナリ形式であるため、テキストエディタなどで確認をすることは難しい形式で、作成にはGISソフトが必要となります。
.prjファイルがあることにより座標系(後述します)を厳密に定義することが可能な形式でもあります。まさに、プロフェッショナルな利用に向いているファイル形式といえます。
注意点としては、以下のようなシェープファイルのサイズ制限があります。
・ファイルサイズ:それぞれ2GB
・フィールド名:日本語の場合5文字まで(英数字の場合は10文字まで)
シェープファイル | Esriジャパン
https://www.esrij.com/gis-guide/esri-dataformat/shapefile/
・GeoJSON形式
地理空間情報の付いたJSON(JavaScript Object Notation)ファイルのことです。地理空間データを扱ったことがない人でもJSON形式のため、自分で作成しやすく、宙畑でもたびたびご紹介していますね。
名前の通り、Javascriptとの相性が良いことも特徴の一つです。
オープン規格の地理空間データ交換形式であることも特徴であり、地方自治体やではこの形式でデータを公開しているところも多いです。
・鎌倉なびマップ
http://navimap.kcn-net.org/data.html
先ほどのシェープファイルと比較すると、設定できる項目は限られますが、専用のGISソフトがなくとも作成できるなどの利点があります。
【ゼロからのTellusの使い方】スプレッドシートからGeoJSONを作成する
GeoJSONは全体で一つのオブジェクトであるというモデルなので、ファイルサイズが大きくなると取り回しが大変になるという欠点がありますが、それを解消するGeoJSON Text Sequenceという形式もあります。一行ごとに一つのオブジェクトであるというモデルで、容量の大きなデータの取り回しを容易にしています。
・KML形式
KML形式はGoogle Earthの前身であるKeyhole社が開発したファイル形式で、Open Geospatial Consortium, Inc.(OGC)が維持管理する国際標準となっています(実際のところは近年あまり活動はされていないようです)。
KML は地理情報コンテンツを記述する XML 言語のため、適当なエディターがあれば編集することができます。もちろん、Googleマップ(マイマップで作成したファイルをエクスポート)やGoogle Earthでもファイルの作成や閲覧を行うことができます。
衛星データ関連では、欧州の無料の衛星データシリーズSentinelが、今後の観測予定をKMLファイルで公開しています。
・Sentinel-2 › Acquisition Plans
https://sentinel.esa.int/web/sentinel/missions/sentinel-2/acquisition-plans
ただし、Googleマップ上でもマイマップ機能が分かりづらいところに位置されているなど下火になってきているのではないかという向きもあります。
KML よくある質問
https://developers.google.com/kml/faq?hl=ja#whatiskml
2.データを地理空間に載せる(マッピング)
1章でご紹介した地理空間データを実際に地理空間上に投影していく作業が必要です。
また、地理空間上に投影されたデータを取得する際に、知っておくとよいポイントをいくつかご紹介します。
地理院タイル・タイル座標
地理院タイルとは、国土地理院が配信するタイル状の地図データのことです。
地理院タイルについて|国土地理院
https://maps.gsi.go.jp/development/siyou.html
あらかじめ地図をタイル状に分割しておくことで、利用者が閲覧する際、都度画像としての生成が不要で、表示が早いという利点があります。
地理院タイルは、ズームレベルとタイル座標という概念を使って区切られます。
ズームレベルとは、その名の通りどれほど地図をズームするかを表します。
ズームレベル0は、タイル1枚で全世界が表示されるレベルで、数字が増えていく毎にズーム率が高くなっていきます。
タイル座標は、それぞれのズームレベル毎に切られたタイルを、西経180度、北緯約85.0511度の北西端を左上の端点にもつタイルを(0,0)としてX,Yの2つの数字で指定します。
欲しい場所のタイル座標は以下のサイトで確認できます。
・タイル座標確認ページ
https://maps.gsi.go.jp/development/tileCoordCheck.html#5/35.362/138.731
Tellus でもTellus OSでタイル座標を表示させる機能があります。
このように、自分が取得したい場所のズームレベルとタイル座標を指定することで、欲しいエリアの情報を簡単に取得することができるのです。
Tellusの開発環境からTellusのAPIを使って地図を呼び出す場合も同様にズームレベルとタイル座標にて画像を呼び出します。
Tellusで配信しているデータは、オリジナルデータAPIとタイル化されたAPIの2種類があります。タイル化されたAPIの方はおおむね以下のような作りになっています。
https://gisapi.tellusxdp.com/{センサ名}/{scene_id}/{z}/{x}/{y}.png
ここで、scene_idとは衛星が撮影した1枚ごとの画像(シーン)に付与されているIDのことで、非常に大きいのでシーンの中でタイルに分割されています。
測地系
地図投影の際に耳にする言葉として、「測地系」という言葉があります。
測地系は、位置を表す際の基準のことです。位置とは具体的に、座標と標高からなります。
考え方やベースとなる測定結果の違いにより、測地系は日本測地系2011や世界測地系WGS 84など複数存在しますが、現在はどの測地系を使っても解析に大きな影響を与えるものではありませんので、あまり気にする必要はないでしょう。
必要に応じて、それぞれを学ぶようにしてください。
日本の測地系 | 国土地理院
https://maps.gsi.go.jp/development/siyou.html
測地系 | esriジャパン
https://www.esrij.com/gis-guide/coordinate-and-spatial/datum/
投影法
投影法の一例※全ての投影法がこういった形で投影面を図示できるわけではありません。
https://www.esrij.com/gis-guide/coordinate-and-spatial/map-projection/
地球を画面上に表現するためには、球体を平面に投影する必要があります。
球体を平面に投影するため、実際の状態から何かを犠牲にして平面に投影することになります。
何を正確に保つかによっていくつか方式があります。
正角図法 | 正積図法 | 正距図法 | |
正確に保つもの | 角度
(狭い範囲の)形状 |
面積 | 2点間の距離
※全ての距離ではない |
代表的図法 | メルカトル図法
UTM図法 |
モルワイデ図法 | 正距方位図法 |
用途例 | 世界地図 | 分布図 | 飛行機の大圏航路(最短経路) |
・正角図法
メルカトル図法
http://user.numazu-ct.ac.jp/~tsato/tsato/graphics/map_projection/
正角図法は2点間の角度を正しく表現した図法です。
狭い範囲であれば地域の形状が維持される手法です。
ロシアやグリーンランドなど高緯度地域が実際よりも大きく表現されます。
Googleマップや地理院タイル(国土地理院が配布するタイル状の地図データ)などWeb上の地図としてよく用いられる方法に、メルカトル図法があります。Webで用いられるのはその中でも特にWebメルカトル図法と呼ばれる図法です。Tellus OSでもこの図法を採用しています。
メルカトル図法では高緯度地域が歪が大きくなるという欠点がありますが、この点を補う図法としてUTM図法(ユニバーサル横メルカトル図法)があり、国土地理院の中縮尺の地図に使用されています。
第23回 UTM図法(ユニバーサル横メルカトル図法)
https://www.gsi.go.jp/chubu/minichishiki23.html
・正積図法
モルワイデ図法
http://user.numazu-ct.ac.jp/~tsato/tsato/graphics/map_projection/
正積図法は図形の面積が正確な手法です。その分、形状には歪みが生じます。
正積図法の例として、モルワイデ図法があります。
正積図法は面積が正確であるため、上記のような、各地の濃度を表現する分布図によく用いられます。
濃度はある面積あたりの量を示しますが、正角図法では高緯度で本来よりも地図上の面積が大きくなるため、地図上での総量が実際よりも大きく表現されてしまうためです。
・正距図法
正距方位図法
http://user.numazu-ct.ac.jp/~tsato/tsato/graphics/map_projection/
正距図法は、距離について正しく記述しようとする図法です。地図上の全ての距離を正しく記述をする方法はなく、ある条件下の距離が正しい図法です。
正距方位図法は、正距図法の一つで地図の中心と任意の点を結ぶ2点間の距離が正確な手法です。
一方で、面積や形状については歪みが生じています。
距離や方位が正しいため、地図の中心から大圏航路と呼ばれる最短経路が直線で描かれます。
NHK高校講座
第1回 さまざまな地図と地理的技能
【地理情報と地図】編地図で地球を見てみよう
https://www.nhk.or.jp/kokokoza/tv/chiri/archive/resume001.html
ジオコーディング・リバースジオコーディング
皆さんが使いたいデータの中には、地理空間に関係のある情報は持っているもののすぐには地図上には投影できないデータも多いと思います。
例えばカフェの住所はそのままでは地図上に投影することはできません。
これをGoogle マップ上の検索窓に打ち込めば、緯度経度など地図上に投影可能な形に変換することができます。これをジオコーディングといいます。
東京大学空間情報科学研究センターが提供している「CSVアドレスマッチングサービス」では住所をいれたcsvファイルを入力すると緯度経度情報を返してくれます。
http://newspat.csis.u-tokyo.ac.jp/geocode/modules/addmatch/index.php?content_id=1
また、ジオコーディングの逆で、緯度経度情報から住所など人が分かりやすい形に変換することをリバースジオコーディングと言います。
3.まとめ
今回は地理空間情報を扱う上でベースとなる、地理空間データの種類と地理空間上に載せるということについて、ご紹介しました。
色々とややこしそうだなという印象を与えてしまったかもしれませんが、実際には様々なサービスを利用することで、あまり意識せずに使えることも多いです。
例えばTellusでは、Tellus OSというデータの可視化ツールを用意していますが、ここでは上記のようなことを意識することなく、クリックだけで様々なデータを閲覧・簡単な解析をすることができます。
解析を進める中で、用語を見つけて「あれ、これなんだったけな」と思った時には、本記事を確認いただけると幸いです。
次回はさらに踏み込んで、地理空間情報を解析するところまで行ければと思います。