Geotools系列之Geotools DataStore

  • 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两种格式数据的动态解析。

  下一节开始介绍数据访问。

相关文章
相关标签/搜索