地图服务器的地图符号构造¶
- 作者
彼得弗雷莫斯
- 联系
mapmedia.de的pf
- 作者
阿努尔夫克里斯蒂
- 联系
arnulf.christl,网址:wheregroup.com
- 作者
H·V·特维特
- 联系
在NMBU.NO.的Havard.tveite
目录
摘要¶
本文档引用了 map 和 符号 该文件的第一个版本是基于汉诺威大学景观和自然保护研究所开展的一个项目的结果。它是由迪普尔先生发起的。英。罗兰·哈赫曼。部分内容摘自德国富柏林大学地理学和地图学专业学生卡斯滕·霍夫曼的一项研究。在GRAS GMBH公司的实践培训中,霍夫曼先生主要谈到了符号的发展。 (Download study report 德语)他的学位论文也将涉及这一主题。
对于MapServer 6,该文档已进行了大量修订。
介绍¶
地图是使用点、线和区域符号的抽象表示。Bertin(1974)创建了一个清晰的逻辑符号方案,其中符号可以根据图形变量变化。MAPServer中可以使用以下图形变量:形状、大小、图案、颜色和亮度。点和区域符号以及文本字体(TTF)也可以用我们称之为轮廓的框架来显示。
下图显示了地图符号的理论结构,也在MapServer中使用:

