admin 管理员组

文章数量: 1184232


2024年4月15日发(作者:电脑随机数有什么规律)

一、 PostgreSQL与PostGIS的关系

PostgreSQL 是世界上技术最先进的开源数据库,其前身是1977年一个源于Berkeley名为Ingres的非关

系型数据库,其项目领导人为Michael Stonebraker教授。1982年该教授商业化了Ingres;1985年,Michael

Stonebraker教授回到Berkeley,开始对新的数据库设计进行研究,并于次年在美国防务高级研究项目局

(DARPA)、陆军研究办公室 (ARO)、国家科学基金(NSF)以及ESL, Inc等机构的赞助下启动了Postgres

(Post-Ingres)项目。

Postgres 在1987年形成第一个Demo,1989年发布第一个版本,直到1993年的4.2版本,由于外部用

户过多,做技术支持和维护源代码的时间影响到了对数 据库的研究,因此Berkeley中止了该项目。在此

期间,Postgres项目就已经被使用在了一些GIS系统中。

Postgres项 目并未就此消亡,在1994年两个Berkeley的研究生向Postgres中加入了SQL语言解释器,

将之改名为Postgre95并发布到了互联网 上。经过一些黑客的修改,1996年Postgres95再次更名为

PostgreSQL,并采用BSD许可证发布了第一个开源版本。经过多年发 展,PostgreSQL已经发展成为一

个技术非常先进的开源数据库,其支持特性之多性能之强可与诸多高级商业数据库比肩。

这里提供了一个世界上主流数据库的特性比较,有兴趣的可以从中管窥PostgreSQL在数据库领域中的成

就。

/wiki/Comparison_of_relational_database_management_systems

PostGIS 则是PostgreSQL的一个扩展,目的是使PostgreSQL支持空间数据的存储和使用,其本质类似于

ArcSDE和Oracle Spatial Extension。PostGIS是采用GPL许可发布的,完整地实现了OGC的《Simple

Features Specification for SQL》规范,并于2006年获得OGC认证。在此基础上,PostGIS还对规范进

行了一些扩展,在后面的特性中我们可以慢慢了解到。

二、 PostGIS中的几何类型

PostGIS支持所有OGC规范的“Simple Features”类型,同时在此基础上扩展了对3DZ、3DM、4D坐标的

支持。

1. OGC的WKB和WKT格式

OGC定义了两种描述几何对象的格式,分别是WKB(Well-Known Binary)和WKT(Well-Known Text)。

在SQL语句中,用以下的方式可以使用WKT格式定义几何对象:

POINT(0 0) ——点

LINESTRING(0 0,1 1,1 2) ——线

POLYGON((0 0,4 0,4 4,0 4,0 0),(1 1, 2 1, 2 2, 1 2,1 1)) ——面

MULTIPOINT(0 0,1 2) ——多点

MULTILINESTRING((0 0,1 1,1 2),(2 3,3 2,5 4)) ——多线

MULTIPOLYGON(((0 0,4 0,4 4,0 4,0 0),(1 1,2 1,2 2,1 2,1 1)), ((-1 -1,-1 -2,-2 -2,-2 -1,-1 -1))) ——多面

GEOMETRYCOLLECTION(POINT(2 3),LINESTRING((2 3,3 4))) ——几何集合

以下语句可以使用WKT格式插入一个点要素到一个表中,其中用到的GeomFromText等函数在后面会有

详细介绍:

INSERT INTO table ( SHAPE, NAME )

VALUES ( GeomFromText('POINT(116.39 39.9)', 4326), '北京');

2. EWKT、EWKB和Canonical格式

EWKT和EWKB相比OGC WKT和WKB格式主要的扩展有3DZ、3DM、4D坐标和内嵌空间参考支持。

以下以EWKT语句定义了一些几何对象:

POINT(0 0 0) ——3D点

SRID=32632;POINT(0 0) ——内嵌空间参考的点

POINTM(0 0 0) ——带M值的点


本文标签: 数据库 格式 研究