WFS服务器¶
- 作者
Jeff McKenna
- 联系方式
jmckenna at gatewaygeomatics.com
- 作者
Even Rouault
- 联系方式
even.rouault at mines-paris.org
- 最后更新
2019-07-02
介绍¶
WFS(Web要素服务)将功能级别的地理空间数据发布到Web。这意味着,客户机不再像MapServer以往那样返回图像,而是在几何图形和属性级别上获取有关基础数据的特定地理空间特征的细粒度信息。与其他OGC规范一样,这个接口使用XML overHTTP作为其传递机制,更准确地说,使用GML(地理标记语言),它是XML的一个子集。
在版本7.0中,MapServer支持WFS规范的版本1.0、1.1和2.0。
软件需求¶
为了使MapServer能够为WFS提供服务,必须针对某些库进行编译:
项目:重新投影库。需要4.4.3或更高版本。
GDAL/OGR:I/O支持库。需要1.6.0或更高版本。
请看地图服务器 UNIX Compilation and Installation HowTo 有关编译支持这些库和功能的MapServer的详细说明。对于Windows用户, MS4W 安装人员随时准备为WFS和WMS服务。
配置 Mapfile 以服务WFS层¶
与在WMS支持中一样,WFS发布是通过向 Mapfile 中添加某些magic元数据关键字/值对来实现的。
MapServer将只提供满足以下条件的层,并将其包含在其WFS功能中:
数据源为矢量类型(shapefile、ogr、postgis、sde、sdo等)
必须设置层名称。设置WFS服务器时,层名称必须以字母开头(层名称不应以数字开头或包含空格)。
层类型是:线、点、多边形
“WFS联机资源”元数据:
WFS联机资源元数据在映射的Web对象元数据中设置,并指定访问服务器时应使用的URL。这对于getCapabilities输出是必需的。如果没有提供WFS-OnlineResource,那么MapServer将尝试使用脚本名和主机名提供默认的资源,但您不应该过于依赖它。强烈建议您提供WFS联机资源元数据。
见第12.3.3节 WFS 1.0.0 specification 关于在线资源URL的整个故事。基本上,您需要的是一个完整的HTTP URL,包括http://prefix、hostname、script name,可能是一个“map=”参数,并以“?”结尾。或“&”。
以下是有效的联机资源URL:
http://my.host.com/cgi-bin/mapserv?map=mywfs.map&
通过在服务器上创建包装脚本,可以从URL中隐藏“map=”参数,然后服务器的联机资源URL可以类似于:
http://my.host.com/cgi-bin/mywfs?
这将在 WMS Server 文件。
“WFS_启用_请求”元数据(见下文)。
WFS服务器 Mapfile 示例¶
下面是一个最小值为空的WFS服务器 Mapfile 的示例。注意所需参数的注释。
MAP
NAME "WFS_server"
STATUS ON
SIZE 400 300
SYMBOLSET "../etc/symbols.txt"
EXTENT -180 -90 180 90
UNITS DD
SHAPEPATH "../data"
IMAGECOLOR 255 255 255
FONTSET "../etc/fonts.txt"
#
# Start of web interface definition
#
WEB
IMAGEPATH "/ms4w/tmp/ms_tmp/"
IMAGEURL "/ms_tmp/"
METADATA
"wfs_title" "WFS Demo Server for MapServer" ## REQUIRED
"wfs_onlineresource" "https://demo.mapserver.org/cgi-bin/wfs?" ## Recommended
"wfs_srs" "EPSG:4326 EPSG:4269 EPSG:3978 EPSG:3857" ## Recommended
"wfs_abstract" "This text describes my WFS service." ## Recommended
"wfs_enable_request" "*" # necessary
END
END
PROJECTION
"init=epsg:4326"
END
#
# Start of layer definitions
#
##################
# World Continents
##################
LAYER
NAME "continents"
METADATA
"wfs_title" "World continents" ##REQUIRED
"wfs_srs" "EPSG:4326" ## REQUIRED
"gml_include_items" "all" ## Optional (serves all attributes for layer)
"gml_featureid" "ID" ## REQUIRED
"wfs_enable_request" "*"
END
TYPE POLYGON
STATUS ON
DATA 'shapefile/countries_area'
PROJECTION
"init=epsg:4326"
END
CLASS
NAME 'World Continents'
STYLE
COLOR 255 128 128
OUTLINECOLOR 96 96 96
END
END
END #layer
END #mapfile
MapServer WFS中的SRS处理规则¶
OGC WFS 1.0规范不允许在多个SRS中公布层(功能类型)。此外,默认情况下没有适用于所有层的默认SRS。但是,可以在不同的SRS中通告WFS服务器中的每一层。
METADATA ows_srs) .
以下是MapServer如何决定要为WFS中的每个层发布和使用SRS:
如果定义了顶级映射SRS,则使用此SRS并将其应用于此WFS中的所有层(要素类型)。在这种情况下,即使设置了各个层的SRS,也会被忽略。
如果没有定义顶级映射SRS,那么每个层都会在其自身的SRS中在功能中进行通告。
注解
通过“SRS is defined”,我们指的是使用epsg代码定义的投影对象的存在,或者是在这个级别上的“wfs-srs`/`ows-srs'元数据的存在。
注解
wfs_srs / ows_srs PROJECTION 块。
注解
第一个公布的“wfs-srs`/`ows-srs'元数据值将用作所请求的bbox的默认投影(除非明确设置),并将用于空间筛选支持空间筛选的层类型的数据。如果数据在不同的投影中,空间过滤器bbox将被投影以匹配源数据。
在层级别,如果将“wfs-srs`/ows-srs`元数据和投影对象都设置为不同的值,则“wfs-srs/ows-srs'元数据定义要用于广告此层的投影(假设没有顶级映射srs),并且假定投影值是数据的投影。因此,这意味着在将数据提供给WFS客户机之前,数据将从投影SRS重新投影到“WFS-SRS/`OWS-SRS'元数据中定义的数据。
感到迷惑?根据经验,只需在地图级别(在Web元数据中)设置“wfs-srs`/ows-srs”,而不在层级别设置“wfs-srs/`ows-srs”元数据,大多数情况下都会正常工作。
WFS 1.1和2.0中的轴方向¶
WFS规范先前版本中的轴顺序是始终使用东距(x或lon)和北距(y或lat)。WFS 1.1规定,根据特定的SRS,X轴可能朝西或不朝东,Y轴可能朝南或不朝北。WFS描绘操作应考虑轴顺序。这会影响一些常用的EPSG代码,如ESPG:4326。当前的实现确保返回到服务器的GetFeature请求的坐标反映了EPSG代码在4000到5000之间的逆轴顺序。
对于SRS,对于WFS 2.0,它将始终以*“urn:ogc:def:crs:epsg::”*语法报告。这可能也适用于WFS 1.1.0。可以将“wfs-return-srs-as-urn”Web元数据项设置为“true”或“false”,以启用或禁用此行为。WFS 2.0默认为“真”,旧版本默认为“假”。
测试WFS服务器¶
验证功能元数据¶
好了,现在我们有了一个 Mapfile ,我们必须检查服务器返回的XML功能,以确保没有遗漏。
使用Web浏览器,访问服务器的联机资源URL,在其末尾添加参数“request=getCapabilities”,例如。
https://demo.mapserver.org/cgi-bin/wfs?SERVICE=WFS&VERSION=1.0.0&REQUEST=GetCapabilities
如果一切顺利,您应该有一个完整的XML功能文档。搜索“警告”一词…MapServer插入以“<!”开头的XML注释。--警告:“在XML输出中,如果检测到丢失的mapfile参数或元数据项。如果您在XML输出中发现任何警告,那么您必须在将服务器注册到WFS客户机之前修复所有警告,否则事情可能不起作用。
注解
所有WFS请求都需要服务参数。当一个请求发生时,它将通过mapserver中的wms、wfs和wcs(按该顺序)传递,直到其中一个服务响应它。
使用GetFeature请求进行测试¶
好了,既然我们知道我们的服务器可以生成有效的XML getCapabilities响应,那么我们应该测试getFeature请求。只需将“service=wfs&version=1.0.0&request=getFeature&typename=yourlayername1,yourlayername2”添加到服务器的URL,就可以返回与这些层关联的GML。
对于WFS 2.0,相同的请求是:
用真正的客户进行测试¶
如果您有权访问WFS客户机,那么用它注册新服务器的在线资源,您应该关闭并运行。
如果您还没有安装自己的WFS客户机,下面是一些提示:
mapserver本身可以用作wfs客户机,请参阅 wfs client howto。
QGIS 是一个完整的地理信息系统包,包括WFS客户端支持。(推荐)
Deegree 提供WFS客户端。
uDig 可以从WMS/WFS服务器添加层。
支持GET和POST请求¶
从4.2版开始,MapServer支持XML编码的POST请求和GET请求。mapserver中的默认值是post。
支持筛选器编码¶
从4.2版开始,MapServer支持WFS GetFeature请求中的过滤器编码(FE)。有关筛选器编码的服务器端的详细信息,请参阅 Filter Encoding HowTo .
支持排序¶
WFS 1.1和2.0支持排序。WFS客户端可以添加 SORTBY
查询字符串的参数,用于根据一个或多个属性值对结果进行排序,例如。 SORTBY=Field1 DESC,Field2 ASC
.
支持排序的驱动程序列表(除非另有指定,否则排序是在MapServer 7.0中实现的):
OGR
邮政地理信息系统
甲骨文公司
MS SQL Server(7.4版)
MapServer Shapefile提供程序不支持排序。如果需要,则必须使用OGR Shapefile提供程序。
有关进一步排序实现的详细信息,请参见 MS RFC 105:支持WFS 2.0(服务器端) .
MapServer WFS扩展¶
- STARTINDEX
这是WFS 2.0中的标准配置,也可以作为WFS 1.0和1.1的MapServer扩展。除了maxfeatures=n关键字(在wfs 2.0中被count替换),mapserver还支持wfs getfeature请求中的startindex=n关键字。这可用于跳过结果集中的某些功能,并与maxfeatures(或count)结合使用,提供了使用WFS GetFeature在结果中分页的能力。请注意,startindex=0表示从第一个功能开始,跳过“无”。
- OUTPUTFORMAT
对于WFS 1.0,输出格式通常应为GML2,对于WFS 1.1,输出格式应为“text/xml;subtype=gml/2.1.2”或“text/xml;subtype=gml/3.1.1”。对于WFS 2.0,默认值为“application/gml+xml;version=3.2”,但也可以请求gml2和gml3。但是,作为规范的扩展,也可以为各种其他功能输出格式配置MapServer。这在 OGR Output 文件。
存储查询(WFS 2.0)¶
存储的查询是存储在服务器上的查询(<wfs:query>),可能带有参数,这些参数的值可以在GetFeature请求期间由客户端分配。
在web.metadata级别,可以使用以逗号分隔的存储查询ID列表指定“wfs-storedquerys”元数据项。
然后,对于每个存储的查询ID,“wfs_u[stored query id]_inlinedef”必须指定一个有效的<storedquerydescription>作为值。由于指定内联XML内容并不总是方便的,因此也可以指定“wfs storedqueryid u filedef”,其值是包含<storedquerydescription>xml内容的文件名。
"wfs_storedqueries" "bboxstoredquery"
"wfs_bboxstoredquery_filedef" "/data/bboxstoredquery.xml"
使用/data/bboxstoredquery.xml,例如包含:
<?xml version="1.0" encoding="UTF-8"?>
<StoredQueryDescription xmlns:xs="http://www.w3.org/2001/XMLSchema"
xmlns:gml="http://www.opengis.net/gml/3.2"
id="bboxstoredquery">
<Title>query title</Title>
<Abstract>query abstract</Abstract>
<Parameter name="longmin" type="xs:double"/>
<Parameter name="latmin" type="xs:double"/>
<Parameter name="longmax" type="xs:double"/>
<Parameter name="latmax" type="xs:double"/>
<QueryExpressionText isPrivate="false"
language="urn:ogc:def:queryLanguage:OGC-WFS::WFS_QueryExpression"
xmlns:ms="http://mapserver.gis.umn.edu/mapserver"
returnFeatureTypes="ms:firstLayer ms:secondLayer">
<Query xmlns:fes="http://www.opengis.net/fes/2.0" typeNames="ms:firstLayer">
<fes:Filter>
<fes:BBOX>
<gml:Envelope srsName="urn:ogc:def:crs:EPSG::4326">
<gml:lowerCorner>${latmin} ${longmin}</gml:lowerCorner>
<gml:upperCorner>${latmax} ${longmax}</gml:upperCorner>
</gml:Envelope>
</fes:BBOX>
</fes:Filter>
</Query>
<Query xmlns:fes="http://www.opengis.net/fes/2.0" typeNames="ms:secondLayer">
<fes:Filter>
<fes:BBOX>
<gml:Envelope srsName="urn:ogc:def:crs:EPSG::4326">
<gml:lowerCorner>${latmin} ${longmin}</gml:lowerCorner>
<gml:upperCorner>${latmax} ${longmax}</gml:upperCorner>
</gml:Envelope>
</fes:BBOX>
</fes:Filter>
</Query>
</QueryExpressionText>
</StoredQueryDescription>
相应的有效GetFeature请求可以是:
REQUEST=GetFeature&STOREDQUERY_ID=bboxstoredquery&LONGMIN=2&LATMIN=49&LONGMAX=3&LATMAX=50
预定义的urn:ogc:def:query:ogc-wfs::getFeatureByID存储查询¶
WFS 2.0定义了一个强制*“urn:ogc:def:query:ogc-wfs::getFeatureByID”*存储查询。此查询接受一个ID参数,该参数的值必须是功能ID。
有效的请求是:request=getfeature&storedquery_id=urn:ogc:def:query:ogc-wfs::getfeaturebyid&id=mylayer.3
MapServer中硬编码的定义是:
<?xml version="1.0" encoding="UTF-8"?>
<StoredQueryDescription id="urn:ogc:def:query:OGC-WFS::GetFeatureById">
<Title>Get feature by identifier</Title>
<Abstract>Returns the single feature whose value is equal to the specified value of the ID argument</Abstract>
<Parameter name="ID" xmlns:xs="http://www.w3.org/2001/XMLSchema" type="xs:string"/>
<QueryExpressionText isPrivate="true"
language="urn:ogc:def:queryLanguage:OGC-WFS::WFS_QueryExpression"
returnFeatureTypes="">
<Query xmlns:fes="http://www.opengis.net/fes/2.0" typeNames="?">
<fes:Filter>
<fes:ResourceId rid="${ID}"/>
</fes:Filter>
</Query>
</QueryExpressionText>
</StoredQueryDescription>
与更标准的存储查询描述相比,有两个奇怪之处:运行时将“returnFeatureTypes”属性的值替换为mapfile的有效WFS层的名称(在发出响应文档以描述storedqueries请求时)。而typenames属性的值是在运行时根据传递的id参数的值推导出来的。
可以通过定义*“wfs-urn:ogc:def:query:ogc-wfs::getFeatureByID_inlineDef”或“wfs-urn:ogc:def:query:ogc-wfs::getFeatureByID_inlineDef”*来重写此硬编码定义(例如为其他语言提供备用值)。但是,<queryExpressionText>属性和子元素的值必须与硬编码定义完全相同,才能正确执行。
使用“*”urn:ogc:def:query:ogc-wfs::getFeatureByID“*的getFeature似乎与带有resourceID参数的getFeature相同,但存在差异。GetFeatureByID直接返回功能作为响应:
<?xml version='1.0' encoding="UTF-8" ?>
<ms:province gml:id="province.977" xmlns:ms="http://mapserver.gis.umn.edu/mapserver"
xmlns:gml="http://www.opengis.net/gml/3.2"
xmlns:wfs="http://www.opengis.net/wfs/2.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://mapserver.gis.umn.edu/mapserver
http://localhost/path/to/wfs_simple?myparam=something&
SERVICE=WFS&VERSION=2.0.0&REQUEST=DescribeFeatureType&
TYPENAME=province&
OUTPUTFORMAT=application%2Fgml%2Bxml%3B%20version%3D3.2
http://www.opengis.net/wfs/2.0
http://schemas.opengis.net/wfs/2.0/wfs.xsd
http://www.opengis.net/gml/3.2
http://schemas.opengis.net/gml/3.2.1/gml.xsd">
<gml:boundedBy>
<gml:Envelope srsName="urn:ogc:def:crs:EPSG::4326">
<gml:lowerCorner>47.76789 -61.51051</gml:lowerCorner>
<gml:upperCorner>47.79644 -61.45764</gml:upperCorner>
</gml:Envelope>
</gml:boundedBy>
<ms:msGeometry>
<gml:Polygon gml:id="province.977.1" srsName="urn:ogc:def:crs:EPSG::4326">
<gml:exterior>
<gml:LinearRing>
<gml:posList srsDimension="2">47.77424 -61.51051 47.78860 -61.50894
47.79644 -61.49272 47.78743 -61.45764 47.76789 -61.45998 47.76961
-61.48350 47.77424 -61.51051 </gml:posList>
</gml:LinearRing>
</gml:exterior>
</gml:Polygon>
</ms:msGeometry>
</ms:province>
参考截面¶
以下元数据在WFS服务器 Mapfile 的设置中可用:
注解
下面的每个元数据也可以称为“OWS”而不是“WFS”。mapserver首先尝试使用'wfs_*'元数据,如果找不到,则尝试使用相应的'ows_*'名称。使用它可以减少支持多个OGC接口的 Mapfile 中的重复量,因为“OWS”元数据几乎可以在任何地方用于多个OGC接口共享的公共元数据项。
Web对象元数据¶
ows_allowed_ip_list (或WFS_允许的_IP_列表)
ows_denied_ip_list (或WFS_拒绝的_IP_列表)
- ows_schemas_location
(可选)(注意名称“OWS”模式“位置”,而不是“WFS/”…这是因为所有OGC Web服务(OWS)都使用同一个元数据)根目录树,其中包含OGC WFS XMLSchema文件系列。如果希望在验证XML分析器中验证WFS输出,则此URL必须是实际.xsd文件所在的有效URL。默认值为http://schemas.opengis.net。
- ows_updatesequence
(可选)updateSequence参数可用于维护服务元数据文档内容的客户端缓存的一致性。参数值可以是整数、时间戳(采用[ISO 8601:2000]格式)或任何其他数字或字符串。
- wfs_abstract
(可选)有关服务器的详细信息的描述性叙述。
WFS标记名:摘要(WFS 1.0.0,第2.3.3)
- wfs_accessconstraints
(可选)描述服务提供者对WFS施加的任何访问约束或从此服务检索到的数据的文本。
WFS标记名:accessConstraints(WFS 1.0.0,节2.3.3)
- wfs_compute_number_matched
(可选,仅限WFS 2.0)当此元数据项设置为“true”时,服务器将确定与GetFeature请求匹配的功能数,并将其返回到响应中<FeatureCollection>元素的“numberMatched”属性中。计算这个数字可能需要很长时间,因此强烈建议 NOT 定义此项。未定义时,“numberMatched”属性设置为“Unknown”。
有关影响resultType=hits getFeature请求的类似设置,请参阅“wfs_maxFeatures_ignore_for_resultType_hits”。
- wfs_enable_request (或) ows_enable_request)
GetCapabilities, GetFeature 和 DescribeFeatureType.
实例:
GetCapabilities 和 GetFeature:
"wfs_enable_request" "GetCapabilities GetFeature"
启用除'getcapabilities'之外的所有请求`
"wfs_enable_request" "* !GetCapabilities"
- wfs_feature_collection
将包含元素(<msFeatureCollection>)的功能的默认名称替换为用户定义的值。
- wfs_features_cache_count
(可选,因为MapServer 7.2)在第一次查询传递期间检索到的最大功能数,应缓存这些功能,以免再次向数据源发出请求。这可能被设置为与WFS_MaxFeatures相同的值,但不一定。如果还设置了wfs_features_cache_大小,则将遵守最严格的限制。注意:这是一个高级设置。
- wfs_features_cache_size
(可选,因为MapServer 7.2)第一次查询传递期间允许缓存功能的最大RAM量,以便在生成GML或OGR输出时不再向数据源请求。如果还设置了wfs_features_cache_count,则将遵守最严格的限制。默认情况下,值以字节为单位,除非指定了“mb”后缀。注意:这是一个高级设置。
- wfs_fees
(可选)服务提供商因使用本服务或从WFS检索数据而收取的任何费用。
WFS标签名称:费用(WFS 1.0.0,第2.3.3)
- wfs_getcapabilities_version
(可选)用于没有版本参数的getCapabilities请求的默认版本。如果未设置,将返回最新支持的版本。从MapServer 7.0开始,此默认版本为“2.0.0”。有效值为“1.0.0”、“1.1.0”和“2.0.0”。
- wfs_keywordlist
(可选)帮助目录搜索的单词列表。
WFS标记名:关键字(WFS 1.0.0,节2.3.3)
wfs_languages
*描述:*(可选)支持语言的逗号分隔列表。有关详细信息,请参阅本节。 对某些功能字段的多语言支持 在Inspire下载服务文档中。
- wfs_maxfeatures
(可选)WFS服务器返回的最大和默认元素数。如果用户在getFeatureRequest中设置了“maxFeatures”参数,则将使用其值,前提是该值不超过wfs_MaxFeatures。如果没有指定wfs_MaxFeatures,服务器将无限制地返回与查询匹配的所有功能,当服务具有大量功能的层时,可能会使服务器长时间繁忙。敏感值是大于0的整数。如果指定0,则不会返回任何功能。在WFS 2.0中,此项用于填充针对getCapabilities请求的响应文档的“countDefault”参数,以便客户机了解服务器限制。另请参见“wfs_maxfeatures_ignore_for_resultType_hits”项。
- wfs_maxfeatures_ignore_for_resulttype_hits
(可选,在MapServer 7.2中添加)控制在resultType=hits getFeature请求中是否也考虑“wfs_MaxFeatures”设置的限制。
参见“结果类型参数”一章( OGC WFS 2.0 specification 教派。7.3.3.6)
将此项设置为“假”时,在处理resultType=hits GetFeature请求时也会考虑“wfs_MaxFeatures”设置的限制,即返回的命中数不会大于wfs_MaxFeatures。这是7.2之前的MapServer版本中的行为,也是更高版本中的常规默认行为。除非查询的所有图层都是Postgis图层,在这种情况下,计算命中数时不考虑WFS_MaxFeatures。该项可以显式设置为“真”,以便在计算命中数(对于任何层类型)时不考虑WFS_MaxFeatures,因为这可能会对大型层和/或访问速度较慢的后端显示性能问题。
如果未设置WFS_MaxFeatures,则此项无效。
- wfs_namespace_prefix
(可选)用于响应WFS GetFeature请求的用户定义的命名空间前缀。例如,“wfs_namespace_prefix”“someprefix”。
- wfs_namespace_uri
(可选)用于响应WFS GetFeature请求的用户定义的命名空间URI。例如,“wfs_-namespace_-uri”“http://somehost/someurl”。
- wfs_onlineresource
(推荐)HTTP GET请求的URL前缀。
WFS标记名:OnlineResource(WFS 1.0.0,节2.3.3)
- wfs_return_srs_as_urn
(可选)在WFS 2.0中默认为“真”,在WFS 1.0和1.1中默认为“假”。当设置为“true”时,GetFeature响应文档中的SRS将始终使用*“urn:ogc:def:crs:epsg::”*语法进行报告。
- wfs_service_onlineresource
(可选)顶级OnlineResource URL。MapServer使用OnlineResource元数据(如果提供)的顺序如下:
wfs_service_onlineresource
ows_service_onlineresource
WFS联机资源(或自动生成的URL,请参阅本文档的联机资源部分)
- wfs_srs
(推荐)要用于此服务器中所有层的SRS。(例如epsg:4326)请参见WFS中有关SRS规则的说明。
- wfs_storedqueries
(可选,WFS 2.0)存储查询ID的逗号分隔列表。必须使用WFS_[storedqueryid]_inlinedef或WFS_[storedqueryid]_filedef定义每个存储查询
- wfs_[storedqueryid]_inlinedef
(可选,WFS 2.0)在WFS存储查询中列出的存储查询的内联XML内容。此内容必须是有效的<storedquerydescription>文档。
- wfs_[storedqueryid]_filedef
(可选,WFS 2.0)包含有效文档的文件名。
- wfs_title
(必需)用于标识服务器的可读标题。WFS标签名称:标题(WFS 1.0.0,第2.3.3)
层对象¶
- gml_constants
(可选)以逗号分隔的常量列表。此选项允许您定义不属于基础数据集的数据,并将其添加到GML输出中。许多应用程序模式需要一种或另一种形式的常量。要指定常量的值和类型,请使用gml_u[item name]_value和gml_[item name]_type。
"gml_constants" "const1,const2" "gml_const1_type" "Character" "gml_const1_value" "abc" "gml_const2_type" "Integer" "gml_const2_value" "999"
- gml_default_items
(可选)不带显式属性名的getFeature响应文档中要放入的项的逗号分隔列表,或“all”。处理不带显式属性名的GetFeature请求时,默认情况下MapServer返回所有项。从MapServer 7.0开始,可以通过指定“gml_default_items”来修改此行为,以指定必须返回哪些项(可选项中)。
- gml_exclude_items
(可选)要排除的项的逗号分隔列表。从MapServer4.6开始,您可以使用元数据控制为数据层公开的属性(字段)的数量。以前的行为只是一直公开所有属性。默认情况是根本不公开任何属性。排除特定字段的示例如下:
"gml_include_items" "all" "gml_exclude_items" "Phonenum"
- gml_featureid
(对于MapServer 4.10是必需的)字段,用于输出GML中功能的ID。可以指定WFS_FeatureID或OWS_FeatureID。
- gml_geometries
为几何图形元素提供除默认“msgeometry”之外的名称。该值被指定为用于几何元素名称的字符串。”“无”将从MapServer集成输出中排除几何体(ogr outputformat不支持此设置)。
- gml_uu[geometry name]_发生
mapserver将默认值0和1分别应用于几何元素的“minoccurs”和“maxoccurs”属性,如前面的示例所示。要覆盖这些默认值,将为gml_uu[geometry name]_occurrences layer metadata项分配一个值,其中[geometry name]再次是为gml_geometries指定的字符串值,该值是一个逗号分隔的对,包含各自的下限和上限。
- gml_uu[geometry name]_类型
当使用gml_几何图形时,还需要指定层的几何类型。这是通过为gml_uuu几何名称类型提供一个值来实现的,其中[几何名称]是为gml_u几何指定的字符串值,并且是以下值之一:
点
多点
线
多线
多边形
多多边形
- ows/wfs_geomtype
(可选,元数据与共享 OGR output )。设置从此MapServer层创建的OGR层的几何类型。“point”、“linestring”、“polygon”、“multipoint”、“multilistering”、“multipolygon”、“geometrycollection”、“geometry”或“none”之一。大多数都相当明显,但是“几何体”可以用来表示几何体类型的混合,“无”有时适用于没有几何体的图层。请注意,混合多边形和多多边形的层通常必须描述为“几何体”。要生成2.5d输出,请将“25d”附加到几何类型(即“polygon25d”)。请注意,只有在使用“点”支持构建时,mapserver才携带z值。
"ows_geomtype" "Polygon25D"
注解
对于GML输出,仅考虑值的“25d”后缀以确定是否应输出Z坐标。
- gml_groups
(可选)以逗号分隔的层组名列表。
- gml_u[group name]_组
(可选)组中以逗号分隔的属性列表。下面是一个例子:
"gml_include_items" "all" "gml_groups" "display" "gml_display_group" "Name_e,Name_f"
- gml_include_items
(可选)要包含的项的逗号分隔列表,或关键字“all”。从MapServer 4.6开始,您可以使用此元数据控制为数据层公开的属性(字段)的数量。以前的行为只是一直公开所有属性。您可以使用关键字“all”启用完全曝光,例如:
"gml_include_items" "all"
可以指定部分曝光的属性(字段)列表,例如:
"gml_include_items" "Name,ID"
新的默认行为是完全不公开属性。
- gml_u[item name]_别名
(可选)属性名称的别名。服务的gml将通过别名引用此属性。下面是一个例子:
"gml_province_alias" "prov"
- gml_u[item name]_精度
(可选)为重要格式(如shapefiles)指定指定字段的精度。Precision是小数位数,仅用于“real”字段。目前,这只用于基于OGR的输出格式,而不是WFS GML2/GML3输出。
- gml_[item name]_type (可选)
Specifies the type of the attribute. Valid values are the OGR data types: Integer|Long|Real|Character|Date|Boolean. MapServer translates these to valid GML data types. Note: Long is to be used for 64-bit integers, starting with MapServer 7.0.1.
- gml_u[item name]_值
用于指定gml_常量的值。
- gml_u[item name]_width
(可选)为重要格式(如shapefiles)指定指定字段的宽度。
- gml_mandatory_items
(可选)以逗号分隔的强制项列表,或关键字“all”。参见gml_可选项。
- gml_optional_items
(可选)要设置为可选的项目的逗号分隔列表,或关键字“all”。默认情况下,从MapServer 7.0开始,所有项目都被视为可选(在GML应用程序模式中minoccurs=“0”)。如果指定了“gml_optional_items”,则只有列出的元素是可选的,其他包含的项目是必需的。如果有更多的强制性项目,那么指定“gml_强制性项目”可能更方便。
- gml_types
(可选)如果此字段为“自动”,则某些输入功能驱动程序(例如,ogr、postgis、oraclespace和本机形状文件)将根据源文件自动填充层的类型、宽度和精度元数据。这主要用于基于OGR的输出格式,以及WFS GML2/GML3输出到格式日期。
"gml_types" "auto"
- gml_xml_items
(可选)不应进行XML编码的项的逗号分隔列表。
- ows_allowed_ip_list
与Web对象中的“允许使用”列表相同。
- ows_denied_ip_list
与Web对象中的“OWS拒绝”列表相同。
- wfs_abstract
与Web对象中的WFS_摘要相同。
- wfs_enable_request (或) ows_enable_request)
GetCapabilities, GetFeature 和 DescribeFeatureType.
实例:
GetCapabilities 和 GetFeature:
"wfs_enable_request" "GetCapabilities GetFeature"
启用除'getcapabilities'之外的所有请求`
"wfs_enable_request" "* !GetCapabilities"
- wfs_extent
(可选)用于层的boundingbox标记,用于MapServer无法(或非常低效)探测数据源以确定其范围的情况。此元数据的值为“minx miny maxx maxy”,由空格分隔,值以层的投影单位为单位。如果提供了WFS_扩展数据块,则它具有优先级,并且MapServer不会尝试读取源文件的扩展数据块。
- wfs_featureid
(对于MapServer 4.10是必需的)字段,用于输出GML中功能的ID。可以指定gml_featureid或ows_featureid。
- wfs_getfeature_formatlist
(可选)应对GetFeature请求有效的格式的逗号分隔列表。如果定义了,那么只有这些格式才会在功能文档中公布。
- wfs_keywordlist
与Web对象中的WFS关键字列表相同。
- wfs_metadataurl_about
(可选)用于引用元素的方面,该方面包括元数据提供的有关metadataurl元素。还必须指定层元数据wfs_metadataurl_href。参见表11 OGC WFS 2.0 specification (仅限WFS 2)
- wfs_metadataurl_format
(可选)元数据记录的文件格式。有效值为“xml”、“sgml”或“html”。还必须指定层元数据wfs_metadataurl_type和wfs_metadataurl_href。参见第12.3.5节 WFS 1.0.0 spec (未用于WFS 2.0)。
- wfs_metadataurl_href
(可选)层元数据的URL。还可以指定WFS 1.0和1.1的层元数据WFS_metadataurl_type和WFS_metadataurl_格式,或WFS 2.0的WFS_metadataurl_about。参见第12.3.5节 WFS 1.0.0 spec 以及表11 OGC WFS 2.0 specification
- wfs_metadataurl_type
(可选)元数据符合的标准。目前只有两种类型是有效的:“TC211”是指[ISO 19115],而“FGDC”是指[FGDC CSDGM]。还必须指定层元数据wfs_metadataurl_format和wfs_metadataurl_href。参见第12.3.5节 WFS 1.0.0 spec (未用于WFS 2.0)。
- wfs_srs
如果在 Mapfile 的顶层没有定义SRS,那么该SRS将用于在功能中通告此功能类型(层)。请参阅WFS中有关SRS规则的说明。
- wfs_title
与Web对象中的WFS_标题相同。
- wfs_use_default_extent_for_getfeature
(可选,因为mapserver 7.0.4)在没有其他空间过滤器的情况下,是否应在对数据源的请求中使用map.extent。这是默认行为,但在某些用例中,这可能会影响性能。在这些情况下,将此项设置为否将避免附加到请求的默认空间过滤器。这仅对OGR数据源实现。
层元数据API¶
如果 wfs_metadataurl_href
未定义,MapServer将为中的给定层提供指向层元数据API的链接。 <MetadataURL>
元素。见 Layer Metadata API 有关详细信息的文档。
待办事项和已知限制¶
这只是一个基本的WFS(只读):不支持事务请求,可能永远不会给出mapserver的性质。 GeoServer 或 TinyOWS 建议用于需要WFS-T支持的人员。
WFS规范似乎要求给定特征类型的特征必须都是相同的几何类型(点、线、多边形)。这对shapefiles很好,但MapServer支持的某些数据源格式允许在单个层中混合几何类型,这与WFS规范不符。欢迎就如何处理此问题提出建议(将建议发送到 mapserver-dev mailing list .