WMS服务器

作者

杰夫麦克纳

联系

jmckenna在gatewaygeomatics.com

最后更新

2022-01-25

介绍

WMS(或Web地图服务器)允许使用来自多个不同服务器的数据,并允许创建一个地图服务器网络,客户机可以从该网络构建自定义地图。以下文件基于开放地理空间联盟(OGC) Web Map Server Interfaces Implementation Specification v1.1.1 .

要实现WMS功能,需要MapServer v3.5或更高版本。在编写本文档时,MapServer支持以下WMS版本:1.0.0、1.0.7、1.1.0(亦称1.0.8)、1.1.1和1.3.0。

本文档假定您已经熟悉MapServer的某些方面:

  • MapServer应用程序开发和设置.map文件。

  • 熟悉WMS规范将是一种优势。下面的“WMS相关信息”部分包含了指向WMS规范文档的链接。

大规模杀伤性武器是如何工作的

WMS服务器通过HTTP协议与客户机交互。在大多数情况下,WMS服务器是一个CGI程序。MapServer也是如此。

WMS规范定义了许多请求类型,并且为每个请求类型定义了一组查询参数和关联的行为。符合WMS的服务器必须至少能够处理以下两种类型的WMS请求:

  1. **getCapabilities:**返回包含Web地图服务器信息元数据的XML文档

  2. **getmap:**根据用户需要返回地图的图像。

对以下类型的支持是可选的:

  1. **GetFeatureInfo:**返回查询(鼠标单击)位置的功能信息。MapServer支持3种对此请求的响应类型:

    • 带属性信息的文本/纯文本输出。

    • 使用MapServer查询模板的文本/HTML输出(请参见 模板法 )在中指定 CLASS 模板参数(文件名必须有.html扩展名)。类模板返回的mime类型默认为text/html,可以使用元数据“wms-feature-info-mime-type”进行控制。

    • 应用程序/vnd.ogc.gml、gml.1或gml用于gml功能。

  2. **DescribeLayer:**返回一个或多个映射层的XML描述。要执行此操作:

    • 对于矢量图层:要获得有效的返回,用户需要在地图级别或图层级别(如果定义了图层级别的元数据,则使用图层级别的元数据)设置WFS OnlineResource(或OWS OnlineResource)元数据-对于栅格图层:元数据是与上述逻辑相同的WCS OnlineResource。

  3. **GetLegendgraphic:**返回请求层的带有标签的图例图像(图标)。有关此请求的更多信息,请参阅本文档后面的GetLegendgraphic部分。

具体来说,对于mapserver,知道如何处理WMS请求的是“mapserv”CGI程序。因此,使用mapserver设置WMS服务器需要安装 MAPSERV公司 CGI程序和设置一个包含适当元数据的映射文件。这在本文档的其余部分中介绍。

使用mapserver设置WMS服务器

安装所需软件

WMS请求由 MAPSERV公司 CGI 程序。并非所有版本的mapserv程序都包含WMS支持(在与proj库一起编译时,默认情况下会包含它),因此第一步是检查mapserv可执行文件是否包含WMS支持。验证这一点的一种方法是使用“-v”命令行开关并查找“supports=wms_server”。

(Unix用户应参考 在Unix上编译 任何编译说明的文档,Windows用户可能希望使用 MS4W ,随WMS/WFS支持一起提供)

例1。在UNIX上:

$ ./mapserv -v
MapServer version 7.7-dev OUTPUT=PNG OUTPUT=JPEG OUTPUT=KML SUPPORTS=PROJ
SUPPORTS=AGG SUPPORTS=FREETYPE SUPPORTS=CAIRO SUPPORTS=SVG_SYMBOLS
SUPPORTS=RSVG SUPPORTS=ICONV SUPPORTS=FRIBIDI SUPPORTS=WMS_SERVER
SUPPORTS=WMS_CLIENT SUPPORTS=WFS_SERVER SUPPORTS=WFS_CLIENT
SUPPORTS=WCS_SERVER SUPPORTS=SOS_SERVER SUPPORTS=GEOS SUPPORTS=PBF
INPUT=JPEG INPUT=POSTGIS INPUT=OGR INPUT=GDAL INPUT=SHAPEFILE

例2。在Windows上:

C:\ms4w> mapserv -v
MapServer version 7.7.0-dev (MS4W 4.0.5) OUTPUT=PNG OUTPUT=JPEG OUTPUT=KML
SUPPORTS=PROJ SUPPORTS=AGG SUPPORTS=FREETYPE SUPPORTS=CAIRO
SUPPORTS=SVG_SYMBOLS SUPPORTS=SVGCAIRO SUPPORTS=ICONV SUPPORTS=FRIBIDI
SUPPORTS=WMS_SERVER SUPPORTS=WMS_CLIENT SUPPORTS=WFS_SERVER
SUPPORTS=WFS_CLIENT SUPPORTS=WCS_SERVER SUPPORTS=SOS_SERVER
SUPPORTS=FASTCGI SUPPORTS=THREADS SUPPORTS=GEOS SUPPORTS=POINT_Z_M
SUPPORTS=PBF INPUT=JPEG INPUT=POSTGIS INPUT=OGR INPUT=GDAL INPUT=SHAPEFILE

为WMS设置映射文件

安装的WMS服务器的每个实例都需要有自己的映射文件。它只是一个常规的mapserver映射文件,其中一些参数和一些元数据条目是必需的。为了生成有效的getCapabilities输出,大多数元数据都是必需的。

以下是参数和元数据项的列表,这些参数和元数据项通常是MapServer的可选项,但对于WMS配置是**必需的(或强烈推荐的):。**

在地图级别:

  • 地图名称

  • 地图投影

  • 映射元数据(在Web对象中):

    • wms_title

    • wms_onlineresource

    • wms_srs(除非使用“init=epsg:…”定义投影对象)

    • wms_enable_request

