WFS客户端¶
- 作者
让·弗朗索瓦·多永
- 联系
jdoyon在nrcan.gc.ca
- 作者
杰夫麦克纳
- 联系
jmckenna在gatewaygeomatics.com
- 最后更新
2020-06-09
介绍¶
CONNECTIONTYPE
OGR) . 见 通过MapServer的OGR矢量层 数据文件。
WFS(Web功能服务)将功能级别的地理空间数据发布到Web。这意味着可以使用此数据作为数据源来呈现地图。实际上,这与通过Web访问shapefile没有什么不同,只是它不是shapefile,而是XML编码的地理空间数据(确切地说是GML),包括几何图形和属性信息。
软件需求¶
为了使MapServer能够为WFS提供服务,必须针对某些库进行编译:
项目:重新投影库。需要4.4.3或更高版本。
GDAL/OGR:I/O支持库。需要1.1.8或更高版本。
libcurl:用于帮助mapserver充当HTTP客户机。需要7.10或更高版本。
有关编译支持这些库和功能的mapserver的详细说明,请参阅mapserver unix编译和安装howto。对于Windows用户,请查看MapServer网站,查看是否有任何二进制文件可以满足这些要求。
设置WFS客户端映射文件¶
存储临时文件¶
你必须设置 IMAGEPATH 参数,因为MapServer使用此目录存储从远程WFS服务器下载的临时文件。 Windows 用户必须为imagepath指定完整路径,例如:imagepath“c:/tmp/ms_tmp/”。
MAP
...
WEB
IMAGEPATH "/tmp/ms_tmp/"
IMAGEURL ...
END
...
END
配置HTTPS连接¶
请遵循 通过HTTPS访问OGC服务 文档以确保您的本地服务器可以通过HTTPS安全连接进行连接。
WFS层¶
WFS层是一个常规的映射文件层,它可以使用类对象、表达式等。
从MapServer 4.4开始,定义WFS客户机层的建议方法是通过连接参数和层的元数据。必要的mapfile参数定义如下:
CONNECTIONTYPE:
CONNECTION :WFS服务器的URL。e、 g.https://demo.mapserver.org/cgi-bin/wfs?如果GetCapabilities请求中需要映射文件,则需要WFS服务器上映射文件的路径。例如,您必须在以下服务器的连接中指定映射参数: http://map.ns.ec.gc.ca/MapServer/mapserv.exe?MAP=/mapserver/services/envdat/config.map &SERVICE=WFS&VERSION=1.0.0&REQUEST=GetCapabilities
METADATA:
wfs_connectiontimeout
wfs_filter: Filter Encoding Howto 有关筛选的详细信息)。WFS_筛选器的内容是有效的筛选器编码元素。
... METADATA "wfs_filter" "<PropertyIsGreaterThan><PropertyName>POP_RANGE</PropertyName> <Literal>4</Literal></PropertyIsGreaterThan>" END ...
wfs_geometryname
wfs_latlongboundingbox
wfs_maxfeatures
wfs_request_method
... METADATA "wfs_request_method" "GET" END ...
wfs_typename (必选):在GetCapability中找到的层的<name>。GetCapability请求的示例为: `https://demo.mapserver.org/cgi-bin/wfs?SERVICE=WFS&VERSION=1.0.0&REQUEST=GetCapabilities`_ _
wfs_version
备注
上述每一个元数据也可以称为“OWS”而不是“WFS”。mapserver首先尝试使用'wfs_*'元数据,如果找不到,则尝试使用相应的'ows_*'名称。使用它可以减少支持多个OGC接口的映射文件中的重复量,因为“OWS”元数据几乎可以在任何地方用于多个OGC接口共享的公共元数据项。
可选层参数和元数据¶
“wfs-auth-username”元数据-msencrypt-style授权字符串。也接受空字符串。
METADATA "wfs_auth_username" "foo" "wfs_auth_password" "{FF88CFDAAE1A5E33}" END
“wfs-auth-type”元数据-授权类型。支持的类型包括:
基本的
消化
NTLM
任意(底层HTTP库在远程服务器支持的选项中选择最佳选项)
anysafe(底层HTTP库仅在远程服务器支持的选项中选择安全方法)
METADATA "wfs_auth_type" "ntlm" END
“WFS_ConnectionTimeout”元数据
等待远程WFS层加载的最长时间,以秒为单位设置(默认为30秒)。可以在层级别添加此元数据,以便它只影响该层,或者可以在映射级别(在Web对象中)添加此元数据,以便它影响所有层。请注意,层级别的WFS_ConnectionTimeout优先于映射级别。
METADATA ... "wfs_connectiontimeout" "60" ... END
“wfs-proxy-auth-type”元数据-用于代理连接的授权类型。支持的类型包括:
基本的
消化
NTLM
any(底层HTTP库在远程服务器支持的操作中选择最好的)
anysafe(底层HTTP库仅在远程服务器支持的选项中选择安全方法)
METADATA "wfs_proxy_auth_type" "ntlm" END
“WFS_proxy_host”元数据-要使用的代理的主机名,格式为“点四”格式,带有可选端口组件(例如“192.168.2.10:8080”)。
METADATA "wfs_proxy_host" "192.168.2.10" END
“WFS_proxy_port”元数据-用于代理连接的端口。
METADATA "wfs_proxy_port" "8080" END
“WFS_proxy_type”元数据-代理连接的类型。有效值是'http'和'socks5',区分大小写。
METADATA "wfs_proxy_type" "http" END
“wfs_proxy_username”元数据-msencrypt-style字符串,用于代理连接。也接受空字符串。
METADATA "wfs_proxy_username" "foo" "wfs_proxy_password" "{FF88CFDAAE1A5E33}" END
WFS层示例¶
LAYER
NAME "continents"
TYPE POLYGON
STATUS ON
CONNECTION "https://demo.mapserver.org/cgi-bin/wfs?"
CONNECTIONTYPE WFS
METADATA
"wfs_typename" "continents"
"wfs_version" "1.0.0"
"wfs_connectiontimeout" "60"
"wfs_maxfeatures" "10"
END
PROJECTION
"init=epsg:4326"
END
CLASS
NAME "Continents"
STYLE
COLOR 255 128 128
OUTLINECOLOR 96 96 96
END
END
END # Layer
连接-已弃用¶
从MapServer v4.4开始,已经定义了在连接参数中指定所有连接信息的方法。上面提到了首选方法。如果没有提供元数据,则将从连接中提取版本、服务和类型名,如下所示
CONNECTION "https://demo.mapserver.org/cgi-bin/wfs?SERVICE=WFS&VERSION=1.0.0&TYPENAME=continents"
TODO/已知限制¶
临时WFS(GML)文件被写入IMAGEPATH目录,但这可能成为一个安全问题,因为它使可以猜测GML文件名的人可以下载原始GML数据。我们应该考虑使用一个“wfs-cache-dir”元数据,如果设置了该元数据,那么它将定义一个应该在其中写入临时文件的目录。如果没有设置“wfs_tmpdir”,默认值仍然是使用imagepath的值。