APP下载

QGIS插件技术在点状地图符号转换中的应用

2023-10-19陈雅慧

地震地磁观测与研究 2023年3期
关键词:插件符号软件

陈雅慧

(中国北京 100045 中国地震台网中心)

0 引言

地震系统的核心技术以及软硬件设备要确保可靠、可信、可控。因此,地震应急业务系统有从商业软件向开源软件转换的迫切需求,制作各类专题地图是转换的直接体现。

在地震系统日常业务中,专题图多采用美国ESRI公司旗下的ArcGIS软件进行制作,并积累了一套地震数据特有符号库,该符号库能够增强地图可读性,丰富地图的可视化表达,进而传递出灾区基本情况和灾情信息,在地震灾害应急指挥及救援管理中发挥着重要作用。但商业软件昂贵,且难以获得开发版权,制图软件开源化发展成为必然。

地图符号库转换成为跨平台应用的关键问题。为了符合地图制图规范,减少符号重复设计等工作,跨平台的地图符号共享成为研究热点(陶陶等,2007)。目前,地图符号共享的研究主要分为2类,一类是研究不同数据格式之间的符号共享(陈梦琳等,2015;王志强等,2020),另一类是研究统一标准的符号共享,包括通用图形标准(吴明光等,2011;陈长林,2018)、通用地图符号(王本林等,2018)、统一行业标准(Liu et al,2016)等,还有对符号共享的可用性评价(廖嫣然等,2022)。

QGIS是基于Python和C++语言研发的开源制图软件。其用户界面友好,支持多类型数据加载,符号编辑功能丰富,在制图方面更具优势。而且,QGIS支持插件,可以通过编译插件扩展软件的制图功能。本文将符号读取、属性转换、符号输出功能集成在QGIS插件内,成功实现ArcGIS符号库点符号向QGIS的迁移,且迁移前后点符号的制图功能和效果完全相同。

1 插件构建方法

运用QGIS技术创建的点符号转换插件主要用于数据处理和分析,且用户界面只需要文件输入和输出部件。

QGIS插件开发主要有2种方式,一种是手动创建,另一种是自动创建。自动创建是利用Plugin Builder生成固定的插件模板,通过对模板文件的编译实现相应功能,比手动创建简便。此外,自动创建的插件模板有3个,分别为Tool button with dialog(带有对话框的工具按钮)、Tool button with dock widge(t带部件的工具按钮),以及Processing Provide(r处理框架)。与前2个模板相比,Processing Provider模板能够生成固定插件界面,简化设计界面流程。对比发现,使用Processing Provider自动创建方法能够更简单快速地构建插件,且插件既能够用于数据批处理,也能够被Python控制台调用。

2 点符号转换功能设计

同一类型的符号在ArcGIS和QGIS平台中使用的函数库不同,基于QGIS技术设计的点符号转换插件可以使两平台同类型符号匹配。本插件在QGIS平台生成的新符号与ArcGIS中的同类型符号具有相同的功能、属性和展示效果。

程序总体流程(图1)为:①输入ArcGIS“.style”符号库文件,对文件中的全部符号进行遍历循环,提取各类数据;②对数据进行解码,获得符号对象的多种属性信息和guid值(全局唯一标识符,用于识别每个符号的类型,在QGIS创建符号时能够通过判断符号类型添加对应的符号属性);③将解码得到的各种属性与QGIS中的相同属性建立一一对应关系,实现两平台符号属性的转换;④对多层符号进行符号层叠加,并将全部符号统一输出为XML文件。根据实际需求,本次只完成点符号中的简单标记符号和字符标记符号2类符号的转换。

图1 QGIS点符号转换程序流程Fig.1 Flowchart of QGIS point symbol conversion program

2.1 符号读取

调用Access数据库软件打开“.style”符号库文件,查看每个符号属性表,其中包括ID、Name、Category、Tags和Object,Tags中记录了符号层数(多图层)、色彩模式(rgb、hsv等)、颜色值(蓝色、白色、绿色等)、符号类别(字符、简单)和字体(ESRI Default Marker等)等属性。参考这些标签,在符号属性转换模块中定义相应的转换函数。

