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 のライブラリである GeoTools の Shapefile ライブラリは、日本語の扱いで失敗していましたが、GeoRuby では、失敗がそもそも発生していません。
GeoRuby + Ruby、見直しました。