今天我们来讲讲怎么扩展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 install path>\webapps\geoserver\WEB-INF\classes下,或者复制打包的jar文件到<GeoServer install path>\webapps\geoserver\WEB-INF\lib目录下;

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 AbstractDataStoreFactoryimplements 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 stubreturn null;}public DataStore createNewDataStore(Map<String, Serializable> arg0)throws IOException {// TODO Auto-generated method stubreturn null;}}
检验成果:
用数据源创建界面的前后对比照来说明:
之前:
 

之后:

后记:

GS还提供了自定义录入界面的方法,这个以后再说。

转载于:https://www.cnblogs.com/sillyemperor/p/3862179.html

扩展GeoServer数据源相关推荐

  1. GeoServer源码解析和扩展 (三)结构篇

    转自:http://www.cnblogs.com/sillyemperor/archive/2011/01/26/1933248.html 上一章我们通过实现一个服务对如何扩展GeoServer有了 ...

  2. 【Geoserver】GeoServer安装GDAL扩展的方法总结

    -为了发布.img格式数据,需要为geoserver添加GDAL插件进行扩展,查询了很多办法都无法成功,简直崩溃都快放弃了,没想到最后实现了!!!!和查询到的方法稍微有些不同,不知道有没有遇到相同困难 ...

  3. .Net Core Configuration Etcd数据源

    前言 .Net Core为我们提供了一套强大的Configuration配置系统,使用简单扩展性强.通过这套配置系统我们可以将Json.Xml.Ini等数据源加载到程序中,也可以自己扩展其他形式的存储 ...

  4. 【360开源】Quicksql——更简单,更安全,更快速的跨数据源统一SQL查询引擎

    话说天下大势,分久必合,合久必分. --罗贯中大大 前言 SQL,全称Structured Query Language,是当今使用最广泛的数据查询语言.最初的设计仅仅是适用于RDBMS,可是随着数据 ...

  5. Springboot集成Flyway(适用于多数据源)

    1. Flyway 可以将初始化sql在项目启动时候执行,取代单独的DBN更新包 2. 依赖 <dependency><groupId>org.flywaydb</gro ...

  6. 一、Greenplum平台扩展框架(PXF)

    Greenplum平台扩展框架(PXF)通过将外部数据源映射成GP的外部表,使得Greenplum能够并行.高吞吐量以及联合查询外部数据源的数据.该扩展插件是基于Apache HAWQ的PXF(孵化) ...

  7. 报告老板,微服务高可用神器已祭出,您花巨资营销的高流量来了没?

    来自:码大叔 我得意地来到老板的办公室:"报告老板,高可用神器已祭出,您花巨资营销的高流量什么时候到?" 老板呵呵一声:"高流量下周一来报道,你可以准备下和他做工作交接了 ...

  8. grafana监控linux,Grafana –美观、强大的可视化监控指标展示工具 | Linux大学

    在之前的InfluxDB系列教程 中,我们给大家介绍了当下流行的一款时序数据库--InfluxDB. 接下来给大家带来一款强大的,与InfluxDB搭配使用的前端指标项展示项目--Grafana. G ...

  9. 万字干货 | 一文揭秘Presto在腾讯资讯业务中的应用

    随着产品矩阵和团队规模的扩张,跨业务.APP的数据处理和分析总是不可避免.一个显而易见的问题就是异构数据源的连通.我们基于PrestoDB构建了业务线内适应腾讯生态的联邦查询引擎,连通了部门内部20+ ...

  10. 基于时序数据的微内核预警引擎架构设计

    一个完整的监控生态体系包括"监.析.控"三个环节,预警平台作为偏"析"的一环,既要对监控数据做规则分析,又要为控制系统生成预警日志,起着承上启下的作用.监控平台 ...

最新文章

  1. 正則表達式截取字符串两字符间的内容
  2. 基于linux的java学习,Java学习---Linux总结
  3. 二分查找法---java实现
  4. 传播时延、发送时延、处理时延和排队时延各自的物理意义是什么?
  5. 使用OGR创建弧形图形
  6. Java 故障安全异常处理
  7. ACS——网管的九阳神功
  8. 通达信版弘历软件指标_弘历软件指标公式源码
  9. flash花屏 html,电脑中Firefox火狐浏览器出现卡顿、花屏、Flash崩溃等问题的解决方法...
  10. 【jQuery】货币格式化
  11. 9 款最好的免费博客网站对比
  12. collect2: error: ld returned 1 exit status(解决方案大总结)
  13. pytorch实现股票预测
  14. 实验5 卷积神经网络实验
  15. shell脚本常见错误及解决方法
  16. Android电视开机进入AV,康佳电视如何设置开机成AV模式-康佳开机直接进电视
  17. Route命令使用详解
  18. 简单粗暴认识jieba(结巴)
  19. 校园贷受阻,汽车分期能帮趣店挽救困局吗?
  20. 电动机的故障听声音就可以判断

热门文章

  1. Android_adb shell am/pm使用
  2. 面向对象中多个对象之间的关系
  3. 第十七周项目2-引用作形参
  4. 帧中继多点子接口下配置OSPF
  5. 用c#写的smtp邮件发送类
  6. Java堆描述正确的是_Java面试题 每日一练(4.9)
  7. redis 在 mac 下的安装与使用
  8. oracle数据库考试答题,Oracle数据库试题
  9. python经典实例下载_python经典实例
  10. 利用定时器中断方式控制led灯的闪烁速度_实验四 LED点阵