PostGIS 筆記(一):安裝 PostGIS
我在 Ubuntu 12.10 上進行安裝,先是安裝一系列需要的套件,它們包括編譯器、PostgreSQL Server 9.1 和一系列編譯 PostGIS 時用到的套件。
sudo apt-get install build-essential postgresql-9.1 postgresql-server-dev-9.1 libgeos-c1 libxml2-dev libproj-dev libjson0-dev xsltproc docbook-xsl docbook-mathml libgdal1-dev
然後下載及解壓 PostGIS 原始碼(網址視乎當時的最新版本):
wget http://download.osgeo.org/postgis/source/postgis-2.0.2.tar.gz tar xfvz postgis-2.0.2.tar.gz
進入該資料夾,再進行編譯及安裝:
cd postgis-2.0.2 ./configure make sudo make install sudo ldconfig sudo make comments-install
之後將工具連結起來,以方便直接使用:
sudo ln -sf /usr/share/postgresql-common/pg_wrapper /usr/local/bin/shp2pgsql sudo ln -sf /usr/share/postgresql-common/pg_wrapper /usr/local/bin/pgsql2shp sudo ln -sf /usr/share/postgresql-common/pg_wrapper /usr/local/bin/raster2pgsql
由於這個版本支援 CREATE EXTENSION,所以我們可以先創建資料庫,再在此資料庫上啟用 PostGIS 功能。
利用 postgres 這個用戶創建名為 template_postgis 的資料庫:
sudo -u postgres createdb template_postgis
進入 PostgreSQL 的指令介面:
sudo -u postgres psql template_postgis
啟用 PostGIS 功能:
template_postgis=# CREATE EXTENSION postgis; template_postgis=# CREATE EXTENSION postgis_topology;
由於 PostgreSQL Server 預設只可用其用戶在本機登入,如果想利用其他用戶名稱及密碼登入,需作以下修改:
設定 postgres 用戶也可用密碼登入:
sudo -u postgres psql template_postgis template_postgis=# ALTER USER postgres with encrypted password 'xxxxxxx';
修改 pg_hba.conf 的設定:
sudo vim /etc/postgresql/9.1/main/pg_hba.conf
將第一句改成第二句,即是由直接連接改成密碼登入:
local all postgres peer local all postgres md5
重新啟動 PostgreSQL Server:
sudo service postgresql restart
然後利用 postgres 這個用戶去創建另一個新用戶,user 為新用戶名,按指示輸入密碼。參數可參考說明文件:
createuser -U postgres -d -e -E -l -P -r -s user
再修改 pg_hba.conf 的設定:
sudo vim /etc/postgresql/9.1/main/pg_hba.conf
將第一句改成第二句,也加入第三句:
local all all peer local all all md5 host all all 0.0.0.0/0 md5
為了讓其他電腦也可連接到這台 PostgreSQL Server,所以要修改 postgresql.conf:
將第一句改成第二句:
listen_addresses = 'localhost' listen_addresses = '*'
重新啟動 PostgreSQL Server:
sudo service postgresql restart
之後我們可以利用它的指令介面或利用 pgAdmin III 操作,以下例子修改自這裡:
-- Create table with spatial column CREATE TABLE mytable ( id SERIAL PRIMARY KEY, geom GEOMETRY(Point, 4326), name VARCHAR(128) ); -- Add a spatial index CREATE INDEX mytable_gix ON mytable USING GIST (geom); -- Add points INSERT INTO mytable (geom,name) VALUES (ST_GeomFromText('POINT(114 22)', 4326),'a'), (ST_GeomFromText('POINT(115 23)', 4326),'b');
輸入資料之後便可進行查詢:
SELECT id, name FROM mytable WHERE ST_DWithin( geom, ST_GeomFromText('POINT(114 22.1)', 4326), 0.5 );
若見到以下結果,安裝便算成功:
當然我們亦可使用網頁的介面,先安裝 Apache、PHP 和相關模組,再下載使用 Adminer 或其他工具使用便可:
sudo apt-get install apache2 sudo apt-get install php5 php5-pgsql
參考資料:
PostgreSQL
PostGIS.net
PostGIS.org
How to configure postgresql for the first time?
PostGIS Install Guide
內部連結:
【目錄】地理/地理資訊系統/空間資料庫/大地測量內部連結
本文連結