地図情報システムとデータベース

【概要】本資料では、地図情報システム(GIS: Geographic Information System)とデータベースを連携させる技術について解説する。OpenStreetMapやESRI Shapeファイルを扱うソフトウェアの導入方法、Rパッケージによる地図データ処理、空間データベースSpatiaLiteの活用、および地図データの入手先を述べる。

【目次】

  1. OpenStreetMap、ESRI Shapeに関係するソフトウェア
  2. osmar
  3. SpatiaLiteのインストールと使用法
  4. 地図データの入手

OpenStreetMap、ESRI Shapeに関係するソフトウェア

OpenStreetMap(OSM)は、世界中のユーザが編集に参加できるオープンな地図データプロジェクトである。ESRI Shapeファイルは、ESRI社が策定したGIS分野の標準的なベクタデータ形式である。本セクションでは、これらのデータを編集・表示するソフトウェアを紹介する。

Merkaartor

Merkaartorは、OpenStreetMapデータ編集用のデスクトップアプリケーションである。軽量で直感的な操作が可能であり、Windows、Linux、macOSに対応している。

JOSM

JOSM(Java OpenStreetMap Editor)は、Javaで開発されたOpenStreetMap用エディタである。プラグインによる機能拡張が可能で、大規模データの編集や複雑な操作に適している。

QGIS

QGIS(旧称: Quantum GIS)は、オープンソースの統合GISソフトウェアである。地図データの表示、編集、空間分析など多様な機能を備え、OpenStreetMapデータやESRI Shapeファイルの読み書きに対応している。商用GISソフトウェアの代替として広く利用されている。

SAGA GIS

SAGA GIS(System for Automated Geoscientific Analyses)は、地形解析や空間統計に特化したオープンソースGISソフトウェアである。ESRI Shapeファイルの読み込みと表示に対応している。

osmar

osmarは、R言語でOpenStreetMapデータを扱うパッケージである。OpenStreetMapサーバやローカルファイルからデータを取得し、Rの標準的なデータ操作手法で処理できる。統計解析や可視化とGISデータを組み合わせる場合に有用である。

注意: osmarパッケージは2022年6月にCRANリポジトリから削除された。アーカイブ版は引き続き入手可能だが、現在はメンテナンスされていない。代替として、osmdata パッケージの利用を検討されたい。

osmarを用いたデータ処理の基本的な流れは以下のとおりである。

  1. find()関数で、条件に合致するnode(点要素)やway(線・面要素)のIDを取得する
  2. subset()関数で、取得したIDに基づきデータの部分集合を作成する
  3. plot()関数で、作成した部分集合を地図上に描画する

SpatiaLiteのインストールと使用法

SpatiaLiteは、SQLiteデータベースに空間データ機能を追加する拡張ライブラリである。PostGIS(PostgreSQL用の空間拡張)と同様の空間SQL機能を、サーバ不要の軽量なファイルベースデータベースで利用できる。小規模プロジェクトや単体アプリケーションへの組み込みに適している。

地図データの入手

地図データの主な入手先として、オープンデータプロジェクト、政府機関、宇宙機関などがある。


参考メモ

以下は関連する追加情報および作業メモである。

関連リンク

SpatiaLiteリソース

SpatiaLite公式リソースサイト: http://www.gaia-gis.it/spatialite/resources.html

主な内容は以下のとおりである。

  1. Sampleデータベースを使ってみる
  2. SQL Scripts
    • init_spatialite-2.3.sql: 空間メタデータテーブル(geometry_columnsおよびspatial_ref_sys)の初期化に必要
    • テストスクリプト集
    • OpenStreetMapデータの読み込み
    • Shapefileの読み込み
    • 空間インデックスの構築(geometry属性に対して)
    • 空間クエリの例: select * from roads where MBRContains(BuildMBR(7.5,46.5,7.6,46.6),Geometry) = 1
  3. Cサンプルプログラム

その他のメモ