模板配置¶
文档的这一部分介绍了如何将新模板添加到Geoserver,以及如何从层配置页面定义何时应应用模板的规则。
将要素模板添加到Geoserver¶
安装插件后,Geoserver用户界面的左面板将显示一个新选项 Feature Templating
在 Data
一节。点击该选项将打开一个包含可用模板的表格。

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

在第一个选项卡中,用户可以指定以下值:
这个 Template Name 。保存在数据目录中时,该名称将用作模板文件名。
这个 Template File Type 模板的(文件扩展名),方法是从可用模板中选择一个。
这个 Workspace 如果用户想要将模板的使用限制在特定工作空间中可用的矢量层。
这个 Layer Name 如果用户想要将模板的使用仅限于特定的矢量层。选择一个 Layer Name 不会使模板应用于该层。此选项旨在使模板仅供选定的层使用。为了应用模板,需要在每个层的基础上配置内容协商规则(见下文部分)。
这个 Workspace 和 Layer Name 如果指定了值,还将影响模板的保存位置:
如果两者都未指定,则模板将保存在
features-templating
目录。如果一个 Workspace 则模板将保存在该工作区文件夹中。
如果一个 Layer Name 则模板将保存在该层文件夹中。
这个 Template Content 节是模板实际定义的位置。
模板可以从文件上载,在这种情况下, Template Name 和 Template File Type 字段将从文件中自动填充。
否则,可以从头开始将模板写入模板编辑器。
通过单击 Preview 选项卡用户可以指定参数来测试模板并预览结果。预览将仅返回单个要素。
警告
预览模板时,模板将保存/更新在数据目录中。这是因为预览通过发出WFS请求来工作。这意味着先前的状态已丢失,但可能正在访问该层的用户可以立即看到任何修改。

用户必须在 Available Output Formats
用户必须在可用的值中指定值 Workspace 和 Layer 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页面中将出现一个新的选项卡,允许定义模板规则。

填写表单后,用户需要按下 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.*$')
=TRUEheader('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