通过对Object进行后台解码,获取每个符号的二进制数据(BLOB),这些数据包含了Tags中涉及的全部符号属性信息,这些不同类型的属性信息(int、string、double、uchar等类型)需要通过创建对应的读取方法获得其属性值。调用这些方法可以得到简单标记符号(Simple Marker Symbol)的符号层数、点类型Style、符号大小Size、X和Y的偏移量Offset和轮廓线Outline等属性;得到字符标记符号(Character Marker Symbol)的符号层数、Unicode值、旋转角度Angle等属性。

在符号的二进制数据中还能够提取guid值。在ArcGIS中每类符号具有唯一guid值,如简单标记符号为“7914e5fe-c892-11d0-8bb6-080009ee4e41”,若待转换符号的guid值与之相匹配,则判断该符号为简单标记符号,进而按简单标记符号的创建方法添加符号属性。这种方法能够确保符号类型的唯一性,便于快速识别并创建符号。

2.2 符号属性转换

在符号属性转换模块中,本插件定义了多种转换函数,这些函数通过调用QGIS提供的各种类库和函数接口,将ArcGIS符号属性转换为QGIS中相同的符号属性,实现两软件平台符号属性的统一。

2.2.1 简单标记符号。ArcGIS中的Simple Marker Symbol简单标记符号类型对应QGIS中的Simple Marker类型。简单标记符号的属性参数有Color、Style、Size、X Offset、Y Offset、Outline Color和Outline Size。在两平台中,有些属性参数能够直接进行关联,关联方法是,导入QGIS中的core、gui等核心包和模块,调用相应方法给参数赋值。如:代码(a)为创建参数点类型(Style)转换方法,其中ArcGIS中的“X”形状对应QGIS中的“Cross2”形状。有些属性参数转换需要通过数学运算来实现,如:代码(b)为颜色转换,QGIS软件中只有HSV和RGB2种色彩模式,因此对ArcGIS中的部分以CMYK显示颜色的点符号来说,需要考虑不同色彩模式的成色原理,实现参数Color的转换。

代码(a):

2.2.2 字符标记符号。ArcGIS中的Character Marker Symbol字符标记符号类型对应QGIS中的Font Marker类型。字符标记符号的属性参数有Font、Unicode、Size、Angle、Color和Offset。与简单标记符号的转换类似,除了要转换能够直接关联的属性参数外,还需要运用数学运算完成符号角度参数的转换。在ArcGIS中,随着角度数值的增大,符号呈逆时针转动,而在QGIS中则相反,角度数值增加,符号顺时针转动。由此通过数学运算中的角度换算,定义了角度转换函数,用360°减去ArcGIS中的符号角度值则为QGIS中的符号角度值。这些数学运算实现了两平台符号角度的一致性。

2.3 符号创建及输出

符号创建包括单层符号和多层符号,本插件定义了符号(层)创建函数,通过调用符号属性转换模块中的属性转换方法,为符号的每一层添加转换后的属性参数,调用qgis.core核心包中的QgsSimpleMarkerSymbolLayer和QgsFontMarkerSymbolLayer方法创建对应的2类点符号(层)。

此外,定义符号创建函数对符号的层数进行判断,单层符号直接创建,多层符号叠加后创建。点符号转换插件的输出结果为“.xml”格式文件,通过调用QgsStyle.exportXml方法将新创建的全部点符号打包输出为XML格式符号库。转换后的符号库能够在QGIS软件的样式管理器中直接导入使用。

2.4 运行调试

2.4.1 插件激活。在QGIS的插件管理器中识别并启用已经编译的点符号转换插件“Marker Symbol”。插件置于Processing ToolBox菜单栏,激活后双击运行。

2.4.2 插件调试。插件初次运行程序经常报错,需不断调试并反复修改。使用插件重载器插件(Plugin Reloader),可对自定义插件执行重载、加载和卸载的指令,无需重启QGIS软件即可实现自定义插件的修改和测试。

3 符号转换结果对比

