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;

 

你可能感兴趣的:(PostGIS,其他)