制图符号的结构`¶
多重渲染和覆盖¶
假设您想要显示一条带有黑色边界线、两条黄色车道和一条红色中心车道的高速公路。这需要签名的组合。
通过绘制具有不同符号、大小和颜色的相同矢量数据,可以实现复杂的制图效果。这可以使用单独的 LAYER 但是,这可能会对应用程序产生性能影响,因为相同几何图形的每个渲染过程都将占用额外的处理器时间。首选的解决方案是使用多个 STYLE 通过叠加创建复杂符号。
创建上述公路符号,总宽度为9个单位,最低 STYLE (按图纸顺序)将是宽9个单位的宽黑线。第二层次 STYLE 将是一条宽度为7个单位的黄色线条,并且是最上面的 STYLE 将是一条红线,宽度为1个单位。这样,每条黄色车道的宽度将为(7-1)/2=3个单位。
组合符号可以解决各种制图问题。还可以组合不同的几何图形类型。可以将多边形数据集渲染为线条,以使用线条签名对多边形进行边框。它也可以被渲染为多边形,并带有填充多边形的符号。当多边形填充渲染到线条顶部时,基础轮廓的内部部分将被多边形的填充符号覆盖。这里观察到的剪切效应会导致边界线的符号不对称。要在不剪切的情况下显示大纲,只需重新排序 LAYER S或 STYLE 然后把大纲展示放在填充物的顶部。
另一种为框架多边形构造高级线条签名的方法是通过缓冲或剪切原始几何图形来篡改原始几何图形,使新对象位于原始多边形内部或在边界上生长。Postgis可以帮助实现很多效果。
符号缩放¶
有两种基本上不同的方法来处理不同比例的地图中符号和制图元素的显示大小。制图元素的大小要么以屏幕像素为单位,要么以现实世界的单位为单位。
如果以实际单位(例如米)设置大小,符号将根据显示地图的比例缩小和增长。
如果以屏幕像素为单位设置了大小,则符号在所有比例下看起来都相同。
MapServer的默认行为是实现用于显示绘图元素的“屏幕像素”大小类型。
SIZEUNITS 或 SYMBOLSCALEDENOM 的参数 LAYER .
什么时候? SIZEUNITS pixels) SIZEUNIT 文档。
什么时候? SYMBOLSCALEDENOM
STYLE MAXSIZE 和 MINSIZE
MapServer和符号规范¶
在MapServer应用程序中, SYMBOL 参数组织在 map 文件如下:
各 LAYER 有一个 TYPE
基本符号定义于 SYMBOL TYPE, POINTS, IMAGE, FILLED, ANCHORPOINT SYMBOL 元素可以单独收集 symbol files 用于重用。
颜色、亮度、尺寸和轮廓在 STYLE A段 CLASS COLOR, SIZE, WIDTH 和 OUTLINECOLOR.
线条和多边形的样式在中定义 STYLE GAP 和 PATTERN.
下面的示例显示了其中一些元素的交互,并解释了 LAYER 以及 SYMBOL 绘制绘图点符号所需的部分(红色方块,内有1像素宽的黑色轮廓和较小的蓝色圆圈):

生成的覆盖符号¶
LAYER 映射文件的节 |
SYMBOL (来自单独的符号文件或 Mapfile 中的内嵌行) |
---|---|
# Start of layer definition
LAYER
# Name of the layer
NAME "mytest"
TYPE POINT # Point geometries
STATUS DEFAULT # Always draw
# Use the dataset test.shp
DATA test
# Start of a Class definition
CLASS
# Start of the first Style
STYLE
# Symbol to be used (reference)
SYMBOL "square"
# Size of the symbol in pixels
SIZE 16
# Colour (RGB) - red
COLOR 255 0 0
# Outline colour (RGB) - black
OUTLINECOLOR 0 0 0
END # end of STYLE
# Start of the second Style
STYLE
# Symbol to be used (reference)
SYMBOL "circle"
# Size of the symbol in pixels
SIZE 10
# Colour (RGB) - blue
COLOR 0 0 255
END # end of STYLE
END # end of CLASS
END # end of LAYER
|
# Start of symbol definition
SYMBOL
# Symbol name (referenced in STYLEs)
NAME "square"
TYPE vector # Type of symbol
# Start of the symbol geometry
POINTS
0 0
0 1
1 1
1 0
0 0
END # end of POINTS
# The symbol should be filled
FILLED true
# Place the according to its center
ANCHORPOINT 0.5 0.5
END # end of SYMBOL
# Start of symbol definition
SYMBOL
# Symbol name (referenced in STYLEs)
NAME "circle"
TYPE ellipse # Type of symbol
# Start of the symbol geometry
POINTS
1 1
END # end of POINTS
# The symbol should be filled
FILLED true
# Place the according to its center
ANCHORPOINT 0.5 0.5
END # end of SYMBOL
|
在MapServer中使用地图符号¶
TYPE 中的参数 STYLE 元素。本节和以下各节将解释如何组合这些元素以创建复杂的地图符号,并介绍MapServer中地图绘制的其他一些重要方面。
输出格式¶
MapServer支持栅格输出格式(例如PNG、JPEG和GIF)和矢量输出格式(例如PDF、SVG)。栅格格式(除了GIF)使用消除混叠。见 OUTPUTFORMAT (和 MAP IMAGETYPE)
符号单位¶
SIZEUNITS 的参数 LAYER pixels.
这个 MAP RESOLUTION 和 DEFRESOLUTION DEFRESOLUTION RESOLUTION DEFRESOLUTION
尺寸可以用小数来指定。
符号比例¶
这个 SYMBOLSCALEDENOM 中的参数 LAYER 节指定符号或文本标签显示的比例,精确到 STYLE SIZE 和 WIDTH) WIDTH, ...) are tightly connected to the SYMBOLSCALEDENOM 参数。这个 MAXSIZE 和 MINSIZE STYLE 元素将符号的缩放限制为此处指定的最大和最小大小(但不影响大小计算)。
当符号随着比例的变化而缩放时,元素(在 STYLE s)合成地图符号的位置可能会相互改变。这是由于创建图像时的舍入效果。当符号变小时,在小尺度(大尺度分母)中效果最明显。由于相同的效果,符号变小时也会稍微改变形状。
MINSCALEDENOM 和 MAXSCALEDENOM 在 STYLE -第节,因此必须在 LAYER 水平。为此,请创建几个 LAYER s具有相同的几何图形,适用于不同的比例级别。
请务必注意,地图符号很大程度上取决于比例尺!所以要注意内容、符号和比例的相互作用。这三个参数相互作用很大,必须进行协调才能生成一个好的映射。
点符号的构造¶
TYPE pixmap, ellipse 和 vector

基本点符号'type`s,显示大小、偏移、角度和大纲颜色的效果¶
ANGLE 参数。
从6.2版开始,可以使用 SYMBOL ANCHORPOINT
TYPE¶
TYPE ellipse POINTS END.
TYPE¶
您可以使用TrueType字体中的符号。符号设置在 SYMBOL CHARACTER FONT FONTSET 的参数 MAP
对于GIF输出(GD渲染器),可以使用参数“antialias”定义要对字符应用反锯齿。建议这样做,尤其是对于更复杂的符号,当它们不适合栅格矩阵或显示可见像素结构时。
truetype LAYER CLASS STYLE TYPE ellipse)
要查找符号的字符编号,请使用以下选项之一:
使用软件fontmap(共享软件,免费试用版下载,感谢直到!).
使用MS Windows TrueType映射。
试错法。:-)
请注意,所谓的“符号字体”的编号从61440开始!所以,如果你想使用字符&84,你必须使用61440+84=&61524。(这不是痛苦吗?!)
您还可以使用 LABEL .然后可以使用 POSITION 参数 [ul uc ur cl cc cr ll lc lr] ,指定相对于几何图形的几何原点的位置。
TYPE¶
TYPE IMAGE 的参数 SYMBOL 元素。mapserver支持“pixmap”的栅格格式gif和png。
观察图像的颜色深度,避免使用以8位模式显示的24位PNG符号,因为这可能导致意外的颜色跳跃。
使用栅格图像时,不能在 SYMBOL 元素随后。
TRANSPARENT
这个 SIZE pixmap SIZE LAYER SYMBOLSCALEDENOM LAYER SIZEUNITS 不是 pixels) STYLE MAXSIZE 参数。
演示点符号的图形的符号定义¶
此代码用于生成点符号图中的符号。
首先,符号定义:
SYMBOL
NAME "o-flag-trans"
TYPE pixmap
IMAGE "o-flag-trans.png"
END # SYMBOL
SYMBOL
NAME "circlef"
TYPE ellipse
FILLED true
POINTS
10 10
END # POINTS
END # SYMBOL
SYMBOL
NAME "P"
TYPE truetype
FONT "arial"
CHARACTER "P"
END # SYMBOL
SYMBOL
NAME "v-line"
TYPE vector
FILLED false
POINTS
0 0
5 10
10 0
END # POINTS
END # SYMBOL
SYMBOL
NAME "v-poly"
TYPE vector
FILLED true
POINTS
0 0
3.5 8
7 0
5.2 0
3.5 4
1.8 0
0 0
END # POINTS
END # SYMBOL
然后, LAYER S和 STYLE S用于在点符号图中生成多边形V符号:
LAYER # Vector v - polygon
STATUS DEFAULT
TYPE POINT
FEATURE
POINTS
10 30
END # Points
END # Feature
CLASS
STYLE
SYMBOL "v-poly"
COLOR 0 0 0
END # STYLE
STYLE
SYMBOL "circlef"
COLOR 255 0 0
SIZE 4
END # STYLE
END # CLASS
END # LAYER
LAYER # Vector v - polygon, size
STATUS DEFAULT
TYPE POINT
FEATURE
POINTS
20 30
END # Points
END # Feature
CLASS
STYLE
SYMBOL "v-poly"
COLOR 0 0 0
SIZE 30
END # STYLE
STYLE
SYMBOL "circlef"
COLOR 255 0 0
SIZE 4
END # STYLE
END # CLASS
END # LAYER
LAYER # Vector v - polygon, size, angle
STATUS DEFAULT
TYPE POINT
FEATURE
POINTS
30 30
END # Points
END # Feature
CLASS
STYLE
SYMBOL "v-poly"
COLOR 0 0 0
SIZE 30
ANGLE 60
END # STYLE
STYLE
SYMBOL "circlef"
COLOR 255 0 0
SIZE 4
END # STYLE
END # CLASS
END # LAYER
LAYER # Vector v - polygon, size, offset
STATUS DEFAULT
TYPE POINT
FEATURE
POINTS
40 30
END # Points
END # Feature
CLASS
STYLE
SYMBOL "v-poly"
COLOR 0 0 0
SIZE 30
OFFSET 0 15
END # STYLE
STYLE
SYMBOL "circlef"
COLOR 255 0 0
SIZE 4
END # STYLE
END # CLASS
END # LAYER
LAYER # Vector v - polygon, size, angle, offset
STATUS DEFAULT
TYPE POINT
FEATURE
POINTS
50 30
END # Points
END # Feature
CLASS
STYLE
SYMBOL "v-poly"
COLOR 0 0 0
SIZE 30
ANGLE 60
OFFSET 0 15
END # STYLE
STYLE
SYMBOL "circlef"
COLOR 255 0 0
SIZE 4
END # STYLE
END # CLASS
END # LAYER
LAYER # Vector v - polygon, size outline
STATUS DEFAULT
TYPE POINT
FEATURE
POINTS
60 30
END # Points
END # Feature
CLASS
STYLE
SYMBOL "v-poly"
COLOR 0 0 0
SIZE 30
OUTLINECOLOR 0 255 0
END # STYLE
STYLE
SYMBOL "circlef"
COLOR 255 0 0
SIZE 4
END # STYLE
END # CLASS
END # LAYER
LAYER # Vector v - polygon, size, outline, width
STATUS DEFAULT
TYPE POINT
FEATURE
POINTS
70 30
END # Points
END # Feature
CLASS
STYLE
SYMBOL "v-poly"
COLOR 0 0 0
SIZE 30
OUTLINECOLOR 0 255 0
WIDTH 4
END # STYLE
STYLE
SYMBOL "circlef"
COLOR 255 0 0
SIZE 4
END # STYLE
END # CLASS
END # LAYER
LAYER # Vector v - polygon, size, outline, no color
STATUS DEFAULT
TYPE POINT
FEATURE
POINTS
80 30
END # Points
END # Feature
CLASS
STYLE
SYMBOL "v-poly"
SIZE 30
OUTLINECOLOR 0 255 0
END # STYLE
STYLE
SYMBOL "circlef"
COLOR 255 0 0
SIZE 4
END # STYLE
END # CLASS
END # LAYER
组合符号¶
下图显示了如何组合几个基本符号以创建复杂点符号。通过添加几个 STYLE 在一之内 LAYER .每个 STYLE 元素引用一个 SYMBOL 元素。所有基本符号在渲染时居中并覆盖。
SIZE 中的参数 STYLE SIZE SYMBOL SIZE

