空间分析开源库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开源库,它在图片异步加载.缓存和显示等方面提供了强大灵活的框架.之前 ...
随机推荐
- [转] Ansible 内置变量参考
Quick reference for Ansible variables [From] https://github.com/lorin/ansible-quickref
- C#效率提升总结
1. 尽量减少装箱 尽量减少字符串之间拼接 优先用StringBuilder,因为不会多次分配内存 String.Format()内部其实是调用了StringBuilder(),所以效率很高 2. 转 ...
- [Xamarin.Android] 如何使用Google Map V2 (转帖)
Google Map v1已經在2013年的3月開始停止支援了,目前若要在你的Android手機上使用到Google Map,就必須要使用 到Google Map v2的版本.在Xamarin要使用G ...
- 配置MySQL接受远程登录连接
一 开放mysql mysql的配置文件在/etc/mysql/my.cnf文件内,里面有一行bind-address = 127.0.0.1表示只允许本地访问,将这行注释即可 # bind-addr ...
- Difference between $.ajax() and $.get() and $.load()
转自:Difference between $.ajax() and $.get() and $.load() $.ajax() is the most configurable one, where ...
- 问题集录--jquery将json转excel保持
代码如下: <html> <head> <meta http-equiv="content-type" content="text/html ...
- vue-pdf的3.3.1版本build后多生成168个js文件
当同事使用vue-pdf来浏览pdf之后,就发现build之后一堆散乱的js文件,真可怕! 果然google之后是它的原因.参考:Vue-pdf create 168 excess bundles i ...
- Java如何大批量从json数据源中按指定符号隔字符串,并修改、删除数据
原文出自:https://blog.csdn.net/seesun2012 package com.seesun2012.com; /** * Java大批量修改.删除数据,按指定标识符分隔字符串 * ...
- 使用PowerShell为SSAS Role添加Membership
PowerShell, SSAS, Role, Membership 上篇随笔使用PowerShell创建SSAS Role贴出了如何使用PowerShell批量创建Role,由于个人项目需求,创建R ...
- dapper 多对多查询对象和对象列表
splitOn参数:用来指定列为分隔列,之前的列为前一对象,之后的列为后一对象. lookup 用来保存中间处理结果,可以理解为将结果归组出Group对象,并为其RightsList添加内容, 注意: ...