地图中的标签(Label),实际上指的是传统地图制图学中的地图注记(Annotation)。标签是地图上的标注和各种文字说明,是地图的基本构成要素之一。和地图上其他符号一样,标签也是一种地图符号。
标签的设计包括标签内容、字体、字号、颜色、位置等,好的设计能使地图更整洁、美观、重点突出,使读者可以更快捷地识别出地理现象的分布规律。
在QGIS中,整洁美观的标签离不开表达式与标签设计的深度结合,表达式可以从标签内容、标签字体、字号、颜色、位置、方向、文字间隔、文字轮廓、背景、重叠的处理和牵引线等方面参与标签的设计,为标签样式设置提供更大的灵活性。
标签内容
标签设计首先要解决内容问题,即要在地图上显示什么文字。默认情况下,QGIS采用“单一标签”模式为地图添加标签,标签取值来源于图层属性表中的某个字段。点击【值】右侧的下拉按钮,可以看到当前图层对应的所有属性字段,选择任意字段,其内容就会以默认样式显示在地图上。以2020年地震数据为例,当选择地震发生地(LOCATION_NAME)字段作为标签内容时,默认样式如下图:
在专题地图中,需要重点突出专题内容,单一字段标签很难满足丰富性的需求,需要组合多个字段构建标签内容。例如,在地图上直观地标注地震发生的地点、时间、等级,如下图效果:
要达到上图效果,首先观察地震数据属性表内容:
我们需要三个方面的信息:地震发生地点、地震等级(EQ_PRIMARY)和地震时间。
发生地点从属性字段LOCATION_NAME提取。
地震等级从属性字段EQ_PRIMARY提取。
时间的提取稍微复杂一些,从属性表可以看到, YEAR、MONTH、DAY、HOUR、MINUTE、SECOND六个字段对应地震发生的年、月、日、时、分和秒。在本例中,在地图上展示时间精度达到“日”即可,所以需要用表达式将YEAR、MONTH、DAY三个字段串接起来。在《QGIS表达式中的函数》中,曾经剖析过串接函数concat,它的作用是将多个字符串连接成一个字符串。本文将使用另一个字符串操作符“||”完成字符串合并,“||”操作符的功能与concat函数类似,区别在于:“||”只能连接两个字符串,而concat函数对参数的个数没有限制。例如,实现短横线连接年、月、日字段,两个函数的实现分别是:
concat( "YEAR" ,'-' , "MONTH" ,'-'