GeoRuby では Shapefile の属性情報を、日本語でも問題なく取り扱える件について

Ruby で幾何データを扱うライブラリ GeoRuby で Shapefile の属性情報を取り出す場合、日本語も OK であることが確認できました。

実証コード

属性名にも属性値にも Shift_JIS コードの日本語が使われていることで有名な、「基盤地図情報閲覧コンバートソフト」で変換した「基盤地図情報(道路縁)」の Shapefile から、属性を取り出す GeoRuby のコードは、以下のようになります。

require 'rubygems'
require 'geo_ruby'
require 'iconv'

include GeoRuby::Shp4r
include GeoRuby::SimpleFeatures
c = Iconv.new('UTF-8', 'Shift_JIS')

ShpFile.open('rdedg.shp') {|shp|
  shp.each {|r|
    r.data.each {|k, v|
      print "#{c.iconv(k)}: #{c.iconv(v.to_s)}\n"
    }
  }
}

これを実行すると、端末文字コードUTF-8 になっている Mac OS X のターミナルで、Shapefile の日本語属性名、日本語属性値を問題なく見ることができました。
GeoRuby は、Ruby らしく、DBF ファイルに入っている文字列を「そのまま」読んでくれるため、読み出した Ruby プログラムの側でいかようにも文字コード変換ができ、成功しています。Ruby の Code Set Independent 思想の、良い反映であるかもしれません。正規化方式をとる Java のライブラリである GeoToolsShapefile ライブラリは、日本語の扱いで失敗していましたが、GeoRuby では、失敗がそもそも発生していません。

GeoRuby + Ruby、見直しました。