MapServerとPostGISをインストールする

電子国土WebがOpenLayersを利用したものになっていくようなので、データの展開がXMLからMapServer+PostGISになるんじゃね?という思い込みからインストールしてテストしてみました。
今までもやってみようと思ってはいたものの放置していたんですね。いよいよ放置できない状態になってきました。
一応、debian 6.0.7での作業記録です。


sshしか入れてなかった環境なのでまずはapacheとunzipのインストール

# apt-get install apache2 unzip

MapServer

mapserverのパッケージがあるか確認してそれっぽいのをインストール。

# apt-cache search mapserver
libmapscript-ruby - Ruby MapServer library
mapserver-doc - documentation for MapServer
cgi-mapserver - MapServer 用 CGI 実行ファイル
libmapscript-ruby1.8 - Ruby MapServer ライブラリ
libmapscript-ruby1.9.1 - Ruby MapServer ライブラリ
mapserver-bin - MapServer ユーティリティ
perl-mapscript - Perl MapServer ライブラリ
php5-mapscript - MapServer 用 php5-cgi モジュール
python-mapscript - MapServer 用 Python ライブラリ
# apt-get install cgi-mapserver

今回は5.6.5-2が入りました。そんな古くないはずなのでOKということで。

この後http://%サーバーのIPアドレス%/cgi-bin/mapservにアクセスして下記のような表示がされればOK

No query information to decode. QUERY_STRING is set, but empty. 

一応チュートリアルを動かして動作チェックをする。

# mkdir /var/map
# cd /var/map
# wget http://download.osgeo.org/mapserver/docs/mapserver-tutorial.zip
# unzip mapserver-tutorial.zip

ブラウザからhttp://%サーバーのIPアドレス%/cgi-bin/mapserv?map=/var/map/ms4w/apps/tutorial/htdocs/example1-1.map&layer=states&mode=mapにアクセスして妙な地図が出てくればOKらしいです。

PostGISのインストール

続いてPostGISと周辺ライブラリのインストール

# apt-get install postgresql-8.4-postgis proj gdal-bin

依存関係でpostgresqlごと入りました。


テストデータを落としてきます。国土数値情報ダウンロードサービスのページから東京都のシェープファイルをダウンロードし、適当な方法で/var/lib/postgresql/shapeにZIPを転送してsqlファイルに変換します。

# su - postgres
# mkdir shape
# cd shape
# unzip N03-120401_13_GML.zip
# shp2pgsql -W cp932 N03-12_13_120401 gyosei > gyosei.sql

shp2pgsqlのデフォルト文字コードUTF-8シェープファイルはShift-JISを利用しているので-Wオプションで使用している文字コードを明示する必要があるようです。明示してやれば変換時に文字コードUTF-8にしてsqlファイルが作成されました。
sqlファイルが出来たらPostGISにぶち込みます。

# createdb -U postgres -E utf8 php_sample
# createlang -U postgres plpgsql php_sample
# psql -U postgres -f /usr/share/postgresql/8.4/contrib/postgis-1.5/postgis.sql php_sample
# psql -U postgres -f gyosei.sql php_sample

外部のQGISから接続してPostGISにデータが取り込まれているか確認するためにpostgresqlの設定を変更します。

#  nano -w /etc/postgresql/8.4/main/postgresql.conf
listen_addresses = '*'
# nano -w /etc/postgresql/8.4/main/pg_hba.conf
host all all %ローカルIP%/24 trust

QGISの「ベクタレイヤの追加」→データベースの「新規」を選んで

タイプ PostgreSQL
名称 %適当な名称%
ホスト %サーバーのIPアドレス%
データベース php_sample
ポート 5432
ユーザ名 postgres
パスワード %パスワード%

入力してテスト接続にパスしたら「OK」をクリック。「Open」をクリックしてパスワードを入力すればQGIS上にデータが表示されるはずです。


とりあえずここまでにして、あとは会社にある位置情報資産を電子国土XMLからPostGISに流し込んであげられればOK。
なんですがどうやったらいいものか、もうちょっと調べないといけませんね。