SpatiaLite を使ってみる
Windows で SpatiaLite を使用する方法について解説する.
ESRI Shape サンプルファイルの入手
以下の手順で, http://download.geofabrik.de/ から ESRI Shape ファイルをダウンロードする.
- http://download.geofabrik.de/ を開く
- Antarctica の右横の「.shp.zip」をクリック.
- antarctica-latest-free.shp.zip のダウンロードが始まるので確認する.
- ダウンロードしたファイルを展開(解凍)する.
- 展開(解凍)してできたファイルを確認する.
SpatiaLiteのインストール
- 「The Gaia-SINS federated projects の Web ページ」を開く
- MS Windows binaries の current stable version をクリック
x86 (32 bit), amd64 (64 bit) が選べる.どちらを選んだかは覚えておくこと.
以下,amd64 (64-bit) を選んだとして説明を続ける.
- 画面が変わる.「spatialite_gui ...」をクリック.
- ファイルのダウンロードが始まる
- ダウンロードしたファイルを解凍すると spatialite_gui.exe ができるので確認する.
- 確認のため,spatialite_gui.exe を実行してみる.
- 新しい画面が開くので確認する.
以下の手順で動作確認する.
- 先ほどダウンロードした ESRI Shape ファイルを使う.
- 「Load Shapefile」をクリック
- 先ほどダウンロードした ESRI Shapefile を選ぶ.
- 文字コードとして「UTF_8」を選び,「OK」をクリック.
- データが読み込まれる
- 画面が変わるので確認.
- 「gis.osm_natural_a_free_1」のようなテーブルがあるので,
右クリックメニューで,「Edit table rows」を選ぶ.
- テーブルの中身が表示される.(表示されたらOK)
ogr2ogr sample.shp sample.json
ogr2ogr -f "ESRI Shapefile" dst.shp src.shp -dialect SQLITE -sql "select simplify(geometry, 0.001) from org"
- mod_spatialite.dllとmod_spatialite.soの確認
- システム環境変数 Path
- SQLite 3の入手
- プログラム例(Ubuntu 上)
SQLite3コマンド
SELECT load_extension('/usr/local/lib/mod_spatialite.so'); SELECT InitSpatialMetaData();
Python
import sqlite3 import os # mod_spatialiteのあるフォルダをPATHに加える os.environ["PATH"] = os.environ["PATH"] + ';C:\\tool\\spatialite\\mod_spatialite-4.2.0-win-x86' cnn = sqlite3.connect('database/gyouseikuiki.sqlite') # mod_spatialiteの読み込み cnn.enable_load_extension(True) cnn.execute("SELECT load_extension('./mod_spatialite-4.2.0-win-x86/mod_spatialite.dll');") sql = """ SELECT N03_001, N03_002, N03_003, N03_004, N03_007, AsGeoJson(Geometry) FROM "N03-14_140401" WHERE MBRContains("N03-14_140401".Geometry,GeomFromText('POINT(139.692101 35.689634 )')) """ ret = cnn.execute(sql) for r in ret: print('----------------------------') print(r[0].encode('utf_8') ) print(r[1].encode('utf_8') ) print(r[2].encode('utf_8') ) print(r[3].encode('utf_8') ) print(r[4].encode('utf_8') ) print(r[5].encode('utf_8') )
SpatiaLite 4.2.0 SQL functions reference list
http://www.gaia-gis.it/gaia-sins/spatialite-sql-4.2.0.html
The SpatiaLite Cookbook
http://www.gaia-gis.it/gaia-sins/spatialite-cookbook/index.html