模板配置

文档的这一部分介绍了如何将新模板添加到Geoserver,以及如何从层配置页面定义何时应应用模板的规则。

将要素模板添加到Geoserver

安装插件后,Geoserver用户界面的左面板将显示一个新选项 Feature TemplatingData 一节。点击该选项将打开一个包含可用模板的表格。

../../_images/templates-table.png

点击 add New 按钮将打开配置页面。

../../_images/template-ui.png

在第一个选项卡中,用户可以指定以下值:

  • 这个 Template Name 。保存在数据目录中时,该名称将用作模板文件名。

  • 这个 Template File Type 模板的(文件扩展名),方法是从可用模板中选择一个。

  • 这个 Workspace 如果用户想要将模板的使用限制在特定工作空间中可用的矢量层。

    • 这个 Layer Name 如果用户想要将模板的使用仅限于特定的矢量层。选择一个 Layer Name 不会使模板应用于该层。此选项旨在使模板仅供选定的层使用。为了应用模板,需要在每个层的基础上配置内容协商规则(见下文部分)。

这个 WorkspaceLayer Name 如果指定了值,还将影响模板的保存位置:

  • 如果两者都未指定,则模板将保存在 features-templating 目录。

  • 如果一个 Workspace 则模板将保存在该工作区文件夹中。

  • 如果一个 Layer Name 则模板将保存在该层文件夹中。

这个 Template Content 节是模板实际定义的位置。

  • 模板可以从文件上载,在这种情况下, Template NameTemplate File Type 字段将从文件中自动填充。

  • 否则,可以从头开始将模板写入模板编辑器。

通过单击 Preview 选项卡用户可以指定参数来测试模板并预览结果。预览将仅返回单个要素。

警告

预览模板时,模板将保存/更新在数据目录中。这是因为预览通过发出WFS请求来工作。这意味着先前的状态已丢失,但可能正在访问该层的用户可以立即看到任何修改。

../../_images/preview-ui.png
  • 用户必须在 Available Output Formats

  • 用户必须在可用的值中指定值 WorkspaceLayer Name 菲尔兹。

  • 如果用户指定了 Workspace 中的模板 Data 按Tab键预览 Workspace 将从该工作区自动设置。

  • 如果用户指定了 Layer Name 中的模板 Data 按Tab键预览 Layer Name 将从该层自动设置。

  • 用户可以指定一个 Feature ID 若要获取指定功能的预览,请执行以下操作。

  • 用户可以指定一个 CQL Filter 若要获取匹配过滤器的要素的预览,请执行以下操作。

这个 Validate 按钮根据输出格式的不同执行不同的操作:

  • 在GML中,它将根据模板中指定的模式位置触发模式验证。

  • 在JSON-LD情况下,它将执行JSON-LD @context 验证。

  • 在GeoJSON的情况下,不会进行任何验证。

将模板规则添加到图层

要通知Geoserver何时应用模板,用户需要按层指定规则。最基本的规则是将模板绑定到特定的输出格式。 Request CQL Functions 允许指定更高级的规则。

安装插件后,Layer Configuration页面中将出现一个新的选项卡,允许定义模板规则。

../../_images/template-rules.png

填写表单后,用户需要按下 Add 按钮将规则添加到规则表中。然后,仅当 Save 按钮已按下。

可以指定以下值:

  • 这个 Priority 如果有多个规则与GetFeature请求匹配,则需要通知Geoserver应应用哪个规则。

  • the Template Name that indicates which template should be applied. If the template has a global scope the dropdown will present it with the template name value only. If a Workspace has been defined at template configuration time, the format will be {workspace name}:{template name}. If a Layer Name has been specified at template configuration time, the format will be {workspace name}:{layer name}:{template name}.

  • 这个 Supported Output Formats 下拉列表显示了可以调用模板的输出格式。用户可以选择一个来指示应该将所选模板应用于哪种输出格式。如果选择了GML值,该模板将应用于所有GML版本的输出格式。如果应将不同的GML模板应用于不同的GML版本,则可以使用MIMEType()函数在MIME类型上定义条件。

  • 这个 Request CQL filter 区域允许定义通用CQL筛选器以针对请求进行评估,以确定模板是否应为t。要使用的可用请求函数列在表单的右侧。

  • 这个 Profile CQL Filter 允许定义允许按配置文件执行内容协商的CQL筛选器。表格右侧列出了要使用的可用请求函数。每个配置文件有几种内容协商方法,例如,其中一种方法是 W3C recommended approach 其中配置文件以HTTP标头的形式提供。这将在类似于下面的CQL过滤器中进行转换 header('Accept-Profile')='http://my-profile/geo+json'

CQL过滤器示例可能如下所示:

  • requestParam('myParameter') `=‘使用此模板’

  • mimeType() =‘应用程序/地理位置+json’

  • requestMatchRegex('^.*matchedPart.*$') =TRUE

  • header('testHeader') =‘myHeaderValue’

每个规则必须定义一个来自 Supported Output Formats 下拉菜单或 Request CQL filter 在MimeType()值上使用筛选器,或者两者都使用。

一旦定义了规则,如果传入的GetFeature请求匹配,则与匹配的规则对应的模板将应用于输出。

数据目录配置

可以直接从Geoserver数据目录配置要素模板,而无需使用任何用户界面。在这种情况下,需要将模板放置在Feature Type目录中。以这种方式配置模板时,每个要素类型只支持一个要素模板,并且每个输出格式的名称都是固定的,如下表所示:

  • Gml 2=gml2-template.xml

  • Gml 3.1=gml31-template.xml

  • GML 3.2=gml32-template.xml

  • Json-ld=json-id-template.json

  • Geojson=Geojson-template.json

  • Html=html-template.xhtml

Previous: 模板指令