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的空间数据结构

图1.1 GEOS的空间数据结构

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

图1.2 GEOS的空间数据模型

图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

空间分析开源库GEOS的更多相关文章

  1. 各种Android UI开源框架 开源库

    各种Android UI开源框架 开源库 转 https://blog.csdn.net/zhangdi_gdk2016/article/details/84643668 自己总结的Android开源 ...

  2. JTS空间分析工具包(GIS开源)学习 JAVA

    JST空间分析工具包是一套JAVA API,提供一系列的空间数据分析操作.最近开发项目刚好需要用到,上网搜资料也少,就自己写下来记录一下.C++版本的拓扑分析开源工具叫:geos:.NET版本的拓扑分 ...

  3. DICOM医学图像处理:开源库mDCM与DCMTK的比較分析(一),JPEG无损压缩DCM图像

    背景介绍: 近期项目需求,须要使用C#进行最新的UI和相关DICOM3.0医学图像模块的开发.在C++语言下,我使用的是应用最广泛的DCMTK开源库,在本专栏的起初阶段的大多数博文都是对DCMTK开源 ...

  4. MVP模式, 开源库mosby的使用及代码分析

    Android中的构架模式一直是一个很hot的topic, 近年来Architecture components推出之后, MVVM异军突起, 风头正在逐渐盖过之前的MVP. 其实我觉得MVP还是有好 ...

  5. JavaScript 空间分析库——JSTS和Turf【转】

    https://blog.csdn.net/neimeng0/article/details/80363468 前言 项目中有管线的空间拓扑关系查询需求,在npm中检索到JSTS和Turf两个Java ...

  6. DICOM:DICOM三大开源库对比分析之“数据加载”

    背景: 上一篇博文DICOM:DICOM万能编辑工具之Sante DICOM Editor介绍了DICOM万能编辑工具,在日常使用过程中发现,“只要Sante DICOM Editor打不开的数据,基 ...

  7. 捕获网络数据包并进行分析的开源库-WinPcap

    什么是WinPcap WinPcap是一个基于Win32平台的,用于捕获网络数据包并进行分析的开源库. 大多数网络应用程序通过被广泛使用的操作系统元件来访问网络,比如sockets.  这是一种简单的 ...

  8. 【Java&Android开源库代码分析】のandroid-async-http の开盘

          在<[Java&Android开源库代码剖析]のandroid-smart-image-view>一文中我们提到了android-async-http这个开源库,本文正 ...

  9. 【Java&Android开源库代码剖析】のAndroid-Universal-Image-Loader-part1

    做Android app开发的同学应该都听说过或者用过nostra13的Android-Universal-Image-Loader开源库,它在图片异步加载.缓存和显示等方面提供了强大灵活的框架.之前 ...

随机推荐

  1. flask _bootstrap中使用flash

    在模板中获取flash闪现的那段代码要和内容块放在同一级别上.不然网页上是看不到闪现的内容的. 比如在基模板里定义一个content block ,里面一个是get_flashed_messages代 ...

  2. Python 全栈开发:day3 作业与默写

    # 1.有变量name = "aleX leNb" 完成如下操作:name = 'aleX leNb'# 1)移除 name 变量对应的值两边的空格,并输出处理结果print(na ...

  3. Kali/Ubuntu无法和物理机之间复制粘贴解决办法

    Vmware安装Linux,传统的vmtools已经被抛弃,当前建议使用Open-VM-tools 安装Open-VM-tools//Kali,Ubuntu: sudo apt install Ope ...

  4. 1、 小白带你入坑xamarin系列之环境搭建和准备

    重点提示 由于xamarin发展更新很快 目前教程部分内容已经过时 请注意下载最新版本   2018.05.23 www.xamarin.com 1. 小白带你入坑xamarin系列之环境搭建和准备 ...

  5. (转)AIX的SVMON命令详解

    原文:http://czmmiao.iteye.com/blog/1153499 svmon概述 svmon 命令用于显示当前内存状态的信息,可通过 # lslpp bos.perf.tools 查看 ...

  6. 解决emacs配置tern报错`tern-reparse-on-idle':

    使用Nodejs安装完tern后,在/user/local/bin建立软连接

  7. Hibernate5.1+Sqlserver2000分页查询

    前几天改到一个bug:从MS SQLserver上面同步表结构并且采集数据写入其他库.然后用的核心技术是用的Hibernate. 其中bug出在SQLServer2000版本上.排查下来发现2000版 ...

  8. Struts1原理解析

    1.浏览器发送http请求->web服务器. 2.web服务器将 请求进行解析. 3.web服务器解析后将请求转发给ActionServelet(总队长). 3.查询struts-config. ...

  9. [心平气和读经典]The TCP/IP Guide(004)

    The TCP/IP Guide [Page 44, 45, 46] Structure and Organization of The TCP/IP Guide | TCP/IP指南的组织结构 Yo ...

  10. 有符号整数比较v.s.无符号整数比较

    本文尝试从汇编的角度给出有符号整数比较与无符号整数比较的区别所在. 在<深入理解计算机系统>(英文版第二版)一书中的Page#77,有下面一个练习题: 将上述示例代码写入foo1.c文件, ...