5.3. 在MapServer中使用WMS服务GetMap¶
GetMap
操作用于生成地图,地图可以是一张图片,也可以是一组图形元素。 GetMap
允许客户端请求多个服务器创建重叠的地图图层,从而处理具有相同参考框架、大小和比例的像素几何图形。这些层可以在客户端以一定的顺序显示,并且可以根据人类的可视化需求使用透明像素技术来显示来自不同来源的地图信息。
GetMap
请求通常使用HTTP/GET通过URL编码调用基本的WMS,也可以使用HTTP/POST编码与支持SLD的WMS通信。GetMap
请求必须指定所请求的层(层)、每个层使用的样式(Styles)、空间参考系(SRS)、边界矩形(BBox)、图像格式( format
)和大小( width
, height
)和其他参数。
Web地图服务支持以图片或图形格式显示地图视图。图像格式包括公共图像格式,如GIF、PNG、JPEG等。大多数Web浏览器都支持这些格式,其他图形格式的显示也可能需要一些帮助程序来支持。图形格式包括在WMS中不常用的SVG和WebCGM格式。
此外,可选的 transparent
参数用于指定贴图的背景是否透明。默认值为 False
。允许透明绘制返回结果的函数,以便可以覆盖不同请求的地图。每个WMS优选地提供支持与其他地图图像重叠的透明显示图像格式。
有效的 GetMap
请求将返回由具有指定样式、空间参考系、边界矩形、大小、格式和透明度的地理参考图层组成的地图。无效的 GetMap
请求返回格式化的错误消息。在HTTP上下文中,返回值的内容类型是MIME类型。
5.3.1. 使用GetMap进行请求¶
此处介绍了对已发布的MapServer WMS服务的GetMap访问。
第一个是Mapfile:
1MAP
2 NAME "EX2_"
3 IMAGETYPE "png24"
4 EXTENT -180 -90 180 90
5 SIZE 600 300
6 SHAPEPATH "/gdata"
7 SYMBOLSET "../symbols/symbols35.sym"
8 FONTSET "../fonts/fonts.list"
9 OUTPUTFORMAT
10 NAME "png"
11 DRIVER "AGG/PNG"
12 MIMETYPE "image/png"
13 IMAGEMODE RGB
14 EXTENSION "png"
15 FORMATOPTION "GAMMA=0.75"
16 END
17 WEB
18 TEMPLATE "tmpl_ogc.html"
19 IMAGEPATH "/owg/ms_tmp/"
20 IMAGEURL "/ms_tmp/"
21 METADATA
22 "wms_title" "WMS Demo Server"
23 "wms_version" "1.3.0"
24 "wms_onlineresource" "http://webgis.cn/cgi-bin/mapserv?map=/owg/mfb2.map&"
25 "wms_srs" "EPSG:4326"
26 "wms_enable_request" "*"
27 "ows_enable_request" "*"
28 "wms_feature_info_mime_type" "text/html"
29 "wms_format" "image/png"
30 END
31 END
32 PROJECTION
33 "init=epsg:4326"
34 END
35 LAYER
36 NAME "topo"
37 DATA "land_shallow_topo_8192.tif"
38 STATUS OFF
39 TYPE RASTER
40 PROCESSING "BANDS=1,2,3"
41 PROJECTION
42 "init=epsg:4326"
43 END
44 END
45 LAYER
46 NAME "states"
47 DATA "wcountry.shp"
48 STATUS OFF
49 TYPE POLYGON
50 TEMPLATE "tmpl_ogc.html"
51 METADATA
52 "wms_title" "test2"
53 "wms_version" "1.3.0"
54 "wms_srs" "EPSG:4326 EPSG:3857"
55 "wms_enable_request" "*"
56 "ows_enable_request" "*"
57 "wms_feature_info_mime_type" "text/html"
58 "wms_format" "image/png"
59 END
60 PROJECTION
61 "init=epsg:4326"
62 END
63 CLASS
64 NAME "States"
65 STYLE
66 COLOR 232 232 232
67 OUTLINECOLOR 32 32 32
68 END
69 END
70 END
71 LAYER
72 NAME "states_line"
73 DATA "wcountry.shp"
74 STATUS OFF
75 TYPE LINE
76 TEMPLATE "tmpl_ogc.html"
77 METADATA
78 "wms_title" "test3"
79 "wms_version" "1.3.0"
80 "wms_srs" "EPSG:4326 EPSG:3857"
81 "wms_enable_request" "*"
82 "ows_enable_request" "*"
83 "wms_feature_info_mime_type" "text/html"
84 "wms_format" "image/png"
85 END
86 PROJECTION
87 "init=epsg:4326"
88 END
89 CLASS
90 NAME "State Boundary"
91 STYLE
92 COLOR 132 132 32
93 END
94 END
95 END
96END
与前一年相比 mfa1.map
:
此Mapfile使用WMS服务进行配置。查看功能:
5.3.2. 查看地图¶
在这里,使用MapServer的 map
模式进行查看。
5.3.3. 使用GetMap进行配置¶
未启用 GetMap
¶
要使用 GetMap
请求时,需要启用 GetMap
Mapfile中的WMS选项:
如果未启用,它将显示以下结果作为对URL的请求结果:
<ServiceExceptionReport version="1.3.0" xsi:schemaLocation="http://www.opengis.net/ogc http://schemas.opengis.net/wms/1.3.0/exceptions_1_3_0.xsd"><ServiceException>
msWMSDispatch(): WMS server error. WMS request not enabled. Check wms/ows_enable_request settings.
</ServiceException></ServiceExceptionReport>
针对WMS的预测¶
请注意,要使用 GetMap
请求,则必须设置投影。如果未设置,将显示访问权限:
<ServiceExceptionReport version="1.3.0" xsi:schemaLocation="http://www.opengis.net/ogc http://schemas.opengis.net/wms/1.3.0/exceptions_1_3_0.xsd"><ServiceException code="InvalidCRS">
msWMSLoadGetMapParams(): WMS server error. Cannot set new CRS on a map that doesn't have any projection set. Please make sure your mapfile has a projection defined at the top level.
</ServiceException></ServiceExceptionReport>
请求WMS¶
以下是访问它的正确方法。请注意, length
和 width
以URL形式传递给服务器图形的参数。
看起来 GETMAP
请求结果类似于MapServer的 mode=map
。
备注
WMS 1.1.1和WMS 1.3.0版本对坐标系的请求参数不同:
SRS=EPSG:4326
对于1.1.1CRS=CRS:84
对于1.3.0
5.3.4. 使用GetMap获取部分地图¶
上面使用的范围与整个数据的范围一致,结果看起来没有什么不同。让我们缩小以获得地图的一部分。
根据描述,该参数 CRS = EPSG: 4326
也可以使用。但我没有成功,您可能需要配置Mapfile。
在MapServer CGI控件中也可以实现上述效果,方法是设置 zoom
浏览级别、 x
和 y
地图的坐标,但是 GetMap
显然更加灵活。除此之外,WMS作为一种标准还有更多的优势。