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

  1. 名称:~别名。在~类中使用的名称。~值:~ [string]

  2. 类型支持的符号类型: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

  1. 点:定义矢量符号的起点或椭圆在XY方向上的半径。使用End结束定义。坐标单位为像素,请在使用前定义其默认值。您可以在适当位置插入一些非负坐标以创建不相邻的路径。对于椭圆形符号,您应该提供XY半径,如果X和Y相等,则它是圆。

价值: [x y] [x y] 。结束

  1. 样式:定义虚线样式或图案。价值: [num on] [num Off] [num on] …

结束。

  1. 填充:~设置填充颜色。对于~MARKER类型的符号,如果已设置OUTLINECOLOR,则该符号具有相同的边界线。价值: [true | false] 。

4.1.2.2 Pixmap specific parameters

  1. Image:PNG或GIF,表示文件路径的符号。价值: [path/filename]

  2. 透明:当图片设置为透明时,输入GIF或PNG填充颜色,或定义

所有阴影符号是否应具有透明填充颜色。默认情况下,背景颜色与其父图片的颜色匹配。价值: [color Index]

4.1.2.3 TrueType specific parameters

1)字体名称~。值:~ [char]

  1. 字符:~可以指一种特殊的~TrueType的字符类型的字体。~值:~ [char]

  2. 字体是否流畅。值:~ [true | false]

  3. 间隙:~以像素为单位。定义~TrueType线之间的距离。价值: [integer]

8.4.2. 4.2向量符号

有四种矢量类型的符号:矢量、椭圆、图案填充和CARTOLINE。您可以定义点的表示法、线的表示法和曲面的表示法。

4.2.1 Defining Point Representations

可以使用坐标序列来定义矢量符号,也可以在半径的椭圆上定义指定的XY来定义矢量符号。

图像10

图像10

上图对应的映射文件如下(注意起始坐标与结束坐标相同):

SYMBOL
    NAME  "Square"
    TYPE      VECTOR
    FILLED  TRUE
    POINTS
    0 0
    0 5
    5 5
    5 0
    0 0
    END
END

从理论上讲,构建上述符号的最佳方式是使用正方形样式,它不需要如此复杂。

图像11

图像11

上述符号可以使用对应的映射文件代码来编写,该代码可以在变色龙中找到。引用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

上述代码的结果如下:

图12

图12

4.2.2定义线表示

基本矢量符号由一系列点组成。

图13

图13

上图对应的映射文件内容如下:

SYMBOL
  NAME "dashed-line-short"
  TYPE ELLIPSE
  FILLED TRUE
  POINTS 1 1 END
  STYLE 2 1 END
END
图14

图14

请参考相应的符号文件,了解上图的配置。

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

显示结果如下:

图15

图15

Cartoline线型:

图像16

图像16

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)时出现尖峰。

图像17

图像17

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 \*

下面的例子是以上两者的组合,我们可以做出一个线性五角形序列。

图像18

图像18

制作这一符号的过程如下:

  1. 定义符号

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

  1. 使用Overlay选项的MapFile定义的块:

CLASS

“名人堂”

表达“星点”

颜色255 0 0

符号‘星点’

尺码14号

超级色255 255 0

OVERLAYSYMBOL‘星点’

OVERLAYSIZE 6

END

您可以使用类似于上面的技术来制作以下符号。“

图19

图19

对角线填充示例:

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 符号

使用位图元件可以创建良好的填充效果。需要注意的是,使用位图符号填充区域时,不能更改符号的大小,因此在某些情况下,需要为不同比例的地图创建不同的比例符号。示例:

使用的符号

面区填充效果

图像20

图像20

图像21

图像21

图像22

图像22

图片23

图片23

图像24

图像24

图片25

图片25

图片26

图片26

图27

图27

一些映射文件如下所示:

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

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或使用以下语法为字符编号,如“&#114”,可以使用“字符映射表”工具(开始-程序-附件-系统工具-字符映射表)来检查相应的字符映射表。在字符映射表工具窗口的左下角,您可以看到当前选定字符的Unicode字符和ASCII文本描述。如下所示:

图像28

图像28

在上图中:

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 主体操作如下:

  1. 将相应的shapefile复制到MapServer字体文件夹(最好使用命令行复制)

  2. 点击文件-打开字体文件

  3. 使用Format/Platform Manager(格式/平台管理器)功能,选择“Microsoft Symbol”(Microsoft符号)并点击“Change”(更改);条目应切换为“Microsoft Unicode”(Microsoft Unicode)。

  4. 保存文件

4.4.3符号集以下是一些免费的符号下载地址: