开源Gis GeoTools的三大模块

开源Gis GeoTools的三大模块


发布日期: 2016-10-27 更新日期: 2016-10-27 编辑:玲玲 浏览次数: 5655

标签:

摘要: GeoTools 整体上分为三大模块:主类库、插件和扩展模块。主类库定义了空间几何模型、元数据、空间参考、矢量数据、栅格数据、数据访问、数据渲染等功能的类实现及操作接口;扩展模块为在主类库的基础上针对特定应用开发的功能模块,例如:针对shapefile的渲染器...

GeoTools 整体上分为三大模块:主类库、插件和扩展模块。主类库定义了空间几何模型、元数据、空间参考、矢量数据、栅格数据、数据访问、数据渲染等功能的类实现及操作接口;扩展模块为在主类库的基础上针对特定应用开发的功能模块,例如:针对shapefile的渲染器实现、基于空间数据构建地图网络并求两实体间最短路径的实现等;插件模块是主类库中定义的一些标准接口的具体实现,主要包括了不同格式的数据访问实现和不同标准的空间参考实现,GeoTools正常工作离不开插件的支持,该模块的组件支持运行时动态集成。

(1)主类库:

主类库基于标准的模型/视图/控制器(MVC)模式进行设计,“视图”对应数据显示组件,“模型”则对应数据模型组件,原类库中并不含“控制器”逻辑,而是留给了类库的使用者即开发人员来实现,因此开发人员拥有充足的自由空间,根据实际需求编写合适的业务逻辑,进行空间数据的处理。

① 数据模型组件:

数据模型组件用于描述现实世界中的地理实体在计算机中的表示形式,包括:几何模型、空间参考模型、要素模型、数据访问与存储模型、查询模型。下面分别介绍各个模型的作用。

几何模型(JTS):为基于矢量表达的空间数据提供几何建模,使用坐标点及坐标点的集合来表达“点”、“线”、“面”、“点集”、“线集”和“面集”等几何对象,该模型也实现了基于几何对象的标准空间分析操作,在GeoTools的实现中,该模型采用JTS来实现对简单几何对象的二维建模和空间分析操作。

空间参考模型(Referencing):为空间定位和与空间相关的数据操作提供合适的空间参考系,提供坐标参考系间变换和投影的功能,该模型提供了定义坐标参考系,需要由EPSG插件提供具体的大地测量基准面数据。

要素模型(Feature):要素是GeoTools中的核心术语,它是描述地理空间数据对象的基本单位,它描述了一个现实世界中的客观地理实体,如:一条河流、一座桥梁都可以理解为要素,在类定义中,要素对象包含一个标识符,一组描述其特征的属性集合,以及定义该要素属性的概要模式。这些属性包括要素实体的空间几何定义、实体的其他属性等。

数据访问和存储模型(Data、JDBC、XML):该模型定义了创建、访问和存储数据的方法,提供了访问不同数据源空间数据的方式,包括:访问文件系统中矢量、栅格数据的接口,访问数据库中数据的接口,访问网络服务器的接口。使用DataStore接口存取矢量数据,使用GridCoverageExchange接口存取栅格数据,插件模块中包含了众多访问不同数据格式的数据访问和存储模型的实现,这些数据格式包括:GML格式、shapefile格式、GeoTiff格式栅格图片、空间数据库、web地图服务器及Web要素服务器等。

数据查询模型(Filter):该模型提供了一种从空间数据源或已知要素集中寻找、获得所需数据的标准方式,查询模型定义了Filter类来构造查询过滤条件,并遵循OGC标准的过滤查询规范而实现。

②数据显示组件:

数据显示组件提供了通过图像来表现要素内容的一种标准方式。该组件通过遵循一系列用于创建可视化地图的复杂渲染规则,提供一种标准的方式来渲染要素数据;它还提供了用于创建图像的渲染基础流程结构。包括空间样式模型和渲染器模型。渲染器模型(Render):空间数据显示渲染器,将空间数据Features和特定符号化模型Style利用一种显示设备如:GraphicsZD进行显示,提供了一种流式的渲染器实现,占用内存小,无缓存。

