PostgreSQL 是一种对象-关系型数据库管理系统
(ORDBMS),也是目前功能最强大、特性最丰富和最复杂的自由软件数据库系统。它起源于伯克利(BSD)的数据库目前功能最强大、特性最丰富和最复杂的研究计划,目前是最重要的开源数据库产品开发项目之一, 有着非常广泛的用户。
“关系型数据库+空间数据引擎”通常是近年来由GIS厂商研发的一种中间件解决方案。用户将自己的空间数据交给独立于数据库之外的空间数据引擎,有空间数据引擎来组织空间数据在关系型数据库中的存储; 当用户需要访问数据的时候,再通知空间数据引擎,有引擎从关系型数据库中取出数据,并转化为客户可以使用的方式。
PostGIS是对象关系型数据库系统PostgreSQL的一个扩展,PostGIS提供如下空间信息服务功能:空间对象、空间索引、空间操作函数和空间操作符。同时,PostGIS遵循OpenGIS的规范。PostGIS的版权被纳入到GNU的GPL中,也就是说任何人可以自由得到PostGIS的源码并对其做研究和改进。正是由于这一点,PostGIS得到了迅速的发展,越来越多的爱好者和研究机构参与到PostGIS的应用开发和完善当中。
PostGIS支持所有的空间数据类型,这些类型包括:点(POINT)、线(LINESTRING)、多边形(POLYGON)、多点(MULTIPOINT)、多线(MULTILINESTRING)、多多边形(MULTIPOLYGON) 和集合对象集(GEOMETRYCOLLECTION)等。PostGIS支持所有的对象表达方法,比如WKT和WKB。
有一下几个优点:
GeomFromText()
、AsBinary()
,以及GeometryN()等。GEOMETRY_COLUMNS
和SPATIAL_REF_SYS
,同时,PostGIS也提供了相应的支持函数, 如AddGeometryColumn
和DropGeometryColumn
。具有的几个功能:
数据库坐标变换
:数据库中的几何类型可以通过Transform
函数从一种投影系变换到另一种投影系中。在OpenGIS
中的几何类型都将SRID
作为自身结构的一部分,但不知什么原因,在OpenGIS
的SFSQL
规范中,并没有引入Transform
。球体长度运算
: 存储在普通地理坐标系中的集合类型如果不进行坐标变换是无法进行程度运算的,OpenGIS所提供的坐标变换使得积累类型的程度计算变成可能。三维的几何类型
:SFSQL规范只是针对二维集合类型。OpenGIS
提供了对三维集合类型的支持,具体是利用输入的集合类型维数来决定输出的表现方式。例如,即便所有几何对象内部都以三维形式存储,纯粹的二维交叉点通常还是以二维的形式返回。此外,还提供几何对象在不同维度间转换的功能。空间聚集函数
:在数据库中,聚集函数是一个执行某一属性列所有数据操作的函数。比如Sum和Average,Sum是求某一关系属性列的数据总和,Average
则是求取某一关系属性列的数据平均值。与此对应,空间聚集函数也是执行相同的操作,不过操作的对象是空间数据。例如聚集函数Extent返回一系列要素中的最
大的包裹矩形框,如“SELECT EXTENT(GEOM) FROM ROADS”这条SQL语句的执行结果是返回ROADS这个数据表中所有的包裹矩形框。栅格数据类型
:PostGIS通过一种新的数据类型片,提供对于大的栅格数据对象的存储。片由以下几个部分组成:
包裹矩形框、SRID
、类型和一个字节序列。通过将片的大小控制在数据库页值(32×32)以下,使得快速的随即访问变成可能。一般大的图片也是通过将其切成32×32像素的片然后再存储在数据库中的。linux下直接命令行安装:
sudo apt install postgresql
sudo apt install postgis
windows下的下载地址:
https://www.postgresql.org/download/
还可以安装图形化界面pgadmin
linux下直接命令行安装:
sudo apt install pgadmin
windows下的下载地址:
https://www.pgadmin.org/download/
首先准备一个shpfile
文件。
将shp文件导入数据库有两种方式:
不过首先都需要创建好数据库,添加PostGIS
,schema
(可选)
sudo -u postgres psql
create database demo;
\c demo
create extension postgis;
create schema shpdata;
pgadmin
插件import
直接导入:
pgadmin
点击插件import
;PostGIS
:
点击connection
输入用户名、密码、要使用的数据库 Add file
选择想要导入的文件后缀名为.shp
schema
table
添加到自己想要方的位置import
如下图显示则说明导入完成。使用命令行工具进行导入:
shp2pgsql -s 3857 -I dir/xx.shp shpdata.demo |
psql -h localhost -p 5432 -d demo -U postgres -W
SRID
schema
进入GeoServer
操作页面:
填写name
、URI
选择数据内数据存储
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