暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

「瀚高数据库技术栈」PostGIS 介绍

瀚高数据库 2022-12-21
3867











 1 



GIS是什么

随着时代的发展,业务的发展,数字化的推进,数据形式的多样性发展,空间数据应用的深入和广泛,空间数据的分析和管理,海量空间数据访问的高性能需求等随之与日俱增。
地理信息系统(Geographic Information System,简称GIS)是用来采集、存储、处理、分析、检索和显示空间数据的计算机系统。GIS的主要功能是空间分析能力,是从空间物体的空间位置、联系等方面去研究空间事物,以及对空间事物做出定量的描述。
GIS数据库,也叫空间数据库(Spatial database),是负责存储处理位置(空间)数据和非空间数据的数据库。GIS数据具有多源异构、海量、非结构化等特征,基于关系型数据库实现空间数据的高效存储、分析和管理是GIS领域非常重要的研究方向。

 2 



GIS应用

GIS应用广泛,可应用于地质普查、资源调查、城市规划、自然资源,可应用于管理与人体解剖、大规模集成电路、分子结构,也可应用于政务信息化、企业信息化和个人信息服务等领域。

 3 



PostGIS是什么

PostGIS是一个开源空间数据库,是开源对象关系数据库系统PostgreSQL的扩展,是在PostgreSQL上增加了存储管理空间数据的能力,提供空间数据类型、空间索引、空间操作函数和空间操作符等空间信息服务功能。PostGIS与PostgreSQL的结合,使得数据库管理系统对空间数据的管理更加高效。
PostGIS用于分析和处理GIS对象,允许将GIS对象存储在数据库中。图形类型(Geometry)是PostGIS的核心,可以把地图的视觉化效果和地理分析功能与数据库操作(如:查询、统计分析等)集成在一起。
PostGIS遵循OpenGIS的规范,支持所有的开放地理空间信息联盟(Open Geospatial Consortium,简称OGC)的标准。OGC是为制定与空间信息、基于位置服务相关标准的标准化组织。PostGIS在OGC的标准基础上,扩展了对 3DZ、3DM、4D坐标的支持,以实现对包含GIS函数、矢量、栅格等各种不同类型的空间数据的全面支持。
PostGIS遵守GPLv2协议,任何人可以自由得到其源码并做研究和改进。PostGIS由C语言编写,目前最新版本为3.4。
各版本文档可参考:
http://postgis.net/documentation/。

 4 



PostGIS应用

PostGIS支持空间数据的存储、输出、访问、编辑、处理、关系判断和测量等;支持拼接、切割、形变、重分类、聚合等矢量数据和栅格数据,能导入GeoTiff、NetCDF、JPG等栅格数据;能导入KML、GML、GeoJson、GeoHash、WKT等矢量数据;支持3D对象;支持Gist等空间索引。
瀚高的GIS组件基于PostGIS,以下以瀚高的GIS组件结合瀚高数据库为例,介绍PostGIS在矢量数据、栅格数据、空间索引等空间数据类型方面的应用。
4.1 矢量数据
矢量数据包括点、线、面、多点、多线、多面及几何集合(即:点线面混合的复合对象)。矢量数据不会随缩放比例而失真。如下为PostGIS存储矢量数据的应用示例:
插入点、线和多边形数据的矢量数据并查询:
  (1) 插入点数据;

create table t_point(gid serial primary key,name text,geom geometry(point,4326));
insert into t_point values (1,'点','point(0 0)');


  (2) 插入线数据;

create table t_line(gid serial primary key,name text,geom geometry(linestring,26910));
insert into t_line values (1,'线','linestring(0 0,1 1,1 2)');


  (3) 插入多边形数据;

create table t_polygon(gid serial primary key,name text,geom geometry(polygon,26910));
insert into t_polygon values (1,'面','polygon((0 0,4 0,4 4,0 4,0 0),(1 1, 2 1, 2 2, 1 2,1 1))');


          

(4) 
查询数据。
select * from t_point;
select * from t_line;
select * from t_polygon;
4.2 栅格数据
栅格数据用来处理照片、图片、影像等数据,PostGIS可存储栅格数据,并实现对照片、图片、影像等数据的统计分析。比如在气象行业里,通过把一张格网的全部格点投影到一张图像上,利用PostGIS的矢量栅格化,栅格矢量化等格式转换功能,对气象栅格数据进行分析和可视化。如下为PostGIS存储栅格数据的应用示例:

建表并插入栅格数据:

