提醒:教程是基于CentOS 7.6 64位系统下搭建

前言

WebGIS

人类活动中75% ~ 80%的信息与地理空间位置有关, GIS(Geographic Information System,地理信息系统)是一种采集、 处理、储存、管理、分析、输出地理空间数据及其属性信息的计算机信息系统。

随着计算机、网络和数据库等技术的发展,以及应用的不断深化,地理信息系统技术的发展呈现出新的特点和趋势,基于互联网的 WebGIS就是其中之一。WebGIS除了应用于传统的国土、资源、环境等政府管理领域外,也正在促进与老百姓生活息息相关的车载导航、移动位置服务、智能交通、抢险救灾、城市设施管理、现代物流和大数据分析等产业的迅速发展。

随着Internet的迅猛发展和广泛使用, 人们对地理信息系统的需求也日益增长, Internet已成为新的GIS操作平台,它与GIS结合而形成的WebGIS (网络地理信息系统) 是GIS软件发展的必然趋势。 WebGIS也真正成为一种大众使用的工具。目前,网络技术在GIS中的应用主要有三种模式: 集中模式、C/S模式和B/S模式, 其中基于B/S模式的WebGIS是一种新型的模式,用来解决C/S模式下WebGIS所面临的问题和满足用户对信息管理的需求。

最通俗易懂的解释就是,GIS是利用测绘生成纸制地图或者通过航拍以及卫星拍摄生成影像后,将这些数据存储在计算机中,以地图或图片的形式表现出来,然后根据实际生产、生活以及科研中的各种需求,进而提供具体的经过处理的数据。

PostgreSQL

版本:

postgresql-13.5.x86_64

PostgreSQL简介

PostgreSQL是一个免费的对象-关系型数据库服务器(ORDBMS),遵循灵活的开源协议BSD。

PostgreSQL目前是世界上最先进的开源关系型数据库,支持丰富的数据类型(如JSON、JSONB、数组类型及二进制大对象)和自定义类型。提供了丰富的接口。很容易拓展它的功能,如可以在GIST框架下实现自己的索引类型等。

PostgreSQL是完全的事务安全性数据库,完整地支持外键、视图、触发器和存储过程(函数),并支持多种语言开发存储过程,如PL/PGSQL、Perl、Python等。

PostgreSQL优点

  1. 关系型数据库:可存储基本数据类型和json、jsonb类型数据
  2. 扩展性高:支持地理信息处理扩展(PostGIS)
  3. 开源免费:开源软件,可以免费使用
  4. 支持树状结构、图结构数据存储
  5. 没有字符串长度限制
  6. 自带全文检索功能

PostgreSQL安装过程

1. 安装官方yum源

1
yum install -y https://download.postgresql.org/pub/repos/yum/reporpms/EL-7-x86_64/pgdg-redhat-repo-latest.noarch.rpm

安装官方yum源

2. 安装PostgreSQL

本人安装postgresql版本为:13.5,根据需求自行选择。

1
yum install -y postgresql13-server

安装PostgreSQL

此时已经生成pgsql主目录与pgsql数据目录。

1
2
3
4
# 主目录
/usr/pgsql-13
# 数据目录
/var/lib/pgsql/13/data

3. 添加PostgreSQL环境变量

1
vi /etc/profile
1
2
3
4
# 添加以下环境变量
export PGHOME=/usr/pgsql-13
export PGDATA=/var/lib/pgsql/13/data
export PATH=$PGHOME/bin:$PATH:$HOME/bin
1
source /etc/profile

4. 初始化数据并设置自动启动

1
2
3
4
5
6
# 初始化数据
/usr/pgsql-13/bin/postgresql-13-setup initdb
# 设置自启动
systemctl enable postgresql-13
# 启动服务
systemctl start postgresql-13

启动服务

查看初始化数据过程日志:/var/lib/pgsql/13/initdb.log

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
......
fixing permissions on existing directory /var/lib/pgsql/13/data ... ok
creating subdirectories ... ok
selecting dynamic shared memory implementation ... posix
selecting default max_connections ... 100
selecting default shared_buffers ... 128MB
selecting default time zone ... Asia/Shanghai
creating configuration files ... ok
running bootstrap script ... ok
performing post-bootstrap initialization ... ok
syncing data to disk ... ok

Success. You can now start the database server using:

/usr/pgsql-13/bin/pg_ctl -D /var/lib/pgsql/13/data/ -l logfile start
1
2
3
4
# 给用户postgres配置启动命令
sudo echo "su - postgres -c 'pg_ctl start -D /var/lib/pgsql/13/data'" >> /etc/rc.local
# 查看数据库基本配置信息
cat /var/lib/pgsql/13/data/postgresql.conf | grep -v "^$" | grep -v "^#"

