GeoRuby で Shapefile の幾何情報を WKT 形式で取り出す方法

Ruby で幾何データを扱うライブラリ GeoRuby で Shapefile の幾何情報を取り出す方法を、入門者向きに説明します。

Ruby と GeoRuby のインストール

Ruby のインストールはできているでしょうか。コマンドラインruby -v として確かめて下さい。プログラムが見つからなければ、http://pub.cozmixng.org/~the-rwiki/rw-cgi.rb?cmd=view;name=Ruby+Install+Guide などを参考に Ruby をインストールして下さい。

GeoRuby は、gem という Ruby 付属のコマンドで導入するものです。GeoRuby が導入されている場合には、

$ gem list georuby

*** LOCAL GEMS ***

GeoRuby (1.3.4)

といった反応が返ります。このような反応が返ってこなかったら、次のようにして GeoRuby をインストールして下さい。

$ sudo gem install GeoRuby
Successfully installed GeoRuby-1.3.4
1 gem installed
Installing ri documentation for GeoRuby-1.3.4...
Updating ri class cache with 2764 classes...
Installing RDoc documentation for GeoRuby-1.3.4...

地球地図日本の行政区域の Shapefile の幾何形状を GeoRuby で読み込む

http://www.iscgm.org/ から、Global Map Version 1 の Japan の Shapefile 形式データをダウンロードして、その中の bnda_1_1.shp から幾何形状を取り出してみましょう。そのためのプログラムは、次のようになります。

require 'rubygems'
require 'geo_ruby'

include GeoRuby::Shp4r
include GeoRuby::SimpleFeatures

ShpFile.open('bnda_1_1.shp') {|shp|
  shp.each {|r|
    print r.geometry.as_wkt, "\n"
  }
}

これを実行すると、地球地図日本の行政区域データそれぞれの MultiPolygon データが OGC Well-Known Text 形式で標準出力に出力されていきます。

これから先について

GeoRuby には、幾何データを検索可能な状態で記録したり、幾何データの処理を行ったりする機能はありません。これから先は、GeoRuby 以外のライブラリを使った作業が入ってきます。これから先の処理として、具体的に考えられるのは、次のようなものです。

  • PostGIS を用いて幾何データの(バッファリングなどの)処理を行う。
  • PostGIS を用いて幾何データを保存し、QGIS 等の汎用 GIS 等から閲覧できる状態にする。
  • JTS を用いて幾何データの(バッファリングなどの)処理を行う。

これから先の処理については、あとで書くことにします。