Mac OS X 用 MapServer (KyngChaos) の Mapscript (ruby) を動作させる

Ruby 版 Mapscript を Mac OS X 上で使えるようにしてみました。

MapServer 導入

http://www.kyngchaos.com/software:mapserver より MapServer 5.4.2-1 を導入。私の場合には FreeType framework を新たに導入する必要がありました。その他の frameworks は QGIS 導入のときに導入済みだったようです。

Mapscript (ruby) 導入

MapServer の配布物の中の説明に従い、ソースを展開し、GD のヘッダファイルと mapscriptvars ファイルをコピーして、ruby extconf.rb , make しますが、ここで一点だけ細かい問題が生じて、次のメッセージで make が停止してしまいます。

ld: file not found: /Library/Frameworks//GDAL.framework/Libraries/libogdi.dylib

これに対しては、対症療法的に

ln -s /Library/Frameworks/GDAL.framework/Versions/Current/Libraries /Library/Frameworks/GDAL.framework/Libraries

で対応すれば十分です。このまま、make , sudo make install できます。

Mapscript (ruby) 動作確認

Mapscript 自体はじめて使うのですが、とりあえず次のように動作確認しました。
マップファイル mapfile.map:

map
  status on
  units dd
  imagecolor 0 0 0
  imagetype gif

  layer
    name 'main'
    connectiontype postgis
    connection "dbname=fitter user=happier password=more_productive host=localhost"
    data "the_geom FROM gsi_fgd_blda"
    type polygon
    status on
    class
      color 255 255 255
      outlinecolor 0 0 255
      symbol 0
    end
  end
end

Ruby スクリプトファイル mapscript.rb:

require 'mapscript'

map = Mapscript::MapObj.new('mapfile.map')
map.width = 500
map.height = 500
map.setExtent(140.9060, 38.2357, 140.9071, 38.2358)
img = map.draw
img.save('a.gif')
$ ruby mapscript.rb

これで建物データが描画された画像 a.gif が作成されました。
マップファイルは RubyDSL っぽい外見で書くこともできそうなので、Ruby 好きからみても、それほど抵抗感なく書けるかも知れません。
背後で動いている処理系が MapServer のものであるだけあって、生成処理がかなり速い気がします。

MapScript? Mapscript?

MapScript のはてなキーワードを作成しようとして気がついたのですが、http://mapserver.org/mapscript/ によると、MapServer のこの手のインタフェースは、正式には MapScript と、S を大文字にして記述するようです。
しかし、Ruby binding のモジュール名は Mapscript と S を大文字にしないものになっています。