支持的GML版本

GML 3.1.1标准

  • WFS 1.1.0支持GML 3.1.1应用程序架构。

  • 客户端必须在请求中指定WFS 1.1.0,因为地理服务器默认值为WFS 2.0.0。

  • 获取URL必须包含 version=1.1.0 将WFS版本设置为1.1.0。

GML 3.2.1

  • WFS 1.1.0和(不完整)WFS 2.0.0支持GML 3.2.1应用程序架构。

  • 还不支持WFS 1.1.0中不包含的某些WFS 2.0.0功能,例如GetFeatureByID。

  • 使用WFS 1.1.0的客户端必须在请求中指定WFS 1.1.0并选择 gml32 GML 3.2.1的输出格式。

  • 要将WFS 1.1.0用于GML 3.2.1,get URL必须包含 version=1.1.0 将WFS版本设置为1.1.0和 outputFormat=gml32 将输出格式设置为GML 3.2.1。

  • 默认WFS版本为2.0.0,默认输出格式为GML 3.2.1。

  • 所有GML 3.2.1响应都包含在WFS 2.0.0中。 FeatureCollection 元素,即使对于WFS 1.1.0请求也是如此,因为WFS 1.1.0 FeatureCollection 不能包含GML 3.2.1功能。

需要GML 3.2.1的辅助命名空间

GML 3.2.1 WFS响应在WFS 2.0.0中提供 FeatureCollection .与WFS 1.1.0不同,WFS 2.0.0不显式依赖于任何GML版本。因此,GML名称空间是辅助名称空间,必须显式定义为辅助名称空间。参见 辅助命名空间 有关详细信息。

例如,使用前缀 gml 对于GML 3.2,创建 workspaces/gml/namespace.xml 包含:

<namespace>
    <id>gml_namespace</id>
    <prefix>gml</prefix>
    <uri>http://www.opengis.net/gml/3.2</uri>
</namespace>

workspaces/gml/workspace.xml 包含:

<workspace>
    <id>gml_workspace</id>
    <name>gml</name>
</workspace>

未能定义 gml 带有辅助命名空间的命名空间前缀将导致以下错误:

java.io.IOException: The prefix "null" for element "null:name" is not bound.

对响应进行编码时(在本例中,包含 gml:name ,即使命名空间前缀是在映射文件中定义的。

GML 3.2.1几何要求GML:ID

GML 3.2.1要求所有几何图形具有 gml:id .而geoserver将很高兴地对WFS响应进行编码 gml:id 在几何图形上,这些将是无效的模式。编码A gml:id 在几何图形上,可以通过设置 idExpression 在几何图形属性的映射中。例如, gsml:shape 是几何属性及其 gml:id 可能使用以下项生成:

<AttributeMapping>
    <targetAttribute>gsml:shape</targetAttribute>
    <idExpression>
        <OCQL>strConcat('shape.', getId())</OCQL>
    </idExpression>
    <sourceExpression>
        <OCQL>SHAPE</OCQL>
    </sourceExpression>
</AttributeMapping>

在这个例子中, getId() 返回 gml:id 包含的功能,因此每个几何图形将具有唯一的 gml:id 通过附加 gml:id 字符串的包含功能 "shape." .

如果是多几何图形(例如 MultiPointMultiSurface )分配了一个 gml:id 的(例如) parentid ,为了允许GML 3.2.1模式有效性,多几何图形包含的每个几何图形都将自动分配一个 gml:id 形式的 parentid.1parentid.2 ,…整齐。

GML 3.3标准

拟议的GML3.3本身就是一个GML3.2.1应用程序模式;GML3.3草案的初步测试表明,它与预期的应用程序模式一起工作。