每层:

  • 层名称

  • 层投影

  • 层元数据

    • wms_title

    • WMS U SRS(可选,因为层继承地图的SRS值)

  • 层状态

    • 设置为状态默认值的层将始终发送到客户端。

    • 客户机可以请求设置为status on或status off的层。

  • 层模板(GetFeatureInfo请求需要-请参阅 模板法

让我们更详细地介绍一下这些参数:

  • 地图名称和WMS标题:

    WMS功能要求每个层都有一个名称和标题标签。映射的名称和wms-title元数据将用于在getcapabilities xml输出中设置根层的名称和标题。WMS上下文中的根层对应于整个映射文件。通过设置 wms_rootlayer_name"" .

  • 层名称和wms_标题元数据:

    每一层都需要它自己独特的名称和标题。图层名称也用于getmap和getfeatureinfo请求,以引用应包含在地图输出和查询中的图层。设置WMS服务器时,层名称必须以字母开头(层名称不应以数字开头或包含空格)。

  • 地图投影和WMS的SRS元数据:

    WMS服务器必须通告能够使用EPSG投影代码提供数据的投影(请参见 The EPSG web page for more background on EPSG codes). The PROJ 库附带EPSG初始化代码表,并允许用户定义如下投影:

    PROJECTION
       "init=epsg:4269"
    END
    

    (注意,在PROJ'init'指令中使用时,“epsg”必须小写。)

    如果 MAP PROJECTION 块的格式为“init=epsg:xxxx”,那么MapServer还将使用此信息为WMS功能文档中的顶层生成一个<boundingbox>标记。boundingbox是WMS 1.3.0的WMS功能的强制元素(对于WMS 1.1.0,它是可选的,但在可能的情况下允许mapserver包含它是很好的做法)。

    以上内容足以让MapServer识别EPSG代码并将其包含在功能输出中的SRS标记中(在这种情况下不需要wms_SRS元数据)。但是,通常不可能找到与数据投影匹配的EPSG代码。在这些情况下,“wms_srs”元数据用于列出一个或多个EPSG代码,数据可以在其中提供服务,并且投影对象包含数据投影的实际PROJ定义。

    以下是其数据位于Lambert保角圆锥投影(3978)中的服务器的示例。其功能输出将通告EPSG:3857(Web墨卡托)、EPSG:4269和EPSG:4326投影(经度/纬度),但投影对象设置为数据所在的实际投影:

    NAME "DEMO"
    ...
    
    WEB
      ...
      METADATA
        "wms_title"           "WMS Demo Server"
        "wms_onlineresource"  "http://my.host.com/cgi-bin/mapserv?map=/path/to/your-mapfile.map" #must change mapfile path
        "wms_srs"             "EPSG:3857 EPSG:4269 EPSG:4326"
      END
    END
    
    PROJECTION
      "init=epsg:3978"
    END
    ...
    END
    

    除了EPSG:xxxx投影之外,WMS服务器还可以在AUTO:xxxx命名空间中公布投影。MapServer在内部支持自动投影42001到42005。但是,自动投影仅对智能WMS客户端有用,因为客户端需要在对服务器的WMS请求中定义投影参数。有关更多信息,请参见 WMS 1.1.1 specification 以及同一文件的第6.5.5.2节。另请参见本文档末尾的自动投影常见问题解答。

  • 层投影和wms-srs元数据:

    默认情况下,层继承其父层的SRS(在MapServer情况下映射的投影)。因此,没有必要(但仍然强烈建议)为每个层提供投影和wms-srs。如果未提供图层投影,则假定为顶层地图投影。

    图层投影和WMS的SRS元数据的定义方式与地图的投影和WMS的SRS元数据完全相同。

    对于矢量层,如果以“init=epsg:XXXX”格式提供投影块,那么MapServer还将使用此信息在WMS功能文档中为该层生成一个<boundingbox>标记。boundingbox是WMS 1.3.0的WMS功能的强制元素(对于WMS 1.1.0,它是可选的,但在可能的情况下允许mapserver包含它是很好的做法)。

  • “wms-onlineresource”元数据:

    wms-onlineresource元数据在映射的Web对象元数据中设置,并指定访问服务器时应使用的URL。这对于getCapabilities输出是必需的。如果没有提供wms-onlineresource,那么mapserver将尝试使用脚本名和主机名提供一个默认的资源,但是您不应该过于依赖它。强烈建议您提供WMS联机资源元数据。

    见第6.2.2节 WMS 1.1.1 specification 关于在线资源URL的整个故事。基本上,您需要的是一个完整的HTTP URL,包括HTTP://prefix、hostname、script name,可能是一个“map=”参数,并以“?”结尾或“&”。

    以下是有效的联机资源URL:

    http://my.host.com/cgi-bin/mapserv?map=/path/to/your-mapfile.map" #must change mapfile path
    

    通过在服务器上创建包装脚本,可以从URL中隐藏“map=”参数,然后服务器的联机资源URL可以类似于:

    http://my.host.com/cgi-bin/mywms?
    

    这在下面的“更多关于在线资源URL”一节中有更详细的介绍。

  • “WMS U ENABLE U REQUEST”元数据:

    指定要启用的请求。如果未指定,则不会启用任何请求!请参阅下面的解释。

  • 正在为GetFeatureInfo请求配置:

    必须将层模板参数设置为可由GetFeatureInfo请求查询的层(请参见 模板法 )对于“text/html”类型的请求,还应设置层的页眉和页脚参数。

    从MapServer 4.6开始,您必须为要服务的层属性设置*gml_**元数据(请参阅本文档后面的参考部分中的层对象元数据)。要包含几何图形,必须指定gml_几何图形和gml_uu[geometry name]_类型。

    以下是GetFeatureInfo请求的工作示例: text/plain / text/html / gml (对于GML,您的浏览器可能会要求您保存该文件,如果是这样,请将其本地保存为.gml文件并在文本编辑器中查看)

测试WMS服务器

验证功能元数据

好了,现在我们有了一个映射文件,我们必须检查服务器返回的XML功能,以确保没有遗漏。

使用Web浏览器,访问服务器的联机资源URL,在其末尾添加参数“service=wms&version=1.1.1&request=getcapabilities”,例如。

http://my.host.com/cgi-bin/mapserv?map=/path/to/your-mapfile.map&SERVICE=WMS&VERSION=1.1.1
                                                &REQUEST=GetCapabilities

以下是一个正在运行的getcapabilities请求(请注意,所有getcapabilities请求都需要服务参数):

https://demo.mapserver.org/cgi-bin/wms?SERVICE=WMS&VERSION=1.1.1&REQUEST=GetCapabilities

这将返回一个mime类型application/vnd.ogc.wms_xml的文档,因此您的浏览器可能会提示您保存该文件。保存并在文本编辑器(emacs、记事本等)中打开它,您将看到从WMS服务器返回的XML。

如果在XML输出中收到错误消息,请采取必要的操作。常见问题和解决方案列在本文档末尾的常见问题解答中。

如果一切顺利,您应该有一个完整的XML功能文档。搜索“警告”一词…MapServer插入以“<!”开头的XML注释。--警告:“在XML输出中,如果检测到丢失的mapfile参数或元数据项。如果在XML输出中注意到任何警告,那么在向WMS客户机注册服务器之前,必须修复所有这些警告,否则事情可能不会发生。

注意,当一个请求发生时,它将通过mapserver中的wms、wfs和wcs(按该顺序)传递,直到其中一个服务响应它为止。

使用getmap请求进行测试

好了,既然我们知道我们的服务器可以生成有效的XML getCapabilities响应,那么我们应该测试getmap请求。mapserver只检查一些必需的getmap参数,因此下面将解释最小mapserver参数和有效的getmap请求。

以下是根据WMS规范所需的getmap参数列表:

**版本=版本:**请求版本

**请求=getmap:**请求名称

**图层=图层列表:**一个或多个地图图层的逗号分隔列表。如果存在SLD参数,则为可选。

**styles=style_list:**comma分隔列表,每个请求的层一个呈现样式。如果存在SLD参数,则为可选。设置“style s=”以空值使用默认样式。命名样式也受支持,并由映射文件中的类组名称控制。

**srs=命名空间:标识符:**空间引用系统。

**bbox=minx、miny、maxx、maxy:**以SRS单位表示的边界框角(左下、右上)。

**宽度=输出宽度:**地图图片的宽度(像素)。

**高度=输出高度:**地图图片的像素高度。

**格式=输出格式:**地图输出格式。

备注

WMS服务器只公布作为gd/gdal库一部分的支持格式。

因此,一个有效的例子是:

http://my.host.com/cgi-bin/mapserv?
     map=/path/to/your-mapfile.map
     &SERVICE=WMS&VERSION=1.1.1
     &REQUEST=GetMap&LAYERS=prov_bound&STYLES=&SRS=EPSG:4326
     &BBOX=-173.537,35.8775,-11.9603,83.8009&WIDTH=400&HEIGHT=300
     &FORMAT=image/png

这是一个工作 valid request .

小技巧

从MapServer8.0开始, tile_map_edge_buffer 通过添加供应商特定的参数,还可以在WMS GetMap请求中使用元数据 TILED=TRUE 您的GetMap请求。

参见

瓦片模式

用真正的客户进行测试

如果您有权访问WMS客户机,那么就用它注册新服务器的在线资源,您应该关闭并运行它。

如果您还没有安装自己的WMS客户机,以下是一些提示:

  • mapserver本身可以用作wms客户机,请参见 MapServer WMS Client Howto .

  • QGIS 是一个完整的地理信息系统包,包括WMS客户端支持。(推荐)

  • OpenJUMP 是一个包含WMS客户端支持的桌面GIS包。

  • uDig 是允许用户添加WMS层的桌面包。

  • Deegree 提供WMS客户端。

这个列表并不详尽,有几个开源或专有的包提供了WMS支持,可以用于与新的MapServer WMS服务器实例交互。

获取图例图形请求

此请求返回指定层的图例图像(图标)。请求将为层上定义的所有类绘制一个图标和标签。如果请求的图层名是组名,则所有包含的图层都将返回到图例图标中。

要求

要启用此GetLegendgraphic请求,WMS服务器映射文件中需要以下内容:

  • 图例对象。

  • 每个层的类对象。

  • 类对象中的名称。

  • 必须将每个层的状态设置为“开”。

参数

以下是此GetLegendGraphic请求的有效参数:

  • LAYER -(必需)要返回的图例图像的WMS层的名称。请注意,这是getCapabilities中层的<name>参数。

  • FORMAT -(必需)图例图像的格式(例如“image/png”)。

  • WIDTH -(可选)图例图像的宽度。请注意,只有当请求中也使用了rule参数时,才使用width参数。

  • HEIGHT -(可选)图例图像的高度。请注意,只有当请求中也使用了规则参数时,才使用height参数。

  • SLD -(可选)SLD的URL。在图层上应用SLD,并在应用SLD后绘制图例(使用SLD指定的类)。请注意,您需要在rule元素中放置一个<name>class1<name>以便从sld创建类名,从而创建正确的图例图像。

  • SLD_BODY -(可选)SLD的主体(代码),而不是指定URL(如“sld”参数)。

  • SLD_VERSION -(可选)SLD版本。

  • SCALE -(可选)指定比例,以便只有属于该比例的层才会有图例。

  • STYLE -(可选)样式。

  • RULE -(可选)指定要为其生成图例图像的类的名称(而不是为层的所有类生成图标和标签)。

备注

在正常CGI模式下用于绘制图例的所有规则都适用于此处。见 CGI Reference doc 如有必要。

这个 CLASS 对象的keyImage参数也可用于指定类的图例图像。见 MapFile Reference doc 如有必要。实例请求

示例请求可能如下所示:

http://127.0.0.1/cgi-bin/mapserv.exe?map=/path/to/your-mapfile.map&SERVICE=WMS&VERSION=1.1.1&layer=park&
REQUEST=getlegendgraphic&FORMAT=image/png

与内容相关的图例

MapServer 6.4 MS RFC 101:添加对与内容相关的图例响应的支持 .

更改联机资源URL

如上文“设置mapfile/wms-online resource元数据”一节所述,根据第6.2.2节或WMS 1.1.1规范,以下联机资源URL对于mapserver wms完全有效:

http://my.host.com/cgi-bin/mapserv?map=/path/to/your-mapfile.map

但是,有些人会认为上面的URL包含强制的特定于供应商的参数,这是非法的。首先,我们要指出“map=…”在本例中不被视为特定于供应商的参数,因为它是在线资源URL的一部分,该URL定义为以“?”结尾的不透明字符串。或“&” WMS 1.1.1 section 6.2.2

备注

强烈建议您查看 MAP= 通过设置来调用MapServer可执行文件 MS_MAP_PATTERNMS_MAP_NO_PATH 或者隐藏 MAP= 参数,如本文档中所建议的 限制 Mapfile 访问 。中列出了保护服务器安全的所有可能环境变量 环境变量

但是不管怎样,即使它是有效的,上面的URL仍然很难看。您可能需要为您的WMS在线资源URL使用更好的URL。以下是一些建议:

apache重写规则(使用apache mod_rewrite)

您可以使用apache的mod_rewrite来避免指定映射,或者mapserver url中的任何其他默认参数。此任务包括三个步骤,指定要加载的mod重写模块,为所选目录启用mod重写模块,最后写入.htaccess文件进行重写。

在httpd.conf文件中,mod_rewrite模块在默认情况下处于禁用状态。要启用它,请删除行中的开口

#LoadModule rewrite_module modules/mod_rewrite.so

要使用该模块,必须使用allowoverride指令启用它。这可以在每个服务器或每个目录上完成。如果您只有一台服务器,请在httpd.conf文件中添加一行“allowoverride all”(请参阅Apache文档以确保这一点的安全性)。每个目录是使其在虚拟主机上工作的最简单方法。在httpd.conf insert的<virtualhost>部分中:

<Directory myhtdocsdir>
  AllowOverride All
</Directory>

其中myhtdocsdir是为实际虚拟服务器定义为documentroot的目录。

当指令设置为加载并启用mod_rewrite模块时,必须重新启动apache。

在可访问Web的目录中,生成.htaccess文件,如下所示:

RewriteEngine on
RewriteRule wmsmap?(.*) /cgi-bin/mapserv?map=/home/www/mapserverstuff/mymapfile.map&$1

重写器说:给定一个以wmsmap开头的网页,选择查询参数,从/cgi-bin/mapserv开始发出新的页面请求?地图=(…)?并添加原始页面请求中的查询参数。

例如,网址wmsmap?模式=地图将改写为

::

/CGI箱/MAPSERV?map=/home/www/mapserverstuff/mymapfile.map&mode=map

如果只提供了URL wmsmap(没有任何参数),则会显示“找不到页面”错误,因为它与wmsmap不匹配?表达式。

Apache环境变量-ms_mapfile

可以使用ms_mapfile环境变量指定默认映射文件:

Alias /mywms /usr/lib/cgi-bin/mapserver
<Location /mywms>
   SetHandler cgi-script
   Options ExecCGI
   SetEnv MS_MAPFILE /path/to/mymapfile.map
</Location>

阿帕切塞特维夫

另一种选择是使用Apache的“setenvif”特性:使用所有指向同一个mapserv二进制文件的符号链接,然后对每个符号链接测试URL,并相应地设置映射环境。

对于Windows和Apache用户,步骤如下(这需要Apache 1.3或更高版本):

  • 将mapserv.exe复制到WMS的新名称,例如“mywms.exe”。

  • 在httpd.conf中,添加:

SetEnvIf Request_URI "/cgi-bin/mywms" MS_MAPFILE=/path/to/mymap.map

ASP脚本(IIS-Microsoft Windows)

在IIS服务器(Windows)上,可以使用以下ASP脚本:

备注

下面的脚本虽然功能正常,但仅用作使用ASP筛选MapServer请求的示例。在生产WMS服务器中使用ASP可能需要额外的ASP,特别是在错误处理和设置超时方面。*

<%
  Server.ScriptTimeout = 360

  Select Case Request.ServerVariables("REQUEST_METHOD")
    Case "GET"  strRequest = Request.QueryString
    Case "POST" strRequest = Request.Form
  End Select

  strURL = "http://myserver/cgi-bin/mapserv.exe?
            map=C:\Inetpub\wwwroot\workshop\itasca.map&" & strRequest

  Dim objHTTP
  Set objHTTP = Server.CreateObject("MSXML2.ServerXMLHTTP")
  objHTTP.open "GET", strURL, false
  objHTTP.send ""

  Response.ContentType = objHTTP.getResponseHeader("content-type")
  Response.BinaryWrite objHTTP.responseBody

  Set objHTTP = Nothing
%>

mapscript包装

一些OGC服务(WFS、SOS)支持GET和POST请求。在这里,您可以使用最小的mapscript wxs包装器。下面是一个python示例:

#!/usr/bin/python

import mapscript

req = mapscript.OWSRequest()
req.loadParams()
map = mapscript.mapObj('/path/to/config.map')
map.OWSDispatch(req)

包装脚本(Unix)

在Unix服务器上,您可以设置一个包装外壳脚本,该脚本设置ms_mapfile环境变量,然后将控制权传递给mapserv可执行文件…这导致了一个cleaner-onlineresource URL:

#! /bin/sh
MS_MAPFILE=/path/to/demo.map
export MS_MAPFILE
/path/to/mapserv

备注

使用/bin/sh包装脚本会导致系统资源的开销,因为必须生成两个进程而不是一个进程,因此不建议这样做。

WMS 1.3.0支持

MapServer 5.4增加了对WMS 1.3.0的支持。尽管支持这个新规范的MapServer中的一般机制是相同的,但是有一些值得注意的升级。

坐标系和轴方向

WMS 1.3.0中引入的最显著变化是:

  • 坐标轴改变

  • 引入新的坐标参考系

  • 使用CRS参数(而不是SRS)

在先前版本的WMS规范中,轴的顺序是始终使用东距(x或lon)和北距(y或lat)。WMS 1.3.0规定,根据特定的CRS,X轴可以或不可以从西到东,Y轴可以或不可以从南到北。WMS描绘的操作应考虑轴顺序。这会影响一些常用的EPSG代码,如ESPG:4326。mapserver 5.x确保传递给服务器的坐标(作为getmap bbox参数的一部分)以及功能文档中公布的坐标反映了EPSG代码在4000和5000之间的反向轴顺序。

MapServer 6.0和更高版本保存具有倒置轴顺序的EPSG代码列表。它目前基于EPSG数据库版本7.6。还可以在构建时为特定的ESPG代码定义轴顺序(请参见 issue #3582 )。例如,这允许对介于4000和5000之间的一些EPSG代码使用“正常”轴顺序。

此外,WMS 1.3.0定义了一系列新的坐标系。以下是MapServer当前支持的:

  • CRS:84(WGS 84经度纬度)

  • CRS:83(最低经度83纬度)

  • CRS:27(NAD27经度纬度)

  • 自动2:42001(WGS 84/自动UTM)

  • 自动2:42002(WGS 84/Auto Tr.Mercator)

  • Auto2:42003(wgs 84/自动正交)

  • Auto2:42004(WGS 84/自动等矩形)

  • Auto2:42005(WGS 84/自动软体动物)

请求示例

用户可以使用CRS:84坐标系,并将bbox坐标定为长/lat:

用户还可以使用ESPG:4326坐标和lat/long的轴顺序:

其他显著变化

  • getmap请求中exceptions参数的有效值为xml、inimage和blank。

  • GetFeatureInfo请求中异常参数的有效值为XML

  • 引入了layerLimit,允许服务器公布并限制允许客户机在getmap请求中包含的层数。

一些缺少的功能

  • WMS 1.3.0 Post请求应该是包含不同操作和参数的XML文档。

  • 包含功能编码1.1规范中的元素的SLD文档可能会将ESPG投影与某些过滤器一起使用。在这些特定的情况下,是否应该考虑轴的排序,目前还不清楚也没有实现。

OCG符合性测试

从5.4版开始,mapserver通过了wms 1.3.0的ogc cite测试套件的所有基本测试和查询测试。

参考截面

以下元数据在映射文件的设置中可用:

(请注意,下面的每个元数据也可以称为“OWS”,而不是“WMS”。mapserver首先尝试“wms_u*”元数据,如果找不到,则尝试相应的“ows u*”名称。使用它可以减少支持多个OGC接口的映射文件中的重复量,因为“OWS u *”元数据几乎可以在任何地方用于多个OGC接口共享的公共元数据项。)

Web对象元数据

ows_allowed_ip_list (或wms-allowed-ip-u列表)

  • *描述:*(可选)允许访问服务的IP地址列表。

    例子::

    METADATA
      "ows_allowed_ip_list" "123.45.67.89 11.22.33.44"
    END
    

ows_denied_ip_list (或wms_拒绝的_ip_列表)

  • *描述:*(可选)拒绝访问服务的IP地址列表。

    例子::

    METADATA
      "ows_denied_ip_list" "123.45.67.89 11.22.33.44"
    END
    

ows_http_max_age

  • 描述: 一个整数(以秒为单位),用于指定在多长时间内应将给定映射响应视为新响应。设置此指令允许Aware WMS客户端使用此生成的HTTP标头值作为优化(和最小化)对WMS服务器的请求的方法。欲了解更多信息,请访问https://www.mnot.net/cache_docs/#CACHE-CONTROL。

ows_schemas_location

  • *描述:*(可选)(注意名称OWS模式位置而不是WMS…这是因为所有的OGC Web服务(OWS)都使用相同的元数据)根目录树,其中包含OGC WMS XMLSchema文件系列。如果希望在验证XML分析器中验证WMS输出,则此URL必须是实际.xsd文件所在的有效URL。默认是 http://schemas.opengis.net .

ows_sld_enabled

  • *描述:*(可选)一个值(true或false),当设置为“false”时,将忽略sld和sld_body参数,以便禁用WMS层的远程样式设置。此外,SLD也没有在WMS功能中公布,因此

ows_updatesequence

  • *描述:*(可选)updateSequence参数可用于维护服务元数据文档内容的客户端缓存的一致性。参数值可以是整数、时间戳(采用[ISO 8601:2000]格式)或任何其他数字或字符串。

wms_abstract

  • *WMS标记名:*摘要(WMS1.1.1,第7.1.4.2)

  • *描述:*(可选)提供有关WMS服务器的更多信息的文本提示。

wms_accessconstraints

  • *WMS标记名:*访问约束(WMS1.1.1,第7.1.4.2)

  • *说明:*(可选)访问约束信息。如果没有访问限制,请使用保留字“无”。

wms_地址类型,wms_地址,wms_城市,wms_州或省,wms_邮政编码,wms_国家/地区

  • *WMS标记名:*联系人地址和家庭(WMS1.1.1,第7.1.4.2)

  • *说明:*可选联系人地址信息。如果提供,则需要所有六个元数据项。

wms_attribution_logourl_format

  • Description: (Optional) The MIME type of the logo image. (e.g. "image/png"). Note that the other wms_attribution_logourl_* 还必须指定元数据。

  • 参见WMS 1.1.1规范第7.1.4.5.11节。

wms_attribution_logourl_height

  • *描述:*(可选)徽标图像的高度(像素)。请注意,还必须指定其他wms属性u logourl uuu*元数据。

  • 参见WMS 1.1.1规范第7.1.4.5.11节。

wms_attribution_logourl_href

  • *说明:*(可选)徽标图像的URL。请注意,还必须指定其他wms属性u logourl uuu*元数据。

  • 参见WMS 1.1.1规范第7.1.4.5.11节。

wms_attribution_logourl_width

  • *描述:*(可选)徽标图像的宽度(像素)。请注意,还必须指定其他wms属性u logourl uuu*元数据。

  • 参见WMS 1.1.1规范第7.1.4.5.11节。

wms_attribution_onlineresource

  • *描述:*(可选)数据提供程序的URL。

  • 参见WMS 1.1.1规范第7.1.4.5.11节。

wms_attribution_title

  • *描述:*(可选)用于命名数据的可读字符串

    供应商。

  • 参见WMS 1.1.1规范第7.1.4.5.11节。

wms_bbox_扩展名:

  • *说明:*(可选)“真”或“假”。如果为真,则在功能文档中报告所有受支持的SRS/CRS的边界框。如果为false,则只报告第一个SRS/CRS的边界框。

  • 在6.0中引入。

wms_contactelectronicmailaddress

  • *WMS标记名:*联系人电子邮箱地址(WMS1.1.1,

    教派7.1.4.2)

  • *说明:*可选联系人电子邮件地址。

wms_contactfacsimiletelephone

  • *WMS标签名称:*ContactFacsiLeplePhone(WMS1.1.1,第7.1.4.2)

  • *说明:*可选联系人传真电话号码。

WMS联系人、WMS联系人组织、WMS联系人位置

  • *WMS标记名:*联系人信息、联系人、联系人组织、联系人位置(WMS1.1.1,第7.1.4.2条)

  • *说明:*可选联系信息。如果提供,则需要所有三个元数据项。

wms_contactvoicetelephone

  • *WMS标签名称:*联系人语音电话(WMS1.1.1,第7.1.4.2条)

  • *说明:*可选联系人语音电话号码。

wms_enable_request (或) ows_enable_request)

  • *说明:*要启用的请求的以空格分隔的列表。默认值为“无”。可以启用以下请求: GetCapabilities, GetMap, GetFeatureInfoGetLegendGraphic.

  • 实例:

    GetMapGetFeatureInfo:

    "wms_enable_request" "GetMap GetFeatureInfo"
    

    启用除'getFeatureInfo'以外的所有请求`

    "wms_enable_request" "* !GetFeatureInfo"
    

wms_encoding

  • *WMS标记名:*编码

  • *说明:*可选的XML功能编码类型。默认值为ISO-8859-1。

wms_feature_info_mime_type

  • *WMS标记名:*功能信息MIME类型

  • 描述:

    • 用于指定在响应GetFeature请求时可以使用的其他MIME类型。

      例如,如果要使用层的HTML模板作为其响应的基础,则需要添加“WMS-FEATURE-INFO-MIME-TYPE”“text/HTML”。设置此项将产生广告文本/html作为GetFeature请求支持的MIME类型之一的效果。您还需要确保层指向有效的html模板(请参见 模板法 )。然后,客户机可以使用info_format=text/html调用服务器。

    • 如果未指定,则默认情况下mapserver将实现text/plain和gml。

wms_fees

  • *WMS标签名称:*费用(WMS1.1.1,第7.1.4.2)

  • *说明:*(可选)费用信息。如果没有费用,请使用保留字“无”。

wms_getcapabilities_version

  • *描述:*(可选)用于没有版本参数的getCapabilities请求的默认版本。如果未设置,将返回最新支持的版本。

wms_getlegendgraphic_formatlist

  • *描述:*(可选)WMS GetLegendgraphic请求的有效格式的逗号分隔列表。

wms_getmap_formatlist

  • *描述:*(可选)wms getmap请求的有效格式的逗号分隔列表。

wms_keywordlist

  • *WMS标记名:*关键字列表(WMS1.1.1,第7.1.4.2)

  • *描述:*(可选)以逗号分隔的关键字或关键字短语列表,以帮助目录搜索。自WMS 1.1.0起,未定义任何受控词汇。

wms_keywordlist_vocabulary

  • *wms属性名称:*关键字列表词汇表->关键字

  • 说明:*(可选)中使用的词汇名称 **wms_keywordlist_[vocabulary's name]_items* 如下所述。

wms_关键字列表[词汇名称]_项

  • *WMS标记名:*关键字列表->关键字

  • *描述:*(可选)以逗号分隔的关键字或关键字短语列表,帮助目录搜索给定词汇。

wms_languages

wms_layerlimit

  • *WMS标记名:*layerlimit(WMS1.3.0,第7.2.4.3)

  • *描述:*(可选)WMS客户端在getmap请求中可以指定的最大层数。如果没有设置,则不施加限制。

wms_onlineresource

  • *WMS标记名:*OnlineResource(WMS1.1.1,第2.2.2)

  • *描述:*(推荐)将用于访问此WMS服务器的URL。此值用于getCapabilities响应。

    参见

    上面的“设置mapfile/wms-online resource元数据”和“关于联机资源URL的更多信息”部分。

wms_remote_sld_max_bytes

  • *描述:*(可选)通过HTTP获取远程SLD时授权的最大字节数。默认为1兆字节(1048596)。

wms资源,wms资源

  • *WMS标记名:*边界框(WMS1.1.1,第5.5.6)

  • *描述:*(可选)在boundingbox标记中用于提供有关数据空间分辨率的信息,值以地图投影单位表示。

wms_rootlayer_abstract

  • *WMS标记名:*摘要(WMS1.1.1,第7.1.4.2)

  • *描述:*(可选)与wms_abstract相同,应用于根层元素。如果未设置,则将使用wms_摘要。

wms_rootlayer_keywordlist

  • *WMS标记名:*关键字列表(WMS1.1.1,第7.1.4.2)

  • *说明:*(可选)与wms_关键字列表相同,应用于根层元素。如果未设置,则将使用wms_关键字列表。

wms_rootlayer_name

  • *WMS标记名:*名称(WMS1.1.1,第7.1.4.1)

  • *描述:*(可选)与map.name相同,应用于根层元素。如果未设置,则将使用map.name。如果设置为 "" ,则取消name元素,并且根层名称将不会被公布为支持getmap的层。

wms_rootlayer_title

  • *WMS标签名称:*标题(WMS1.1.1,第7.1.4.1)

  • *描述:*(可选)与wms_标题相同,应用于根层元素。如果未设置,则将使用wms_标题。

wms_service_onlineresource

  • *描述:*(可选)顶级OnlineResource URL。MapServer使用OnlineResource元数据(如果提供)的顺序如下:

    1. wms_service_onlineresource

    2. ows_service_onlineresource

    三。wms-onlineresource(或自动生成的url,请参阅本文档的onlineresource部分)

wms_srs

  • *WMS标记名:*SRS(WMS1.1.1,第5.5.5)

  • 描述: (推荐)包含EPSG投影代码的列表,这些代码应通告为可用于此服务器中的所有层。该值可以包含一个或多个以空格分隔的EPSG:<code>对(例如“EPSG:4269 EPSG:4326”)该值应为大写(EPSG:3978.....而不是EPSG:3978),以避免区分大小写的平台出现问题。

  • 另请参见上面的“设置 Mapfile /地图投影和WMS U SRS元数据”一节。

wms_timeformat

  • *说明:*发送请求时使用的时间格式。(例如,“wms-timeformat”“%y-%m-%d%h,%y-%m-%d%h:%m”)。请看 WMS Time Support Howto 更多信息。

wms_title

  • *WMS标签名称:*标题(WMS1.1.1,第7.1.4.1)

  • *描述:*(必需)此层的人类可读名称。

层对象元数据

gml_exclude_items

  • *描述:*(可选,仅适用于GetFeatureInfo GML请求)要排除的项的逗号分隔列表。从MapServer4.6开始,您可以使用元数据控制为数据层公开的属性(字段)的数量。以前的行为只是一直公开所有属性。默认情况是根本不公开任何属性。排除特定字段的示例如下:

    "gml_include_items" "all"
    "gml_exclude_items" "Phonenum"
    

gml_geometries

  • *描述:*(可选,仅适用于GetFeatureInfo GML请求)提供几何元素的名称。该值被指定为用于几何元素名称的字符串。默认情况下,GML几何图形不会写入GML GetFeatureInfo输出,除非同时设置了GML_几何图形和GML_uu[几何图形名称]_类型。默认情况下,只写入边界框。如果gml_几何设置为“无”,则不会写入边界框或几何。

gml_groups

  • *描述:*(可选,仅适用于GetFeatureInfo GML请求)层组名称的逗号分隔列表。

gml_u[group name]_组

  • *描述:*(可选,仅适用于GetFeatureInfo GML请求)组中以逗号分隔的属性列表。下面是一个例子:

    "gml_include_items" "all"
    "gml_groups"        "display"
    "gml_display_group" "Name_e,Name_f"
    

gml_include_items

  • *描述:*(可选,仅适用于GetFeatureInfo GML请求)要包含的项的逗号分隔列表,或关键字“all”。从MapServer 4.6开始,您可以使用此元数据控制为数据层公开的属性(字段)的数量。以前的行为只是一直公开所有属性。您可以使用关键字“all”启用完全曝光,例如:

    "gml_include_items" "all"
    

    可以指定部分曝光的属性(字段)列表,例如:

    "gml_include_items" "Name,ID"
    

    新的默认行为是完全不公开属性。

gml_u[item name]_别名

  • *描述:*(可选,仅适用于GetFeatureInfo GML请求)属性名称的别名。服务的gml将通过别名引用此属性。下面是一个例子:

    "gml_province_alias" "prov"
    

gml_u[item name]_类型

  • 描述: (可选)指定属性的类型。有效值为OGR数据类型:INTEGER |Long| 真实 |Character| 日期 |Time| DateTime|布尔值。MapServer将这些转换为有效的GML数据类型。

    备注

    从MapServer 7.0.1开始,Long将用于64位整数。

    备注

    在MapServer8中添加了时间和日期时间。从MapServer8开始,日期语义是日期,没有时间,而在以前的版本中,它被不同地用于日期、时间或日期时间。

gml_uu[geometry name]_类型

  • *说明:*(可选,仅适用于GetFeatureInfo GML请求)使用GML U几何图形时,还需要指定层的几何类型。这是通过为gml_uuu几何名称类型提供一个值来实现的,其中[几何名称]是为gml_u几何指定的字符串值,并且是以下值之一:

    • 多点

    • 线

    • 多线

    • 多边形

    • 多多边形

gml_xml_items

  • *描述:*(可选,仅适用于GetFeatureInfo GML请求)不应进行XML编码的项目的逗号分隔列表。

ows_allowed_ip_list

与Web对象中的“允许使用”列表相同。

ows_denied_ip_list

与Web对象中的“OWS拒绝”列表相同。

wms_abstract

与Web对象中的wms_abstract相同。

wms_attribution_logourl_format

  • Description: (Optional) The MIME type of the logo image. (e.g. "image/png"). Note that the other wms_attribution_logourl_* 还必须指定元数据。

  • 参见WMS 1.1.1规范第7.1.4.5.11节。

wms_attribution_logourl_height

  • *描述:*(可选)徽标图像的高度(像素)。请注意,还必须指定其他wms属性u logourl uuu*元数据。

  • 参见WMS 1.1.1规范第7.1.4.5.11节。

wms_attribution_logourl_href

  • *说明:*(可选)徽标图像的URL。请注意,还必须指定其他wms属性u logourl uuu*元数据。

  • 参见WMS 1.1.1规范第7.1.4.5.11节。

wms_attribution_logourl_width

  • *描述:*(可选)徽标图像的宽度(像素)。请注意,还必须指定其他wms属性u logourl uuu*元数据。

  • 参见WMS 1.1.1规范第7.1.4.5.11节。

wms_attribution_onlineresource

  • *描述:*(可选)数据提供程序的URL。

  • 参见WMS 1.1.1规范第7.1.4.5.11节。

wms_attribution_title

  • *描述:*(可选)用于命名数据的可读字符串

    供应商。

  • 参见WMS 1.1.1规范第7.1.4.5.11节。

wms_authorityurl_name,wms_authorityurl_href

  • *描述:*(可选)authorityurl与标识符值一起使用,以提供将标识符信息链接回Web服务的方法。wms_标识符_权限应提供与声明的wms_权限url_名称匹配的字符串。必须同时存在wms-authorityurl-name和wms-authorityurl-href才能将authorityurl标记写入功能。

  • 参见WMS 1.1.1规范第7.1.4.5.12节。

wms_bbox_扩展名:

  • *说明:*(可选)“真”或“假”。如果为真,则在功能文档中报告所有受支持的SRS/CRS的边界框。如果为false,则只报告第一个SRS/CRS的边界框。

  • 在6.0中引入。

wms_dataurl_format

  • *说明:*(可选)元数据的非标准化文件格式。还必须指定层元数据wms_dataurl_href。

  • 参见WMS 1.1.1规范第7.1.4.5.14节。

wms_dataurl_href

  • *描述:*(可选)层元数据的URL。还必须指定层元数据wms_dataurl_格式。

  • 参见WMS 1.1.1规范第7.1.4.5.14节。

wms_enable_request (或) ows_enable_request)

  • *说明:*要启用的请求的以空格分隔的列表。默认值为“无”。可以启用以下请求: GetCapabilities, GetMap, GetFeatureInfoGetLegendGraphic.

  • 实例:

    GetMapGetFeatureInfo:

    "wms_enable_request" "GetMap GetFeatureInfo"
    

    启用除'getFeatureInfo'以外的所有请求`

    "wms_enable_request" "* !GetFeatureInfo"
    

wms_exclude_items

  • *描述:*(可选,仅适用于GetFeatureInfo文本/纯请求)要排除的项目的逗号分隔列表,或关键字“all”。

    请参阅上面的gml_exclude_items。

wms_extent

  • *WMS标记名:*边界框(WMS1.1.1,第5.5.6)

  • 描述: (可选)在MapServer无法(或效率很低)探测数据源以确定其范围(例如使用数据库)的情况下,用于层的边界框标记。该元数据的值是用空格分隔的“minx miny Maxx Maxy”,值以层的投影单位表示。如果提供了WMS_EXTEND,则它具有优先级,并且MapServer不会尝试读取源文件的范围。

    对于通过WMS提供服务的Raster,MapServer现在可以使用WMS的扩展元数据参数来注册图像。如果找不到.wld文件,MapServer将查找wms_扩展数据块元数据参数,并使用图像的扩展数据块和图像的大小进行地理注册。

wms_getfeatureinfo_formatlist

  • 描述: (可选)以逗号分隔的格式列表,该列表对GetFeatureInfo请求有效。如果定义了这些格式,则仅在功能文档中公布这些格式。

wms_getlegendgraphic_formatlist

  • 描述: (可选)对GetLegendGraphic请求有效的图像格式的逗号分隔列表。如果定义了这些格式,则仅在功能文档中公布这些格式。

wms_getmap_formatlist

  • 描述: (可选)对GetMap请求有效的图像格式的逗号分隔列表。如果定义了这些格式,则仅在功能文档中公布这些格式。

wms_group_abstract

  • *描述:*(可选)提供有关组的更多信息的文本的提示。该组只有一个层需要包含wms_group_abstract,mapserver将查找并使用该值。使用组中第一层的值。因此,如果多个层具有wms_group_abstract集,那么只使用第一个值。

wms_group_title

  • *WMS标记名称:*组标题(WMS1.1.1,节7.1.4.1条)

  • *描述:*(可选)此层所属组的可读名称。该组只有一个层需要包含wms_group_标题,mapserver将查找并使用该值。使用组中第一层的值。因此,如果多个图层设置了wms_group_标题,那么只使用第一个值。

wms_identifier_authority,wms_identifier_value

  • *描述:*(可选)标识符与authorityurl端点一起使用,以提供将标识符信息链接回Web服务的方法。wms_标识符_权限应提供与声明的wms_权限url_名称匹配的字符串。必须同时存在wms_identifier_authority和wms_identifier_值,才能将标识符标记写入功能。

  • 参见WMS 1.1.1规范第7.1.4.5.12节。

wms_include_items

  • *描述:*(可选,仅适用于GetFeatureInfo文本/纯请求)要包含的项的逗号分隔列表,或关键字“all”。

    请参阅上面的gml_include_项。

wms_keywordlist

与Web对象中的WMS关键字列表相同。

wms_keywordlist_vocabulary

与Web对象中的wms关键字列表词汇相同。

wms_关键字列表[词汇名称]_项

与Web对象中的WMS关键字列表[词汇表名称]项目相同。

wms_layer_group

  • *描述:*(可选)可用于将层分配给多个层次嵌套组。这个分组的层次结构将用能力表示。

    在MapServer 7.2中,wms_layer_group类似于group关键字,因为它总是在功能中发布组的名称和图块。因此,使用wms_layer_group设置的组始终可以通过getmap或getfeatureinfo请求(参见wms实现规范版本1.1.1第7.1.4.5.2节)。(OGC 01-068R2))。

    与group不同的是,group不支持嵌套的group。此元数据设置的目的是使WMS客户机能够了解层分组。

    所有组名前面都应该有一个正斜杠(/)。不允许对单个层同时使用wms_layer_group设置和group关键字。可以将组视为已弃用!

    LAYER
      NAME "mylayer"
      DATA "mylayer"
      TYPE LINE
      CLASS
        STYLE
          COLOR 100 100 255
        END
      END
      METADATA
       "WMS_LAYER_GROUP" "/rootgroup/subgroup"
      END
    END
    