点符号的构造¶
线条符号的构造¶
WIDTH COLOR LINECAP, LINEJOIN 和 LINEJOINMAXSIZE
覆盖线¶
在一条线上组合多个样式/符号时,它们将定位在由对象的几何图形定义的基线上。在大多数情况下,MapServer正确地将符号居中。以16个单位宽度显示并覆盖10个单位宽度行的行的组合将生成具有3个单位边框的行符号。如果制图符号要包含宽度为1像素的中心线,则应将宽度重新配置为11和17个单位。根据经验,不要将偶数和奇数宽度结合起来。
使用 PATTERN 和 GAP 参数¶
这个 PATTERN 和 GAP
PATTERN 的参数 STYLE LINECAP LINEJOIN PATTERN LINECAP LINECAP LINEJOIN LINECAP LINECAP
GAP GAP SYMBOL 属于 TYPE SYMBOL 属于 TYPE SYMBOL 属于 TYPE SYMBOL 属于 TYPE SYMBOL ANCHORPOINT
备注
由于版本6.2,当使用 STYLE INITIALGAP 参数。 INITIALGAP GAP PATTERN.
下图显示了如何使用样式定义不同类型的线符号。
PATTERN
GAP
GAP
INITIALGAP
STYLE OFFSET

线条符号的构造¶
下面你会发现 SYMBOL S和 STYLE 在“线符号的构造”中用来产生线符号的。这个 LAYER S从图的底部到顶部排列。
线条样式和符号
SYMBOL
NAME "circlef"
TYPE ellipse
FILLED true
POINTS
1 1
END # POINTS
END # SYMBOL
SYMBOL
NAME "P"
TYPE truetype
FONT "arial"
CHARACTER "P"
END # SYMBOL
SYMBOL
NAME "vertline"
TYPE vector
FILLED true
POINTS
0 0
0 10
2.8 10
2.8 0
0 0
END # POINTS
ANCHORPOINT 0.5 0
END # SYMBOL
SYMBOL
NAME "o-flag-trans"
TYPE pixmap
IMAGE "o-flag-trans.png"
END # SYMBOL
######## Left column ###############
LAYER # Simple line
STATUS DEFAULT
TYPE LINE
FEATURE
POINTS
5 5
25 10
45 10
35 5
END # Points
END # Feature
CLASS
STYLE
COLOR 0 0 0
WIDTH 6.5
END # STYLE
END # CLASS
END # LAYER
LAYER # Dashed line with symbol overlay
STATUS DEFAULT
TYPE LINE
FEATURE
POINTS
5 15
25 20
45 20
35 15
END # Points
END # Feature
CLASS
STYLE
COLOR 0 0 0
WIDTH 5.0
PATTERN 40 10 END
END # STYLE
STYLE
SYMBOL "circlef"
COLOR 0 0 0
SIZE 8
INITIALGAP 20
GAP 50
END
END # CLASS
END # LAYER
LAYER # Dashed line, varying
STATUS DEFAULT
TYPE LINE
FEATURE
POINTS
5 25
25 30
45 30
35 25
END # Points
END # Feature
CLASS
STYLE
COLOR 0 0 0
WIDTH 5.0
LINECAP round #[butt|round|square|triangle]
LINEJOIN miter #[round|miter|bevel]
LINEJOINMAXSIZE 3
PATTERN 40 17 0 17 0 17 0 17 END
END # STYLE
END # CLASS
END # LAYER
LAYER # Line dash overlay
STATUS DEFAULT
TYPE LINE
FEATURE
POINTS
5 35
25 40
45 40
35 35
END # Points
END # Feature
CLASS
STYLE
COLOR 102 102 102
WIDTH 4.0
END # STYLE
STYLE
COLOR 255 255 255
WIDTH 2.0
LINECAP BUTT
PATTERN 8 12 END
END # STYLE
END # CLASS
END # LAYER
LAYER # Line dashed with dashed overlay
STATUS DEFAULT
TYPE LINE
FEATURE
POINTS
5 45
25 50
45 50
35 45
END # Points
END # Feature
CLASS
STYLE
COLOR 0 0 0
WIDTH 16.0
PATTERN 40 20 20 20 10 20 END
END # STYLE
STYLE
COLOR 209 66 0
WIDTH 12.0
INITIALGAP 2
PATTERN 36 24 16 24 6 24 END
END # STYLE
END # CLASS
END # LAYER
LAYER # Line overlay - 3
STATUS DEFAULT
TYPE LINE
FEATURE
POINTS
5 55
25 60
45 60
35 55
END # Points
END # Feature
CLASS
STYLE
COLOR 0 0 0
WIDTH 17.0
END # STYLE
STYLE
COLOR 209 66 0
WIDTH 11.0
END # STYLE
STYLE
COLOR 0 0 0
WIDTH 1.0
END # STYLE
END # CLASS
END # LAYER
######## right column ############
LAYER # Line - ellipse overlay
STATUS DEFAULT
TYPE LINE
FEATURE
POINTS
50 5
70 10
90 10
80 5
END # Points
END # Feature
CLASS
STYLE
COLOR 0 0 0
WIDTH 3.6
END # STYLE
STYLE
COLOR 0 0 0
SYMBOL "circlef"
SIZE 10
GAP 42
END # STYLE
STYLE
COLOR 255 0 0
SYMBOL "circlef"
SIZE 3
GAP 42
END # STYLE
END # CLASS
END # LAYER
LAYER # Line - symbol overlay
STATUS DEFAULT
TYPE LINE
FEATURE
POINTS
50 15
70 20
90 20
80 15
END # Points
END # Feature
CLASS
STYLE
COLOR 0 0 0
WIDTH 2.8
END # STYLE
STYLE
COLOR 0 0 0
SYMBOL "vertline"
SIZE 10.0
ANGLE 30
GAP -50
END # STYLE
STYLE
COLOR 255 0 0
SYMBOL "circlef"
SIZE 3
GAP 50
END # STYLE
END # CLASS
END # LAYER
LAYER # Line - font overlay
STATUS DEFAULT
TYPE LINE
FEATURE
POINTS
50 25
70 30
90 30
80 25
END # Points
END # Feature
CLASS
STYLE
COLOR 0 0 0
WIDTH 6
END # STYLE
STYLE
COLOR 102 0 0
SYMBOL "P"
SIZE 20
GAP -30
END # STYLE
STYLE
COLOR 255 0 0
SYMBOL "circlef"
SIZE 3
GAP 30
END # STYLE
END # CLASS
END # LAYER
LAYER # Line - pixmap overlay
STATUS DEFAULT
TYPE LINE
FEATURE
POINTS
50 35
70 40
90 40
80 35
END # Points
END # Feature
CLASS
STYLE
COLOR 0 0 0
WIDTH 6
END # STYLE
STYLE
COLOR 102 0 0
SYMBOL "o-flag-trans"
SIZE 20
GAP -30
END # STYLE
STYLE
COLOR 255 0 0
SYMBOL "circlef"
SIZE 3
GAP 30
END # STYLE
END # CLASS
END # LAYER
LAYER # Line - pixmap overlay
STATUS DEFAULT
TYPE LINE
FEATURE
POINTS
50 45
70 50
90 50
80 45
END # Points
END # Feature
CLASS
STYLE
COLOR 0 0 0
WIDTH 6
END # STYLE
STYLE
COLOR 102 0 0
SYMBOL "o-flag-trans"
SIZE 20
GAP -30
OFFSET -10 -99
END # STYLE
STYLE
COLOR 255 0 0
SYMBOL "circlef"
SIZE 3
GAP 30
END # STYLE
END # CLASS
END # LAYER
LINECAP¶
LINECAP 的参数 STYLE . LINECAP LINECAP LINECAP
LINEJOIN¶
LINEJOIN round. miter none butt.

不同类型的线路连接¶
LINEJOINMAXSIZE LINEJOIN¶
miter m

斜接¶
miter WIDTH 的参数 STYLE ):
m_max = d * LINEJOINMAXSIZE
如果 m > m_max, 然后连接长度将设置为m_max。
使用 OFFSET 参数¶
在 STYLE ,可以将偏移参数设置为在X和Y方向移动符号。位移不受线几何方向的影响。因此,用于设置样式的点符号都在同一方向上移动,与线的方向无关(如下面 Mapfile 中样式编号2中的定义-地图图像中的红线)。正x值向右移动。正Y值向下移动。
要生成相对于原始线条移动的线条,必须使用-99作为偏移的Y值。然后x值定义到原始几何体(垂直于直线)的直线距离。正x值将向右移动(沿直线方向查看时),负x值将向左移动。
下面的示例显示了偏移如何使用-99(蓝线和绿线)而不使用-99(红线)。细黑线显示线条几何图形的位置。

使用 OFFSET¶
LAYER #
STATUS DEFAULT
TYPE LINE
FEATURE
POINTS
20 20
280 160
280 20
160 20
160 60
END # Points
END # Feature
CLASS
STYLE # no offset
COLOR 0 0 0 # black
WIDTH 1
END # STYLE
STYLE # simple offset left and down
COLOR 255 0 0 # red
WIDTH 2
OFFSET -8 12
END # STYLE
STYLE # left offset rel. to line direction
COLOR 0 0 255 # blue
WIDTH 5
OFFSET -16 -99
END # STYLE
STYLE # right offset rel. to line direction
COLOR 0 255 0 # green
WIDTH 5
OFFSET 16 -99
END # STYLE
END # CLASS
END # LAYER
带有点符号的不对称线条样式¶
ANCHORPOINT, ANCHORPOINT STYLE OFFSET.
区域符号¶
区域(多边形)可以用全色填充。区域也可以用符号填充以创建,例如图案填充和分划。
默认情况下,符号用作瓷砖,并在X和Y方向逐个渲染(无间距),填充整个多边形。
如果 SIZE STYLE ,符号将缩放到指定的高度。
这个 GAP 的参数 STYLE 可用于增加符号的间距。
默认情况下,agg渲染器使用消除混叠,因此可以在符号周围发生边缘效果。
舱口填筑¶
简单的线图案填充(例如水平、垂直和对角线)可以通过用图案填充符号填充多边形来创建。

