素人でもはじめられる!地理情報を使うソフトウェア開発!

02/10/2021

A8バナー広告

ある日、突然に地理情報を扱うプロジェクトが降ってきた。

ぼくは地理データについては素人。さて、どうする。という、ことで学んだことを書いていく。

こんなことを書く

  • プロジェクトがどの方向に進むにしても、最低限は知っておきたいことを紹介する。
  • Pythonで地理情報を扱うためのさわり情報を書いておく。

地理情報を扱うために知っておきたいこと

ド素人がいきなり地理情報の世界に放り込まれた時に、こんなことを知っておきたかった。という知識を書く。

GIS: Geographic information system

GISとは要するにソフトウェアである。

GISソフトウェアさえあれば、手元のPCで地理情報をいじるためのことは、たいていなんでもできる。

GISソフトウェアは2大巨塔が存在する。

  1. ESRI
    1. 有料。
    2. サポートついているし、ドキュメントも充実している。
  2. QGIS
    1. 無料。オープンソースプロジェクト。
    2. だいたいのことはQGISで済むと思う。ぼくはQGISだけでプロジェクトを完了させた。

この2つのソフトウェアはこんなことができる。

  • 地理データの取り込み
  • 誰かが作ったメタ情報の取り込み
  • メタ情報の追加 & 編集

メタ情報というのは「ここにヤバイお店ありますよ〜」という情報(Googleマップのピンに相当)だったり、「このルートは鬼門ですよ〜」という範囲情報(Googleマップのルートに相当)である。

建物情報、道情報はすべてメタ情報である。あなたの家の前にある道もメタ情報なしでは、GISソフトウェアは「道」と認識できない。

Google Mapとは何が違うのか?

Google Mapも広義ではGISソフトウェアと言っていい。

ただし、Google Mapは座標系の変換(後述)やImport / Exportに難がある。

なので、Google Mapは「GISソフトウェアのうち、Viewerだけを取り出した」と言ってもいいだろう。

OpenStreetMap

オープンソースのメタ情報プロジェクト。要するにGIS界のWikipediaと思えばいい。

GISソフトウェアは、ベースになる地図情報を用意しないと何もできない。

そこで、OpenStreetMapから地図情報とメタ情報をダウンロードして使う。

イメージとしては、次の流れでOpenStreetMapを使う。

  1. QGISで、OpenStreetMapからフランクフルト地域の地図とメタ情報をダウンロード
  2. フランクフルトのラーメン店一覧のメタ情報を上から付け加える。

地図情報とメタ情報はESRIや他のベンダーが有料で販売していることもある。

もちろん、こうした有料メタ情報を購入して、そして、利用しても良い。

CRS(Coordinate Reference System)とEPSGコード

すべての土地は座標を持っている。座標というと、緯度・経度が一般的だと思う。

たとえば、フランクフルトにある日本領事館は"50.112593, 8.652885″である。

余談だけど、この近くにラーメン屋がある。割とうまい。

この緯度・経度は「球体の地球を平面とみなした場合に割り当てた地点」のことである。

球面を平面にする地図として、メルカトル図法が有名だと思う。

で、ここでポイントなのが、「球体を平面とみなして、数値を割り当てるときに、表現方法が色々ある」ということだ。

余談だが、この記事は良かった。「えっ、緯度・経度じゃないってどういうこと?」という固定概念を簡単に説明してくれた。

Google Mapで使ってるような緯度・経度は WGS84 or EPSG:3857 というコードである。

WGS84というのは、表現計算方法の名前。他にも計算方法はいくつもあって、用途によって使い分ける。

ESPGは表現方法のコード。

たとえば、EPSG: 3857は全世界の地点に数値を割り当てる数値表現方法。

たとえば、ドイツ地域をWGS84で表現しようと思えば、EPSG: 32632というコードも使える。

簡単にまとめると、

  • CRSは計算方法の名前
  • EPSGはすべての計算方法のカタログコード

GISのデータ表現方法

GISソフトウェアは、レイヤーシステムを使う。

Adobe Illustratorに少し似ている。

例えば、街があるとする。ベースの情報は画像でしかない。

この状態では、道・建物の判別はできない。ただの画像だから。

画像の上に「道のレイヤー」・「建物のレイヤー」とレイヤーを重ねると、データとして意味がある地図になる。

Shapefile

ShapefileはGISソフトウェアで一般的なデータImport / Export形式。

Shapefileと「ファイル」っぽい名前のひびきのくせに、実体は複数のファイルから構成される「ファイル群」である。

Pythonと地理情報

データ操作

Pythonは強力に地理情報を扱える(他の言語のことは知らない)

事実、ESRIの有償ソフトウェアはPython向けにライブラリを公開している。

QGISに至っては、プラグインの実装言語はPythonである。

どちらのソフトウェアでも、データ操作の自動化はすべてPythonで可能。

地理情報を使ったWebアプリ

GeoDjangoというものがある。

WebフレームワークのDjangoを地理情報向けに拡張したものと考えればいい。

GeoDjangoを使えば、Djangoのフレームワークでこんなことができる。

  • 地図表示Webアプリ開発
  • 地図編集Webアプリ開発
  • 地図をなにやらデータ加工してどうにかこうにかするWebアプリの開発
  • etc.

ぼくが仕事したプロジェクトでは、GeoDjangoを使った。