[HOWTO] 匯入 ESRI Shapefile 至 PostgreSQL 空間資料庫(postgis)

一、安裝

安裝有好幾種方法,而且都很簡單,如果是 *BSD 平台,就用 ports / pkg_add 之類的套件管理系統,GNU/Linux 例如 Debian ubuntu 就用 aptitude / apt-get 之類的,Mac 就用 Macports 或homebrew。Windows 就去抓 package 自己安裝,例如 http://www.postgresql.org/download/windows/,就…自己看!

要安裝的東西有兩個,第一個是 DBMS,即 PostgreSQL,第二個則是 PostGIS,則是讓 PostgreSQL 具有支援空間資料庫的功能。建議安裝 PostgreSQL > 9.1 版,以及 PostGIS 2.0 以上的版本(因為之後設定比較方便,建議用 2.0 以上版本)。另外如果你是使用 EnterpriseDB 公司所出品的安裝程式,就可以在安裝完 PostgreSQL 後利用 Stack Builder 來選擇延伸模組。

二、設定

先建立一個新的資料庫,可以用 pgAdmin ,或是用 PostgreSQL 的 shell 來建立一個名為 test 的資料庫,然後擁有者是你(選項 -O),並且這個資料庫是 utf8 編碼:

# createdb -E utf8 -l en_US.UTF-8 -O yourusername test

接下來建立 postgis extension,先進入 PostgreSQL shell

# psql -d test

建立 postgis extension

test=# CREATE EXTENSION postgis ;

test=# CREATE EXTENSION postgis_topology;

這樣就讓 PostgreSQL 建立 postgis 支援了!

三、匯入 shape file

這個步驟可以選擇用 QGIS 的 SPIT 延伸套件來匯入,

或是用指令的 shp2pgsql 來匯入:

# shp2pgsql -g geom -W big5 -I -s 3826 -D shpfile > table_name.sql

如果轉換都沒有問題的話,就匯入 psql

# psql -d test -f table_name.sql

之後就可以用 QGIS 連 postgis 資料庫了,如下圖:

Image

另外, postgis 也支援 raster 格式,同樣可以用 raster2pgsql 來匯入

raster2pgsql -s 3826 -t 100×100 -I -C -M raster.tif  | psql -d test

廣告