GeoTools深入解析:GeoTools概述


提綱

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-opengisgt-referencing 和 gt-metadata三個jar。

  • 要使用Data模塊,就必須要包含 gt-mainjtsgt-opengisgt-referencinggt-opengisgt-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包進行了清理

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM