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
昆虫入侵检测系统¶
个人修改将与他们自己的门票一起跟踪,这些门票将在这里列出。
b1:https://github.com/mapserver/mapserver/issues/2766(double)
https://github.com/mapserver/mapserver/issues/4066 (precise symbol placement - anchorpoint)
https://github.com/mapserver/mapserver/issues/3847 (stable rendering for tile generation)
https://github.com/mapserver/mapserver/issues/3797 (move from symbol to style)
https://github.com/mapserver/mapserver/issues/3752 (scalable gap and pattern)
https://github.com/mapserver/mapserver/issues/33879 (initialgap)