与MapServer的抗锯齿¶
- 作者
珍珠层
- 联系
Umn.edu的Naci0002
- 最后更新
2009/01/17
警告
此文档已过时。从6.0版开始,MapServer将为“gd/”驱动程序生成别名输出,为“agg/”和“cairo/”驱动程序生成反锯齿输出。
备注
对于来自MapServer的高质量抗锯齿输出,它是 highly 建议使用 AGG 致使。本文档仅适用于您希望坚持GD呈现的情况,或者您使用的是早于5.0版MapServer的版本。
需要做什么¶
1。将map对象中的imagetype关键字更改(或添加)为png24(24位png输出)或jpeg
MAP
...
IMAGETYPE PNG24
...
END
向图层对象添加透明度并将值设置为alpha
MAP
...
IMAGETYPE PNG24
...
LAYER
...
TRANSPARENCY ALPHA
...
END
END
MAP
...
IMAGETYPE PNG24
...
LAYER
...
TRANSPARENCY ALPHA
...
CLASS
...
STYLE
...
ANTIALIAS TRUE
...
END
\.\.\.
END # end class
END # end layer
END # end map
备注
不要在类对象中使用符号或大小关键字,而是使用宽度指定线条或多边形轮廓的宽度。除非必要,否则不要使用宽度。如果必须定义符号,请使用椭圆类型的符号——它支持抗锯齿。
下面是一个真实 Mapfile 的示例:
备注
从MapServer 6中,不再支持符号类型cartoline。您必须使用agg渲染和样式模式来实现虚线。因此,下面的示例不再有效。
1MAP
2 NAME 'ms101'
3 EXTENT -2198022.00 -2444920.25 2707932.00 1234545.25 # CONUS LAEA (US)
4 SIZE 640 480
5 SHAPEPATH 'data'
6 SYMBOLSET 'symbols/symbols.txt'
7
8 IMAGETYPE PNG24
9
10 PROJECTION
11 "init=epsg:2163"
12 END
13
14 # The layer below will be rendered as 1-pixel wide, antialiased line
15 # If you'd like to change the line thickness add the WIDTH keyword
16 # in the STYLE object with a value of 3 or greater.
17 LAYER # begin antialiased country boundary (line) layer
18 NAME 'country_line'
19 DATA 'shapefile/WorldCountryBorders.shp'
20 TYPE LINE
21 STATUS ON
22 TRANSPARENCY ALPHA
23
24 PROJECTION
25 "init=epsg:4326"
26 END
27
28 CLASS
29 NAME 'Country Boundary'
30 STYLE
31 COLOR 96 96 96
32 ANTIALIAS TRUE
33 END
34 END
35 END # end country boundary layer
36
37 # The layer below shows one way to draw a polygon with antialiased outline
38 LAYER # begin antialiased country boundary (polygon) layer
39 NAME 'country_line'
40 DATA 'shapefile/Countries_area.shp'
41 TYPE POLYGON
42 STATUS ON
43 TRANSPARENCY ALPHA
44
45 PROJECTION
46 "init=epsg:4326"
47 END
48
49 CLASS
50 NAME 'Country Boundary'
51 STYLE
52 COLOR 212 212 212
53 OUTLINECOLOR 96 96 96
54 WIDTH 3
55 ANTIALIAS TRUE
56 END
57 END
58 END # end country boundary polygon layer
59
60 # The layer below shows one way to draw a polygon with antialiased outline
61 LAYER # begin antialiased state boundary (line) layer
62 NAME 'state_line'
63 DATA 'shapefile/us_states.shp'
64 TYPE LINE
65 STATUS ON
66 TRANSPARENCY ALPHA
67
68 PROJECTION
69 "init=epsg:4326"
70 END
71
72 CLASS
73 NAME 'State Boundary'
74 STYLE
75 COLOR 144 144 144
76 SYMBOL 'cartoline'
77 ANTIALIAS TRUE
78 END
79 END
80 END # end state line layer
81END # end of map file
以下是“卡通线”符号的定义方法:
备注
从MapServer 6,符号类型cartoline不可用。您必须使用agg渲染和样式模式来实现虚线。因此,不能再使用以下符号。
SYMBOL
NAME 'cartoline'
TYPE CARTOLINE
LINECAP "round"
LINEJOIN "round"
LINEJOINMAXSIZE 3
END
备注
这里提供的示例仅用于说明目的——保持映射文件定义简单。反走样会增加服务器上的计算开销,并可能降低服务器的性能。除非你必须使用,否则不要使用它,当然也不要在它上面使用符号,除非你真的必须使用。