GeoTools地理信息系统开发mobi电子书下载

计算机与互联网 王顼 编著
简介: 本书对GeoTools地理信息系统进行了全面系统的阐述。

第1章

GeoTools基本知识

对于大多数传统地理信息系统(Geographical Information System,GIS)开发的从业人员来说,GeoTools可能是一个比较陌生的名字。但是随着地理信息系统与互联网和一些新技术的结合,以GeoTools为代表的开源地理信息系统生态逐渐进入人们的视线,越来越多的开发者愿意使用GeoTools来开发自己的应用程序。为什么GeoTools有如此大的魅力呢?GeoTools是什么?GeoTools从何而来,又是如何发展的呢?本章将会从以下4个方面来介绍GeoTools。

● GeoTools简介。

● GeoTools架构。

● GeoTools特性。

● GeoTools生态。

随着开源地理信息系统生态的不断发展,越来越多的地理信息系统开发者选择使用GeoTools来进行相关软件的开发。那么GeoTools是什么呢?它又是从何而来的呢?1.1节会对这两个问题进行解答。

GeoTools是一个开源Java代码库,基于GNU宽通用公共许可证(Lesser General Public License,LGPL),它的标识如图1-1所示。它为地理空间数据(以下简称“空间数据”)提供符合开放式地理信息系统协会(Open GIS Consortium,OGC)规范的各类处理方法,是OGC规范的Java实现。许多开源地理信息工具,包括Web地图服务、桌面应用程序等均使用了GeoTools。

图1-1 GeoTools的标识

1.1

GeoTools简介

GeoTools始于1996年,最初是英国利兹大学的一个研究生课程项目,主要用于将空间数据可视化。不久之后,利兹大学将空间数据可视化独立为一门课程,并开始研究如何将地理信息系统应用于公众领域,之后使用1.0版本的GeoTools制作了一个地图网页,当地居民可在这个地图网页上讨论本地城乡规划方案。随着实际需求的不断增多,GeoTools的功能逐渐完善,并成为一个独立的地理信息工具类库。需要说明的是,早期的GeoTools开发过程中并没有参考任何OGC规范,而是直接使用了当时流行的Java Applet接口。1.0版本的GeoTools主要用于构建能够交互式展示空间数据的客户端。

1.0版本的GeoTools的开发团队中仅有两位是来自利兹大学的开发者,随着功能的不断增加,代码变得凌乱和难以维护。因此在2002年,开发者们对GeoTools进行了全新的设计与重构,此时GeoTools的开发团队已变成一个去中心化的全球团队,并在这次重构中明确了一套开源的软件设计、决策与实现体系,成立了GeoTools项目管理委员会。2.0版本的GeoTools新增了坐标系转换、栅格数据读取与渲染等功能,并开始明确将自身作为一个Java标准的空间数据类库的开发方向。当时,有很多使用Java程序设计语言的地理信息系统开发者,为了统一这些开发者的成果,GeoTools开始参考OGC规范,并实现了一套被称为GeoAPI的开放地理空间接口。之后的多年里,GeoTools的版本从2.1发展到2.7,GeoAPI已经开发完成,整体结构也与我们今天见到的代码库接近,并在2012年发布了里程碑版本,即GeoTools 8.0。现在版本的GeoTools的软件架构与8.0版本的软件架构相比没有太多改动,即在多年迭代中保持了稳定。

1.2

GeoTools架构

GeoTools作为一个持续迭代了二十多年的开源项目,其代码高度模块化与规范化,了解 GeoTools代码目录结构有助于厘清应用程序所需的依赖包。本节介绍GeoTools代码仓库的各个部分以及它们是如何组合在一起的。为了让特定应用程序仅包含其需要的依赖,用户可以为项目选择适量的GeoTools依赖包。GeoTools主要模块如图1-2所示,从左到右依次为接口层、实现层和插件层,模块的依赖关系为从上到下,即上面的模块依赖下面的模块。

版权:人民邮电出版社