舱口实例¶
这个 SIZE 中的参数 STYLE 使用A SYMBOL 类型的 hatch WIDTH ANGLE PATTERN
SIZE WIDTH ANGLE, PATTERN 和 SIZE
下面的代码显示了用于生成图形的 Mapfile 的摘录。
首先, SYMBOL 定义:
SYMBOL
NAME "hatchsymbol"
TYPE hatch
END
然后 CLASS 定义:
LAYER # hatch
...
CLASS
STYLE
SYMBOL "hatchsymbol"
COLOR 0 0 0
SIZE 10
END # STYLE
END # CLASS
END # LAYER
LAYER # hatch with angle and pattern
...
CLASS
STYLE
SYMBOL "hatchsymbol"
COLOR 0 0 0
SIZE 10
WIDTH 3
ANGLE 45
PATTERN 20 10 10 10 END
END # STYLE
END # CLASS
END # LAYER
LAYER # hatch with wide lines
...
CLASS
STYLE
SYMBOL "hatchsymbol"
COLOR 0 0 0
SIZE 10
WIDTH 5
END # STYLE
END # CLASS
END # LAYER
LAYER # cross hatch
...
CLASS
STYLE
SYMBOL "hatchsymbol"
COLOR 255 153 0
SIZE 10
WIDTH 4
END # STYLE
STYLE
SYMBOL "hatchsymbol"
COLOR 0 0 255
SIZE 20
ANGLE 90
END # STYLE
END # CLASS
END # LAYER
TYPE¶
多边形可以用像素地图填充。
备注
如果 STYLE SIZE
Pixmap ANGLE
要创建复杂的区域符号,例如单个字符之间定义的距离或具有宽线的图案填充,PixMap填充可能是最佳选择。根据所需的模式,您必须使用图形编辑器以高精度生成栅格图像。下图是如何获得具有定义间距的符号的规则分配的示例。

常规符号填充的栅格图像¶
您可以使用除圆以外的其他形状。b定义栅格图像的宽度和高度。对于45度角的规则符号排列,b=h。对于规则平行排列且彼此之间没有偏移的符号,一个中心符号与图像边框的X和Y距离相同就足够了。
下图显示了如何设计PixMap以生成宽线图案填充的示例。

阴影填充的栅格图像¶
要创建45度图案填充,请使用:
B = H and x = y
备注
pixmap
pixmap
CLASS 部分 |
SYMBOL 定义 |
---|---|
CLASS
STYLE
COLOR 255 255 0
END
STYLE
SYMBOL "in_the_star"
END
STYLE
OUTLINECOLOR 0 0 0
WIDTH 1
END
END
|
SYMBOL
NAME "in_the_star"
TYPE PIXMAP
IMAGE "stern.png"
TRANSPARENT 8
END
![]() |

多边形填充-规则网格图案¶
CLASS 部分 |
SYMBOL 定义 |
---|---|
CLASS
STYLE
SYMBOL "in_point1"
END
STYLE
OUTLINECOLOR 0 0 0
WIDTH 1
END
END
|
SYMBOL
NAME "in_point1"
TYPE PIXMAP
IMAGE "flaeche1_1.png"
TRANSPARENT 13
END
![]() |

多边形填充-对角线图案¶
CLASS 部分 |
SYMBOL 定义 |
---|---|
CLASS
STYLE
COLOR 255 255 0
END
STYLE
SYMBOL "in_hatch"
END
STYLE
OUTLINECOLOR 0 0 0
WIDTH 1
END
END
|
SYMBOL
NAME "in_hatch"
TYPE PIXMAP
IMAGE "schraffur.png"
TRANSPARENT 2
END
![]() |

多边形填充-图案填充¶
TYPE¶
TYPE “向量”。对于其他符号填充,将使用指定的瓷砖符号生成图案。平铺时使用符号的边界框。
为多边形填充创建矢量符号的方法与为PixMap符号创建矢量符号的方法大致相同。精确是获得好的对称符号的必要条件。
符号的边界框的左上角 TYPE `矢量`在符号的坐标系中总是(0,0)。边界框的右下角由符号定义的最大x和y值(`points`参数)确定。事实上,左上角总是在(0,0)处,因此可以方便地构造符号,例如从下面示例的中心列底部找到的数字2的破折号签名。
两个多边形(filled true) 和行(filled false) 可以使用矢量符号。对于线条符号, WIDTH 的参数 STYLE 将给出线条宽度和 SIZE 参数将指定符号的高度。
备注
对于矢量线符号(fill off),如果指定的宽度大于1,则线将增大以延伸到符号的原始边界框之外。边界框外的零件将被切除。
STYLE 角度可用于多边形填充,但只能旋转每个单独的符号,而不能整体旋转图案。因此,产生旋转的图案是非常困难的。
下面您将找到一些用于多边形填充的向量符号示例。多边形填充伴随着用于填充的矢量符号。矢量符号的中心用一个红点表示。

