我们将会对国家与区域进行检索, 先建立 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 添加了两个参数:
states_poly
图层中添加了 TOLERANCE
;states_poly
的 CLASS
对象中添加了 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 程序需要的各个参数:
map
与 layer
变量是 MapServer 的内部变量,是制图应用中必需的。