前言
地理信息系统是智慧城市和数字孪生的基础支撑技术,随着近年来相关领域的不断发展,越来越多的空间数据需要被采集、处理、存储、分析和可视化。GeoTools是一个提供了全套空间数据解决方案的Java类库。更为重要的是,GeoTools是开源的。相比传统地理信息领域的商业软件,GeoTools提供了更开放的开发环境和更通用的空间数据规范。GeoTools是当前开源地理信息领域的一个核心类库。基于GeoTools,开源社区实现了GeoServer这样的空间数据服务平台和GeoMesa这类时空大数据处理类库。因此,熟悉和了解GeoTools可以为读者开辟一条借助开源社区打造地理信息解决方案的新道路。
本书面向的读者主要是地理信息系统行业的从业人员和大中专院校相关专业的师生。本书力求简单明了地介绍通过GeoTools实现的各类空间数据规范和GeoTools自身的设计思想。与计算机行业的其他技术类图书不同,本书并不要求读者具有深厚的程序设计功底,书中的代码更多的是为地理信息系统行业相关开源规范做解释的。读者仅需了解入门级的Java程序设计知识,即可顺利地阅读书中的代码。
本书的4位编著者为地理信息领域的求学者或从业人员,在共同的学习和工作经历中深感当前开源地理信息资源的零碎和复杂,因此萌生出编写一本能够将各类复杂的空间数据规范讲清楚的书的想法。
全书共有12章。
第1章介绍GeoTools的基本信息,以及GeoTools在开源地理信息领域的生态等。
第2章介绍GeoTools的源代码组织与编译方法、如何构建GeoTools,以及GeoTools的使用方式。
第3章介绍Java拓扑库、九交模型和常见的空间索引。Java拓扑库是一个完全使用Java代码实现的几何对象模型类库,是GeoTools实现平面几何对象模型所依赖的类库。九交模型定义了平面几何对象之间的空间关系和判断依据。空间索引是一种加快空间数据查询速度的数据结构,是现代空间数据库的理论基础。
第4章介绍空间坐标系。空间坐标系是空间数据最复杂的部分,只有了解空间坐标系的相关信息,才能真正理解空间数据。
第5章是全书的重点,首先介绍常见的矢量数据格式,然后重点介绍GeoTools的矢量数据模型。GeoTools提供了一套完善的插件式数据模型,几乎能够支持对任意的空间数据源的扩展。
第6章介绍栅格数据模型。栅格数据是除矢量数据之外的另一类基础空间数据。
第7章介绍地图样式与地图渲染、OGC定义的地图样式规范以及GeoTools对其的实现。
第8章介绍通过GeoTools实现的空间查询与空间分析。
第9章介绍GeoTools如何连接和管理各类关系数据库。
第10章介绍GeoTools提供的各类地图组件。
第11章以一个实际项目为例,介绍如何使用GeoTools实现空间数据管理系统。
第12章介绍GeoTools使用中的一些常见问题。
王顼负责全书的统稿工作,以及第1、2、3、4、6、7、12章和第5章部分内容的编写工作。
刘钧文负责第8、10章和第5章剩余部分内容的编写工作。
王新宇负责第11章的编写工作。
孙运娟负责第9章的编写工作。
感谢其他3位老师的辛苦工作,感谢郭媛编辑对本书的勘误和校对,感谢人民邮电出版社对本书的大力支持。
王 顼
2022年3月