geoserver存储仓库数据源扩展功能实现
geoserver存储仓库数据源扩展功能实现
关于geoserver存储仓库数据源扩展功能实现,今天我们来讲讲怎么扩展GeoServer(简称GS)的数据源。大家都知道,GS支持多种数据源,而且都提供了友好的界面供操作。下面我们就来简单介绍一下,如何把自定义的数据源增加到GS中,让我们可以在统一风格的界面上愉快的操作。
要完成这个任务,需要如下四个步骤(以矢量数据为例):
1 创建一个类实现接口org.geotools.data.DataStoreFactorySpi(栅格数据源实现org.geotools.coverage.grid.io.GridFormatFactorySpi);
2 在目录META-INF/services/下增加文件org.geotools.data.DataStoreFactorySpi,内容为刚创建的类的完全类名;
3 将编译好的classes复制到<GeoServer home or install path>webappsgeoserverWEB-INFclasses下,或者复制打包的jar文件到<GeoServer home or install path>webappsgeoserverWEB-INFlib目录下;
4 重启GS服务。
这里提供一个例子:
package wj.demo.geocsv;import java.awt.RenderingHints.Key;import java.io.File;import java.io.IOException;import java.io.Serializable;import java.net.URL;import java.util.Collections;import java.util.Map;import java.util.logging.Logger;import org.geotools.data.AbstractDataStoreFactory;import org.geotools.data.DataAccessFactory;import org.geotools.data.DataStore;import org.geotools.data.DataStoreFactorySpi;import org.geotools.data.DataUtilities;import org.geotools.util.KVP;import org.geotools.util.logging.Logging;public class GeoCSVFileDataStoreFactory extends AbstractDataStoreFactory implements DataStoreFactorySpi { static final Logger LOGGER = Logging.getLogger("wj.demo.geosvc"); public static final DataAccessFactory.Param URLP = new DataAccessFactory.Param( "url", URL.class, "url to a .csv file", true, null, new KVP( new Object[] { "ext", "csv" })); public static final DataAccessFactory.Param GEO_FIELINDEX = new DataAccessFactory.Param( "geofield", Integer.class, "Index of geometry field.", true, "0", new KVP(new Object[] { "level", "advanced" })); public boolean canProcess(Map params) { if (!super.canProcess(params)) return false; try { URL url = (URL) URLP.lookUp(params); if (canProcess(url)) { return true; } Object geofld = GEO_FIELINDEX.lookUp(params); File dir = DataUtilities.urlToFile(url); return (dir.isDirectory()) && ((geofld == null) || (geofld instanceof Integer)); } catch (IOException e) { } return false; } public boolean canProcess(URL f) { return (f != null) && (f.getFile().toUpperCase().endsWith("CSV")); } public String getDescription() { return "Comma Separated Values(CSV) file (*.csv)"; } public String getDisplayName() { return "CSV file"; } public Param[] getParametersInfo() { return new DataAccessFactory.Param[] { URLP, GEO_FIELINDEX }; } public boolean isAvailable() { return true; } public Map<Key, ?> getImplementationHints() { return Collections.EMPTY_MAP; } public DataStore createDataStore(Map<String, Serializable> arg0) throws IOException { // TODO Auto-generated method stub return null; } public DataStore createNewDataStore(Map<String, Serializable> arg0) throws IOException { // TODO Auto-generated method stub return null; }}
geoserver存储仓库数据源扩展功能实现效果查看,原文连接:
评论可见,查看隐藏内容本网站文章未经允许禁止转载,合作/权益/投稿 请联系平台管理员 Email:epebiz@outlook.com