空间样式模型(Styling):定义了空间数据显示的符号化模型,遵从OGC的Styled Layer Descriptor(SLD)规范和 Symbology Encoding(SE)规范。SLD规范描述了图层对象与符号化模型间的对应关系,采用XML格式存储数据;SE规范描述了用符号化模型绘制要素的规则。

(2)插件库:

GeoTools的插件库主要包括不同数据格式访问的具体实现和不同的EPSG坐标系统参数封装,表3.1显示了GeoTools的插件库。

(3)扩展模块:

本模块是在主类库之上开发的一些应用示例,供开发者参考使用。目前GeoTools扩展模块中包括了WMS扩展,它提供了访问WMS服务的客户端的开发API,MapPane扩展,它是一个Swing控件,实现了简单的地图显示功能,graph扩展,实现基于Features建立抽象图和访问的方法。

JTS介绍

Java拓扑套件(Java Topology Suite)是由Vivid Solutions开发,在LGPL开源协议下发布,是OpenGIS规范下简单要素规范(Simple Features Specification)的SQL版本实现,它具体实现了完整、健壮的基于二维的空间数据模型和分析算法,并以Java应用程序接口的形式向外界提供调用,使用纯Java语言实现,利用精确的模型和成熟的几何算法,为二维几何数据提供了完善的空间分析实现。

JTS空间模型是建立在一个简单、二维的欧式几何空间,因此它所能表达的空间数据仅限于二维空间,尽管JTS中的几何对象可以包含三维的坐标信息,但在进行空间操作和分析时,JTS仍会把坐标映射在一个XY轴的欧式空间中进行处理,第三维的信息并不起作用,如图3.3所示。因此,使用JTS进行地理空间数据建模和分析时,首先要将地球曲面映射到一个二维欧式空间中,然后在此几何空间中建立各种空间数据模型,进行分析处理。

JTS功能结构

JTS类库中的核心类包是gcom包,其中包括了JTS空间数据模型最重要的三个类:Geometry、Envelope、Coordnate,下面重点分析三个类。

(1)JTS Coordinate类:

Coordinate类提供了JTS几何对象的空间位置信息,包含有三个数据域: x、y、z,分别代表三维几何空间中三维属性,尽管‘z’属性在基于二维欧式空间建模的JTS中不起作用。图3.4显示了Coordinate类的类图:

(2)JTS Envelope类:

JTS Envelope对象定义一个在欧式空间中与坐标轴平行的矩形区域,该类用来定义每个JTS几何对象的外界矩形,并且实现了基于外界矩形进行的空间分析相关操作,包括:contains、intersects等,Envelope对象类图。

(3)JTS Geometry类:

JTS Geometry类是一个定义了地理空间元素的几何模型的抽象类,在它的子类中实现了OGC规范中简单要素规范中的各种几何模型,包括:Point(点)、LineString(线)、Polygon(多边形)等基本几何模型以及在这些基本几何模型上派生出的几何模型。

Geometry对象的实现依赖于Coordinate对象和Envelope对象,它使用一个Coordinate对象的集合来定义几何对象的空间位置属性,使用Envelope对象来定义几何对象的边界。它还定义了一些易用的空间分析方法,如buffer()用于计算距离该对象指定距离的缓冲区对象,外包多边形分析(convexHull),交叉分析(intersection),联合分析(union),差异分析(differenee),对称差异分析(symDifferenee),邻接分析(disjoint)等空间拓扑分析操作方法,distance()和area()是用于计算距离和面积的空间操作方法。Geometry对象的创建使用GeometryFactory工厂类进行创建,Geometry类图。

关注公众号
获取免费资源

随机推荐


Copyright © Since 2014. 开源地理空间基金会中文分会 吉ICP备05002032号

Powered by TorCMS

OSGeo 中国中心 邮件列表

问题讨论 : 要订阅或者退订列表,请点击 订阅

发言 : 请写信给: osgeo-china@lists.osgeo.org