支持的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.0FeatureCollection
不能包含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."
.
如果是多几何图形(例如 MultiPoint
或 MultiSurface
)分配了一个 gml:id
的(例如) parentid
,为了允许GML 3.2.1模式有效性,多几何图形包含的每个几何图形都将自动分配一个 gml:id
形式的 parentid.1
, parentid.2
,…整齐。
GML 3.3标准¶
拟议的GML3.3本身就是一个GML3.2.1应用程序模式;GML3.3草案的初步测试表明,它与预期的应用程序模式一起工作。