Sequel::Dataset に Shapefile 出力メソッドを付加してみる

Sequel::Dataset は必要な情報をよく覚えておいてくれるので、pgsql2shp の呼び出しによる Sequel::Dataset の Shapefile 出力機能を簡単に書くことができました。

実装

class Sequel::Dataset
  def to_shp(path)
    qi = self.quote_identifiers?
    self.quote_identifiers = false
    cmd = "pgsql2shp -f #{path} -h #{self.db.opts[:host] or 'localhost'} -p #{self.db.opts[:port] or 5432} -P #{self.db.opts[:password]} -u #{self.db.opts[:user]} #{self.db.opts[:database]} \"#{self.sql}\""
    system(cmd)
    self.quote_identifiers = qi
  end
end

ダブルクォートの入れ子の問題があり、Sequel::Dataset#quote_identifier を強制的に false にしています。これでは、属性名が日本語の場合等にうまく対応できていないと思います。あとで考えます。