素人でもはじめられる!地理情報を使うソフトウェア開発!
ある日、突然に地理情報を扱うプロジェクトが降ってきた。
ぼくは地理データについては素人。さて、どうする。という、ことで学んだことを書いていく。
目次
こんなことを書く
- プロジェクトがどの方向に進むにしても、最低限は知っておきたいことを紹介する。
- pythonで地理情報を扱うためのさわり情報を書いておく。
地理情報を扱うために知っておきたいこと
ド素人がいきなり地理情報の世界に放り込まれた時に、こんなことを知っておきたかった。という知識を書く。
gis: Geographic information system
GISとは要するにソフトウェアである。
GISソフトウェアさえあれば、手元のPCで地理情報をいじるためのことは、たいていなんでもできる。
GISソフトウェアは2大巨塔が存在する。
- ESRI
- 有料。
- サポートついているし、ドキュメントも充実している。
- QGIS
- 無料。オープンソースプロジェクト。
- だいたいのことは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を使う。
- QGISで、OpenStreetMapからフランクフルト地域の地図とメタ情報をダウンロード
- フランクフルトのラーメン店一覧のメタ情報を上から付け加える。
地図情報とメタ情報は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を使った。
ディスカッション
コメント一覧
まだ、コメントがありません