空间分析开源库GEOS

 

History of GEOS

GEOS中Geometry的结构

GEOS分析功能简介

1、History of GEOS

J​T​S​ ​T​o​p​o​l​o​g​y​ ​S​u​i​t​e是Martin Davis和Dr. Mark Sondheim提出并实施的OGC简单要素规范的Java项目。项目始于2000年秋季,JTS提供了全功能的,强大的,高效的空间操作

在2003年PostGIS正在成为一个严谨实用的空间数据库,然而它缺少一套完整的空间功能。Paul Ramsey 和Martin Davis就计划把具体空间功能的JTS移植为C++版本,参与PostGIS的Dave Blasby提出命名为Geometry Engine (Open Source) – GEOS。

GEOS(几何引擎 - 开源)是一个C++版本的的JTS。正因为如此,它的目标是包含JTS的完整功能C++库。它包括所有OpenGIS Simple Features for SQL的空间谓词的功能和空间操作,以及增强特定JTS的拓扑功能。

2、GEOS中Geometry的结构

GEOS的空间数据结构是参考OGC的Simple Features Specification for SQL(SFS)。

图1.1 GEOS的空间数据结构

image

                                                      图1.1 GEOS的空间数据结构

GEOS的空间数据类型见下图。且数据类型全部是二维结构,例如Point中的变量仅有x,y,对于含有x,y,z的数据,也是先舍弃z,再进行赋值存储。

图1.2 GEOS的空间数据模型

image

                                                       图1.2 GEOS的空间数据模型

3、GEOS分析功能简介

GEOS一个重要的应用是计算几何图形(Geometry)之间的空间关系,它提供了多种多样的用于处理空间关系的办法。GEOS遵循OGC说明的维扩展九交集模型(the Dimensionally-Extended 9 Intersection Matrix model)。

GEOS提供了一套布尔数学体系(boolean)能够直接计算普通空间关系的空间谓词(predicates)。

表2.1 空间关系谓词

相等(Equals)

几何形状拓扑上相等

脱节(Disjoint)

几何形状没有共有的点

相交(Intersects)

几何形状至少有一个共有点(区别于脱节)

接触(Touches)

几何形状有至少一个公共的边界点,但是没有内部点

交叉(Crosses)

几何形状共享一些但不是所有的内部点

内含(Within)

几何形状A的线都在几何形状B内部

包含(Contains)

几何形状B的线都在几何形状A内部(区别于内含)

重叠(Overlaps)

几何形状共享一部分但不是所有的公共点,而且相交处有他们自己相同的区域

GEOS支持基本空间分析方法。空间分析方法需要一个或两个几何图形作为参数并返回一个新的构造几何。对空间分析接口描述如下表:

表2.2 空间分析

缓冲区分析(Buffer)

包含所有的点在一个指定距离内的多边形

凸包分析(ConvexHull)

包含几何形体的所有点的最小凸包多边形(外包多边形)

交叉分析(Intersection)

交叉操作就是多边形AB中所有共同点的集合

联合分析(Union)

AB的联合操作就是AB所有点的集合

差异分析(Difference)

AB形状的差异分析就是A里有B里没有的所有点的集合

对称差异分析(SymDifference)

AB形状的对称差异分析就是位于A中或者B中但不同时在AB中的所有点的集合

距离(Distance)

AB的距离分析是判断AB中点的最小距离

参考文献:

[1] http://tsusiatsoftware.net/jts/jts-history.html History of the JTS Topology Suite (and GEOS)

[2] JTS Topology Suite Developer’s Guide- Version 1.4

[3] OpenGIS Simple Features Specification For SQL- Revision 1.1

原文地址:https://www.cnblogs.com/geospatial/p/4204589.html