查询模板

Mapfile

我们将会对国家与区域进行检索, 先建立 Mapfile 如下:

01 MAP
02     IMAGETYPE "PNG"
03     EXTENT -180 -90 180 90
04     SIZE 600 300
05     SHAPEPATH "/gdata"
06     IMAGECOLOR 255 255 255
07     FONTSET "../fonts/fonts.list"
08     TEMPLATEPATTERN "tmpl-*"
09     LEGEND
10         KEYSIZE 12 12
11         LABEL
12             TYPE BITMAP
13             SIZE MEDIUM
14             COLOR 0 0 89
15         END
16         STATUS ON
17     END
18     SYMBOL
19         NAME "star"
20         TYPE VECTOR
21         FILLED TRUE
22         POINTS
23             0 0.375
24             0.35 0.375
25             0.5 0
26             0.65 0.375
27             1 0.375
28             0.75 0.625
29             0.875 1
30             0.5 0.75
31             0.125 1
32             0.25 0.625
33         END
34     END
35     REFERENCE
36         IMAGE "../images/worldref.png"
37         SIZE 300 150
38         EXTENT -180 -90 180 90
39         STATUS ON
40         MINBOXSIZE 30
41         MAXBOXSIZE 150
42         COLOR 255 255 0
43         OUTLINECOLOR 255 50 50
44         MARKERSIZE 30
45         MARKER "star"
46     END
47     QUERYMAP
48         SIZE 200 150
49         STATUS ON
50         STYLE HILITE
51         COLOR 255 0 0
52     END
53     SCALEBAR
54         IMAGECOLOR 255 255 255
55         LABEL
56             COLOR 0 0 0
57             SIZE TINY
58         END
59         STYLE 1
60         SIZE 160 2
61         COLOR 0 0 0
62         UNITS KILOMETERS
63         INTERVALS 2
64         TRANSPARENT FALSE
65         STATUS ON
66     END
67     WEB
68         HEADER "qtpl_header.html"
69         FOOTER "qtpl_footer.html"
70         TEMPLATE "to be replaced by map_web_template variable in section3.html"
71         IMAGEPATH "/owg/ms_tmp/"
72         IMAGEURL "/ms_tmp/"
73         METADATA
74             "wms_title" "WMS Demo Server"
75             "wms_onlineresource" "http://192.168.4.211/cgi-bin/mapserv?map=/mstu/htdocs/example2.map&"
76             "wms_srs" "EPSG:3857 EPSG:4326"
77         END
78     END
79     LAYER
80         NAME "land"
81         DATA "land_shallow_topo_8192.tif"
82         STATUS OFF
83         TYPE RASTER
84     END
85     LAYER
86         NAME "topo"
87         TYPE RASTER
88         CONNECTIONTYPE WMS
89         CONNECTION "http://wcs.osgeo.cn:8088/service?"
90         METADATA
91             "wms_srs" "EPSG:4326"
92             "wms_name" "maplet_i887"
93             "wms_server_version" "1.1.1"
94             "wms_format" "image/jpeg"
95         END
96         PROJECTION
97             "init=epsg:4326"
98         END
99     END
100     LAYER
101         NAME "states_poly"
102         GROUP "states"
103         DATA "wcountry.shp"
104         STATUS ON
105         TYPE POLYGON
106         LABELITEM "NAME"
107         TOLERANCE 3
108         CLASS
109             NAME "the States"
110             TEMPLATE "qtpl_country.html"
111             STYLE
112                 COLOR 232 232 232
113                 OUTLINECOLOR 132 132 32
114             END
115         END
116     END
117     LAYER
118         NAME "states_line"
119         DATA "wcountry.shp"
120         STATUS OFF
121         TYPE LINE
122         CLASS
123             NAME "State Boundary"
124             STYLE
125                 COLOR 132 132 32
126             END
127         END
128     END
129     LAYER
130         NAME "wriver"
131         DATA "wriver.shp"
132         STATUS ON
133         TYPE LINE
134         TOLERANCE 3
135         CLASS
136             NAME "World River"
137             TEMPLATE "qtpl_river.html"
138             STYLE
139                 COLOR 0 0 255
140             END
141         END
142     END
143     LAYER
144         NAME "wroads"
145         DATA "wroads.shp"
146         STATUS OFF
147         TYPE LINE
148         CLASS
149             NAME "World Road"
150             STYLE
151                 COLOR 100 200 100
152             END
153         END
154     END
155 END

正如你所看到的,我们只对 MapFile 添加了两个参数:

  1. states_poly 图层中添加了 TOLERANCE
  2. 在图层 states_polyCLASS 对象中添加了 TEMPLATE

模板文件

上面的 Mapfile 中用到了模板文件,文件名称为 states_query.html,使用相对路径访问。这个模板文件的内容如下:


<tr>
  <td>[lrn]</td>
  <td>[NAME]</td>
  <td>[STATE]</td>
</tr>

请注意,它看起来就像HTML表中的一个片段。MapServer [NAME][STATE] 的标签实际上是和 states_poly.dbf 的属性, 这是与输出shape文件相关的非空间数据库。MapServer定义 Shapefile 属性时, 我们始终使用 NAME (对于 Shapefile,这是真实的,但在所有的情况下,是不正确的)。 此之前我们在章节1中所定义CLASSITEM和LABELITEM时我们也使用这个。 对于其它的标签, [LRN]是另一个MapServer内变量,将在图层内显示结果计数。

如果你使用了 "Query Multiple Layers查询多图层",MapServer CGI程序将对每个记录应用这个查询模板

打开示例

使用表单来提交 MapServer CGI 程序需要的各个参数:

简单的MapServer查询模板
 

maplayer 变量是 MapServer 的内部变量,是制图应用中必需的。