引言

2/3/2023

# GeoTools是什么

GeoTools (opens new window)是一个开源的Java代码库,它提供了符合OGC规范标准的各种地理空间数据的操作方法,我们可以基于GeoTools实现地理信息系统(GIS)的开发。目前许多基于Java的开源GIS软件,如udig,geoserver等,都是调用GeoTools库来进行空间数据处理的。

GeoTools (opens new window)可以理解为是一个处理空间数据的工具包(类比python的geopandas库),常见投影定义转换、空间数据对象渲染、不同GIS文件格式支持、空间数据过滤和搜索等问题都有提供相应的解决方案,即GeoTools提供了工具类,可供开发者直接调用。

img

# GeoTools的组成

img

GeoTools由GeoAPI,JTS(Java Topology Suite),以及其自身实现GeoAPI接口的代码、支持的一些插件(如连接postgis的插件)组成。

GeoAPI是根据OpenGIS规范而开发一组Java接口,这组接口代表了OpenGIS规范。GeoTools自身的代码实现了GeoAPI中的接口,从而也就是实现了OpenGIS标准。GeoAPI制定了地理信息系统中所有的数据类型应该是什么,投影转换的方式有哪几种诸如此类的规范,所以兼容GeoAPI接口的GeoTools是一个符合规范的地理信息系统工具包。

JTS是用来做空间图形的拓扑关系判断的一个Java类库。它在GeoTools出现之前就已经存在了,所以GeoTools项目在解决空间对象拓扑判定问题的时候,就没有自己重新开发,而是直接采用了JTS,将JTS作为自己的一部分,纳入自己的体系中了。JTS解决了对象与对象之间拓扑关系的判定和计算,所以,它提供了很多算法来解决对象之间包含关系、相交关系等的拓扑关系判定问题。

GeoTools的架构图由下而上,上层依赖于下层。比如想使用Referencing则需要gt-opengis, gt-referencinggt-metadata,使用Data则需要 gt-main, jts, gt-opengis, gt-referencing, gt-opengis, gt-metadata

# 参考

  • GeoTools:https://docs.geotools.org/stable/userguide/
  • GeoTools从入门到使用:https://zhuanlan.zhihu.com/p/398935002
  • GeoTools,GIS的另一个基础设施:https://zhuanlan.zhihu.com/p/436112981
Last Updated: 8/6/2023, 3:51:38 PM