空间分析开源库GEOS
History of GEOS
GEOS中Geometry的结构
GEOS分析功能简介
1、History of GEOS
JTS Topology Suite是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的更多相关文章
- 各种Android UI开源框架 开源库
各种Android UI开源框架 开源库 转 https://blog.csdn.net/zhangdi_gdk2016/article/details/84643668 自己总结的Android开源 ...
- JTS空间分析工具包(GIS开源)学习 JAVA
JST空间分析工具包是一套JAVA API,提供一系列的空间数据分析操作.最近开发项目刚好需要用到,上网搜资料也少,就自己写下来记录一下.C++版本的拓扑分析开源工具叫:geos:.NET版本的拓扑分 ...
- DICOM医学图像处理:开源库mDCM与DCMTK的比較分析(一),JPEG无损压缩DCM图像
背景介绍: 近期项目需求,须要使用C#进行最新的UI和相关DICOM3.0医学图像模块的开发.在C++语言下,我使用的是应用最广泛的DCMTK开源库,在本专栏的起初阶段的大多数博文都是对DCMTK开源 ...
- MVP模式, 开源库mosby的使用及代码分析
Android中的构架模式一直是一个很hot的topic, 近年来Architecture components推出之后, MVVM异军突起, 风头正在逐渐盖过之前的MVP. 其实我觉得MVP还是有好 ...
- JavaScript 空间分析库——JSTS和Turf【转】
https://blog.csdn.net/neimeng0/article/details/80363468 前言 项目中有管线的空间拓扑关系查询需求,在npm中检索到JSTS和Turf两个Java ...
- DICOM:DICOM三大开源库对比分析之“数据加载”
背景: 上一篇博文DICOM:DICOM万能编辑工具之Sante DICOM Editor介绍了DICOM万能编辑工具,在日常使用过程中发现,“只要Sante DICOM Editor打不开的数据,基 ...
- 捕获网络数据包并进行分析的开源库-WinPcap
什么是WinPcap WinPcap是一个基于Win32平台的,用于捕获网络数据包并进行分析的开源库. 大多数网络应用程序通过被广泛使用的操作系统元件来访问网络,比如sockets. 这是一种简单的 ...
- 【Java&Android开源库代码分析】のandroid-async-http の开盘
在<[Java&Android开源库代码剖析]のandroid-smart-image-view>一文中我们提到了android-async-http这个开源库,本文正 ...
- 【Java&Android开源库代码剖析】のAndroid-Universal-Image-Loader-part1
做Android app开发的同学应该都听说过或者用过nostra13的Android-Universal-Image-Loader开源库,它在图片异步加载.缓存和显示等方面提供了强大灵活的框架.之前 ...
随机推荐
- mysql中权限的小知识
参考:https://www.cnblogs.com/apollo1616/articles/10294490.html mysql中user表中host列的值的意义 % 匹配所有主机 localho ...
- 【EF数据库链接报错】“The underlying provider failed on open”
EF在操作数据库时要反复链接.断开数据库,如果连接字符串是windows 服务验证,而不是用的用户名和密码,那么尝试访问数据库的用户是NT AUTHORITY\NETWORK SERVICE.权限不够 ...
- Asp.NET MVC 拍卖网站,拆解【1】预览与目录
本人最近带创业团队基本做完了一个艺术品拍卖的外包项目,分为网站前台(asp.net mvc5),网站管理员管理的后台使用的9900端口(asp.net mvc5),监听拍卖状态的windows服务,为 ...
- idea中web.xml报错 Servlet should have a mapping
配置springmvc时,报错,实际mapping已经写了,错误截图如下: 搜索无果,后来发现是工程的web.xml位置配置错误,因为我之前换过根目录位置. 修改方法: 打开Project Struc ...
- Types方法之isCastable-isConvertible
5. Conversions and Promotions 5.1. Kinds of Conversion 5.1.1. Identity Conversion 5.1.2. Widening Pr ...
- JavaScript数据结构-3.List
<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title> ...
- How can I set ccshared=-fPIC while executing ./configure?
解决方式如下: make clean ./configure CFLAGS=-fPIC CXXFLAGS=-fPIC
- WPF中C#代码触发鼠标点击事件
1.如下代码; <Button x:Name="btnTest" Click="btnTest_Click"> <Button.Trigger ...
- java的finally简单理解
1. 大家都知道, 普通的try, catch, finally格式: try{ //有可能会抛出异常的代码 }catch{ //抛出异常时处理的代码 }finally{ //无条件执行的代码,就不管 ...
- [转载]VS2010怎样打开VS2013或者VS2015建立的工程
VS2010怎样打开VS2013或者VS2015建立的工程 作用:解决vs低版本无法直接打开高版本的工程文件问题. 一.转载出处 http://blog.csdn.net/qq2399431200/a ...