多边形填充-矢量¶
从 Mapfile 中摘录上述多边形填充向量示例¶
首先, LAYER 的S
LAYER # chess board
STATUS DEFAULT
TYPE POLYGON
FEATURE
POINTS
5 5
5 25
45 25
45 5
5 5
END # Points
END # Feature
CLASS
STYLE
SYMBOL "chess"
COLOR 0 0 0
SIZE 35
END # STYLE
END # CLASS
END # LAYER
LAYER # x - line
STATUS DEFAULT
TYPE POLYGON
FEATURE
POINTS
5 30
5 50
45 50
45 30
5 30
END # Points
END # Feature
CLASS
STYLE
SYMBOL "x-line"
COLOR 0 0 0
WIDTH 5
SIZE 35
END # STYLE
END # CLASS
END # LAYER
LAYER # v polygon
STATUS DEFAULT
TYPE POLYGON
FEATURE
POINTS
5 55
5 75
45 75
45 55
5 55
END # Points
END # Feature
CLASS
STYLE
SYMBOL "v-poly"
COLOR 0 0 0
SIZE 35
END # STYLE
END # CLASS
END # LAYER
LAYER # Circles
STATUS DEFAULT
TYPE POLYGON
FEATURE
POINTS
5 80
5 100
45 100
45 80
5 80
END # Points
END # Feature
CLASS
STYLE
SYMBOL "circlef"
COLOR 0 0 0
SIZE 20
GAP 25
END # STYLE
END # CLASS
END # LAYER
LAYER # x polygon
STATUS DEFAULT
TYPE POLYGON
FEATURE
POINTS
55 5
55 25
95 25
95 5
55 5
END # Points
END # Feature
CLASS
STYLE
COLOR 0 0 0
SYMBOL "x-poly-fill"
SIZE 35
END # STYLE
END # CLASS
END # LAYER
LAYER # indistinct marsh
STATUS DEFAULT
TYPE POLYGON
FEATURE
POINTS
55 30
55 50
95 50
95 30
55 30
END # Points
END # Feature
CLASS
STYLE
COLOR 0 0 255
SYMBOL "ind_marsh_poly"
SIZE 25
END # STYLE
END # CLASS
END # LAYER
LAYER # diagonal circles
STATUS DEFAULT
TYPE POLYGON
FEATURE
POINTS
55 55
55 75
95 75
95 55
55 55
END # Points
END # Feature
CLASS
STYLE
COLOR 255 230 51
SYMBOL "diag_dots"
SIZE 30
END # STYLE
END # CLASS
END # LAYER
LAYER # diagonal holes in yellow
STATUS DEFAULT
TYPE POLYGON
FEATURE
POINTS
55 80
55 100
95 100
95 80
55 80
END # Points
END # Feature
CLASS
STYLE
SYMBOL "diag_holes"
SIZE 30
COLOR 250 220 102
END # STYLE
END # CLASS
END # LAYER
LAYER # v line + circle
STATUS DEFAULT
TYPE POLYGON
FEATURE
POINTS
100 5
100 25
140 25
140 5
100 5
END # Points
END # Feature
CLASS
STYLE
COLOR 255 0 0
SYMBOL "circlef"
SIZE 30
GAP 45
END # STYLE
STYLE
COLOR 0 0 0
SYMBOL "v-line"
LINEJOIN miter
LINECAP butt
SIZE 35
WIDTH 10
GAP 45
END # STYLE
END # CLASS
END # LAYER
LAYER # indistinct marsh + diagonal holes in yellow
STATUS DEFAULT
TYPE POLYGON
FEATURE
POINTS
100 30
100 50
140 50
140 30
100 30
END # Points
END # Feature
CLASS
STYLE
COLOR 0 0 255
SYMBOL "ind_marsh_poly"
SIZE 25
END # STYLE
STYLE
SYMBOL "diag_holes"
SIZE 30
COLOR 250 220 0
OPACITY 75
END # STYLE
END # CLASS
END # LAYER
LAYER # x line + circle
STATUS DEFAULT
TYPE POLYGON
FEATURE
POINTS
100 55
100 75
140 75
140 55
100 55
END # Points
END # Feature
CLASS
STYLE
COLOR 0 0 255
SYMBOL "circle"
WIDTH 5
SIZE 20
GAP 30
END # STYLE
STYLE
COLOR 0 204 0
SYMBOL "x-line"
SIZE 10
WIDTH 3
GAP 30
END # STYLE
END # CLASS
END # LAYER
然后 SYMBOL S:
SYMBOL
NAME "circlef"
TYPE ellipse
FILLED true
POINTS
10 10
END # POINTS
END # SYMBOL
SYMBOL
NAME "circle"
TYPE ellipse
FILLED false
POINTS
10 10
END # POINTS
END # SYMBOL
SYMBOL
NAME "v-line"
TYPE vector
POINTS
0 0
5 10
10 0
END
END
SYMBOL
NAME "v-poly"
TYPE vector
FILLED false
FILLED true
POINTS
0 0
3.5 8
7 0
5.2 0
3.5 4
1.8 0
0 0
END
END
SYMBOL
NAME "x-line"
TYPE vector
POINTS
0 0
1 1
-99 -99
0 1
1 0
END
END
SYMBOL
NAME "chess"
TYPE vector
FILLED true
POINTS
0 0
10 0
10 10
0 10
0 0
-99 -99
10 10
20 10
20 20
10 20
10 10
END
END
SYMBOL
NAME "x-poly-fill"
TYPE vector
FILLED true
POINTS
0 1.131
0 0
1.131 0
4.566 3.434
8 0
9.131 0
9.131 1.131
5.697 4.566
9.131 8
9.131 9.131
8 9.131
4.566 5.697
1.131 9.131
0 9.131
0 8
3.434 4.566
0 1.131
END # POINTS
END # SYMBOL
SYMBOL
NAME "ind_marsh_poly"
TYPE vector
FILLED true
POINTS
# Half line
0 2
4.5 2
4.5 3
0 3
0 2
-99 -99
# Half line
7 2
11.5 2
11.5 3
7 3
7 2
-99 -99
# Hole line
1.25 5
10.25 5
10.25 6
1.25 6
1.25 5
END
END
SYMBOL
NAME "diag_dots"
TYPE vector
FILLED true
POINTS
# Central circle:
0.7450 0.4500
0.7365 0.5147
0.7115 0.5750
0.6718 0.6268
0.6200 0.6665
0.5597 0.6915
0.4950 0.7000
0.4303 0.6915
0.3700 0.6665
0.3182 0.6268
0.2785 0.5750
0.2535 0.5147
0.2450 0.4500
0.2535 0.3853
0.2785 0.3250
0.3182 0.2732
0.3700 0.2335
0.4303 0.2085
0.4950 0.2000
0.5597 0.2085
0.6200 0.2335
0.6718 0.2732
0.7115 0.3250
0.7365 0.3853
0.7450 0.4500
-99 -99
0.25 0.0
0.2415 0.0647
0.2165 0.1250
0.1768 0.1768
0.1250 0.2165
0.0647 0.2415
0.0 0.25
0.0 0.0
0.25 0.0
-99 -99
1 0.25
0.9252 0.2415
0.8649 0.2165
0.8132 0.1768
0.7734 0.1250
0.7485 0.0647
0.74 0.0
1 0.0
1 0.25
-99 -99
0.74 1
0.7485 0.9252
0.7734 0.8649
0.8132 0.8132
0.8649 0.7734
0.9252 0.7485
1 0.74
1 1
0.74 1
-99 -99
0.0 0.74
0.0647 0.7485
0.1250 0.7734
0.1768 0.8132
0.2165 0.8649
0.2415 0.9252
0.25 1
0.0 1
0.0 0.74
END
END
SYMBOL
NAME "diag_holes"
TYPE vector
FILLED true
POINTS
0.0 0.0
# Left half circle
0.0 0.24
0.0647 0.2485
0.1250 0.2734
0.1768 0.3132
0.2165 0.3649
0.2415 0.4252
0.25 0.5
0.2415 0.5647
0.2165 0.6250
0.1768 0.6768
0.1250 0.7165
0.0647 0.7415
0.0 0.75
0.0 1.0
# Bottom half circle
0.24 1
0.2485 0.9252
0.2734 0.8649
0.3132 0.8132
0.3649 0.7734
0.4252 0.7485
0.5 0.74
0.5647 0.7485
0.6250 0.7734
0.6768 0.8132
0.7165 0.8649
0.7415 0.9252
0.75 1
1.0 1.0
# Right half circle
1 0.75
0.9252 0.7415
0.8649 0.7165
0.8132 0.6768
0.7734 0.6250
0.7485 0.5647
0.74 0.5
0.7485 0.4252
0.7734 0.3649
0.8132 0.3132
0.8649 0.2734
0.9252 0.2485
1 0.24
1.0 0.0
# Top half circle
0.75 0.0
0.7415 0.0647
0.7165 0.1250
0.6768 0.1768
0.6250 0.2165
0.5647 0.2415
0.5 0.25
0.4252 0.2415
0.3649 0.2165
0.3132 0.1768
0.2734 0.1250
0.2485 0.0647
0.24 0.0
0.0 0.0
END
END
多边形轮廓¶
可以使用创建多边形轮廓 OUTLINECOLOR 在 STYLE . WIDTH 指定轮廓的宽度。
STYLE
OUTLINECOLOR 0 255 0
WIDTH 3
END # STYLE
虚线多边形轮廓可以通过使用 OUTLINECOLOR, WIDTH 和 PATTERN (一起) LINECAP, LINEJOIN 和 LINEJOINMAXSIZE) . 有关使用 PATTERN, 看见 使用 PATTERN 和 GAP 参数 .
STYLE
OUTLINECOLOR 0 255 0
WIDTH 3
PATTERN
10 5
END # PATTERN
LINECAP BUTT
END # STYLE
对于某些符号类型,甚至可以使用 OUTLINECOLOR, SYMBOL 和 GAP.
STYLE
OUTLINECOLOR 0 255 0
SYMBOL 'circle'
SIZE 5
GAP 15
END # STYLE
示例(MapServer 4)¶
本节中的示例适用于MapServer 4。
备注
这些符号中的许多都不能与较新版本的MapServer一起使用,但它们包含许多有用的符号定义,因此作为参考提供。
符号是用 map 文件和 symbol 文件(文件) download_old_symbols )如果您想使用这些映射文件,请注意,您的映射服务器必须至少能够处理50个符号。否则,在加载 symbol 文件夹。
基本符号¶



