文章版权由作者李晓晖和博客园共有,若转载请于明显处标明出处:http://www.cnblogs.com/naaoveGIS/

1. 背景

在之前的《简析GeoServer服务的内部文件组织以及GeoServer自动化服务发布工具的开发思路》(https://www.cnblogs.com/naaoveGIS/p/4212093.html)文章中,我详细的介绍了Geoserver如何通过构造其内部的featuretype.xml、layer.xml等文件以实现数据源的快捷发布。但是该方案主要针对项目环境预搭建时的快速处理,但是当Geoserver已经开始运行,系统不能时刻重启情况下,该方案是不能解决数据的实时动态发布的。因此,我们还需要其他方案来解决。

目前有两种方案来实现,一种是利用已封装好的geoserverManager.jar来开发,另一种就是直接基于geoserver的Rest服务来开发。这里,我们主要对如何使用geoserver的Rest服务完成开发来进行描述。

2.  RestAPI

Geoserver的每一个版本均有在线使用说明,这里给出其中一个版本中关于RestAPI介绍的地址:http://docs.geoserver.org/stable/en/user/rest/index.html

我所列出的workspaces、datastores、featuretypes、layers、styles是服务发布中均会涉猎的类型。我们利用workspaces来创建工作空间,利用datasotores来创建数据源,利用featuretypes来将数据源中具体数据创建为要素类型,利用styles来创建样式,利用layer来将数据类型与样式进行关联。

以datastores为例,点击该链接可进入其支持的所有API请求:

其中包含了数据源的增、删、改、查等。其他模块类似。

3.   实现

3.1   DataStores

该操作包含判断DataStores是否存在,以及创建。

3.1.1判断是否存在

依赖 gisBaseLayer.getServiceUrl()+"/rest/workspaces/cite/datastores.json"请求可获取到所有dataStores描述,进而判断指定的DataStores是否存在。

3.1.2创建

再依据构造创建dataStores的XML,发送Rest请求完成创建,这里以mysql数据源为例:

其中,发送请求时,一定要设置其权限认证:

请求方式为POST。

3.2   FeatureTypes

当dataStores创建成功后,需将其中的数据发布为要素类型服务。这里主要包含存在判断、删除操作、创建操作。

3.2.1判断是否存在

通过发送:gisBaseLayer.getServiceUrl()+"/rest/workspaces/cite/datastores/"+storeName+"/featuretypes.json",可以获取到指定的stores下的所有featuretype,  通过遍历可判断指定的featuretype是否存在。

3.2.2删除

以DELETE请求类型,发送:

gisBaseLayer.getServiceUrl()+"/rest/workspaces/urbanlayer/datastores/"+storeName+"/featuretypes/"+featureTypeName+"?recurse=true"

请求,便可删除指定的featuretype。

3.2.3 创建

获取到要素的几何范围、坐标系等,便可以构造XML:

请求方式为POST。

3.3Styles

3.3.1判断是否存在

通过发送:gisBaseLayer.getServiceUrl()+"/rest/styles.json",可以获得所有style,通过遍历可判断指定的style是否存在。

3.3.2删除

以DELETE请求方式,发送:

gisBaseLayer.getServiceUrl()+"/rest/styles/"+styleName+"?purge=ture&recurse=true"

便可删除指定的style。

3.3.3创建

Geoserver中的样式内容均为SLD格式,这里创建样式服务有多种方式,这里以style.sld和style.xml一同创建为例:

红框中分别为样式名称,以及创建Style时传入的数据格式。

请求方式为POST请求。

3.4Layers

3.4.1修改

该功能主要目的是修改layer与style的关联:

请求方式为PUT。

4. 功能设计

a.开发数据源选择框,提供业务库中待发布数据选择、几何字段选择、数据条件过滤等。

b.开发样式配置模板,提供填充色、边框、图标等配置。

c.开发地理服务器选择框,提供选择发布至某个geoserver。

d.一键发布。

e.元数据获取,服务托管。

                     -----欢迎转载,但保留版权,请于明显处标明出处:http://www.cnblogs.com/naaoveGIS/

如果您觉得本文确实帮助了您,可以微信扫一扫,进行小额的打赏和鼓励,谢谢 ^_^

                                

基于geoserver的REST服务完成mysql数据源动态发布的更多相关文章

  1. 基于GeoServer切片地图服务的发布

    接着上一篇文章,如何将JPG格式的图片转化为带地理坐标的TIFF格式里提及的最近的一个项目,数据源是一张高分辨率的2.5维图片,现在已经成功转化成了带有地理坐标的TIFF格式.下面将介绍借助GeoSe ...

  2. 基于CXF开发crm服务

    1 基于CXF开发crm服务 1.1 数据库环境搭建 1.2 web项目环境搭建 第一步:创建动态web项目 第二步:导入CXF相关jar包 第三步:配置web.xml <context-par ...

  3. 基于Geoserver发布时间地图

    Geoserver它是著名的开源GIS其中软件. 地图服务软件也经常使用的物品.基于geoserver和Openlayers它可以建立一个自由的,开放源码GIS工程. Geoserver公布地图的步骤 ...

  4. 基于 prometheus 的微服务指标监控

    基于prometheus的微服务指标监控 服务上线后我们往往需要对服务进行监控,以便能及早发现问题并做针对性的优化,监控又可分为多种形式,比如日志监控,调用链监控,指标监控等等.而通过指标监控能清晰的 ...

  5. Loadrunner参数化连接oracle、mysql数据源报错及解决办法

    Loadrunner参数化连接oracle.mysql数据源报错及解决办法 (本人系统是Win7 64,  两位小伙伴因为是默认安装lr,安装在 最终参数化的时候,出现连接字符串无法自动加载出来: 最 ...

  6. coreseek实战(二):windows下mysql数据源部分配置说明

    coreseek实战(二):windows下mysql数据源部分配置说明 关于coreseek在windows使用mysql数据源的配置,以及中文分词的详细说明,请参考官方文档: mysql数据源配置 ...

  7. coreseek(sphinx)安装2(mysql数据源配置和测试)

    Windows操作系统下 mysql数据源配置: 主要步骤:  配置mysql数据源配置文件->生成索引->开启索引   (三步) coreseek\etc\csft_mysql.conf ...

  8. dubbo服务+Spring事务+AOP动态数据源切换 出错

    1:问题描述,以及分析 项目用了spring数据源动态切换,服务用的是dubbo.在运行一段时间后程序异常,更新操作没有切换到主库上. 这个问题在先调用读操作后再调用写操作会出现. 经日志分析原因: ...

  9. 新项目架构从零开始(三)------基于简单ESB的服务架构

    这几个月一直在修改架构,所以迟迟没有更新博客. 新的架构是一个基于简单esb的服务架构,主要构成是esb服务注册,wcf服务,MVC项目构成. 首先,我门来看一看解决方案, 1.Common 在Com ...

随机推荐

  1. vue实现双向数据绑定的原理

    vue实现双向数据绑定的原理就是利用了 Object.defineProperty() 这个方法重新定义了对象获取属性值(get)和设置属性值(set)的操作来实现的. 在MDN上对该方法的说明是:O ...

  2. UDP和TCP的差异

    UDP和TCP传递数据的差异类似于电话和明信片之间的差异. TCP就像电话,必须先验证目标是否可以访问后才开始通讯. UDP就像明信片,信息量很小而且每次传递成功的可能性很高,但是不能完全保证传递成功 ...

  3. [python3.5][PyUserInput]模拟鼠标和键盘模拟

    一.PyUserInput安装 python3.5的PyMouse和PyKeyboard模块都集成到了PyUserInput模块中.在python3.5中,直接安装PyUserInput模块即可 Py ...

  4. 某校高中生利用Python,巧妙获取考试成绩,看到成绩后无言以对!

    Python是非常有吸引力的编程语言,学习Python的不是帅哥就是美女.为什么这么说呢?因为我和我的女朋友都是学习Python认识的,小编肯定是帅哥,不用去怀疑,而且我眼光特高. 给大伙讲一个故事, ...

  5. SQL2008全部数据导出导入两种方法

    方法一:生成脚本导出导入sql2008全部数据第一步,右键要导出的数据库,任务--生成脚本 第二步,在设置脚本编写选项处,点击--高级(A),选择要编写脚本的数据的类型为:架构和数据 如果找不到 要编 ...

  6. Ordering犀利的比较器

    Ordering是Guava类库提供的一个犀利强大的比较器工具,Guava的Ordering和JDK Comparator相比功能更强.它非常容易扩展,可以轻松构造复杂的comparator,然后用在 ...

  7. nsq topic和channel的区别

    topic:一个可供订阅的话题.channel:属于topic的下一级,一个topic可以有多个channel.二者关系可以再参考下面两文章:http://www.cnblogs.com/forres ...

  8. POJ_2104_K-th Number_主席树

    POJ_2104_K-th Number_主席树 题意:给定一个长度为n的序列,m次询问区间第k小 分析: 主席树模板 主席树可以理解成为n棵权值线段树的前缀和 但我们不能建n棵线段树,只需要对于每个 ...

  9. python黑科技:还在为没有wifi而烦心吗?这篇文章解决你的困扰

    python作为一门高级编程语言,它的定位是优雅.明确和简单.阅读Python编写的代码感觉像在阅读英语一样,这让使用者可以专注于解决问题而不是去搞明白语言本身.Python虽然是基于C语言编写,但是 ...

  10. iOS之LLDB常用调试命令

    LLDB是个开源的内置于XCode的调试工具,这里来理一理常用用法.lldb对于命令的简称,是头部匹配方式,只要不混淆,你可以随意简称某个命令.结果为在xcode下验证所得,可能与其它平台有所误差. ...