PostgreSQL,PostGISを入れて、ReFITSの逆ジオコーディング配布プログラムを導入してみる。

ブログ | 2008/8/29 19:09
OSX Tigerにて。

1) PostgreSQLとPostGISはパッケージでインストール
http://www.kyngchaos.com/wiki/software:postgres
・PostgreSQL 8.3.3-1 [34.1 MB]
・PostGIS 1.3.3-1 [1.5 MB]
上記ページの指示どおりPostGISには、「GEOS 3 and PROJ」なるフレームワークが必要。
http://www.kyngchaos.com/wiki/software:framework...
・GEOS framework v3.0.0-2 [2.8 MB]
・PROJ framework v4.6.0-1 [3.7 MB]
それぞれインストール。(PostGISが最後)

2) データとPHPプログラムを下記から申し込んで、ダウンロードする
逆ジオコーディングサービス 配布サイト http://www.aginfo.jp/rg/index.html

3) なんとなくphpPgAdminをいれておきます。
http://futuremix.org/2004/05/phppgadmin
を参照にしながら、
http://phppgadmin.sourceforge.net/
でダウンロード。

3) Terminalで作業
webminでユーザーpostgresのパスワードを不要にでもしてみる。

su postgres  (ユーザーpostgresになる)
/usr/local/pgsql/bin/postmaster -D /usr/local/pgsql/data
(なんとなく起動)

ReFITSからダウンロードしたデータ
rg-data-2007 > README.txt を読みながら
cd /usr/local/pgsql/bin
./createdb ksjdistrict -E UTF-8
./createlang plpgsql ksjdistrict
./psql ksjdistrict -f /usr/local/pgsql/share/lwpostgis.sql
./psql ksjdistrict -f /usr/local/pgsql/share/spatial_ref_sys.sql

基礎がないのでやたら躓くが、webminやらphpPgAdminやらで様子を見ながら、どうにか進める。

で、次にダウンロードしたデータを読み込む。
rg-data-2007は、/Users/Shared/rg-data-2007 にでもおいておく。(ユーザーpostgresで動いているため、デスクトップとかではアクセスできない)
cd /Users/Shared/rg-data-2007
/usr/local/pgsql/bin/psql ksjdistrict -f mncpl/createtable.sql
/usr/local/pgsql/bin/psql ksjdistrict -f mncpl/data_raw.sql (数分かかる)
/usr/local/pgsql/bin/psql ksjdistrict -f ref/createtable.sql
/usr/local/pgsql/bin/psql ksjdistrict -f ref/data_ref.sql (数十分かかる)
/usr/local/pgsql/bin/psql ksjdistrict -f ref/additionalinfo.sql

バキュームる(意味は知らない)
/usr/local/pgsql/bin/vacuumdb ksjdistrict

wwwでアクセスできるようにする
cd /usr/local/pgsql/bin
./createuser www
./psql ksjdistrict -c "GRANT SELECT ON TABLE g_raw TO www"
./psql ksjdistrict -c "GRANT SELECT ON TABLE g_ref TO www"
./psql ksjdistrict -c "GRANT SELECT ON TABLE t_refcnt TO www"
./psql ksjdistrict -c "GRANT SELECT ON TABLE spatial_ref_sys TO www"

ローカル内の違うマシン(192.xxx.xxx.xxx)からアクセスしたい。というか、サブマシンにpostgreSQLをインストールしたので、メインのWEBサーバーマシンからアクセスできるようにする。
設定ファイルを編集。(postgresql.confとpg_hba.conf)

CotEditorで編集したいので(viとかよく知らない)、
kuwaにする
sudo chown kuwa /usr/local/pgsql/data

/usr/local/pgsql/data/pg_hba.confに、下記を追加。
host    all         all         192.xxx.xxx.xxx/32          trust
/usr/local/pgsql/data/postgresql.confに、下記を追加。
listen_addresses = 'localhost,192.xxx.xxx.xxx'

postgresに戻す
sudo chown postgres /usr/local/pgsql/data

/usr/local/pgsql/bin/postmaster -i -D /usr/local/pgsql/data (なんとなく-iをつけてもう一度起動。ちなみに終了の方法などはわからない。)

ファイアウォールを設定しているなら、ポート5432を開けとく。

PHPファイル
phpsub-dbinfo.php
define('CONNECTION_KSJ', 'dbname=ksjdistrict host=192.xxx.xxx.xxx');

で、なんとなく動いた。
http://api.rottel.net/rg/read

前のと比べると、速くて、境界につよい。
http://api.rottel.net/addr/read

あとは、市区町村合併対応として、住所DBを編集できるようにしておしまいの予定。
▼追記 2008/8/30 19:53
新潟修正するのに、一日かかった・・・。
結構遡る必要がありそうだ。
PostgreSQLとかPostGISの勉強になっていいとも言えるけど大変かも。
▼追記 2008/9/1 01:20
浜松は修正済みだった。

位置参照情報ダウンロードサービスの、座標データがずいぶん増えてるようだ。DBを見ると1500万ポイントを超えてる。ただ、座標の重複がとても多い。削除すると720万くらいまでは縮小できた。
http://nlftp.mlit.go.jp/cgi-bin/isj/dls/_choose_...

最新版データを見ると、新潟も修正されてるようだ。

どうやって追加されていく情報を更新していくかはめんどくさいところだが、逆ジオコーディングはきっとGoogleがAPIを出してくれるに違いないから、ほどほどにしとく。
ご苦労さまです。
郡名と町村名、政令指定都市名と区名の間の、半角スペースの有無が従来と変わってます。
  入間郡三芳町 → 入間郡 三芳町
  浜松市浜北区 → 浜松市 浜北区
mari-papa | 2008/09/02 13:20
kuwa
どうも、報告ありがとうございます。
調整します。
kuwa | 2008/09/02 14:02
縮小 拡大

ログインしておくと、後で編集が可能です。

Rottel内コンテンツ

ユーザー一覧

Rottelとは?
利用規約
開発飲料
利用者の声
ヘルプ
close