8.4. 符号¶
8.4.1. 注释和语法¶
4.1.1 Notes¶
本节介绍如何在MapServer中定义符号。
注:
L符号的定义可以在 Mapfile 中,也可以在单独的文件中。~in~map对象使用SYMBOLSET关键字指定相应的符号文件,从而可以重用符号文件。
L地图服务器中有三种类型的符号可用于渲染点、线和面。
N向量:向量、椭圆及其子类型HATCH
N位图:
N TrueType:
L符号编号为0。点0表示单像素;对于~shadowing 0,它表示实心填充;对齐线0表示一像素宽的线。
L符号不定义与颜色相关的内容,颜色设置在类中定义(类型的位图符号除外)
L每个符号文件中最多定义~64个符号。可以通过修改mapsymbol.h文件中的MS_MAXSYMBOLS的值来调整此参数。
4.1.2 Syntax¶
名称:~别名。在~类中使用的名称。~值:~ [string]
类型支持的符号类型:MapServer:
L矢量:简单的用户定义符号(使用简单的绘图来定义符号的形状)。
L椭圆方向的半径值:xy。
L像素图:(位图符号):支持GIF和PNG图像的符号。
L TrueType:可以在FONTSET中定义
Value:[vector | ellipse | hatch | cartoline | pixmap | truetype | simple].
4.1.2.1 Vector / Ellipse specific parameters¶
点:定义矢量符号的起点或椭圆在XY方向上的半径。使用End结束定义。坐标单位为像素,请在使用前定义其默认值。您可以在适当位置插入一些非负坐标以创建不相邻的路径。对于椭圆形符号,您应该提供XY半径,如果X和Y相等,则它是圆。
价值: [x y] [x y] 。结束
样式:定义虚线样式或图案。价值: [num on] [num Off] [num on] …
结束。
填充:~设置填充颜色。对于~MARKER类型的符号,如果已设置OUTLINECOLOR,则该符号具有相同的边界线。价值: [true | false] 。
4.1.2.2 Pixmap specific parameters¶
Image:PNG或GIF,表示文件路径的符号。价值: [path/filename]
透明:当图片设置为透明时,输入GIF或PNG填充颜色,或定义
所有阴影符号是否应具有透明填充颜色。默认情况下,背景颜色与其父图片的颜色匹配。价值: [color Index]
4.1.2.3 TrueType specific parameters¶
1)字体名称~。值:~ [char]
字符:~可以指一种特殊的~TrueType的字符类型的字体。~值:~ [char]
字体是否流畅。值:~ [true | false]
间隙:~以像素为单位。定义~TrueType线之间的距离。价值: [integer]
8.4.2. 4.2向量符号¶
有四种矢量类型的符号:矢量、椭圆、图案填充和CARTOLINE。您可以定义点的表示法、线的表示法和曲面的表示法。
4.2.1 Defining Point Representations¶
可以使用坐标序列来定义矢量符号,也可以在半径的椭圆上定义指定的XY来定义矢量符号。
上图对应的映射文件如下(注意起始坐标与结束坐标相同):
SYMBOL
NAME "Square"
TYPE VECTOR
FILLED TRUE
POINTS
0 0
0 5
5 5
5 0
0 0
END
END
从理论上讲,构建上述符号的最佳方式是使用正方形样式,它不需要如此复杂。
上述符号可以使用对应的映射文件代码来编写,该代码可以在变色龙中找到。引用etc/symbol s.sym文件。提示:“-99-99”坐标看起来像一个栅栏,但它只用于未填充的符号。
组合使用矢量符号的示例:
LAYER
NAME "Test Symbols"
TYPE POINT
STATUS ON
CONNECTIONTYPE OGR
CONNECTION "test\_symbols/test\_sym.TAB"
HEADER "test"
CLASSITEM "test"
CLASS
NAME "Combined Symbol"
EXPRESSION "Combined"
STYLE
COLOR 0 0 255
OUTLINECOLOR 0 0 0
SYMBOL 'Square'
SIZE 40
END
STYLE
COLOR 200 200 255
SYMBOL 'Circle'
SIZE 30
END
STYLE
COLOR 0 0 255
SYMBOL 'Cross'
SIZE 20
END
END
END
上述代码的结果如下:
4.2.2定义线表示¶
基本矢量符号由一系列点组成。
上图对应的映射文件内容如下:
SYMBOL
NAME "dashed-line-short"
TYPE ELLIPSE
FILLED TRUE
POINTS 1 1 END
STYLE 2 1 END
END
请参考相应的符号文件,了解上图的配置。
vectors.sy [^ m ^](http://umn.mapserver.ch/MapServer/en/symbols/vectors.sym) Example of < http://umn.mapserver.ch/MapServer/en/symbols/vectors.sym> combination line:
LAYER
NAME "Test Line Symbology"
TYPE LINE STATUS ON
CONNECTIONTYPE OGR
CONNECTION "test\_symbols/test\_Lines.TAB"
HEADER "test"
CLASSITEM "test"
CLASS
NAME "Combined Line Symbology"
EXPRESSION "Combined"
STYLE
COLOR 0 0 255
SYMBOL 'continue'
SIZE 7
END
STYLE
COLOR 255 255 0
SYMBOL 'continue'
SIZE 5
END
STYLE
COLOR 0 0 0
SYMBOL 'dashed-line-short'
SIZE 1
END
END
END
显示结果如下:
Cartoline线型:
SYMBOL
NAME "cartoline"
TYPE cartoline
LINECAP round \#\[butt|round|square|triangle\]
LINEJOIN miter \#\[round|miter|bevel\]
LINEJOINMAXSIZE 3
STYLE
40 17 1 17 1 17 1 17
END
END
其中,LINEJOINMAXSIZE将斜接类型的连接的最大长度定义为M的系数,以避免在d(3表示,即M=3×d)时出现尖峰。
M=3D
定义带有阴影的面的示例:
符号文件如下所示:
SYMBOL
NAME 'hatch-test'
TYPE HATCH
END
Mapfile中层的定义如下(NDS UP,45°阴影,3像素粗线,10像素间隔:)
LAYER ...
CLASS ...
STYLE
SYMBOL 'hatch-test'
COLOR 255 0 0
ANGLE 45
SIZE 10
WIDTH 3
END
END
END
4.2.3 Defining Line and Area Representations using Symbols \*¶
下面的例子是以上两者的组合,我们可以做出一个线性五角形序列。
制作这一符号的过程如下:
定义符号
SYMBOL
名字“星点点”
类型向量
填充为True
POINTS
0 0.375
0.35 0.375
0.5 0
0.65 0.375
1 0.375
0.75 0.625
0.875 1
0.5 0.75
0.125 1
0.25 0.625
END
STYLE 1 25 END
END
使用Overlay选项的MapFile定义的块:
CLASS
“名人堂”
表达“星点”
颜色255 0 0
符号‘星点’
尺码14号
超级色255 255 0
OVERLAYSYMBOL‘星点’
OVERLAYSIZE 6
END
您可以使用类似于上面的技术来制作以下符号。“
对角线填充示例:
SYMBOL
名称“Diag45Fill _ 单薄“
类型向量
透明%0
POINTS
0 1 1 0
END
END
8.4.3. 4.3位图符号¶
定义位图类型的符号需要gif格式或png格式的图片。定义此格式的图片¶
具体方法如下:
SYMBOL
名称‘Image’
PIXMAP标牌
图像‘位图/Image.gif’
END
以上图片的路径必须是符号文件的绝对路径或相对路径。
或者,您可以使用透明 [color index] 若要设置透明颜色,请执行以下操作。如果您设置了
输出图像格式ImageType不支持透明度,必须在对应的层中设置。
透明ALPLA。
4.3.1 创建 Bitmap 符号 ***¶
4.3.1.1 Introduction to Bitmap 符号 **¶
位图元件的优势:
全彩色
fancy imaging effects such as buttonize, shadows, light and so on
透明度
易于创建
4.3.2 用来填充区域 Bitmap 符号
使用位图元件可以创建良好的填充效果。需要注意的是,使用位图符号填充区域时,不能更改符号的大小,因此在某些情况下,需要为不同比例的地图创建不同的比例符号。示例:
使用的符号
面区填充效果
一些映射文件如下所示:
LAYER
名称“测试符号Poly”
类型:多边形
状态为
连接型OGR
CONNECTION “test_ symbols/test_ sym_ layer.TAB”
标题“测试”
CLASSITEM“测试”
CLASS
NAME "Vertical Hatching Sample"
EXPRESSION "hatch"
COLOR 255 0 0
OUTLINECOLOR 0 200 0
SYMBOL 'Vertical\_Hatch'
END
END
4.3.3符号集下面的链接可以下载一些免费的符号文件:¶
8.4.4. 4.4 TrueType符号¶
定义TrueType类型符号字体文件需要TrueType。在MapServer中,可以使用FONTSET指定相应的字体文件。字体文件中的定义如下:
arial-bold fonts/arialbd.ttf
arial fonts/arial.ttf
arial-italic fonts/ariali.ttf
该文件包含两列,第一列在MapFile文件中使用,第二列用于指定包含路径的字体文件。
您可以在映射文件文件中定义TrueType类型的符号,也可以将相应的信息写入
在单独的文件中,然后在映射文件中使用SYMBOLSET来引用此文件。建议使用后一种方法,以便实现重用。
TrueType类型符号的定义示例:
SYMBOL
NAME "SurveyPoint"
TYPE TRUETYPE FONT "SURVEY"
CHARACTER "."
END
此处使用的字体名称需要与FONTSET、CHARACTER指定的文件中的值对应
以下值可用于:
L a、b、c、d“”类ASCII文本
L或使用以下语法为字符编号,如“r”,可以使用“字符映射表”工具(开始-程序-附件-系统工具-字符映射表)来检查相应的字符映射表。在字符映射表工具窗口的左下角,您可以看到当前选定字符的Unicode字符和ASCII文本描述。如下所示:
在上图中:
L ASCII字符是:问号=“?”
L UNICODE数字003F(十六进制数)是符号中的字符#63,我们可以在文件中定义如下:
SYMBOL
NAME "Windrose"
TYPE TRUETYPE
FONT "SURVEY"
CHARACTER "?"
END
以下结果与上图相同:
SYMBOL
NAME "Windrose"
TYPE TRUETYPE
FONT "SURVEY"
CHARACTER "&\#63;"
END
4.4.1使用许多现有的TrueType创建TrueType类型的符号¶
可以使用姿势类型,例如在Corel Drawing包中使用的字体。您可以使用它们创建自己的字体:
L在WINDOWS平台下,可以使用 [Font Creator] 计划。](http://www.high-logic.com/products.html)http://www.high-logic.com/products.html)
L在LINUX下的使用 FontForge <http://fontforge.sourceforge.net/>
4.4.2使用TrueType类型符号的提示¶
符号的类型必须为“Unicode”。例如:此处不支持MapInfo符号,如果要使用,则需要修改这些符号的类型。使用 [Font Creator Program] (http://www.high-logic.com/products.html)) With 主体操作如下:
将相应的shapefile复制到MapServer字体文件夹(最好使用命令行复制)
点击文件-打开字体文件
使用Format/Platform Manager(格式/平台管理器)功能,选择“Microsoft Symbol”(Microsoft符号)并点击“Change”(更改);条目应切换为“Microsoft Unicode”(Microsoft Unicode)。
保存文件
4.4.3符号集以下是一些免费的符号下载地址:¶
Animals < http://umn.mapserver.ch/MapServer/en/images/symbols/fonts/animals.ttf> ( Preview )
Cartographic < http://umn.mapserver.ch/MapServer/en/images/symbols/fonts/cartographic.ttf> ( Preview )
Natural Resources < http://umn.mapserver.ch/MapServer/en/images/symbols/fonts/natural_resources.ttf> ( Preview )
Park < http://umn.mapserver.ch/MapServer/en/images/symbols/fonts/park.ttf> ( Preview )
Recreational < http://umn.mapserver.ch/MapServer/en/images/symbols/fonts/recreate.ttf> ( Preview )
Signs < http://umn.mapserver.ch/MapServer/en/images/symbols/fonts/signs.ttf> ( Preview )
Sports < http://umn.mapserver.ch/MapServer/en/images/symbols/fonts/sports.ttf> ( Preview )