首先,我们国内对地名地址这两个词的理解要清楚。
地名,是地理实体的专有名称。
地理实体,现实世界中具有共同性质的自然或人工地物。
地址,具有地名的某一特定空间位置上自然或人文地理实体位置的结构化描述。
国标GT18521-2001中说明:
地理实体包括:
1)自然地理实体:海域、陆地实体、水系实体,其他
2)人文地理实体:政区实体,居民点、具有地名意义的交通运输设施、具有地名意义的水利水电通信设施、具有地名意义的及点滴、旅游胜地,具有地名意义的建筑物,具有地名意义的单位
那么问题来了,地理实体有点、线、面三种类型,而地名就是他们这三种类型的名称,是个注记,注记的位置放在哪儿呢,ch/z9010-2011标准中说,
地名地址数据以地理位置标识点表达 ,地理位置标识点的定义规则如下 :
a) 区域实体地名的地理位置标识 :
1) 行政区划的政治 、经济 、文化中心所在地的点位 ;
2 ) 行政区划内标志性建设物的点位 ;
3) 面状区域的重心点点位 。
b) 线状实体地名的地理位置标识 :
1) 线状实体中心点的点位 ;
2) 线状实体中心线系列点的点位 ;
3) 线状地物(河流 、山脉等)的标志点 。
c) 局部点的地理位置标识 :
1) 门(楼)址标牌位置或建筑物任意内点的点位 ;
2 ) 标志物中心点的点位 ;
3) 兴趣点门面中心点或特征点的点位 ;
4) 自然地物的中心点或标志点 。
好了,通过上面的重点标识大家可以知道,地名地址:
1。就是一个地物的名称和地物的空间位置的结构和表达。
2.此结构化表达用国家、省、市、县、乡、村、门牌号这样的结构来描述。
3.标识点就是要告诉大家我们要描述一个地物,要放按照以上abc原则的位置标识一下这个地物的名称和位置。
地名地址,只描述的是一个点。而不是大家认为的点线面。
明白了概念,接下来,地名地址的wfs-g服务是个啥呢?百度wfs-g服务描述如下:
http://tdt.fuzhou.gov.cn/help/apipfs/13.htm
要实现三个方法。一对比wfs-g和wfs,我们发现,wfs-g就是wfs服务,只不过url参数里是地名地址的匹配参数而已。
github上搜了半天也没搜到,刚开始以为这个也就是国内某公司定义的,定义好以后正好编写国家智慧城市2019大纲,也就写进去了。国内大部分gis公司压根都没有实现wfs-g只是拿wfs充数而已。对外宣称已完成wfs-g。
那么真正的大神来了。csdn上花了15个币下载了一份国际opengis组织发布的wfs-g服务的标准。才发现,这个wfs-g原来真的有出处啊。看了半天也没看明白。反正wfs是个服务。这个服务必须要实现三个方法:
操作 | 实现要求 | 描述 |
---|---|---|
GetCapabilities | 强制实现 | GetCapabilities请求用于查询WFS-G服务的能力信息,包括支持的操作、支持的格式、空间坐标、包含的资源等。它主要的目的是使客户端在使用GetFeature请求前可以对WFS-G服务有一个基本的了解,从而可以设置正确的参数。 |
DescribeFeatureType | 强制实现 | 用于生成一个 Schema 描述,该 Schema 描述了 WFS-G 服务提供的要素类型(Feature Type),以及要素类型的结构信息。该 Schema 还定义了 WFS-G 服务所期望的要素实例在输入时如何编码以及输出时如何生成要素实例。 |
GetFeature | 强制实现 | GetFeature用于向WFS-G的客户端程序提供查询特定地理信息的能力,通过GetFeature操作可以由指定的属性条件、空间条件或者两者叠加的条件进行空间查询。 |
前无古人,后无来着,omg。。
接下来就是楼主自己瞎折腾了,可以不用理睬啊。
1参考了geoserver的源码,看见没,楼主自己拷贝一份wfs改成wfs-g而且是大写的G,多正式啊。问题来了。咋把这个wfs—G注册到geoserver里面呢?继续折腾中,下回有结果了再分享吧。
wfs里面长啥样呢?request
response
wfs
这三个方法,都有,只不过在request和response里面都是虚类,在wfs里面才有实现。一大堆代码。一大堆各种geo的基础支持类。吐血。。还是想办法吧wfs改成wfs-g注册到geoserver吧。
2国际的标准咋弄嗯?
15个币下载的标准啊。。。全篇34页就只讲了一个wfs-g。。。吐血。讲拿仨方法讲了19页。
而且ogc的标准,请求和返回都是gml的。而不是我们熟悉的json的。那么问题又来了,自己写一个如何?在这里要呼唤大神了。只要能写出来,谁需要我免费送这个文档,不要15个币。
3.楼主又尝试了mapserver。mapserver是用c写的。但是还是看看吧,毕竟是主流啊。mapserver的官网就介绍了他们是如何搞wfs的。
准备结束这篇文章了,谷歌翻译了一下,大家凑合看吧。有问题加我qq共同探讨:2582209024
——————————————————————mapserver有关wfs服务———————————————————————
WFS服务器
作者
杰夫麦肯纳
联系
jimckennaatgatewaygeomatics.com
作者
Rouault
联系
mines-paris.org
最近更新时间
2017年6月16日
内容
介绍
WFS(Web要素服务)将功能级地理空间数据发布到Web。这意味着,不像MapServer传统上那样返回图像,客户端现在可以在几何和属性级别获得有关基础数据的特定地理空间特征的细粒度信息。与其他OGC规范一样,此接口使用XMLoverHTTP作为其传递机制,更准确地说,使用GML(地理标记语言),它是XML的子集。
在7.0版中,MapServer支持WFS规范的1.0,1.1和2.0版本。
WFS相关信息
以下是一些WFS相关链接(包括新增的OGC服务研讨会与MapServer)。由于这些是非常详细的技术规范,因此无需完整地阅读它们以使MapServerWFS启动并运行。但是仍然建议您阅读它们并熟悉它们的基本知识,以便了解它是如何工作的:
MapServer OGCWebServicesWorkshop包。
对于WFS2.0,以下文档适用:
有关在MapServer中实施WFS2.0的技术细节,请参阅MSRFC105:支持WFS2.0(服务器端)。
当然也需要MapServer的工作知识。
软件要求
为了使MapServer能够为WFS提供服务,必须针对某些库进行编译:
PROJ:重投影库。需要4.4.3或更高版本。
GDAL/OGR:I/O支持库。需要1.6.0或更高版本。
有关编译mapserver并支持这些库和功能的详细说明,请参阅MapServer UNIX编译和安装说明。对于Windows用户,MS4W 安装程序随时可以为WFS和WMS提供服务。
GML支持的版本
MapServer可以输出GML2和GML3。默认情况下,MapServer提供GML2。您可以通过向GetFeature请求添加“OUTPUTFORMAT”参数来测试此操作,例如:
使用WFS2.0,默认的OUTPUTFORMAT是“application/gml+xml; 版本=3.2”。
有关支持的版本的详细讨论,请参阅错误#884。
配置MapFile以服务WFS层
与WMS支持一样,通过向MapFile添加某些魔术METADATA关键字/值对来启用WFS发布。
MapServer将仅在满足以下条件的层中提供并包含其WFS功能:
数据源是矢量类型(Shapefile,OGR,PostGIS,SDE,SDO,...)
必须设置LAYERNAME。设置WFS服务器时,图层名称必须以字母开头(图层名称不应以数字开头或其中包含空格)。
LAYERTYPE是以下之一:LINE,POINT,POLYGON
“wfs_onlineresource”元数据:
wfs_onlineresource元数据在地图的Web对象元数据中设置,并指定应该用于访问服务器的URL。这是GetCapabilities输出所必需的。如果未提供wfs_onlineresource,则MapServer将尝试使用脚本名称和主机名提供默认值,但您不应过多依赖。强烈建议您提供wfs_onlineresource元数据。
有关在线资源URL的整个故事,请参阅WFS1.0.0规范的第12.3.3节。基本上,您需要的是一个完整的HTTPURL,包括http://前缀,主机名,脚本名称,可能是“map=”参数,并以“?”或“&”结尾。
这是一个有效的在线资源网址:
http://my.host.com/cgi-bin/mapserv?map=mywfs.map&
通过在服务器上创建包装器脚本,可以从URL隐藏“map=”参数,然后您的服务器的在线资源URL可能是这样的:
http://my.host.com/cgi-bin/mywfs?
WMS服务器 文档的“有关在线资源URL的更多信息”部分中对此进行了更详细的介绍。
“wfs_enable_request”元数据(见下文)。
示例WFS服务器映射文件
以下是最低WFS服务器映射文件的示例。请注意所需参数的注释。
MAP
NAME"WFS_server"
STATUSON
SIZE400300
SYMBOLSET"../etc/symbols.txt"
EXTENT-180-9018090
UNITSDD
SHAPEPATH"../data"
IMAGECOLOR255255255
FONTSET"../etc/fonts.txt"
#
#Startofwebinterfacedefinition
#
WEB
IMAGEPATH"/ms4w/tmp/ms_tmp/"
IMAGEURL"/ms_tmp/"
METADATA
"wfs_title""WFSDemoServerforMapServer"##REQUIRED
"wfs_onlineresource""https://demo.mapserver.org/cgi-bin/wfs?"##Recommended
"wfs_srs""EPSG:4326EPSG:4269EPSG:3978EPSG:3857"##Recommended
"wfs_abstract""ThistextdescribesmyWFSservice."##Recommended
"wfs_enable_request""*"#necessary
END
END
PROJECTION
"init=epsg:4326"
END
#
#Startoflayerdefinitions
#
##################
#WorldContinents
##################
LAYER
NAME"continents"
METADATA
"wfs_title""Worldcontinents"##REQUIRED
"wfs_srs""EPSG:4326"##REQUIRED
"gml_include_items""all"##Optional(servesallattributesforlayer)
"gml_featureid""ID"##REQUIRED
"wfs_enable_request""*"
END
TYPEPOLYGON
STATUSON
DATA'shapefile/countries_area'
PROJECTION
"init=epsg:4326"
END
CLASS
NAME'WorldContinents'
STYLE
COLOR255128128
OUTLINECOLOR969696
END
END
END#layer
END#mapfile
在MapServerWFS中处理SRS的规则
OGCWFS1.0规范不允许在多个SRS中公布图层(要素类型)。此外,默认情况下,没有适用于所有图层的默认SRS。但是,可以在WFS服务器中的每个层都在不同的SRS中进行通告。
OGCWFS1.1和2.0规范允许公布多个SRS,其中一个SRS将作为默认SRS公布(默认SRS将是METADATA wfs_srs / ows_srs中指定的列表中的第 一个)。
以下是MapServer如何决定SRS为WFS中的每个层做广告和使用:
如果定义了顶级映射SRS,则使用此SRS并应用于此WFS中的所有层(要素类型)。在这种情况下,即使设置了单个图层的SRS也会被忽略。
如果未定义顶级映射SRS,则每个层都在其自身的SRS中通告功能。
注意
“SRS已定义”,我们指的是使用EPSG代码定义的PROJECTION对象,或者 此级别的wfs_srs / ows_srs元数据。
注意
在地图顶层,wfs_srs / ows_srs元数据值优先于PROJECTION块的内容。
注意
第一个公布的wfs_srs / ows_srs元数据值将用作所请求的bbox的默认投影(除非明确设置),并将用于空间过滤支持空间过滤的那些图层类型的数据。如果数据处于不同的投影中,则将投影空间滤波器BBOX以匹配源数据。
在层级别,如果wfs_srs / ows_srs元数据和PROJECTION对象都设置为不同的值,则wfs_srs / ows_srs元数据定义用于广告此层的投影(假设没有顶级地图SRS),并且PROJECTION值被假定为数据的投影。因此,这意味着在将数据提供给WFS客户端之前,数据将从PROJECTIONSRS重新投影到wfs_srs / ows_srs元数据中定义的数据。
混乱?作为一个经验法则,只需将wfs_srs / ows_srs在地图上的水平(在网页的元数据),从来没有设置wfs_srs / ows_srs元数据的层级和事情会很好地工作在大多数情况下。
WFS1.1和2.0中的轴方向
WFS规范的先前版本中的轴顺序始终使用东向(x或lon)和北向(y或lat)。WFS1.1规定,根据特定的SRS,x轴可能是也可能不是从西向东,y轴可能是也可能不是从南向北。WFS描绘操作应考虑轴顺序。这会影响一些常用的EPSG代码,例如ESPG:4326。当前实现确保返回到服务器的GetFeature请求的坐标反映了EPSG代码的反轴顺序在4000和5000之间。
关于SRS,对于WFS2.0,它将始终以“urn:ogc:def:crs:EPSG::” 语法报告。这也可能适用于WFS1.1.0。可以将“wfs_return_srs_as_urn”Web元数据项设置为“true”或“false”以启用或禁用此行为。对于WFS2.0,它默认为“true”,对于旧版本,默认为“false”。
测试你的WFS服务器
验证功能元数据
好了,既然我们已经有了mapfile,我们必须检查服务器返回的XML功能,以确保没有遗漏任何内容。
使用Web浏览器访问服务器的在线资源URL,将参数“REQUEST=GetCapabilities”添加到最后,例如
https://demo.mapserver.org/cgi-bin/wfs?SERVICE=WFS&VERSION=1.0.0&REQUEST=GetCapabilities
如果一切顺利,您应该拥有完整的XML功能文档。搜索单词“WARNING”...如果MapServer检测到缺少mapfile参数或元数据项,则会在XML输出中插入以“<!-WARNING:”开头的XML注释。如果您在XML输出中发现任何警告,则必须先修复所有这些警告,然后才能使用WFS客户端注册服务器,否则可能无法正常工作。
注意
所有WFS请求都需要SERVICE参数。当请求发生时,它将通过MapServer中的WMS,WFS和WCS(按此顺序)传递,直到其中一个服务响应它。
使用GetFeature请求进行测试
好了,既然我们知道我们的服务器可以生成有效的XMLGetCapabilities响应,那么我们应该测试GetFeature请求。只需将“SERVICE=WFS&VERSION=1.0.0&REQUEST=GetFeature&TYPENAME=yourlayername1,yourlayername2”添加到服务器的URL,即可返回与这些图层关联的GML。
对于WFS2.0,相同的请求将是:
使用RealClient进行测试
如果您可以访问WFS客户端,则使用它注册新服务器的在线资源,您应该已经关闭并运行。
如果您还没有安装自己的WFS客户端,请参考以下几点:
MapServer本身可以用作WFS客户端,请参阅WFSClientHowTo。
QGIS是一个完整的GIS软件包,包括WFS客户端支持。(推荐的)
Deegree提供WFS客户端。
uDig可以从WMS/WFS服务器添加层。
支持GET和POST请求
从版本4.2开始,MapServer支持XML编码的POST请求和GET请求。MapServer的默认值是POST。
支持过滤器编码
从版本4.2开始,MapServer支持WFSGetFeature请求中的过滤器编码(FE)。有关FilterEncoding服务器端的更多信息,请参阅FilterEncodingHowTo。
MapServerWFS扩展
STARTINDEX
这是WFS2.0中的标准,也可用作WFS1.0和1.1的MapServer扩展。除了MAXFEATURES=n关键字(在WFS2.0中由COUNT替换)之外,MapServer还支持WFSGetFeature请求中的STARTINDEX=n关键字。这可用于跳过结果集中的某些功能,并与MAXFEATURES(或COUNT)结合使用,可以使用WFSGetFeature来分页结果。请注意,STARTINDEX=0表示从第一个特征开始,跳过无。
输出格式
通常OUTPUTFORMAT应该是GML2forWFS1.0和“text/xml; subtype=gml/2.1.2“或”text/xml; WFS1.1的subtype=gml/3.1.1“。对于WFS2.0,默认为“application/gml+xml; version=3.2“,但也可以请求GML2和GML3。但是,作为规范的扩展,还可以为各种其他功能输出格式配置MapServer。这在OGR输出文档中有详细讨论。
存储查询(WFS2.0)
存储的查询是存储在服务器上的查询(<wfs:Query>),可能带有参数,其值可以在GetFeature请求期间由客户端分配。
在WEB.METADATA级别,可以使用逗号分隔的存储查询ID列表指定“wfs_storedqueries”元数据项。
然后,对于每个存储的查询ID,必须使用有效的<StoredQueryDescription>作为值指定“wfs_[storedqueryid]_inlinedef”。由于指定内联XML内容并不总是方便,因此还可以指定“wfs_{storedqueryid}_filedef”,其值是包含<StoredQueryDescription>XML内容的文件名。
"wfs_storedqueries""bboxstoredquery""wfs_bboxstoredquery_filedef""/data/bboxstoredquery.xml"
使用/data/bboxstoredquery.xml包含例如:
<?xmlversion="1.0"encoding="UTF-8"?><StoredQueryDescriptionxmlns:xs="http://www.w3.org/2001/XMLSchema"
xmlns:gml="http://www.opengis.net/gml/3.2"
id="bboxstoredquery">
<Title>querytitle</Title>
<Abstract>queryabstract</Abstract>
<Parametername="longmin"type="xs:double"/>
<Parametername="latmin"type="xs:double"/>
<Parametername="longmax"type="xs:double"/>
<Parametername="latmax"type="xs:double"/>
<QueryExpressionTextisPrivate="false"
language="urn:ogc:def:queryLanguage:OGC-WFS::WFS_QueryExpression"
xmlns:ms="http://mapserver.gis.umn.edu/mapserver"
returnFeatureTypes="ms:firstLayerms:secondLayer">
<Queryxmlns:fes="http://www.opengis.net/fes/2.0"typeNames="ms:firstLayer">
<fes:Filter>
<fes:BBOX>
<gml:EnvelopesrsName="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>
<Queryxmlns:fes="http://www.opengis.net/fes/2.0"typeNames="ms:secondLayer">
<fes:Filter>
<fes:BBOX>
<gml:EnvelopesrsName="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&隆民=2&LATMIN=49&LONGMAX=3&LATMAX=50
预定义的urn:ogc:def:query:OGC-WFS::GetFeatureById存储查询
WFS2.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中硬编码的定义是:
<?xmlversion="1.0"encoding="UTF-8"?><StoredQueryDescriptionid="urn:ogc:def:query:OGC-WFS::GetFeatureById">
<Title>Getfeaturebyidentifier</Title>
<Abstract>ReturnsthesinglefeaturewhosevalueisequaltothespecifiedvalueoftheIDargument</Abstract>
<Parametername="ID"xmlns:xs="http://www.w3.org/2001/XMLSchema"type="xs:string"/>
<QueryExpressionTextisPrivate="true"
language="urn:ogc:def:queryLanguage:OGC-WFS::WFS_QueryExpression"
returnFeatureTypes="">
<Queryxmlns:fes="http://www.opengis.net/fes/2.0"typeNames="?">
<fes:Filter>
<fes:ResourceIdrid="${ID}"/>
</fes:Filter>
</Query>
</QueryExpressionText></StoredQueryDescription>
与更标准的存储查询描述相比,有两个奇怪之处:“returnFeatureTypes”属性的值在运行时被mapfile的有效WFS层的名称替换(当向DescribeStoredQueries请求发出响应文档时)。并且typeNames属性的值在运行时从传递的ID参数的值推导出来。
可以通过定义“wfs_urn:ogc:def:query:OGC-WFS::GetFeatureById_inlinedef”或 “wfs_urn:ogc:def:query”来覆盖此硬编码定义(例如,为其他语言提供备用值):OGC-WFS::GetFeatureById_filedef“。但是,<QueryExpressionText>属性和子元素的值必须与硬编码定义严格相同才能正确执行。
使用“urn:ogc:def:query:OGC-WFS::GetFeatureById”的GetFeature似乎与具有RESOURCEID参数的GetFeature相同,但存在差异。GetFeatureById直接返回该功能作为响应:
<?xmlversion='1.0'encoding="UTF-8"?><ms:provincegml: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/mapserverhttp://localhost/path/to/wfs_simple?myparam=something&SERVICE=WFS&VERSION=2.0.0&REQUEST=DescribeFeatureType&TYPENAME=province&OUTPUTFORMAT=application%2Fgml%2Bxml%3B%20version%3D3.2http://www.opengis.net/wfs/2.0http://schemas.opengis.net/wfs/2.0/wfs.xsdhttp://www.opengis.net/gml/3.2http://schemas.opengis.net/gml/3.2.1/gml.xsd"><gml:boundedBy>
<gml:EnvelopesrsName="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:Polygongml:id="province.977.1"srsName="urn:ogc:def:crs:EPSG::4326">
<gml:exterior>
<gml:LinearRing>
<gml:posListsrsDimension="2">47.77424-61.5105147.78860-61.50894
47.79644-61.4927247.78743-61.4576447.76789-61.4599847.76961
-61.4835047.77424-61.51051</gml:posList>
</gml:LinearRing>
</gml:exterior>
</gml:Polygon></ms:msGeometry></ms:province>
参考章节
WFS服务器映射文件的设置中提供了以下元数据:
注意
下面的每个元数据也可以称为“ows_*”而不是“wfs_*”。MapServer首先尝试'wfs_*'元数据,如果没有找到,它会尝试相应的'ows_*'名称。使用它可以减少支持多个OGC接口的mapfiles中的重复数量,因为“ows_*”元数据几乎可以在任何地方用于多个OGC接口共享的公共元数据项。
Web对象元数据
ows_allowed_ip_list(或wfs_allowed_ip_list)
说明:(可选)允许访问服务的IP地址列表。
例:
METADATA
"ows_allowed_ip_list""123.45.67.8911.22.33.44"END
ows_denied_ip_list(或wfs_denied_ip_list)
说明:(可选)将拒绝访问服务的IP地址列表。
例:
METADATA "ows_denied_ip_list""123.45.67.8911.22.33.44"END
ows_schemas_location
(可选)(注意名称ows_schemas_location而不是wfs/_...这是因为所有OGCWeb服务(OWS)使用相同的元数据)OGCWFSXMLSchema文件系列所在的Web树的根。如果您希望WFS输出在验证XML解析器中进行验证,那么这必须是实际.xsd文件所在的有效URL。默认为http://schemas.opengis.net。
ows_updatesequence
(可选)updateSequence参数可用于维护服务元数据文档内容的客户端缓存的一致性。参数值可以是整数,[ISO8601:2000]格式的时间戳,或任何其他数字或字符串。
wfs_abstract
(可选)描述性叙述以获取有关服务器的更多信息。
WFSTAG名称:摘要(WFS1.0.0,第12.3.3节)
wfs_accessconstraints
(可选)描述服务提供商对WFS或从此服务检索的数据施加的任何访问限制的文本。
WFSTAG名称:Accessconstraints(WFS1.0.0,第12.3.3节)
wfs_compute_number_matched
(可选,仅限WFS2.0)当此元数据项设置为“true”时,服务器将确定与GetFeature请求匹配的要素数,并将其返回到响应中<FeatureCollection>元素的“numberMatched”属性中。计算该数字可能需要很长时间,因此强烈建议 不要定义此项目。如果未定义,则“numberMatched”属性设置为“unknown”。
有关影响resultType=命中GetFeature请求的类似设置,请参阅“wfs_maxfeatures_ignore_for_resulttype_hits”。
wfs_enable_request(或ows_enable_request)
空格分隔的请求列表以启用。默认值为none。可以启用以下请求:GetCapabilities, GetFeature和DescribeFeatureType。请求前面的“!”将禁用该请求。“*”启用所有请求。
例子:
要仅启用GetCapabilities和GetFeature:
"wfs_enable_request""GetCapabilitiesGetFeature"
启用除GetCapabilities之外的所有请求
"wfs_enable_request""*!GetCapabilities"
wfs_feature_collection
使用用户定义的值替换包含特性的元素的默认名称(<msFeatureCollection>)。
wfs_features_cache_count
(可选,因为MapServer7.2)在第一次查询传递期间检索到的应该缓存的最大功能数,以便不再向数据源询问。这可能设置为与wfs_maxfeatures相同的值,但不一定。如果还设置了wfs_features_cache_size,则将受到最大限制。注意:这是一个高级设置。
wfs_features_cache_size
(可选,因为MapServer7.2)在第一次查询传递期间允许缓存功能的最大RAM量,以便在生成GML或OGR输出时不再要求数据源。如果还设置了wfs_features_cache_count,则将受到最大限制。默认情况下,该值以字节为单位,除非指定了“MB”后缀。注意:这是一个高级设置。
wfs_fees
(可选)服务提供商对使用此服务或从WFS检索的数据征收的任何费用。
WFSTAG名称:费用(WFS1.0.0,第12.3.3节)
wfs_getcapabilities_version
(可选)用于没有版本参数的GetCapabilities请求的默认版本。如果未设置,将返回最新支持的版本。从MapServer7.0开始,此默认版本为“2.0.0”。有效值为“1.0.0”,“1.1.0”和“2.0.0”。
wfs_keywordlist
(可选)帮助目录搜索的单词列表。
WFS标签名称:关键字(WFS1.0.0,第12.3.3节)
wfs_languages
说明:(可选)以逗号分隔的受支持语言列表。有关详细信息,请参阅 INSPIRE下载服务文档中的某些功能的多语言支持字段。
wfs_maxfeatures
(可选)WFS服务器返回的最大和默认元素数。如果用户在GetFeatureRequest中设置'maxfeatures'参数,则将使用其值,前提是它不超过wfs_maxfeatures。如果未指定wfs_maxfeatures,则服务器将返回与查询匹配的所有功能(无限制),这可能会使服务器在提供具有大量功能的层时长时间处于忙碌状态。合理值是大于0的整数。如果指定0,则不返回任何特征。在WFS2.0中,此项用于将响应文档的“CountDefault”参数填充到GetCapabilities请求,以便客户端知道服务器限制。另请参见“wfs_maxfeatures_ignore_for_resulttype_hits”项。
wfs_maxfeatures_ignore_for_resulttype_hits
(可选,在MapServer7.2中添加)控制是否在resultType=命中GetFeature请求时考虑“wfs_maxfeatures”设置的限制。
请参阅“resultType参数”一章(OGCWFS2.0规范,第7.6.3.6节)
将此项设置为“false”时,处理resultType=命中GetFeature请求时也会考虑“wfs_maxfeatures”设置的限制,也就是说返回的命中数不会大于wfs_maxfeatures。这是7.2之前的MapServer版本中的行为,也是更高版本中的一般默认行为。除非查询的所有图层都是PostGIS图层,否则在计算点击次数时不会考虑wfs_maxfeatures。该项可以显式地设置为“true”,以便在计算命中数(对于任何层类型)时不考虑wfs_maxfeatures,这可能表现出对于具有慢访问的大层和/或后端的性能问题。
如果未设置wfs_maxfeatures,则此项无效。
wfs_namespace_prefix
(可选)用户定义的名称空间前缀,用于WFSGetFeature请求的响应。例如“wfs_namespace_prefix”“someprefix”。
wfs_namespace_uri
(可选)用户定义的名称空间URI,用于WFSGetFeature请求的响应。例如“wfs_namespace_uri”“ http://somehost/someurl ”。
wfs_onlineresource
(推荐)HTTPGET请求的URL前缀。
WFSTAG名称:Onlineresource(WFS1.0.0,第12.3.3节)
wfs_return_srs_as_urn
(可选)在WFS2.0中默认为“true”,在WFS1.0和1.1中默认为“false”。设置为“true”时,将始终使用“urn:ogc:def:crs:EPSG::”语法报告GetFeature响应文档中的SRS 。
wfs_service_onlineresource
(可选)顶级在线资源URL。MapServer按以下顺序使用onlineresource元数据(如果提供):
wfs_service_onlineresource
ows_service_onlineresource
wfs_onlineresource(或自动生成的URL,请参阅本文档的onlineresource部分)
wfs_srs
(推荐)用于此服务器中所有层的SRS。(例如EPSG:4326)请参阅WFS中有关SRS规则的说明。
wfs_storedqueries
(可选,WFS2.0)以逗号分隔的存储查询ID列表。必须使用wfs_[storedqueryid]_inlinedef或wfs_[storedqueryid]_filedef给出每个存储查询的定义
wfs_[storedqueryid]_inlinedef
(可选,WFS2.0)wfs_storedqueries中列出的存储查询的内联XML内容。此内容必须是有效的<StoredQueryDescription>文档。
wfs_[storedqueryid]_filedef
(可选,WFS2.0)包含有效<StoredQueryDescription>文档的文件的名称。
wfs_title
(必需)用于标识服务器的人类可读标题。WFSTAG名称:标题(WFS1.0.0,第12.3.3节)
图层对象
gml_constants
(可选)以逗号分隔的常量列表。此选项允许您定义不属于基础数据集的数据,并将它们添加到GML输出中。许多应用程序模式需要一种或另一种形式的常量。要指定常量的值和类型,请使用gml_[itemname]_value和gml_[itemname]_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响应文档中,没有明确的PROPERTYNAME或“all”。当处理没有显式PROPERTYNAME的GetFeature请求时,MapServer默认返回所有项目。从MapServer7.0开始,可以通过指定“gml_default_items”来指定此行为,以指定必须返回哪些项(在可选项中)。
gml_exclude_items
(可选)要排除的逗号分隔的项目列表。从MapServer4.6开始,您可以控制使用元数据为数据层公开的属性(字段)数量。之前的行为只是一直暴露所有属性。默认情况下根本不显示任何属性。排除特定字段的示例如下:
"gml_include_items""all""gml_exclude_items""Phonenum"
gml_featureid
(对于MapServer4.10是必需的)要用于输出GML中要素的ID的字段。可以指定wfs_featureid或ows_featureid。
gml_geometries
为几何元素提供默认“msGeometry”以外的名称。该值指定为要用于几何元素名称的字符串。“none”将从MapServer集成输出中排除几何(OGRoutputformat不遵循此设置)。
gml_[geometryname]_occurances
MapServer分别将默认值0和1应用于几何元素的“minOccurs”和“maxOccurs”属性,如前面的示例所示。要覆盖这些默认值,会为gml_[geometryname]_occurances图层元数据项指定一个值,其中[geometryname]是为gml_geometries指定的字符串值,值是以逗号分隔的对,包含相应的下部和上部界限。
gml_[几何名称]_type
使用gml_geometries时,还需要指定图层的几何类型。这是通过为gml_[geometryname]_type提供一个值来实现的,其中[geometryname]是为gml_geometries指定的字符串值,以及一个值,它是以下值之一:
点
多点
线
多线
面
多面
OWS/wfs_geomtype
(可选,与OGR输出共享的元数据)。设置从此MapServerLAYER创建的OGR图层的几何类型。“Point”,“LineString”,“Polygon”,“MultiPoint”,“MultiLineString”,“MultiPolygon”,“GeometryCollection”,“Geometry”或“None”之一。大多数都相当明显,但“几何”可用于表示几何类型的混合,“无”有时适用于没有几何的图层。请注意,多边形和多边形混合的图层通常必须描述为“几何图形”。要生成2.5D输出,请将“25D”附加到几何类型(即“Polygon25D”)。请注意,如果使用USE_POINT_Z_M支持构建,则Z值仅由MapServer承载。
"ows_geomtype""Polygon25D"
注意
对于GML输出,仅考虑该值的“25D”后缀以确定是否应输出Z坐标。
gml_groups
(可选)图层的组名称的逗号分隔列表。
gml_[组名]_group
(可选)组中以逗号分隔的属性列表。这是一个例子:
"gml_include_items""all""gml_groups""display""gml_display_group""Name_e,Name_f"
gml_include_items
(可选)要包含的逗号分隔的项目列表,或关键字“all”。从MapServer4.6开始,您可以使用此元数据控制为数据层公开的属性(字段)数。之前的行为只是一直暴露所有属性。您可以使用关键字“all”启用完整曝光,例如:
"gml_include_items""all"
您可以指定部分曝光的属性(字段)列表,例如:
"gml_include_items""Name,ID"
新的默认行为是根本不显示任何属性。
gml_[项目名称]_alias
(可选)属性名称的别名。服务的GML将通过别名引用此属性。这是一个例子:
"gml_province_alias""prov"
gml_[项目名称]_precision
(可选)指定有意义的格式(如Shapefile)的指示字段的精度。精度是小数位数,仅“实际”字段需要。目前,这仅用于基于OGR的输出格式,而不是WFSGML2/GML3输出。
gml_[项目名称]_type(可选)
指定属性的类型。有效值是OGR数据类型:整数|长|实数|字符|日期|布尔值。MapServer将这些转换为有效的GML数据类型。注意:从MapServer7.0.1开始,Long将用于64位整数。
gml_[项目名称]_value
用于指定gml_constants的值。
gml_[项目名称]_width
(可选)指定有意义的格式的指示字段的宽度,例如Shapefile。
gml_mandatory_items
(可选)以逗号分隔的要强制执行的项目列表,或关键字“all”。请参阅gml_optional_items。
gml_optional_items
(可选)以逗号分隔的项目列表,使其成为可选项或关键字“all”。默认情况下,从MapServer7.0开始,所有项都被视为可选项(GML应用程序模式中的minOccurs=“0”)。如果指定了“gml_optional_items”,则只有列出的元素是可选的,其他包含的项目将是必需的。如果有更多必需项,则指定“gml_mandatory_items”可能更方便。
gml_types
(可选)如果此字段为“auto”,则某些输入要素驱动程序(即OGR,POSTGIS,ORACLESPATIAL和本机shapefile)将根据源文件自动填充图层的类型,宽度和精度元数据。这主要用于基于OGR的输出格式,以及用于格式化日期的WFSGML2/GML3输出。
"gml_types""auto"
gml_xml_items
(可选)以逗号分隔的项目列表,不应进行XML编码。
ows_allowed_ip_list
与Web对象中的ows_allowed_ip_list相同。
ows_denied_ip_list
与Web对象中的ows_denied_ip_list相同。
wfs_abstract
与Web对象中的wfs_abstract相同。
wfs_enable_request(或ows_enable_request)
空格分隔的请求列表以启用。默认值为none。可以启用以下请求:GetCapabilities, GetFeature和DescribeFeatureType。请求前面的“!”将禁用该请求。“*”启用所有请求。
例子:
要仅启用GetCapabilities和GetFeature:
"wfs_enable_request""GetCapabilitiesGetFeature"
启用除GetCapabilities之外的所有请求
"wfs_enable_request""*!GetCapabilities"
wfs_extent
(可选)用于图层的BoundingBox标记,用于MapServer无法(或非常低效)探测数据源以计算其范围的情况。此元数据的值是以空格分隔的“minxminymaxxmaxy”,以及图层投影单位中的值。如果提供了wfs_extent,那么它具有优先级,MapServer将不会尝试读取源文件的范围。
wfs_featureid
(对于MapServer4.10是必需的)要用于输出GML中要素的ID的字段。可以指定gml_featureid或ows_featureid。
wfs_getfeature_formatlist
(可选)以逗号分隔的格式列表,这些格式应对GetFeature请求有效。如果已定义,则仅在Capabilities文档中公布这些格式。
wfs_keywordlist
与Web对象中的wfs_keywordlist相同。
wfs_metadataurl_about
(可选)用于引用元素的方面,该元素包含此元数据提供的更多信息的MetadataURL元素。还必须指定层元数据wfs_metadataurl_href。请参阅OGCWFS2.0规范的表11 (仅限WFS2.0)
wfs_metadataurl_format
(可选)元数据记录的文件格式。有效值为“XML”,“SGML”或“HTML”。还必须指定层元数据wfs_metadataurl_type和wfs_metadataurl_href。请参阅WFS1.0.0规范的第12.3.5节(WFS2.0未使用)。
wfs_metadataurl_href
(可选)图层元数据的URL。还可以指定WFS1.0和1.1的层元数据wfs_metadataurl_type和wfs_metadataurl_format,或者WFS2.0的wfs_metadataurl_about。请参阅WFS1.0.0规范的 12.3.5节和OGCWFS2.0规范的表11
wfs_metadataurl_type
(可选)元数据符合的标准。目前只有两种类型有效:“TC211”表示[ISO19115],“FGDC”表示[FGDCCSDGM]。还必须指定层元数据wfs_metadataurl_format和wfs_metadataurl_href。请参阅WFS1.0.0规范的第12.3.5节(WFS2.0未使用)。
wfs_srs
如果mapfile中的顶级没有定义SRS,则此SRS将用于在功能中公布此功能类型(层)。请参阅WFS中有关SRS规则的说明。
wfs_title
与Web对象中的wfs_title相同。
wfs_use_default_extent_for_getfeature
(可选,因为MapServer7.0.4)在没有其他空间过滤器的情况下,是否应该在请求数据源时使用MAP.EXTENT。这是默认行为,但这可能会影响某些用例的性能。在这些情况下,将此项设置为NO将避免将默认空间过滤器附加到请求。这仅适用于OGR数据源。
层元数据
如果wfs_metadataurl_href未定义,则MapServer将为<MetadataURL>元素中的给定层提供指向LayerMetadataAPI的链接。有关更多信息,请参阅LayerMetadataAPI文档。
待办事项和已知限制
这只是一个基本的WFS(只读):不支持事务请求,并且可能永远不会给出MapServer的本质。 对于需要WFS-T支持的用户,建议使用GeoServer或TinyOWS。
WFS规范 似乎要求给定要素类型的要素必须具有相同的几何类型(点,线,多边形)。这适用于shapefile,但MapServer支持的某些数据源格式允许在单个图层中使用混合几何类型,这违反了WFS规范。欢迎提出如何处理此问题的建议(将建议发送到mapserver-dev邮件列表。