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

1.前言

通过GeoServer发布的服务,在GeoServer内部有固定的文件组织和构造。如果对该文件组织和构造有足够的了解,可以通过此规则来自己开发GeoServer服务的发布工具,简化工程人员的操作流程。此篇文章将跟大家一起探讨其中规则。

2.了解GeoServer中与服务相关的基本文件

在GeoServer的Data文件夹中有如下文件:

其中,workspaces文件是图层服务相关的配置文件存放处。

styles文件夹是style相关文件的默认存放处。

2.1workspaces文件夹

此文件夹中包括了:namespace.xml,workspace.xml,datastore.xml,featuretype.xml,layer.xml。

此文件夹中的文件组织如下图:

2.2styles文件夹

3.以一个图层的发布为例,详解与此服务相关的各配置文件以及它们之间的关系

一个服务能够被GeoServer成功的发布,得益于GeoServer内部对与该服务相关的配置文件的读取。这里,我详细的与大家一起探讨一个以postGIS为数据源的图层服务的各配置文件的编写。

3.1编写workspace.xml和namespace.xml文件

workspace.xml的文件如下:

namespace.xml的文件如下:

注意:以上两个配置文件中,workspaceID和namespaceID在会接下来的配置文件中使用。

3.2编写datastore.xml文件

注意:其中namespaceUrl与之前的namespaceUrl要保持一致。DatasourceID在还在接下来的配置文件中使用。

3.3编写样式文件(test.sld和test.xml)