复符号¶



技巧¶
更改点符号的中心¶
MAPServer对符号定位点执行所有转换(偏移、旋转)。默认情况下,定位点从符号的边界框计算。在某些情况下,更改符号的定位点可能很有用。从6.2版开始,可以使用 SYMBOL ANCHORPOINT.
以下是使用 ANCHORPOINT 点符号和装饰线的机制。图中有三个示例,每个示例显示了使用和不使用 ANCHORPOINT. 在顶部,箭头被添加到行中,使用 GEOMTRANSFORM 开始/结束。在中间,标记被添加到行中,使用 GAP 和 ANGLE. 在底部,点符号被移动和旋转。红点代表中心点,蓝点代表偏移。

换档技巧¶
下面是三个包含 SYMBOL S和 STYLE 用于在图中生成移位符号的机制。
SYMBOL 的S |
|
---|---|
SYMBOL
NAME "arrow-start"
TYPE vector
FILLED true
POINTS
0 0.4
3 0.4
3 0
5 0.8
3 1.6
3 1.2
0 1.2
0 0.4
END # POINTS
ANCHORPOINT 0 0.5
END # SYMBOL
SYMBOL
NAME "arrow-end"
TYPE vector
FILLED true
POINTS
0 0.4
3 0.4
3 0
5 0.8
3 1.6
3 1.2
0 1.2
0 0.4
END # POINTS
ANCHORPOINT 1 0.5
END # SYMBOL
|
LAYER # Line
STATUS DEFAULT
TYPE LINE
FEATURE
POINTS
20 80
40 85
60 85
70 80
END # Points
END # Feature
CLASS
STYLE
COLOR 0 0 0
WIDTH 15
LINECAP butt
END # STYLE
STYLE
GEOMTRANSFORM "start"
COLOR 0 255 0
SYMBOL "arrow-start"
SIZE 15.0
ANGLE AUTO
END # STYLE
STYLE
GEOMTRANSFORM "start"
COLOR 255 0 0
SYMBOL "circlef"
SIZE 3
END # STYLE
STYLE
GEOMTRANSFORM "end"
COLOR 0 255 0
SYMBOL "arrow-end"
SIZE 15.0
ANGLE AUTO
END # STYLE
STYLE
GEOMTRANSFORM "end"
COLOR 255 0 0
SYMBOL "circlef"
SIZE 3
END # STYLE
END # CLASS
END # LAYER
|
SYMBOL 的S |
|
---|---|
SYMBOL
NAME "vert-line-shift"
TYPE vector
POINTS
0 0
0 10
END # POINTS
ANCHORPOINT 0.5 0
END # SYMBOL
SYMBOL
NAME "vert-line"
TYPE vector
POINTS
0 0
0 10
END # POINTS
END # SYMBOL
|
LAYER # Line - symbol overlay
STATUS DEFAULT
TYPE LINE
FEATURE
POINTS
20 50
40 55
60 55
70 50
END # Points
END # Feature
CLASS
STYLE
COLOR 0 0 0
WIDTH 4
END # STYLE
STYLE
COLOR 0 0 0
SYMBOL "vert-line-shift"
SIZE 20.0
WIDTH 3
ANGLE 30
GAP -50
END # STYLE
STYLE
COLOR 255 0 0
SYMBOL "circlef"
SIZE 3
GAP 50
END # STYLE
END # CLASS
END # LAYER
|
SYMBOL 的S |
---|
SYMBOL
NAME "v-line"
TYPE vector
POINTS
0 0
5 10
10 0
END # POINTS
END # SYMBOL
SYMBOL
NAME "v-line-shift"
TYPE vector
POINTS
0 0
5 10
10 0
END # POINTS
ANCHORPOINT 0.5 0
END # SYMBOL
|
Shift和旋转结合使用也可以达到良好的效果:

