提綱
1、GeoTools的作用
2、GeoTools的組成結構及各個部分的功能
1、GeoTools的作用
===============
Geotools是一個符合OGC標准(也稱為OpenGIS標准)的Java類庫,它提供了很多的標准類來處理空間數據。OpenGIS標准是一個空間數據處理的國際標准。目前的大部分基於Java的開源GIS軟件,如udig,geoserver等,都是調用GeoTools庫來進行空間數據的處理。
GeoTools是一個處理空間數據的工具包,其中包含構建一個完整的地理信息系統所需要的的全部工具類,常見的問題比如投影的轉換、基准面的設定、空間數據對象的渲染和樣式、各種數據源的支持、各種GIS文件格式支持、空間數據過濾與搜索等,都有對應的解決方案,這些解決方案被封裝成一個一個的類,可供用戶調用。
GeoTools項目的開發目標是提供一個符合OpenGIS標准的Gis工具包。為了達成這個目標,GeoTools項目中除了GeoTools自己實現一些工具類之外,還有包含了兩個其他的工具包,一個是GeoAPI,另一個是JTS(Java Topology Suite),這兩個工具包和GeoTools自己的工具類一起組成了GeoTools。從這個角度來講,可以說GeoTools是在GeoAPI和JTS的基礎上構建的一個GIS工具包。
JTS是用來做空間圖形的拓撲關系判斷的一個Java類庫。它在GeoTools出現之前就已經存在了,所以GeoTools項目在解決空間對象拓撲判定問題的時候,就沒有自己重新開發,而是直接采用了JTS,將JTS作為自己的一部分,納入自己的體系中了。JTS解決了對象與對象之間拓撲關系的判定和計算,所以,它提供了很多算法來解決對象之間包含關系、相交關系等的拓撲關系判定問題。因此,JTS就相當於GeoTools中的一個子模塊,但是因為這個模塊本身不是GeoTools工程的,所以在GeoTools的JavaDoc中找不到JTS的JavaDoc說明,如果需要JTS的JavaDoc說明,需要到JTS官網上面去下載。
GeoAPI是根據OpenGIS規范而開發一組Java接口,這組接口代表了OpenGIS規范,GeoTools實現了GeoAPI中的接口,從而也就是實現了OpenGIS標准。GeoAPI制定了地理信息系統中所有的數據類型應該是什么,投影轉換的方式有哪幾種諸如此類的規范,所以,兼容GeoAPI接口的GeoTools是一個符合規范的地理信息系統工具包。
GeoTools項目除了現有的類,它還有插件機制和擴展機制,用戶可以為GeoTools做插件和擴展。
GeoTools插件,如果希望GeoTools支持更多的數據格式和其他的坐標系統,就可以為GeoTools開發相應的插件。ImageIO-ext項目的插件允許GeoTools從gdal中讀取額外的柵格格式。
GeoTools擴展,通過使用核心類庫的類可以構建更多的類加入類庫,比如swing,brewer和graph。擴展模塊提供了圖像和網絡支持、校驗、Web地圖服務端解析,解析編碼xml和color brewer(地圖繪圖)。擴展和GeoTools核心類庫的關系如下:

2、GeoTools的組成結構(架構)及各個部分的功能
=======================================
GeoTools庫的組成部分、每一部分的作用和各部分之間的配合關系,就是GeoTools的架構。搞清楚GeoTools的架構,有利於用戶在開發應用的時候,只選擇自己所需要的的GeoTools的jar。
GeoTools庫是一個軟件堆棧(software stack),上層的模塊是基於下層模塊開發的。

GeoTools堆棧的每一層都是它下面的各層去實現的,比如:
-
要使用Referencing模塊,就必須要包含
gt-opengis,gt-referencing和gt-metadata三個jar。 -
要使用Data模塊,就必須要包含 gt-main,jts,gt-opengis,gt-referencing,gt-opengis,gt-metadata
The maven tool can calculate the jars you need, please see the Eclipse or Netbeans quickstart for an example use.
Module
Purpose
gt-cql
Implements of Common Query Language for filters
gt-render
Implements of Java2D rendering engine to draw a map
gt-xml
Implements of common spatial XML formats
gt-main
Interfaces for working with spatial information. Implements filter, feature, etc…
gt-jdbc
Implements for accessing spatial database
gt-data
Implements for accessing spatial data
gt-coverage
Implementation for accessing raster information
gt-metadata
Implementation of identification and description
gt-referencing
Implementation of co-ordinate location and transformation
api
GeoAPI part,定義了處理空間信息的接口
jts
Definition and implementation of Geometry
gt-opengis
Definition of interfaces for common spatial concepts
參考文獻
1、http://www.kaiyuanba.cn/html/1/131/138/8018.htm(GeoTool是什么,以及與JTS和GeoAPI之間的關系如何)
2、http://docs.geotools.org/latest/userguide/geotools.html#core-features(Architecture)
3、https://blog.csdn.net/anglestar2012/article/details/42555819(GeoTools學習篇——GeoTools體系),對geotools架構中各個組成部分進行說明,比官方文檔說的好
4、https://www.giserdqy.com/gis/opengisnews/2250/(GeoTools應用簡要指南),對geoTools下的jar包進行了清理
