1.3. PostGIS的介绍与安装¶
1.3.1. PostgresSQL¶
PostgreSQL是一个对象-关系数据库管理系统(ORDBMS),也是目前功能最强大、功能最丰富、最复杂的自由软件数据库系统。它起源于伯克利大学(BSD)数据库目前最强大、功能最丰富和最复杂的研究方案,也是目前最重要的开源数据库产品开发项目之一,拥有非常广泛的用户。
关系数据库+空间数据引擎通常是地理信息系统厂商近年来开发的一种中间件解决方案。用户将他们自己的空间数据提交给独立于数据库的空间数据引擎。有一个空间数据引擎来组织空间数据在关系数据库中的存储;当用户需要访问数据时,他们会通知空间数据引擎,并且有一个引擎。从关系数据库中获取数据,并将其转换为客户可以使用的方式。
1.3.2. PostGIS¶
PostGIS是对象关系数据库系统PostgreSQL的扩展。PostGIS提供以下空间信息服务功能:空间对象、空间索引、空间操作功能和空间运算符。同时,PostGIS遵循OpenGIS的规范。PostGIS的版权被纳入GNU GPL,这意味着任何人都可以自由获取PostGIS的源代码并对其进行研究和改进。正因为如此,PostGIS得到了快速发展,越来越多的爱好者和研究机构参与到PostGIS的应用开发和完善中。
PostGIS支持所有空间数据类型,包括:POINT、LINESTRING、POLYGON、MULTPOINT、MULTILINESTRING、MULTIPOLYGON和GEOMETRYCOLLECTION等。PostGIS支持所有对象表示方法,如WKT和WKB。
以下几个优势:
PostGIS支持所有数据访问和构造方法,例如
GeomFromText()
,AsBinary()
、和GeometryN()等。PostGIS提供简单的空间分析功能(如面积和长度)和其他具有复杂分析功能的功能,如距离。
PostGIS为元数据提供支持,例如
GEOMETRY_COLUMNS
和SPATIAL_REF_SYS
,而PostGIS也提供了相应的支持功能,如AddGeometryColumn
和DropGeometryColumn
。PostGIS提供了一系列二元谓词(如包含、范围、重叠和接触)来检测空间对象之间的空间关系,并返回一个布尔值来表征对象之间的关系。
PostGIS为空间数据操作提供了空间运算符(如Union和Difference)。例如,UNION操作符混合多边形之间的边界。两个重叠的多边形通过并运算形成一个新的多边形,这个新多边形的边界是两个多边形中最大的边界。
有几个功能可用:
Database Coordinate Transformation
:可以将数据库中的几何图形类型从一个投影系统转换到另一个投影系统Transform
功能。中的几何图形类型OpenGIS
所有人都有SRID
作为它们结构的一部分,但出于某种原因,在SFSQL
规格说明OpenGIS
,并且不会引入Transform
。Sphere length calculation
:存储在公共地理坐标系中的集合类型在没有坐标变换的情况下无法执行度数计算。OpenGIS提供的坐标变换使计算积累度类型成为可能。3D geometry type
:SFSQL规范仅适用于2D集合类型。OpenGIS
提供对3D集合类型的支持,特别是使用输入集合类型维度来确定输出表示形式。例如,即使所有几何图形对象都在内部以三维形式存储,纯二维交点通常也以二维形式返回。此外,还提供了几何对象在不同维度之间的转换功能。Spatial aggregate function
:在数据库中,聚合函数是对属性列执行所有数据操作的函数。例如,Sum and Average,Sum是找出关系属性列的数据之和,Average
是找出关系属性列数据的平均值。相应地,空间聚集函数也执行相同的操作,但操作的对象是空间数据。例如,聚合函数Extent返回一系列元素中最大的换行矩形。例如,SQL语句“SELECT EXTEND(GEOM)FROM ROADS”的执行结果将返回Roads数据表中的所有环绕矩形。Raster data type
:PostGIS通过新的数据类型切片为大型栅格数据对象提供存储。切片由以下部分组成:一个环绕矩形,SRID
、类型和字节序列。通过将片大小保持在数据库页面值(32x32)以下,可以实现快速随机访问。
通常,大图片也通过将它们切割成32×32像素的切片来存储在数据库中。
1.3.3. 安装¶
Debian/Ubuntu Linux下的安装命令:
sudo apt install postgresql
sudo apt install postgis
或通过https://www.postgresql.org/download/下载二进制文件:
对于PostgreSQL数据库的管理,我们可以使用 pgadmin
图形用户界面程序。该工具可以通过https://www.pgadmin.org/download/下载。

Pgadmin¶
1.3.4. 使用¶
首先,准备一份 shpfile
档案。

Shpfile显示¶
将shp文件导入数据库有两种方法:
但首先,需要创建一个数据库并添加 PostGIS
, schema
(可选)
sudo -u postgres psql
create database demo;
\c demo
create extension postgis;
create schema shpdata;
方法1¶
pgadmin
插件 import
直接导入:
打开
pgadmin
单击该插件import
;

OpenPG¶
要连接到数据库,请首先创建数据并将其导入
PostGIS
:点击connection
输入要使用的用户名、密码和数据库

Connectionpg¶
提示成功后,请单击
Add file
选择要使用后缀导入的文件扩展名.shp

选择filepg¶
添加后,修改
schema
table
并将其添加到您想要的位置

添加filepg¶
设置完成后,点击
import
如下图所示,表示导入完成。

成功filepg¶
方法二¶
使用命令行工具导入:
shp2pgsql -s 3857 -I dir/xx.shp shpdata.demo | psql -h localhost -p 5432 -d demo -U postgres -W
s
SRID
I I文件所在的地址
h 服务器地址
p 端口
d database name
U 用户名
W 密码
shpdata
schema
- 通过管道将SQL导入数据库

Successpsql¶
1.3.5. 发布¶
输入 GeoServer
操作页面:
选择左侧工作区

新工作区¶
选择新工作区

新工作区1¶
填入
name
、URI
选择范围内的数据
Datastore

新工作区¶
添加新数据存储区

添加存储¶
选择工作空间,填写连接参数数据库、用户名和密码

填写参数¶
保存后,会自动跳转并点击发布按钮

发布¶
设置坐标
参考和边框

新工作区¶
保存后,查找
layer Preview
在左侧菜单栏中

预览¶
单击后,可找到要发布的图层,单击
Openlayers

预览¶
如下所示

预览¶
完整的URL
http://localhost:8080/geoserver.war/demo/wms?service=WMS&
version=1.1.0&request=GetMap&layers=demo%3Akaz_adm2_v079&
bbox=5175449.5%2C4946436.5%2C9719601.0%2C7446127.5&
width=768&height=422&srs=EPSG%3A3857&format=application/openlayers
WMS选定的服务
版本信息
请求方法
请求图层的样式列表
bbox 地图范围(Minx、Miny、Maxx、Maxy)
图层名
窗口的宽度
窗口的高度
SRS空间坐标系(namespace:identifier)
格式