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。
なんですがどうやったらいいものか、もうちょっと調べないといけませんね。