Geotools是一个java类库,它提供了很多的标准类和方法来处理空间数据,同时这个类库是构建在OGC标准之上的,是OGC思想的一种实现。而OGC是国际标准,所以geotools将来必定会成为开源空间数据处理的主要工具,目前的大部分开源软件,如udig,geoserver等,对空间数据的处理都是由geotools来做支撑。而其他很多的web服务,命令行工具和桌面程序都可以由geotools来实现。
架构
分为接口层、实现层和插件层
1、接口层
api:空间数据操作接口
jts(Java Topology Suite):Java拓扑库,使用java代码实习的几何库
opengis:数据访问(data),几何体(geometry),要素(feature),样式(style),渲染等
2、实现层:
metadata:元数据模块,负责处理各类空间数据格式的元数据信息
referencing:空间坐标系模块,负责各类地理坐标系和投影坐标系的定义和转换
main:负责各类常用工具、数据结构和框架的定义
coverage:栅格数据模块,负责栅格数据的读写
jdbc:关系数据库操作模块,负责读写各类关系数据库和对应的空间数据扩展
cql:空间查询语言模块,定义了一套逻辑完备的空间查询语言,用于实现各类空间数据查询
render:空间数据渲染模块,负责矢量数据和栅格数据的渲染
xml:用于操作各类使用xml格式描述的空间数据和元数据信息
3、插件层:
epsg-hsql:欧洲石油调查组织的空间坐标系定义扩展模块,该模块记录了欧洲石油调查组织的6000多个地理坐标系定义
shape:空间数据文件格式扩展模块,负责对shpefile这类十分常用的矢量数据格式提供读写和索引的支持
postgis:空间数据库模块,负责对当前业界十分常用的PostGIS空间数据库提供读写和索引的实现
xsd-wms:负责对基于xml的一些OGC的数据格式和服务规范提供实现
核心特点:
1.为空间概念和数据结构定义了很多的接口
1.1 通过JTS类库集成了对几何拓扑的支持
1.2 通过使用OGC过滤编码规范可以对属性和空间要素过滤
2.对于数据访问API,支持要素访问、事务支持和线程间锁定
2.1 可以访问多种格式的数据和空间数据库
2.2 支持多种坐标参考系统和及其转换
2.3 可以和扩展的地图投影一同工作
2.4 可以按照空间和非空间属性来过滤和分析数据
3.一种无状态的,耗低内存的渲染机制,尤其在服务端环境下
3.1 通过复杂的样式(SLD)来组成和展现地图
4.对于有xmlschema绑定的GML文档,提供了强大的号称第四代xml解析技术gtxml
这种解析/编码技术可以应用到OGC标准中的SLD,GML,Fiter,KML和SE,个人认为这是geotools的核心,也是geotools处理大空间数据的手段。
5.geotools插件:开放的插件系统允许你为类库添加额外的格式
ImageIO-ext项目的插件允许geotools从gdal中读取额外的栅格格式。
6.geotools扩展
通过使用核心类库的这些空间工具可以提供额外的构建能力,比如swing,brewer和graph。
扩展模块提供了图像和网络支持、校验、web地图服务端解析,解析编码xml和color brewer(地图绘图)。
7.geotools尚不支持的
Geotools作为广泛社区的一部分可以用来孵化一些新的项目,重点是swing支持,本地和web处理支持,添加额外符号(symbology),添加额外格式,生成网格等和ISO geometry的实现。
支持的格式:
1.支持的栅格格式和数据访问
arcsde, arcgrid, geotiff, grassraster, gtopo30, mage (JPEG, TIFF,GIF,PNG), imageio-ext-gdal, imagemoasaic, imagepyramid, JP2K, matlab
2.支持的数据库"jdbc—ng”
db2,h2,my sql,oracle, postgis, spatialite, sqlserver
3.支持的矢量格式和数据访问
app-schema,arcsde,csv, dxf,edigeo, excel,geojson,org,property,shapefile,wfs
4.XML绑定
基于xml的Java数据结构和绑定提供了如下格式xsd-core(xml simple types), fes, filter, gml2, gml3, kml, ows, sld,wcs, wfs,wms, wps,vpf。 对于额外的geometry、sld和fiter的编码和解析可以通过dom和sax程序。
实现的标准:
支持大部分的OGC标准
1、 OGC中的sld/SE和渲染引擎
2、 OGC一般要素模型包括简单要素支持
3、 OGC中栅格信息的网格影像表达
4、 OGC中WFS,WMS和额外的WPS
5、 ISO 19107 geometry规范