查看数据库基本配置信息

5. 启动数据库服务

1
2
3
4
5
6
# root用户,停止服务
systemctl stop postgresql-13
# 切换postgres用户
su - postgres
# postgres用户,启动服务
pg_ctl start -W

启动服务

1
2
3
# 查看数据库版本
psql
select version();

数据库版本

6. 配置服务对外开放

安装PostgreSQL数据库之后,默认是只接受本地访问连接。如果想在其他主机上访问PostgreSQL数据库服务器,就需要进行相应的配置。

配置远 程连接PostgreSQL数据库的步骤很简单,只需要修改data目录下的pg_hba.confpostgresql.conf。 pg_hba.conf:配置对数据库的访问权限 postgresql.conf:配置PostgreSQL数据库服务器的相应的参数

修改 /var/lib/pgsql/13/data/pg_hba.conf文件,添加以下信息:

1
2
# 在节点IPv4 local connections:下添加
host all all 0.0.0.0/0 trust

修改 /var/lib/pgsql/13/data/postgresql.conf文件,添加以下信息:

1
2
# 查找节点#listen_addresses,修改为:
listen_addresses = '*'

7. 修改密码并重启服务

1
2
3
4
5
6
7
8
9
10
11
12
# 切换postgres用户
su - postgres
# 修改默认密码
psql
ALTER USER postgres WITH PASSWORD '密码';
\q
# 停止服务
pg_ctl stop -W
# 启动服务
pg_ctl start -W
# 查看验证
netstat -ntlp

验证成功

8. 远程访问