以目前地震应急专题图系统在用的“ArcGIS灾情信息标绘符号库”为例,运行点符号转换插件进行符号转换。共读取符号192个,其中点符号141个,由插件运行日志中记录的符号转换进度,141个点符号按符号ID顺序依次读取、转换、输出,用时小于3 s。与人工制作符号相对比,运用QGIS插件技术缩短了符号转换时间,实现了地图符号从ArcGIS向QGIS的快速批量迁移。将插件运行后生成的.xml文件导入QGIS插件管理器,导入结果见图2。

图2 点符号转换结果Fig.2 Result of point symbol conversion

在符号外观方面,与原ArcGIS符号库(图3)相比,127个点符号完全转换成功,14个符号在颜色、形状和大小上也完成转换,但仍有少量符号层偏移现象,如“中型水库”符号,需人工调整。存在符号层偏移的原因可能有:①ArcGIS与QGIS软件的符号单位不一致,如QGIS支持用像素为单位设置符号尺寸,而ArcGIS用点,二者之间的转换关系需进一步研究;②在编写符号转换插件过程中,算法参数不适用,需根据实际情况调整。整体来说,本次符号外观转换成功率大于90%。此外,QGIS符号的颜色渲染和美观度优于ArcGIS,符号整体效果更简洁清晰。

图3 原ArcGIS符号库Fig.3 Original ArcGIS symbol library

在符号功能方面,ArcGIS中的符号为矢量格式,能够根据图幅比例调整符号大小,并且能够更改符号颜色。经插件转换后的QGIS点符号同样支持基础的属性修改功能,包括颜色、透明度、大小、偏移量、旋转角度等参数设置,证实了用QGIS插件技术完成点符号转换能够达到平台间符号共享的目的。

4 成果应用

“灾情信息标绘符号库”QGIS转换版已在地震应急日常业务工作中得到应用,如震前准备图件制作、专题图模板的快速产出制作等。最新部署的地震应急快速评估与协同系统配置了QGIS版本的多个专题图模板,其使用的点状地图符号均由本点符号转换插件“Marker Symbol”生成。以2022年9月5日四川泸定MS6.8地震为例,系统自动产出A3、A4幅面震后第一时段专题图共14张,文中绘出地震快速评估影响范围图,见图4中右侧图件,左图为ArcGIS产出图件,对比可见,QGIS产出图件符号颜色显示更均匀,对比度柔和,各要素间无遮盖,整体成图效果简洁、清晰。

图4 评估系统产出的四川泸定MS 6.8地震影响范围专题图Fig.4 Thematic maps of the influence area of the Luding MS 6.8 earthquake in Sichuan from assessment system

5 结束语

QGIS插件技术在点状地图符号转换中的应用,证明基于QGIS插件技术能够提高符号转换效率,减少重复工作,实现快速批量转换,且符号转换成功率较高。经插件转换后的点状地图符号具有以下优势:①符号分辨率高、图案清晰;②符号形状标准、大小可调;③符号颜色鲜明、色彩可换;④符号信息齐全、属性可更改;⑤符号功能完备,专题图件要素完整、表达精确;⑥符号适用于不同比例尺、不同地图幅面的专题图制作;⑦符号制图效果与在ArcGIS软件中相同,甚至优于ArcGIS,达到直接应用的标准。由此可见,QGIS插件技术具有较强的可操作性,是ArcGIS平台向QGIS平台转换的重要工具,不但可以实现不同平台间的符号共享,还可在其他行业和领域中实现更广泛的应用。

然而,采用QGIS插件技术转换后的部分符号会出现符号层偏移现象,可能与两平台符号单位不同有关。此外,特殊字体转换差异可能导致符号转换错误。以上问题仍需进一步研究。

猜你喜欢

插件符号软件
禅宗软件
学符号,比多少
自编插件完善App Inventor与乐高机器人通信
“+”“-”符号的由来
软件对对碰
变符号
基于jQUerY的自定义插件开发
MapWindowGIS插件机制及应用
图的有效符号边控制数
基于Revit MEP的插件制作探讨