Spatialite を使ってみる
SpaliteLite は SQLite 3の BLOB 型の属性に空間データを格納し,各種の操作や,空間索引の生成などが簡単にできるようにしたものである.
主要な機能は次の通りである.
- SpatiaLite は SQLite を拡張し空間データを扱えるようにしたもの.
 - AsText(), GeomFromText(), Area(), PointN() などの SQL 空間関数を実装
 - OpenGis が定める関数 Overlaps(), Touches(), Union(), Buffer() など
 - OpenGis が定める空間メタデータ (Spatial metadata)
 - ESRI Shape ファイルのインポートとエクスポート * 手順は、このページで説明
 - 座標の再投影 (PROJ.4 と EPSG geodetic parameters dataset)
 - ロケール・キャラクタセット (locale charsets) ,GNU libiconv を使用
 - SQLite 3の RTree 上に空間索引を実装
 - VirtualShape 拡張.外部の ESRI Shape ファイル,CSV ファイル,TxtTab ファイル上で SQL 問い合わせを評価できる機能
 
Spatialite での主なデータ型は以下のとおりである.
- Point
 - LineString
 - Polygon
 - MultiPoint
 - MultiLineString
 - MultiLinePolygon など
 
Spatialite の cookbook は https://www.gaia-gis.it/fossil/libspatialite/wiki?name=misc-docs
Spatialite の SQL 関数の詳しい説明は: https://www.gaia-gis.it/gaia-sins/spatialite-sql-latest.html
このページでは,次のことを説明する.
- SpatiaLite データベースファイルの生成とメタデータのロード
 - ESRI Shape ファイルの読み込み
 - ESRI Shape ファイルのへの書き出し
 - OpenStreetMap データのファイルからの読み込み
 
Ubuntu での SpatiaLite のインストール手順については別のページで説明している.
SpatiaLite データベースファイルの生成とメタデータのロード
- 最初に,SpatiaLite データベースファイルの生成とメタデータのロードを行う。
 -  メタデータの確認
SELECT * FROM sqlite_master;
- 
Spatialite バージョン 3.0.0 の場合の実行結果例
 - 
Spatialite バージョン 2.4.0 の場合の実行結果例
 
 - 
Spatialite バージョン 3.0.0 の場合の実行結果例
 - 終了するときは「.exit」
 
ESRI Shape ファイルの読み込み
-  ESRI Shape ファイルのファイル名を確認しておく
◆ Ubuntu での実行画面例(ここでは,QGIS が配布しているサンプルデータセットのファイル名を示している)
 -  ESRI Shape ファイルの読み込み操作
読み込みコマンドの書式は次の通り
spatialite_tool -i -shp <ファイルのベース名> -d <SQLite 3 データベース名> -t <テーブル名> -c CP1252 [-s 4326] [-g <読み込み先の属性名,省略可,デフォルト値は「geom」>] spatialite_tool -i -shp <ファイルのベース名> -d <SQLite 3 データベース名> -t <テーブル名> -c CP1252 [-s 4326] [-2] [-k]
「-s」は SRID を指定するためのもの.「4326」は「WGS 84」の意味である.
◆ Ubuntu での実行手順例
spatialite_tool -i -shp qgis_sample_data/shapefiles/regions -d /home/ubuntuuser/SQLite/mydb -t regions -c CP1252 -g Geom
 -  読み込まれたことの確認
- 
Spatialite バージョン 3.0.0 の場合
◆ Spatialite GUI を使って確認
-  まず「Geom」を右クリックし、「Map Preview」を選ぶ
 -  地図が表示されるので確認する
 
◆ Spatialite を使って確認
◆ SQLite を使って確認 (SQLite バージョン 3.7 系列をインストール済みであること)
◆ SQLiteman を使って確認
 -  まず「Geom」を右クリックし、「Map Preview」を選ぶ
 - 
Spatialite バージョン 2.4.0 の場合
◆ Spatialite を使って確認
◆ SQLite を使って確認 (SQLite バージョン 3.7 系列をインストール済みであること)
◆ SQLiteman を使って確認
 
 - 
Spatialite バージョン 3.0.0 の場合
 
ESRI Shape ファイルのへの書き出し
書き出しコマンドの書式は次の通り
spatialite_tool -e -shp <ファイルのベース名> -d <SQLite 3 データベース名> -t <テーブル名> -g geom -c CP1252 [--type POINT]
- 
Spatialite バージョン 2.4.0 の場合
◆ Ubuntu での実行画面例
 
OpenStreetMap データのファイルからの読み込み
- OpenStreetMap データファイルのファイル名を確認しておく
 -  ESRI Shape ファイルの読み込み操作
読み込みコマンドの書式は次の通り
Spatialite バージョン 3.0.0 の場合spatialite_osm_map -o <ファイル名> -d <SQLite 3 データベース名>
Spatialite バージョン 2.4.0 の場合spatialite_osm_map -o <ファイル名> -d <SQLite 3 データベース名> -T<テーブル名> -m
◆ Ubuntu での実行画面例
 -  読み込まれたことの確認
- 
Spatialite バージョン 3.0.0 の場合
◆ Spatialite GUI を使って確認
-  まず「Geom」を右クリックし、「Map Preview」を選ぶ
 - 地図が表示されるので確認する
 
 -  まず「Geom」を右クリックし、「Map Preview」を選ぶ
 
 - 
Spatialite バージョン 3.0.0 の場合
 
Spatialite の関数を使ってみる
- 前準備として、Spatialite バージョン 3.0.0(あるいはそれ以降) をインストールしておく
 -  試しにデータベースを作りたい.
そこで、地図データ」のページで説明している. ファイル fukuoka-city.osm を使うことにする(ファイル fukuoka-city.osm を準備する)
次のコマンドで、データベースを作る
spatialite_osm_map -o <ファイル名> -d <SQLite 3 データベース名>
エラーメッセージが出ていないことを確認する.
-  行数
select count(*) from pg_building;
 -  Geometry のテキスト表示
select *, AsText(Geometry) from pg_building;
 -  Geometry の16進表示
select *,HEX(Geometry) from pg_building;
 -  GeometryType の表示
SELECT *, GeometryType(Geometry) FROM pg_building;
 -  Geometry の Boundary の 表示
SELECT *,AsText(Boundary(Geometry)) FROM pg_building;
 -  Geometry の Envelope の 表示
SELECT *,AsText(Envelope(Geometry)) FROM pg_building;
 -  Geometry の MBR 表示
SELECT *, MbrMinX(Geometry), MbrMinY(Geometry), MbrMaxX(Geometry), MbrMaxY(Geometry) FROM pg_building;
 
 -  行数