上一次用 PostgreSQL 已經是一年多前了,那時是研究 HadoopDB 啦。
最近要使用 PostgreSQL 都忘光光了,就順便再筆記一次,這次用到一些跟圖資相關的 plugin,搞得有點久,果然隔行如隔山啊。
參考資料:
Installing PostgreSQL 8.4, PostGIS 1.4.1, and pgRouting 1.0.3 on Ubuntu 9.10 (Karmic Koala)
Installation - Open Source Routing Library
安裝環境:
Ubuntu 10.04 server 64-bit
流程:
安裝相關環境,雖然只是一道指令,但裝了非常多東西,下載都要一陣子
$ sudo apt-get install postgresql postgresql-server-dev-8.4 postgis proj libgeos-dev libboost-graph-dev libcgal-dev cmake build-essential postgresql-8.4-postgis
安裝 The Genetic Algorithm Utility Library (GAUL)
下載 gaul-devel-0.1849-0.tar.gz
$ tar -xvf gaul-devel-0.1849-0.tar.gz
$ cd gaul-devel-0.1849-0
$ ./configure --disable-slang
$ sudo make install
安裝 pgRouting
$ wget http://download.osgeo.org/pgrouting/source/pgrouting-1.05.tar.gz
$ tar -xvf pgrouting-1.05.tar.gz
$ cd pgrouting-1.05
$ cmake -DWITH_TSP=ON -DWITH_DD=ON .
$ sudo make install
設定相關環境(非必要):
解決 ERROR: could not load library "/usr/lib/postgresql/8.4/lib/librouting_tsp.so": libgaul.so.0: cannot open shared object file: No such file or directory 問題
$ sudo vim /etc/ld.so.conf.d/libgaul.conf
/usr/local/lib/
$ sudo ldconfig
調整 psql 使用權限,讓 192.168.x.x 連進來的可以不作權限確認
$ sudo vim /etc/postgresql/8.4/main/pg_hba.conf
# IPv4 local connections:
host all all 127.0.0.1/32 md5
#host all all 127.0.0.1/32 password
host all all 192.168.0.0/16 trust
使用範例:
$ createdb -U postgres -E UNICODE template_postgis
$ createlang -U postgres -d template_postgis plpgsql
$ psql -U postgres template_postgis < /usr/share/postgresql/8.4/contrib/postgis.sql
$ psql -U postgres template_postgis < /usr/share/postgresql/8.4/contrib/spatial_ref_sys.sql
$ psql -U postgres -c "SELECT postgis_lib_version();" template_postgis
postgis_lib_version
---------------------
1.4.0
(1 row)
$ createdb -U postgres -E UNICODE -T template_postgis mydb
$ psql -U postgres mydb < /usr/share/postlbs/routing_core.sql
$ psql -U postgres mydb < /usr/share/postlbs/routing_core_wrappers.sql
$ psql -U postgres mydb < /usr/share/postlbs/routing_topology.sql
$ psql -U postgres mydb < /usr/share/postlbs/routing_tsp.sql
$ psql -U postgres mydb < /usr/share/postlbs/routing_tsp_wrappers.sql