PostGISとRubyをsequelでつなぐ

PostGISRubyをsequelでつなぐとシンプルで気持ちがよいです。

sequel をインストール

sequel というのは、the database toolkit for ruby という名前を持ち http://sequel.rubyforge.org/ でホストされているプロジェクトです。次のようにしてインストール可能です。

sudo gem install sequel

コマンド sequel でデータベースにアクセス

sequel をインストールすると sequel というコマンドラインツールが動かせます。psql よりもモダンで、簡単であるように感じます。d:id:hfu:20090616 の規約に従うと、次のような感じで動かすことができます。

$ sequel postgres://happier:more_productive@localhost/fitter
Your database is stored in DB...
irb(main):001:0> DB.tables
=> [:spatial_ref_sys, :geometry_columns, :gsi_fgd_admarea, :gsi_fgd_blda, :gsi_fgd_admbdry, :gsi_fgd_bldl, :gsi_fgd_commbdry, :gsi_fgd_cstline, :gsi_fgd_rdedg, :gsi_fgd_elevpt, :gsi_fgd_wl, :gsi_fgd_rdcompt, :gsi_fgd_commpt, :gsi_fgd_railcl]
irb(main):002:0> DB[:gsi_fgd_cstline].count
=> 1131
irb(main):003:0> DB.fetch("SELECT ST_GeomFromText('POINT (0 0)', 4326)"){|r| p r}
{:st_geomfromtext=>"0101000020E610000000000000000000000000000000000000"}
=> #

すっきり書けて気持ちが良いです。個人的にはデータベース接続設定を URI 風に postgres://happier:more_productive@localhost/fitter と記述できるのはとても嬉しいです。
ハッシュのキーに文字列ではなくてシンボルが使われているのも、geotools.rb でもそのようにしていたので、個人的には好みに合います。

これから

SQL 接続を sequel, HTTP サーバ機能を Rack で実装すると、かなりすっきりとソフトウェアを書ける気がします。当面は sequel を使って PostGIS によるプロセッシングの話を進めてみたいと思います。