Ubuntu 16.04 LTS下Postgresql、PostGIS及pgRouting的安裝

本博文參考 http://trac.osgeo.org/postgis/wiki/UsersWikiPostGIS24UbuntuPGSQL10Apt

 

本文說明如何在Ubuntu 16.04上安裝 Postgresql 10、PostGIS 2.4、pgRouting 2.6、pgAdmin,並詳細介紹了創建用戶空間數據庫並安裝postgis、pgRouting擴展,新增超級用戶,使用SHP2PGSQL導入SHP文件、允許外部連接並查看配置文件位置、編輯並安裝使用ogr_fdw等。在Linux Mint、Lubuntu和Xubuntu上同樣適用。

 

1、確認Ubuntu系統的版本

sudo lsb_release -a

2、添加倉庫地址到源列表

對Ubuntu 16.04 LTS(xenial),對其他系統,需要更改下面鏈接中的 別名,具體參考https://www.postgresql.org/download/linux/ubuntu/

sudo sh -c 'echo "deb http://apt.postgresql.org/pub/repos/apt xenial-pgdg main" >> /etc/apt/sources.list'

3、添加Keys並更新

wget --quiet -O - http://apt.postgresql.org/pub/repos/apt/ACCC4CF8.asc | sudo apt-key add -

sudo apt update

4、安裝

依次執行下面的命令,安裝Postgresql 10、PostGIS 2.4、pgAdmin 4和pgRouting以及其他補充模塊,包括adminpack擴展等。

sudo apt install postgresql-10
sudo apt install postgresql-10-postgis-2.4 
sudo apt install postgresql-10-postgis-scripts

#to get the commandline tools shp2pgsql, raster2pgsql you need to do this
sudo apt install postgis

5、安裝pgRouting

# Install pgRouting 2.6 package 
sudo apt install postgresql-10-pgrouting

6、啓動Adminpack

在終端中,以 postgres 用戶登錄到 psql 控制檯,並創建adminpack擴展:

sudo -u postgres psql
CREATE EXTENSION adminpack;

禁止將PostGIS擴展安裝到數據庫 postgres中,創建一個用戶數據庫並使用PostGIS擴展,操作如下:

sudo -u postgres psql --以postgres用戶登錄,默認的數據庫是 postgres
CREATE DATABASE gisdb;
\connect gisdb;  -- 切換到gisdb數據庫

CREATE SCHEMA postgis; --創建 模式postgis
ALTER DATABASE gisdb SET search_path=public, postgis, contrib;
\connect gisdb;  -- this is to force new search path to take effect
CREATE EXTENSION postgis SCHEMA postgis; -- 在模式postgis上創建postgis擴展
SELECT postgis_full_version();

執行完之後,你應該會得到如下的信息:

postgis_full_version ------------------------------------------------------------------------------------------------------------------------------------------------------ ----------------------------------------------------- POSTGIS="2.4.4 r16526" PGSQL="100" GEOS="3.6.2-CAPI-1.10.2 4d2925d6" PROJ="Rel. 4.9.3, 15 August 2016" GDAL="GDAL 2.2.3, released 2017/11/20" LIBXML= "2.9.4" LIBJSON="0.12.1" LIBPROTOBUF="1.2.1" RASTER

如果你需要高級 3D支持,安裝 postgis_sfcgal,如下:

CREATE EXTENSION postgis_sfcgal SCHEMA postgis; 

SELECT postgis_full_version();

你會得到如下信息:

postgis_full_version ------------------------------------------------------------------------------------------------------------------------------------------------------ -------------------------------------------------------------------- POSTGIS="2.4.4 r16526" PGSQL="100" GEOS="3.5.0-CAPI-1.9.0 r4084" SFCGAL="1.2.2" PROJ="Rel. 4.9.2, 08 September 2015" GDAL="GDAL 1.11.3, released 2015 /09/16" LIBXML="2.9.3" LIBJSON="0.11.99" LIBPROTOBUF="1.2.1" RASTER

安裝pgRouting:

CREATE EXTENSION pgrouting SCHEMA postgis; 

SELECT * FROM pgr_version();

你會得到如下信息:

version | tag | hash | branch | boost ---------+--------+---------+-------------+-------- 2.6.0 | v2.6.0 | a6226c4 | release/2.6 | 1.65.1 (1 row)

 

