项目推荐:georewrite, 基于h2快速实现geoserver的自定义数据源

github项目地址:https://github.com/codingmiao/georewrite

email:liuyu@wowtools.org


背景

加入我们需要从自定义的文件、远程服务等地方获取数据并在geoserver中发布为图层,或者是塞一套奇怪的查询业务到geoserver里,该怎么办呢?

geoserver提供了自定义数据源的方式,不过略复杂,基本流程是这样的:

  1. 创建一个类实现接口org.geotools.data.DataStoreFactorySpi,及相应的一套DataStore;
  2. 在目录META-INF/services/下增加文件org.geotools.data.DataStoreFactorySpi,内容为刚创建的类的完全类名;
  3. 将编译好的classes复制到

快速开始

1、安装h2插件

到geoserver官网下载h2插件jar及h2的jdbc驱动jar,比如2.10版的:http://geoserver.org/release/2.10.0/,放到geoserver\WEB-INF\lib目录下,重启geoserver

p1

成功安装后,在geoserver中新建数据源中能看到H2的数据源:

p2

2、clone georewrite

georewrite基于我的另外两个项目构建,你还需要clone它们:
https://github.com/codingmiao/catframe一些通用工具
https://github.com/codingmiao/h2魔改版H2,用于sql转发
三个项目都是maven构建的,所以clone下来后,执行mvn clean install即可。

如果不想使用maven,也可以直接下载releases文件,将其中的jar直接导入项目中即可。

3、编写自定义查询器:

编写一个类实现GeoSqlQueryer,主要代码如下:

@Override
public ResultSet query(Connection conn, String columnPart, String fun, String pg) throws SQLException {
    SimpleResultSet rs;
    //利用父类中的方法构造一个SimpleResultSet对象
    String[] columns = columnPart2columnArr(columnPart);
    rs = buildSimpleResultSetByColumns(columns);

    /**TODO
     将原项目中的查询方法放在这,返回一个list,
     并通过rs.addRow(obj[])方法将查询结果放到SimpleResultSet中
    **/

    return rs;
}

这是一个完整的例子:TestQueryer.java

  1. 配置和启动
    参照StartDemo.java编写配置信息和启动类,然后运行启动类,自定义的数据源就配置完了,最后在geoserver中配置好数据源,即可使用:
    此处输入图片的描述
    (注意到图中CQL填写了 TCODE=’HELLO’,才触发了自定义的查询器,也可通过TCODE来传递更复杂的查询条件,来实现各种变态的业务逻辑)
  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值