wms_metadataurl_format

  • *描述:*(可选)元数据记录的文件格式mime类型(例如“text/plain”)。还必须指定层元数据wms_metadataurl_type和wms_metadataurl_href。

  • 参见WMS 1.1.1规范第7.1.4.5.10节。

  • 要输出多个MetadataURL元素,请使用 wms_metadataurl_list

wms_metadataurl_href

  • *描述:*(可选)层元数据的URL。还必须指定层元数据wms_metadataurl_格式和wms_metadataurl_类型。

  • 参见WMS 1.1.1规范第7.1.4.5.10节。

  • 要输出多个MetadataURL元素,请使用 wms_metadataurl_list

wms_metadataurl_list

  • 描述: (可选)以空格分隔的元数据键部分列表,以便能够指定多个MetadataURL。如果wms_metadataurl_list的值为“foo bar”,则将使用wms_metadataurl_href、wms_metadataurl_href、wms_metadataurl_foo_type、wms_metadataurl_foo_type、wms_metadataurl_bar_href、wms_metadataurl_bar_type项的语义查询wms_metadataurl_foo_href、wms_metadataurl_foo_type、wms_metadataurl_foo_type、wms_metadataurl_bar_href和wms_metadataurl_type项。

    示例:

    "wms_metadataurl_list" "xml html"
    
    "wms_metadataurl_xml_format" "text/xml"
    "wms_metadataurl_xml_type" "TC211"
    "wms_metadataurl_xml_href" "http://example.com/testXML"
    
    "wms_metadataurl_html_format" "text/html"
    "wms_metadataurl_html_type" "TC211"
    "wms_metadataurl_html_href" "http://example.com/testHTML"
    
  • 8.0 新版功能.