退出psql控制檯的命令:

\q

7、開啓運行客戶端連接

如果允許外部連接,可以執行以下操作:

sudo -u postgres psql
ALTER SYSTEM SET listen_addresses='*'; \q

你可能還需要編輯 pg_hba.conf 或者 pg_ident.conf文件以運行外部連接:

sudo nano /etc/postgresql/10/main/pg_hba.conf

如果允許外部訪問,滾動到 pg_hba.conf的底部並添加如下面一行的內容(它允許所有的客戶端以md5密碼認證的方式訪問):

host  all all 0.0.0.0/0 md5

依次按CTRL+X保存修改,Y將他們寫入文件,ENTER退出。

如果你修改了ip或端口,需要重啓postgresql服務,如下:

sudo service postgresql restart

注意:你也可以從 postgres的 psql控制檯通過以下的命令使修改生效(僅限於不需要重啓的修改操作):

SELECT pg_reload_conf();

8、查看配置文件的位置

通過以下的sql語句(在 psql控制檯執行):

SELECT name, setting FROM pg_settings where category='File Locations';

會輸出類似於下面的結果:

name | setting -------------------+----------------------------------------- config_file | /etc/postgresql/10/main/postgresql.conf data_directory | /var/lib/postgresql/10/main external_pid_file | /var/run/postgresql/10-main.pid hba_file | /etc/postgresql/10/main/pg_hba.conf ident_file | /etc/postgresql/10/main/pg_ident.conf (5 rows)

 

9、創建一個新的Postgresql用戶

可以創建一個新的超級用戶用來代替默認的用戶 postgres,在終端執行以下命令:

sudo -u postgres psql
CREATE ROLE mysuperuser LOGIN PASSWORD 'whatever' SUPERUSER; --mysuperuser可以修改爲自定義的用戶名,whatever可以修改爲安全的用戶密碼

10、通過shp2pgsql-gui導入shp文件

shp2pgsql-gui是另一個方便使用的工具,它允許你連接postgis並快速將shp文件導入數據數據庫。注意,它僅限於在Ubuntu Desktop上使用。

打開終端,鍵入

sudo apt-get install postgis-gui

注意:這來源於Ubuntu的軟件倉庫,Postgresql apt倉庫不再收藏 SHP2PGSQL-GUI軟件包。

 

接下來打開 SHP2PGSQL 應用:

shp2pgsql-gui

按照說明加載數據並執行導入操作即可,更多信息可以參考 http://www.bostongis.com/PrinterFriendly.aspx?content_name=postgis_tut01

10、ogr_fdw用來包裝外部空間數據

不好的一點是 Postgresql APT不包括 ogr_fdw空間數據包裝器,數據包裝器使用GDAL,大量的管道作爲Postgis的一部分已經被安裝。編譯不太困難,在Ubuntu上,我們可以通過以下的操作先編譯後安裝:

#for compiling ogr_fdw
cd ~/
mkdir sources
cd sources
sudo apt-get install git
sudo apt-get install postgresql-server-dev-9.6
sudo apt-get install make
sudo apt-get install gcc
sudo apt-get install libgdal1-dev

sudo git clone -b master https://github.com/pramsey/pgsql-ogr-fdw.git pgsql_ogr_fdw
cd pgsql_ogr_fdw
export PATH=/usr/lib/postgresql/9.6/bin:$PATH 
make && make install

在完成二進制的編譯和安裝後,你可以將 ogr_fdw 擴展安裝到數據庫中:

sudo -u postgres psql

\connect gisdb;
CREATE EXTENSION ogr_fdw SCHEMA postgis;
CREATE SCHEMA IF NOT EXISTS staging ;

-- here I assume you have a file in root of /gis_data folder that postgres process has read rights to
-- any file that gdal can read will do e.g shape file, CSV, etc
CREATE SERVER svr_shp
  FOREIGN DATA WRAPPER ogr_fdw
  OPTIONS (
    datasource '/gis_data',
    format 'ESRI Shapefile' );


-- this will link in all your shapefile tables in folder gis_data as foreign tables
IMPORT FOREIGN SCHEMA ogr_all 
FROM SERVER svr_shp INTO staging;

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章