个人推荐PostgreSQL管理工具:[pdAdmin4](https://www.pgadmin.org/download/ pdAdmin4)

远程访问


PostGIS

版本:

postgis31_13.x86_64

PostGIS简介

GIS数据库,也叫空间数据库(Spatial database),是负责存储处理位置(空间)数据和非空间数据的数据库。

PostGIS是在对象关系型数据库PostgreSQL上增加了存储管理空间数据的能力的开源GIS数据库(理解为PostGIS为PostgreSQL的插件,使得PostgreSQL可以存储空间数据)。

PostGIS通过向PostgreSQL添加对空间数据类型、空间索引和空间函数 的支持,将PostgreSQL数据库管理系统转换为空间数据库。

PostGIS安装过程

1. 检查PostgreSQL是否安装PostGIS扩展插件

1
2
3
4
5
6
# 切换postgres用户
su - postgres
# 连接数据库服务
psql
# 查询扩展安装情况
SELECT name, default_version,installed_version FROM pg_available_extensions WHERE name LIKE 'postgis%' or name LIKE 'address%';

查询扩展安装情况

查询结果显示没有安装PostGIS扩展插件

2. 安装PostGIS扩展插件

1
2
# 查询全部版本postgis安装EPEL源
yum list postgis*

查询全部版本

1
2
# 安装对应版本的PostGIS(PostgreSQL13对应的版本)
yum install -y postgis31_13.x86_64

安装postgis成功

成功安装后,在/usr路径下生成多个PostGIS组件目录

生成postgis组件目录

如提示依赖错误需要安装EPEL源,不同版本操作系统对应不同的EPEL源,如下所示:

1
2
3
4
5
6
# CentOS 7
rpm -ivh http://dl.fedoraproject.org/pub/epel/7/x86_64/e/epel-release-7-5.noarch.rpm
# CentOS 6
rpm -ivh http://dl.fedoraproject.org/pub/epel/6/x86_64/epel-release-6-8.noarch.rpm
# 其它操作系统
# 在官网`http://dl.fedoraproject.org/pub/epel/`查找。

3. 开启PostGIS扩展

1
2
3
4
5
6
7
8
9
10
# 切换postgres用户
su - postgres
# 开启PostGIS多个插件扩展
psql
create extension postgis;
create extension postgis_topology;
create extension fuzzystrmatch;
create extension address_standardizer;
create extension address_standardizer_data_us;
create extension postgis_tiger_geocoder;

每个数据库,需要单独开启各自的PostGIS扩展插件

开启PostGIS扩展

4. 验证PostGIS扩展

1
2
# 执行查询语句不报错,验证成功
SELECT ST_SetSRID(ST_Point(-87.71,43.741),4326),ST_GeomFromText('POINT(-87.71 43.741)',4326)

验证成功

1
2
# 查询全部postgis扩展及其版本信息
select postgis_full_version();

查询全部扩展

GeoServer

版本:

geoserver-2.17.2

GeoServer简介

Geoserver是一个J2EE开发的OpenGIS Web 服务器,可以发布地图服务,给WebGIS开发提供对地图的更新,删除和修改等操作。

GeoServer是OGC Web服务器规范的J2EE实现,利用GeoServer可以方便地发布地图数据,允许用户对特征数据进行更新、删除、插入操作,通过GeoServer可以比较容易地在用户之间迅速共享空间地理信息。

GeoServer特点

  1. 兼容WMS和WFS特性
  2. 支持PostGIS、Shapefile、ArcSDE、Oracle、VPF、MySQL、MapInfo
  3. 能够将网络地图输出为JPEG、GIF、PNG、SVG、KML等格式
  4. 能够运行在任何基于J2EE/Servlet容器之上
  5. 完全开源免费

GeoServer安装过程

由于GeoServer是基于Java开发的。因此在安装之前,必须确保安装了Java。

1. 安装Java环境

GeoServer需要Java 8或Java 11环境

1
yum install java-1.8.0-openjdk

安装java

1
2
# 验证java环境
java -version
1
2
3
4
[root@WSZ031205 ~]# java -version
openjdk version "1.8.0_312"
OpenJDK Runtime Environment (build 1.8.0_312-b07)
OpenJDK 64-Bit Server VM (build 25.312-b07, mixed mode)

1. 远程下载GeoServer压缩包

1
2
3
4
5
6
# 安装wget远程下载工具(如已安装,可忽略)
yum -y install wget
# 下载geoserver压缩文件到当前目录,其中参数`--no-check-certificate`指明无需检查证书
cd /home
wget https://nchc.dl.sourceforge.net/project/geoserver/GeoServer/2.17.2/geoserver-2.17.2-bin.zip --no-check-certificate
cd

下载成功

2. 解压GeoServer压缩包到指定安装目录

1
2
3
4
5
6
# 安装解压工具(如已安装,可忽略)
yum -y install unzip
# 创建geoserver安装目录(建议位置:/usr/share/geoserver)
mkdir /usr/share/geoserver
# 解压geoserver压缩包到安装目录
unzip geoserver-2.17.2-bin.zip -d /usr/share/geoserver/

解压完成

3. 添加环境变量

1
2
3
4
5
6
# 添加以下环境变量
echo "export GEOSERVER_HOME=/usr/share/geoserver" >> /etc/profile
# 立即生效
source /etc/profile
# 验证
cat /etc/profile | tail -2

添加环境变量

4. 启动GeoServer服务

1
2
3
4
# 启动并后台运行,日志输出到指定文件中
nohup ./startup.sh > /usr/share/geoserver/logs/log.txt 2>&1 &
# 关闭服务
./shutdown.sh

5. 登录GeoServer的Web管理系统

浏览器访问http://ip:8080/geoserver,默认用户名:admin,密码:geoserver

geoserver首页

6. 修改登录密码


7. 初步使用GeoServer的Web管理系统

1. 初步认识

GeoServer的控制和管理是基于网页形式,所有和GeoServer相关的操作都要通过这个Web管理界面来进行,包括全局设置、数据发布与服务配置等。

与ArcMap、QGIS将整个地图处理为.mxd或.qgs不同的是,GeoServer使用的是图层与图层组的概念。将在服务器上准备发布为服务的数据定义为一组数据集,然后规定在发布为Web服务时的一些参数。

GeoServer在安装后已经自带了一些样例图层与服务。

2. 预览图层

在GeoServer的Web管理页面的左边菜单的数据部分,单击Layer Preview菜单项,将在页面的右边部分列出了所有可预览的图层。滚动找到USA图层USA Population,如下图所示,然后单击OpenLayers链接。

预览图层
预览图层

此外,还可以从每行的最右边的下拉列表框中选择WMS>OpenLayers,实现同样的功能。仔细查看下拉列表框中的内容,了解GeoServer支持的不同输出格式。

在GeoServer图层预览列表页面,滚动到Tasmania图层组(绿色的正方形符号)行,单击OpenLayers链接,使用OpenLayers打开Tasmania图层组,可以看到3个图层都显示在地图中了。


3. 初步使用

创建工作区(命名空间URI可随意写一个地址,建议勾选为默认工作区)


添加数据存储


发布数据(数据源添加成功后会自动跳转至图层界面)


预览新发布的图层


至此,初步完成PostgreSQL+PostGIS+Geoserver的环境部署