Ruby で SQLite のデータベースを作成してジオメトリを突っ込む
Ruby で SpatiaLite を作成します。
gem で sqlite3 を入れるのと、システムに SpatiaLite のパッケージを入れるのを忘れずに。
#!/usr/bin/env ruby require 'sqlite3' sqlitefile = "test.sqlite" db = SQLite3::Database.new(sqlitefile) db.enable_load_extension(1) db.load_extension("libspatialite.so") db.enable_load_extension(0) sql = "CREATE TABLE notes (id integer PRIMARY KEY, created text, closed text, the_geom blob);" db.execute(sql) sql = "INSERT INTO notes (id, created, closed, the_geom) VALUES (1,'createdate','closedate',GeomFromText('POINT(139.8333 36)', 4326));" db.execute(sql) db.close()
普通に SQLite を使える状態にした後に拡張機能を読み込みます。
db.enable_load_extension(1) db.load_extension("libspatialite.so") db.enable_load_extension(0)
エクステンションの読み込みを許可
SpatiaLite のライブラリを読み込む
エクステンションの読み込みを不許可に戻す
…とすると OK なようです。
テーブルを作る際には blob 型でカラムを作成しておき、 INSERT や UPDATE する際に当該カラムの値を GeomFromText で作ってやれば OK っぽいです。
GeomFromText は spatialite-cookbook を見れば内容が書かれています。
今回はポイントデータを WGS84 で平面直角座標系9系の原点に置く内容です。
さて、これを踏み台にして作りたかったスクリプトを書きましょうかね。