地图符号(Symbol)是地图的语言,是对地理要素空间形状的化简、概括和抽象。QGIS作为一个通用的、国际化GIS软件,自带了多样化的预定义符号库,相关的开源社区也贡献了很多地图专家制作的符号,但是仍然难以满足所有用户个性化的地图符号需求,特别是国内地图符号标准与国际上存在差异,而国内参与开源社区的积极性并不高,导致国内常见的地图符号,并没有加入到QGIS默认的符号库中,也无法从其他渠道获取,需要自己动手进行自定义符号制作。例如高德地图中的铁路线型,QGIS默认符号库中并未提供:
本文以OpenStreetMap的城市地图为例,分享QGIS提取OpenStreetMap铁路数据和自定义制作高德地图铁路线状符号的过程。
示范数据下载地址:
链接: https://pan.baidu.com/s/1z5b5fR42yZQvwYs8-tyWjw
提取码: v5q1
01 数据预处理
打开QGIS,点击图层管理工具栏的【添加矢量图层】按钮,找到下载的数据,将points、lines、polygons三个图层添加到地图窗口:
points、lines和polygons分别对应从OpenStreetMap下载的点、线、面三个要素集合,在图层面板将points和polygons设置为不显示,这两个图层作为背景数据,暂时先不显示到地图窗口。
右键点击lines图层->【打开属性表】,可以看到该图层用“railway”字段表示要素是否为铁路,属性取值如下:
为空:表示该线要素不是铁路;
construction:在建铁路;
rail:建成铁路;
subway:建成地铁。
根据上述对属性数据的分析,对lines图层使用【基于规则】渲染,构建表达式提取铁路要素:
选中lines图层,点击 按钮,打开图层样式面板,点击下拉框选择【基于规则】,点击下方的 按钮,为图层添加规则:
默认情况下,新建的规则没有过滤任何要素,双击规则,进入【编辑规则】界面,【标注】文本框中填写“铁路”,点击 按钮,输入下面表达式过滤出铁路要素:
"railway" = 'rail'
至此数据预处理工作完成,得到铁路线要素如下:
02 制作铁路线符号
接下来我们开始制作自定义铁路符号。
在【编辑规则】面板的下方嵌入了符号选择器组件(Symbol selector widget),通过这个界面可以为该规则选择预定义符号库中的符号,或者根据需要自定义新的线状符号:
在QGIS中,高德地图中铁路符号的效果需要2个符号图层(symbol layer)组合而成:深灰色的符号图层作为底色,上面叠加白色的线段。因此,先点击 按钮增加一个符号图层:
设置两个符号图层均为“简单线条”类型,选中第二个“简单线条”符号图层设置铁路底色,属性如下:
颜色:用颜色拾取工具从高德地图的铁路线灰色背景拾取RGB值(191, 196, 205),将该颜色复制到QGIS中;
描边宽度:1mm;
端点样式:扁平。
选中第一个“简单线条”符号图层以设置白色线段,属性如下:
颜色:白色;
描边宽度:0.6mm(比底色宽度稍微小一点,留出深灰色边线);
端点样式:扁平;
使用自定义横划图案:勾选“使用自定义横划图案”,并点击下方的短横线按钮,在弹出的“自定义横划图案”面板中,设置短横为1.5mm、空格为3mm。这个步骤是铁路线状符号效果的关键。
此时可以看到,铁路线型符号的变化已经实时反映到地图窗口中,为了能够重复利用,可以将设置好的符号保存到系统符号库中:
选中符号图层中的“线条”->【保存符号…】,在弹出的对话框中输入符号的名称和标签,点击【save】即可。
当再次需要使用这个线状符号时,只需要在预定义符号库找到并选中该符号就能应用到图层符号化表达中。
将lines和polygons图层的其他基础要素如水系、绿地等提取出来作为背景,最终的铁路线状符号效果如下:
版权声明
本文欢迎转载,转载时请注明出处。