GeoToolshtml
GeoTools is an open source (LGPL) Java code library which provides standards compliant methods for the manipulation of geospatial data, for example to implement Geographic Information Systems (GIS). The GeoTools library implements Open Geospatial Consortium (OGC) specifications as they are developed.數據庫
DataStoreapp
A DataStore is used to access and store geospatial data in a range of vector formats including shapefiles, GML files, databases, Web Feature Servers, and other formats.less
上面是官方解釋,簡言之,Geotools是一個開源的Java代碼庫,提供一些處理地理空間數據的方法;DataStore主要用於訪問和存儲矢量格式的地理空間數據。elasticsearch
矢量格式的數據的存儲格式有多種,好比存在shapefiles、數據庫、elasticsearch(Hadoop)或者其餘格式,數據庫又有不少種,好比說postGIS、Hbase、Geopackage,可是在進行數據訪問或者存儲時,Geotools提供了統一的訪問接口。其中數據訪問主要涉及的就是DataAccessFinder工廠類,數據存儲主要涉及的就是DataStoreFinder工廠類。ide
Geotools DataStore使用了Java的SPI機制,這樣就能夠動態的獲取到當前能夠訪問的數據格式。oop
關於Java SPI機制的原理見本人的另一篇隨筆https://www.cnblogs.com/mohanchen/p/10792677.htmlpost
具體使用方法以下:spa
//Finds all implemtaions of DataStoreFactory which have registered using the services mechanism, // regardless weather it has the appropriate libraries on the classpath. Iterator<DataStoreFactorySpi> availableDataStores = DataStoreFinder.getAvailableDataStores();
DataStoreFactorySpi用於從一組參數構造一個DataStore實例,它還提供了構造實例時的參數列表,獲取方法爲:
code
//獲取參數列表 DataAccessFactory.Param[] parametersInfo = dataStoreFactorySpi.getParametersInfo();
使用SPI的一個好處就是,若是想新增一個新的矢量格式或者數據庫格式,只須要實現一遍DataStoreFactorySpi,能夠根據DataStoreFactorySpi獲取到夠造DataStore須要的參數列表,咱們的客戶端能夠根據這個參數列表動態的構造參數輸入GUI;這樣在不修改客戶端的狀況下就可很好的實現支持格式的伸縮,即想支持某種格式,就把實現該格式對應DataStoreFactorySpi的依賴jar包加進來,不想支持某種格式去掉依賴便可,客戶端不須要作任何更改。
下面是對PostGIS和Hbase兩種格式數據的動態解析。
下一節開始介紹數據訪問。