SYMBOL 的S |
|
---|---|
SYMBOL
NAME "circle"
TYPE ellipse
POINTS
1 1
END # POINTS
FILLED true
ANCHORPOINT 0.5 0.5
END # SYMBOL
SYMBOL
NAME "stick"
TYPE vector
POINTS
-0.5 0.5
0.5 0.5
0.51223 0.42274
0.54774 0.35305
0.60305 0.29774
0.67274 0.26223
0.75 0.25
0.82725 0.26223
0.89694 0.29774
0.95225 0.35305
0.98776 0.42274
1 0.5
0.98776 0.57725
0.95225 0.64694
0.89694 0.70225
0.82725 0.73776
0.75 0.75
0.67274 0.73776
0.60305 0.70225
0.54774 0.64694
0.51223 0.57725
0.5 0.5
-0.5 0.5
END # POINTS
FILLED true
ANCHORPOINT 0 0.5
END # SYMBOL
|
LAYER # Hole
TYPE POINT
STATUS DEFAULT
FEATURE
POINTS
20 20
END # POINTS
END # FEATURE
FEATURE
POINTS
80 30
END # POINTS
END # FEATURE
FEATURE
POINTS
50 80
END # POINTS
END # FEATURE
CLASS
STYLE
SYMBOL "circle"
SIZE 25
COLOR 102 102 102
OUTLINECOLOR 51 51 102
END
END
END # layer
LAYER # Methods
TYPE POINT
STATUS DEFAULT
PROCESSING "ITEMS=method"
FEATURE
POINTS
20 20
END # POINTS
ITEMS "1"
END # FEATURE
FEATURE
POINTS
20 20
END # POINTS
ITEMS "5"
END # FEATURE
FEATURE
POINTS
20 20
END # POINTS
ITEMS "8"
END # FEATURE
FEATURE
POINTS
20 20
END # POINTS
ITEMS "13"
END # FEATURE
FEATURE
POINTS
80 30
END # POINTS
ITEMS "8"
END # FEATURE
...
CLASSITEM "method"
CLASS
EXPRESSION "1"
STYLE
SYMBOL "stick"
SIZE 10
COLOR 102 0 0
OUTLINECOLOR 102 102 102
ANGLE 0
END # STYLE
END # CLASS
CLASS
EXPRESSION "2"
STYLE
SYMBOL "stick"
SIZE 10
COLOR 204 0 0
OUTLINECOLOR 102 102 102
ANGLE 36
END # STYLE
END # CLASS
...
CLASS
EXPRESSION "14"
STYLE
SYMBOL "stick"
SIZE 10
COLOR 0 204 204
OUTLINECOLOR 102 102 102
ANGLE 324
END # STYLE
END # CLASS
END # layer
|
当前问题/未解决问题¶
GAP - PATTERN 不兼容¶
由于虚线机制的不兼容性,创建包含虚线的高级线符号很困难 (PATTERN )和符号在线放置机构 (GAP )。如果 GAP 可以是列表而不是单个数字(可能会将其重命名为 GAPS 或 DISTANCES ),它将解决问题,因为我们已经有了 INTIALGAP 参数(指定到第6.2版中添加的行上第一个符号的距离)。
GAP -不完全支持2D¶
GAP 不支持二维(与多边形填充相关),因此X和Y方向必须使用相同的间隙。引入新的参数——gapx和gapy可以解决这个问题。
结束¶
我们希望本文档能够帮助您以一种生动的方式向MapServer展示您的数据,并解释MapServer概念的一些基础和可能性以及一些弱点。为了每个人的利益,建立一个地图符号库是很好的。这尤其涉及TrueType字体,TrueType字体是为某些项目开发的,其中包含一些满足制图需求的典型签名。
您还可以查看 discussion paper for the improvement of the MapServer Graphic-Kernel (只有德语)。