' || '0000000000000000' || '00000000' || '0A00' || '1400' )::raster ), (2,  ('01000003009A9999999999A93F9A9999999999A9BF000000E02B274A' || '41000000007719564100000000000000000000000000000000FFFFFFFF050005000400FDFEFDFEFEFDFEFEFDF9FAFEF' || 
'
EFCF9FBFDFEFEFDFCFAFEFEFE04004E627AADD16076B4F9FE6370A9F5FE59637AB0E54F58617087040046566487A1506CA2E3FA5A6CAFFBFE4D566DA4CB3E454C5665')::raster);
select st_srid(rast) as srid from t_rast;

4.3 空间索引
PostGIS支持Brin、R-Tree、Gist等空间索引。如下为Gist索引的应用示例:

(1) 创建包含几何类型表并插入10万条数据;

create table t_gist(id int, pos point);
insert into t_gist select generate_series(1,100000), point(round((random()*1000)::numeric2), round((random()*1000)::numeric2));

(2) 创建GIST类型索引;

create index idx_t_gist on t_gist using gist(pos);

(3) 使用查询语句并显示执行计划,确认使用了GIST索引。

explain (analyze,verbose,timing,costs,buffers) select * from t_gist where circle '((100,100) 10)'  @> pos;

4.4 空间函数
OGC定义了两种描述几何对象的格式,分别是WKT(Well-Known Text)和WKB(Well-Known Binary)。WKT用于表示点、线、面、多点、多线、多面及几何集合这些矢量数据中的几何对象;在数据传输与数据库存储时常用的二进制形式,即WKB。如下为WKT和WKB的应用示例:
(1) 获取几何对象的WKT描述;
select ST_AsText(geomfrom t_point;
select ST_AsEWKT(geomfrom t_line;
select ST_AsText(geomfrom t_polygon;
(2) 获取几何对象的WKB描述;
select ST_AsBinary(geomfrom t_point;
select ST_AsBinary(geomfrom t_line;
select ST_AsBinary(geomfrom t_polygon;

4.5 超图应用
瀚高的GIS组件已全面支持空间基础平台、空间规划、智慧城市时空大数据平台等GIS业务系统,对超图软件的各个主流版本也已全面支持和兼容。GIS组件与超图的结合给空间数据带来了可视化的效果。如下为应用示例:
(1) 建立空间表,插入矢量数据,在超图iDesktopX软件中查看该表;
建立空间表:
create table stations ( id varchar(12) primary key, lonlat geometry(Point,4326), area float8, polygon geometry(Polygon,4326) );
插入数据:
insert into stations (id, lonlat, area, polygon) VALUES ('A12345',ST_GeomFromText('POINT(121.50 31.22)',4326),22222.1234,ST_GeomFromText('POLYGON ((121.71436091670316 31.38080337674083, 121.70173615072089 31.388605486784197, 121.70751628677645 31.4199972067024, 121.71832867120243 31.437168981489133, 121.73193985623796 31.37984624401758, 121.71436091670316 31.38080337674083))',4326));

(2)  继续插入矢量数据,在超图iDesktopX软件中查看该表;
insert into stations (id, lonlat, area, polygon) VALUES ('A12347',ST_GeomFromText('POINT(121.50 31.22)',4326),22222.1234,ST_GeomFromText('POLYGON ((121.71436091670316 31.38080337674083, 121.70212345678233 31.388605486784197, 121.70628392347901 31.4199972067024, 121.71132867120243 31.437168981489133, 121.73193985623796 31.37984624401758, 121.71436091670316 31.38080337674083))',4326));


05



前景广阔

目前市场上的空间数据库除了PostGIS,还有Oracle的Spatial、IBM的DB2 Spatial Extender、微软的SQL Server Spatial等。PostGIS依托PostgreSQL的支撑,得到了迅速的发展,也有越来越多的爱好者和研究机构参与到PostGIS的应用开发和完善当中。
近年来,我国地理信息产业一直保持着较高的发展速度,地理信息系统也在越来越多的行业中扮演重要角色。瀚高早在几年前就已提前布局,完成与超图、特力惠、吉威、臻善、城信所等GIS行业著名厂商的兼容适配。瀚高完成的国土资源部、各省厅、市级、区县等众多成功案例,获得了地理信息领域业界专家的认可及客户好评,也为行业带来深刻价值性改变。此外,瀚高已与超图、华为等公司共同发布了GIS全国产化开放测试平台,将共同致力于该平台在资源共享、协同研发、平台适配、产品评测、应用推广等方面的工作。
未来,随着云计算、移动终端等的快速发展,地理信息产业将会向专业化、普适化、智能化发展。将会有越来越多的人不再依赖于专业终端,可以通过多重媒介访问GIS服务,获得地图数据,满足日益多样的需求。随着国家“全面替代”、“能替就替”的政策推动下,地理信息、水利等GIS相关行业势必迎来更高速的发展。
本期内容就到这里,感谢您的喜欢~
文章转载自瀚高数据库,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论