使用c#开发mapserver之八labelObj

labelObj用来实现标注,可以在地图上显示数据中的某一个字段的字段值,标注用到的字段名字需要在layer对象中使用LABELITEM定义。Mapserverlabel也视为渲染,一种特殊的渲染文字渲染,它与style类似,不同的是style用来渲染要素的几何图形特征,label用来展示几何要素的某个字段的属性信息,二者处于同一级别,都必须包含在class对象之中使用。如下是一个包含labestyle对象的class示例

CLASS

      NAME "Cities"

      EXPRESSION "1"

      LABEL

        ANGLE 0.000000

        ANTIALIAS TRUE

        FONT "sans-italic"

        MAXSIZE 256

        MINSIZE 4

        SIZE 8

        TYPE TRUETYPE

        BUFFER 0

        COLOR 255 0 0

        FORCE FALSE

        MINDISTANCE -1

        MINFEATURESIZE -1

        OFFSET 0 0

        OUTLINECOLOR 255 255 255

        PARTIALS FALSE

        POSITION AUTO

              #MAXLENGTH 5

              WRAP " "

              ALIGN center

      END

      STYLE

        ANGLE 360

        COLOR 0 0 0

        SIZE 8

        SYMBOL 2

        WIDTH 1

      END

      TEMPLATE "ttt_query.html"

END

通过以上的Mapfile片段可以看出label对象与style对象同级,都包含在class之中。Label对象的属性非常丰富,这里也仅仅列出了一部分。Label对象的作用域与style对象一样,也是由class中的Expression来控制。上例中的EXPRESSION "1"含义就是该class只对classitem字段值为"1"的要素有效,因此该label对象只负责标注classitem字段属性值为"1"的要素,通过与class对象的配合,可以实现同一图层中不同类型的要素赋予不同的标注样式。

csharp_mapscript中使用labelobj对象也非常简单,有如下几行代码可以方便的获取以及使用labelobj:

//直接从classobj中获取

classObj pClassObj = new classObj(null);

labelObj pLabelObj = pClassObj.label;

 

//新定义labelobj

labelObj pLabelObj = new labelObj();

 

//设置各种参数

pLabelObj.angle = 1;

pLabelObj.autofollow = 0;

pLabelObj.buffer = 1;

 

Label对象的各种属性参数非常丰富,可以实现多种标注特效,下面介绍一下label中几个比较常用参数的含义:

ALIGN [left|center|right] 5.4版本中新增。控制多行标注文本的对齐方式(如何产生多行文本标注参见WARP),要注意的是目前对齐运算的精度还不高,效果可能很差。

WRAP [character] 实现多行标注,该参数定义一个换行字符,mapserver将该字符视为换行符。这样会生成多行文本标注。还可以与MAXLENGTH参数配合使用,可以在MAXLENGTH指定数量的字符之后才执行换行操作。

例如:WRAP ‘a’。表示在标注中遇到字母‘a’,就会将‘a’视为一个换行符,标注在‘a’处打断产生一个新行。

ANGLE [double|auto|follow|attribute] 实现旋转标注,该参数定义绘制标注时使用的角度,以度为单位。

l         AUTO 允许MapServer自动计算旋转角度。只对LINE图层有效。

l         FOLLOW 4.10版本中新增,允许MapServer计算要素的线性特征,并用沿该线性特征来绘制标签。例如:标注一条弯曲的道路时,设置了该参数标注就会沿道路的走向分布。

l         [Attribute] 5.0版本中新增。设置属性表中的一个字段,其字段值作为标注的角度。属性字段名必须包含在中括号[]中。例如:如果你的shapefiledbf表有一个字段名为“MYANGLE”,其字段值是每一个要素的角度值,那么你的LABEL对象可以包含:

LABEL

COLOR 150 150 150

OUTLINECOLOR 255 255 255

FONT sans

TYPE truetype

SIZE 6

ANGLE [MYANGLE]

POSITION AUTO

PARTIALS FALSE

END

ANTIALIAS [true|false] 设置标注文本的抗锯齿。

COLOR [r] [g] [b] | [attribute] 设置标注的颜色。

FORCE [true|false] 强制显示该CLASS中的标注,忽略碰撞检测,缺省值是false

TYPE [bitmap|truetype] 标注使用的字体类型。bitmap字体的绘制速度最快,然后是TrueType字体。TrueType字体可支持缩放,用的比较多。如果你使用了TrueType字体,一定要设置FONT参数。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值