test.sld文件如下所示(具体sld如何编写可以参考我的博客http://www.cnblogs.com/naaoveGIS/p/4176198.html):

test.xml的文件编写如下:

注意:text.xml中的filename配置为想要关联的sld文件。StyleName在接下来的配置文件中使用。

3.4编写featuretype.xml文件

该文件详细描述了所要发布的图层的信息,具体如下:

注意:此处datastoreID和namespaceID均使用以上配置中生成的ID。nativeName中使用postgis中数据源的名称(图层表名)。FeaturetypeID会在接下来的配置中使用。

3.5编写layer.xml文件

layer.xml为发布前的最后一个配置了,其具体配置如下:

注意:styleID和featuretypeID均为以上配置文件中生成的ID。

4.GeoServer自动化发布服务工具的探索

在了解了GeoServer发布一个图层所需的配置文件,以及各配置文件之间的联系后,我们可以基于这个规则制作一个GeoServer自动化发布服务的工具。其流程图如下:

注意:配置文件可以由模板生成,针对不同图层,在模板上修改即可。

5.结果展示

以下是通过自动化工具生成的文件:

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

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

                                          

简析GeoServer服务的内部文件组织以及GeoServer自动化服务发布工具的开发思路的更多相关文章

  1. 简析将shp导入Oracle并利用geoserver将导入的数据发布

    文章版权由作者李晓晖和博客园共有,若转载请于明显处标明出处:http://www.cnblogs.com/naaoveGIS/. 1.环境准备 1.1 软件准备 首先要安装有支持空间数据的Oracle ...

  2. AFNetworking封装思路简析

    http://blog.csdn.net/qq_34101611/article/details/51698473 一.AFNetworking的发展 1. AFN 1.0版本 AFN 的基础部分是 ...

  3. Android -- 多媒体播放之MediaPlayer使用内部实现简析

    Android -- MediaPlayer内部实现简析 在之前的博客中,已经介绍了使用MediaPlayer时要注意的内容.如今,这里就通过一个MediaPlayer代码实例,来进一步分析Media ...

  4. 巨杉Tech | 微服务趋势下的数据库设计与应用简析

    周五(7月12日)巨杉数据库参与了由得到App主办八里庄技术沙龙活动,分享主题是关于分布式数据库架构与实战. 以下就是根据巨杉数据库现场分享的内容进行的分享实录整理. 巨杉数据库简介 巨杉,专注新一代 ...

  5. [转载] Thrift原理简析(JAVA)

    转载自http://shift-alt-ctrl.iteye.com/blog/1987416 Apache Thrift是一个跨语言的服务框架,本质上为RPC,同时具有序列化.发序列化机制:当我们开 ...

  6. SpringMVC源码情操陶冶-DispatcherServlet父类简析

    阅读源码有助于陶冶情操,本文对springmvc作个简单的向导 springmvc-web.xml配置 <servlet> <servlet-name>dispatch< ...

  7. DiskGenius注册算法简析

    初次接触DiskGenius已经成为遥远的记忆,那个时候还只有DOS版本.后来到Windows版,用它来处理过几个找回丢失分区的案例,方便实用.到现在它的功能越来越强大,成为喜好启动技术和桌面支持人员 ...

  8. 简析 Tomcat 、Nginx 与 Apache 的区别

    简析 Tomcat .Nginx 与 Apache 的区别 本文讲的是简析 Tomcat .Nginx 与Apache的区别, 经常在用 apache 和 tomcat 等这些服务器,可是总感觉还是不 ...

  9. Flink源码阅读(一)——Flink on Yarn的Per-job模式源码简析

    一.前言 个人感觉学习Flink其实最不应该错过的博文是Flink社区的博文系列,里面的文章是不会让人失望的.强烈安利:https://ververica.cn/developers-resource ...

随机推荐

  1. Devexpress Ribbon

    http://www.cnblogs.com/liwei81730/archive/2011/12/21/2296203.html 可查看此处.

  2. Django后台

    django的后台我们只要加少些代码,就可以实现强大的功能. 与后台相关文件:每个app中的 admin.py 文件与后台相关. 下面示例是做一个后台添加博客文章的例子: 一,新建一个 名称为 zqx ...

  3. nginx config

    from : http://www.ha97.com/5194.html 更详细的模块参数请参考:http://wiki.nginx.org/Main #定义Nginx运行的用户和用户组user ww ...

  4. RunLoop

    一.什么是RunLoop 从字面意思理解:运行循环.跑圈. 基本作用: 保持程序(应用)的持续运行. 处理程序(APP)中的各种事件(比如:触摸事件.定时事件.Selector事件等) 节省CPU资源 ...

  5. 一鼓作气 博客--第五篇 note5

    一.迭代器 二.装饰器 三.生成器 1.生成列表的方式有几种 2.把列表每个数都加1 2.1 data =[1,2,3] for i in map(lambda x:x+1,data):print(i ...

  6. Oracle EBS - Form DEV Env

    1. 创建文件夹resource与forms, 以便存放pll与forms(主要用到APSTAND.fmb, APPSTAND.fmb, TEMPLATE.fmb)文件; 2. 修改注册表 HKEY_ ...

  7. 剑指Offer面试题:7.旋转数组的最小数字

    一.题目:旋转数组的最小数字 题目:把一个数组最开始的若干个元素搬到数组的末尾,我们称之为数组的旋转.输入一个递增排序的数组的一个旋转,输出旋转数组的最小元素.例如数组{3,4,5,1,2}为{1,2 ...

  8. 作业六:团队项目——编写项目的Spec

    主要内容: 各组结合所选项目,编写项目的规格说明书(Spec),Spec应至少包含以下内容:(20分) 1. Spec的目标 2. 项目的典型用户和场景 3. 项目的用例模型 4. 项目中涉及到的术语 ...

  9. Python学习笔记

    1. 进行浮点数运算时,整数要写成浮点数形式,否则Python默认按照整数进行运算了,譬如3/5应该写成3.0/5.0: 2. Python没有switch: 3. Python中没有重载,但是可以通 ...

  10. AutoMapper 最佳实践

    AutoMapper 是一个基于命名约定的对象->对象映射工具. 只要2个对象的属性具有相同名字(或者符合它规定的命名约定),AutoMapper就可以替我们自动在2个对象间进行属性值的映射.如 ...