wms_metadataurl_type

  • *说明:*(可选)元数据符合的标准。目前只有两种类型有效:“TC211”是指[ISO 19115],而“FGDC”是指[FGDC-STD-001-1988]。还必须指定层元数据wms_metadataurl_格式和wms_metadataurl_href。

  • 参见WMS 1.1.1规范第7.1.4.5.10节。

  • 要输出多个MetadataURL元素,请使用 wms_metadataurl_list

wms_opaque

  • *WMS标记名:*不透明(WMS1.1.1,第7.1.4.63)

  • *描述:*(可选)将此元数据设置为“1”,以指示层表示空间的填充区域覆盖范围(例如,水深测量和高程层)。这应该被客户机看作是一个提示,即这个层应该被放置在层堆栈的底部。

wms_srs

与Web对象中的wms-srs相同。

wms_style

  • *描述:*(可选)legendurl样式名。需要以下元数据:wms u-style u-style's_u-name'u-width、wms u-style u-style's_u-name'u-legendurl-height、wms u-style u-style's_u-name'u-legendurl-format、wms u-style's_u-name'u-legendurl-href

  • 参见WMS 1.1.1规范第7.1.4.5.4节。

wms_style_[style's_name]_legendurl_format

  • *说明:*(可选)图例图像的文件格式mime类型。需要以下元数据:wms-style uu[样式的名称]Width、wms-style[样式的名称]Legendurl Height、wms-style、wms-style u[样式的名称]Legendurl Href。

  • 参见WMS 1.1.1规范第7.1.4.5.4节。

wms_style_[style's_name]_legendurl_height

  • *说明:*(可选)图例图像的高度(像素)。需要以下元数据:wms-style uu-style's_u-name]width、wms-style、wms-style u-style's_u-name]legendurl_-format、wms-style u-style's_u-name]legendurl_-href。

  • 参见WMS 1.1.1规范第7.1.4.5.4节。

wms_style_[style's_name]_legendurl_href

  • *说明:*(可选)层图例的URL。需要以下元数据:wms u-style u-style's_u-name'u-width、wms u-style u-style's_u-name'u-legendrl'u-height、wms u-style u-style's_u-name]legendrl'u-format、wms u-style。

  • 参见WMS 1.1.1规范第7.1.4.5.4节。

wms_style_[style's_name]_legendurl_width

  • *说明:*(可选)图例图像的宽度(像素)。需要以下元数据:wms_u-style_u-style's_u-name'u-format、wms_u-style's_u-name'legendrl'u-height、wms_u-style、wms_u-style's_u-name'legendrl'u-href。

  • 参见WMS 1.1.1规范第7.1.4.5.4节。

wms_timedefault

  • *描述:*(时间支持可选)如果定义了该值并且请求中缺少时间值,则使用该值。请看 WMS Time Support Howto 更多信息。

wms_timeextent

  • *描述:*(时间支持必须使用)此功能用于返回层的有效时间值。此处定义的值应该是有效的时间范围。请看 WMS Time Support Howto 更多信息。

wms_timeitem

  • *描述:*(时间支持必须使用)这是数据库中包含时间值的字段的名称。请看 WMS Time Support Howto 更多信息。

wms_title

与Web对象中的wms_标题相同。

层元数据API

如果 wms_metadataurl_href 未定义,MapServer将为中的给定层提供指向层元数据API的链接。 <MetadataURL> 元素见 Layer Metadata API 有关详细信息的文档。

供应商特定的WMS参数

angle

  • 旋转地图的角度(度)。

备注

角度值是顺时针的度数。

radius

  • 此参数接受两种类型的输入:

    • 以像素为单位指定搜索半径的整数。

    • bbox

bbox_pixel_is_point

  • 如果此参数为“真”,MapServer将把WMS GetMap请求中接收到的bbox视为以像素为点模式提供的bbox。从本质上来说,禁用从pixel_is_area(wms model)到pixel_的转换是在mapwms.c中针对特定映射文件存在的_点。

级联WMS请求

目前,有3个请求支持WMS级联:

  • GetMap

  • GetFeatureInfo

  • GetLegendGraphic

    在MapServer 6.2之前,未层叠GetLegendgraphic请求。使用层类返回了一个图例。为了保持这种行为,GetLegendGraphic请求将仅层叠 if:

    1. GetLegendgraphic请求通过 _enable_request 元数据。

    2. 层不包含任何具有名称属性集的类。IE:

    CLASS
      NAME "Parks"
      STYLE
        COLOR 0 255 0
      END
    END
    

    此层将不会层叠,因为它至少包含一个具有属性名集的类。

备注

如果您知道远程WMS服务器 does not 支持一个给定的WMS请求,您应该使用(OWS/WMS)为您的层显式禁用此请求启用请求元数据。否则,您只需从级联服务器获取XML异常。

WMS服务器映射文件示例

以下是一个非常基本的WMS服务器映射文件:

 1MAP
 2  NAME "WMS-test"
 3  STATUS ON
 4  SIZE 400 300
 5  EXTENT -2200000 -712631 3072800 3840000
 6  UNITS METERS
 7  SHAPEPATH "../data"
 8  IMAGECOLOR 255 255 255
 9  FONTSET ../etc/fonts.txt
10
11  WEB
12    IMAGEPATH "/ms4w/tmp/ms_tmp/"
13    IMAGEURL "/ms_tmp/"
14    METADATA
15      "wms_title"     "WMS Demo Server"  ##required
16      "wms_onlineresource" "http://yourpath/cgi-bin/mapserv.exe?map=/path/to/your-mapfile.map"   ##required (must change mapfile path)
17      "wms_srs"       "EPSG:3978 EPSG:3857 EPSG:4269 EPSG:4326"  ##recommended
18      "wms_enable_request" "*"   ##necessary
19    END
20  END # Web
21
22  PROJECTION
23    "init=epsg:3978"   ##required
24  END
25
26  SYMBOL
27    NAME "circle"
28    TYPE ellipse
29    POINTS 1 1 END
30  END # Symbol
31
32  #
33  # Start of layer definitions
34  #
35
36  LAYER
37    NAME "park"
38    METADATA
39      "wms_title"    "Parks"   ##required
40    END
41    TYPE POLYGON
42    STATUS OFF
43    DATA park
44    PROJECTION
45      "init=epsg:3978"   ##recommended
46    END
47    CLASS
48      NAME "Parks"
49      STYLE
50        COLOR 200 255 0
51        OUTLINECOLOR 120 120 120
52      END # Style
53    END # Class
54  END # Layer
55
56  LAYER
57    NAME popplace
58    METADATA
59      "wms_title"    "Cities"  ##required
60    END
61    TYPE POINT
62    STATUS ON
63    DATA popplace
64    PROJECTION
65      "init=epsg:3978"   ##recommended
66    END
67    CLASS
68      NAME "Cities"
69      STYLE
70        SYMBOL "circle"
71        SIZE 8
72        COLOR 0 0 0
73      END # Style
74    END # Class
75  END # Layer
76
77END # Map File

常见问题/常见问题

Q

如何找到数据投影的epsg代码?

A

如果您知道数据投影的一些参数,那么您可以使用https://epsg.io/上的搜索工具来查找数据的相关EPSG码。EPSG官方主页现在还允许您执行投影的文本或地图搜索:https://epsg.org/

PROJ 版本>=6:EPSG代码存储在SpatiaLite数据库中 proj.db 在Unix系统上通常位于/usr/local/share/proj/中,在Windows系统中通常位于C:/proj/或C:/proj/nad中(具体取决于安装),对于MS4W用户,具体位置为/MS4W/proj/nad/。

PROJ 版本<6:您可以浏览Proj附带的“epsg”文件,并查找与数据的投影匹配的投影定义。这是一个简单的文本文件,EPSG代码位于每行开头的括号(<...>)中。“epsg”文件在Unix系统上通常位于/usr/local/share/proj/中,在Windows系统中通常位于C:/proj/或C:/proj/nad中(具体取决于安装)。MS4W用户可以在/MS4W/proj/nad/中找到epsg文件。


Q

my wms server生成错误“msprocessprojection():no system list,errno:…”。

A

这很可能是Proj抱怨它找不到 epsg 投影定义文件(适用于项目版本低于6),或 proj.db 文件(对于项目版本>=6)。确保您已安装 PROJ 那就是 proj.db 文件(或 epsg 根据您的本地项目版本)安装在正确的位置。在Unix上,它应该在/usr/local/share/proj/下,在Windows proj上,它在C:/proj/或C:/proj/nad(取决于安装)下查找,MS4W用户将在/MS4W/proj/nad/中找到该文件。您还应该检查 error documentation 看看你的错误是否被讨论过了。

如果你没有 proj.db 文件(或 epsg 文件),然后您可以将其作为项目分发的一部分从 https://proj.org/ 或者,您也可以手动下载<6 epsg 文件位置: http://www.maptools.org/dl/proj4-epsg.zip


Q

自动投影如何工作?

A

当WMS客户机调用具有自动投影的WMS服务器时,它必须以如下形式指定SRS:auto:proj_id,unit_id,lon0,lat0,其中:

  • 项目ID是42001、42002、42003、42004或42005中的一个(当前只定义了五个自动投影)。

  • 对于米,单位ID始终为9001。(不确定是否有人支持任何其他单位。)

  • lon0和lat0是用作投影原点的坐标。

在WMS getCapabilities中使用自动投影时,在WMS的SRS元数据中只包含“auto:42003”字符串,而不包括投影参数。这些是由应用程序(客户端)在运行时根据地图视图添加的。例如:

NAME "DEMO"
...

WEB
  ...
  METADATA
    "wms_title"            "WMS Demo Server"
    "wms_onlineresource"   "http://my.host.com/cgi-bin/mapserv?map=/path/to/your-mapfile.map" #must change mapfile path
    "wms_srs"              "AUTO:42001 AUTO:42002"
    "wms_enable_request" "*"   ##necessary
  END # METADATA
END # WEB

上述服务器公布前两个自动预测。