天天看點

GeoTools是什麼,以及與JTS和GeoAPI之間的關系如何?

核心特點

  1. 為空間概念和資料結構定義了很多的接口

    1.1通過JTS類庫內建了對幾何拓撲的支援

    1.2通過使用OGC過濾編碼規範可以對屬性和空間要素過濾

  2.對于資料通路API,支援要素通路、事務支援和線程間鎖定

    2.1可以通路多種格式的資料和空間資料庫

    2.2支援多種坐标參考系統和及其轉換

    2.3可以和擴充的地圖投影一同工作

    2.4可以按照空間和非空間屬性來過濾和分析資料

  3.一種無狀态的,耗低記憶體的渲染機制,尤其在服務端環境下

    3.1通過複雜的樣式(SLD)來組成和展現地圖

  4.對于有xml schema綁定的GML文檔,提供了強大的号稱第四代xml解析技術gtxml。這種解析/編碼技術可以應用到OGC标準中的SLD,GML,Filter,KML和SE,個人認為這是geotools的核心,也是geotools處理大空間資料的手段。

  5.geotools插件:開放的插件系統允許你為類庫添加額外的格式。ImageIO-ext項目的插件允許geotools從gdal中讀取額外的栅格格式。

  6.geotools擴充。通過使用核心類庫的這些空間工具可以提供額外的建構能力,比如swing,brewer和graph。擴充子產品提供了圖像和網絡支援、校驗、web地圖服務端解析,解析編碼xml和color brewer(地圖繪圖)。

  7.geotools尚不支援的。Geotools作為廣泛社群的一部分可以用來孵化一些新的項目,重點是swing支援,本地和web處理支援,添加額外符号(symbology),添加額外格式,生成網格等和ISO geometry的實作。

支援的格式

  1.支援的栅格格式和資料通路

    arcsde, arcgrid, geotiff, grassraster, gtopo30, image (JPEG, TIFF, GIF, PNG), imageio-ext-gdal, imagemoasaic, imagepyramid, JP2K, matlab

  2.支援的資料庫“jdbc-ng”

    db2, h2, mysql, oracle, postgis, spatialite, sqlserver

  3.支援的矢量格式和資料通路

    app-schema, arcsde, csv, dxf, edigeo, excel, geojson, org, property, shapefile, wfs

  4.XML綁定

    基于xml的Java資料結構和綁定提供了如下格式xsd-core (xml simple types), fes, filter, gml2, gml3, kml, ows, sld, wcs, wfs, wms, wps, vpf。

    對于額外的geometry、sld和filter的編碼和解析可以通過dom和sax程式。

實作的标準

  支援大部分的OGC标準

  1.OGC中的sld/SE和渲染引擎

  2.OGC一般要素模型包括簡單要素支援

  3.OGC中栅格資訊的網格影像表達

  4.OGC中WFS,WMS和額外的WPS

  5.ISO 19107 geometry規範

與JTS和GeoAPI之間的關系

  1. JTS:JTS是加拿大的 Vivid Solutions 做的一套開放源碼的 Java API。它提供了一套空間資料操作的核心算法,為在相容OGC标準的空間對象模型中進行基礎的幾何操作提供2D空間謂詞API。

  2. GeoAPI:GeoAPI為OpenGIS規範提供一組Java接口.

  3. Geotools:Geotools是一個開源的Java GIS工具包,可利用它來開發符合标準的地理資訊系統。Geotools提供了OGC(Open Geospatial Consortium)規範的一個實作來作為他們的開發。

  簡單而言:GeoTools的目标是緻力于開發一個符合規範的Gis工具包,既然是工具包,那麼就要有很多工具用來對付建構一個完整的地理資訊系統時會碰到的問題,常見的問題比如:投影的轉換,基準面的設定,空間資料對象的渲染和樣式,各種資料源的支援,各種GIS檔案格式支援,空間資料過濾與搜尋。。。。等等的問題。 

  在開發這些工具的時候,恰好在處理空間資料圖形關系的時候,有一個非常好的解決方案,那就是JTS,JTS解決了對象與對象之間拓撲關系的判定和計算,并提供很多有用的算法來解決對象的面積,長度。。。等等等的問題。這樣而言,JTS就相當于GeoTools中的一個子子產品。但因為這個子產品本身不是GeoTools工程的,是以在javadoc中找不到JTS的API,需要到JTS官網上面另外下載下傳。至于GeoAPI則是GeoTools符合标準的模闆。它制定了地理資訊系統中所有的資料類型應該是什麼,投影轉換的方式有哪幾種諸如此類的規範。這樣相容GeoAPI接口的GeoTools才是一個符合規範的地理資訊系統工具包。