-
GeoTools
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.
-
DataStore
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.
上面是官方解釋,簡言之,Geotools是一個開源的Java代碼庫,提供一些處理地理空間數據的方法;DataStore主要用於訪問和存儲矢量格式的地理空間數據。
矢量格式的數據的存儲格式有多種,比如存在shapefiles、數據庫、elasticsearch(Hadoop)或者其他格式,數據庫又有很多種,比如說postGIS、Hbase、Geopackage,但是在進行數據訪問或者存儲時,Geotools提供了統一的訪問接口。其中數據訪問主要涉及的就是DataAccessFinder工廠類,數據存儲主要涉及的就是DataStoreFinder工廠類。
Geotools DataStore使用了Java的SPI機制,這樣就可以動態的獲取到當前可以訪問的數據格式。
關於Java SPI機制的原理見本人的另外一篇隨筆https://www.cnblogs.com/mohanchen/p/10792677.html
具體使用方法如下:
//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實例,它還提供了構造實例時的參數列表,獲取方法為:
//獲取參數列表 DataAccessFactory.Param[] parametersInfo = dataStoreFactorySpi.getParametersInfo();
使用SPI的一個好處就是,如果想新增一個新的矢量格式或者數據庫格式,只需要實現一遍DataStoreFactorySpi,可以根據DataStoreFactorySpi獲取到夠造DataStore需要的參數列表,我們的客戶端可以根據這個參數列表動態的構造參數輸入GUI;這樣在不修改客戶端的情況下就可很好的實現支持格式的伸縮,即想支持某種格式,就把實現該格式對應DataStoreFactorySpi的依賴jar包加進來,不想支持某種格式去掉依賴即可,客戶端不需要做任何更改。
下面是對PostGIS和Hbase兩種格式數據的動態解析。


下一節開始介紹數據訪問。
