MS RFC 45:符号学、标签和制图改进

日期

2008/08/26

作者

史蒂芬·莱姆,H_vard Tveite,托马斯·邦福特

联系

明尼苏达州第纳尔的史蒂夫·莱姆

状态

采用

版本

MAPServer 5.4

部分来源于H_vard编写的文档,以及与其他从事制图输出工作的开发人员的讨论

比例相关渲染

  • 所有符号都可以缩放。当为一个图层指定符号caledonenom时,该图层及其所有符号(高度、宽度、线条宽度、线条图案、线条虚线等)都将缩放。

  • class->style->size以符号比例(由symbolscaledenom给出)给出符号边界框的垂直尺寸。对于所有其他比例,符号按地图比例缩放。

  • 可以使用class->style->minSize和class->style->maxSize限制符号缩放。通过使用这些minSize/maxSize,可以确保符号不会被渲染为比给定大小小/大。

精确的符号放置

协调符号相对于所绘制特征(点或线)的位置。

尺寸的分数

所有符号大小和符号几何图形都应该指定并表示为双agg支持分数线宽度,因此用户应该能够明确地设置它们。gd可以将double取整或截断/转换为int。

  • style->size/minsize/maxsize-styleobj.size/minsize/maxsize

  • style->width/minwidth/maxwith-styleobj.width/minwidth/maxwidth

  • style->gap-style.gap(替换符号->gap)

  • style->pattern(新功能)-styleobj.pattern

  • 样式->中心/原点(新功能)-styleobj.centerx/centery和originx/originy

  • style->offset-styleobj.offsetx和styleobj.offsety

  • label->size/minsize/maxsize-labelobj.size/minsize/maxsize

  • label->offset-labelobj.offsetx和labelobj.offsety

中心/原点[X Y]

使用十进制像素定义符号的中心(X轴向右增加,Y轴向下增加)。

  • 用于在地图或“装饰”线上放置点符号

  • 如果为点符号指定了角度,则定义旋转中心。

  • 默认值是符号边界框的中心。

  • 适用于椭圆、矢量、像素映射、TrueType类型。

    备注

    ANCHORPOINT.

ANGLE [double|attribute] [DEFAULT|CLOCKWISE|COMPASS]

  • STYLE-> ANGLE [double|attribute] [DEFAULT|CLOCKWISE|COMPASS]

  • LABEL-> ANGLE [double|auto|follow|attribute] [DEFAULT|CLOCKWISE|COMPASS]

要指定旋转,需要旋转点、参考方向、旋转方向和旋转单位。

目前,标签的角度具有向右(东)的参考方向,以及以度(0..360)为单位指定的逆时针旋转方向。

为符号指定方向/旋转时,通常使用指南针方向(参考方向为北和顺时针旋转)。需要指定旋转/方向模式的机制。

默认值为“参考方向东”和“逆时针旋转”。如果可能,比如:

操作模式

  • 默认参考方向为右(东),逆时针旋转方向。

  • 顺时针参考方向向右(东),顺时针旋转方向。

  • 指南针参考方向为北,顺时针旋转方向(指南针方向)。

行为

  • 对于图案填充类型的符号,这是阴影线的角度。

  • 对于点,这指定符号围绕其定义的中心旋转。

  • 对于直线上的点符号,这指定符号相对于直线方向的旋转(0-符号的X轴沿直线方向),或符号方向的固定指南针方向(指南针)。

  • 对于多边形填充,指定由其定义符号指定的图案旋转。关于阴影线的使用,请参见符号示例中的示例8。

生成瓷砖的稳定渲染

如何使用什么关键字?

多边形填充符号

给图案填充和矢量填充一个稳定的地理坐标原点(0,0),以便更好地支持相邻多边形的平铺和连续渲染。

标记

TODO

关键字从符号移动到样式

固定间隙[双]+端部

在线性几何体上渲染时点符号之间的间隙(用于屏蔽)

  • 以十进制像素表示(按符号比例)。定义图层符号比例处线条装饰的点符号之间的距离(中心到中心)

  • 默认值为0.0。第一个双精度表示从线条起点到第一个点符号的距离,其余双精度表示线条其余部分的点符号之间的距离模式。

  • 间隙距离按比例缩放。适用于类型vector、椭圆、pixmap、truetype

  • Fixme:当沿着直线段绘制符号时,负间隙将为角度增加180度。

  • 间隙为0(默认值)将导致MapServer使用符号作为画笔绘制线条。(仅AGG)

  • 符号的定义中心(中心)用于将符号放置在线上。将符号放在直线上时,符号的方向应使符号的X轴沿直线方向。

    备注

    INITIALGAP

DashPattern([双开][双关])+结束

  • 从样式重命名

  • 距离按比例缩放

    备注

    PATTERN DASHPATTERN.

还会来吗?

将minscaledenom/maxscaledenom参数添加到styleobj

这样可以根据比例去除轮廓或“管”线的空心部分。

向layerobj添加labelmethod

(或者只是拉贝罗布的方法?)

  • 这将允许用户选择满足其需求的标签放置算法。例如,在下面的d2中,改进标签放置会降低性能。在某些情况下,仅使用形状边界框中心就完全足够了。

  • 默认情况是在d2中的改进位置。

将标签添加到layersobj

这样就可以为所有类(类似于模板)定义默认值。一个阶级标签将成为先例。

将OutlineWidth添加到StyleObj

例如,绘制带有缓存轮廓的道路线

  • 目前不可能有一个固定宽度轮廓的尺度相关道路网络,这一增加将弥补这一点。

  • 这也将是一个速记,能够指定线性网络的轮廓,而不必指定两个样式块。

为线条和多边形类型向StyleObj添加类型

修改当前形状的解释方式。适用于线条和多边形图层(目前:是否有将其应用于点图层的想法?)

  • 类型bbox:使用样式渲染当前形状的边界框

  • 类型形心:在特征的形心渲染单个PointObj

  • 类型顶点:在形状的每个顶点渲染PointObj。-如何指定角度(沿直线方向,固定,…)—需要指定忽略特征起点和/或终点的方法

  • 键入start/end:在功能的开始/结束处呈现pointobj。例如,将用于向直线添加箭头-默认角度是第一/最后一段的方向

    备注

    MS RFC 48:地理变换几何操作 解决此问题(geomtransform)。

受影响的文件

  • Maplexer.l:C4、C5

  • 地图C:b1、c2、c3、c4

  • mapagg.cpp:b1、c2、c3、c4

  • mapfile.c:b1、c1、c2、c3、c4、c5、c6、d1

  • 绘图C:c1、c5、c6、d1

  • 映射主.c:c5,d2

昆虫入侵检测系统

个人修改将与他们自己的门票一起跟踪,这些门票将在这里列出。