陳雅慧
(中國北京 100045 中國地震臺網(wǎng)中心)
地震系統(tǒng)的核心技術(shù)以及軟硬件設(shè)備要確??煽?、可信、可控。因此,地震應(yīng)急業(yè)務(wù)系統(tǒng)有從商業(yè)軟件向開源軟件轉(zhuǎn)換的迫切需求,制作各類專題地圖是轉(zhuǎn)換的直接體現(xiàn)。
在地震系統(tǒng)日常業(yè)務(wù)中,專題圖多采用美國ESRI公司旗下的ArcGIS軟件進行制作,并積累了一套地震數(shù)據(jù)特有符號庫,該符號庫能夠增強地圖可讀性,豐富地圖的可視化表達,進而傳遞出災(zāi)區(qū)基本情況和災(zāi)情信息,在地震災(zāi)害應(yīng)急指揮及救援管理中發(fā)揮著重要作用。但商業(yè)軟件昂貴,且難以獲得開發(fā)版權(quán),制圖軟件開源化發(fā)展成為必然。
地圖符號庫轉(zhuǎn)換成為跨平臺應(yīng)用的關(guān)鍵問題。為了符合地圖制圖規(guī)范,減少符號重復設(shè)計等工作,跨平臺的地圖符號共享成為研究熱點(陶陶等,2007)。目前,地圖符號共享的研究主要分為2類,一類是研究不同數(shù)據(jù)格式之間的符號共享(陳夢琳等,2015;王志強等,2020),另一類是研究統(tǒng)一標準的符號共享,包括通用圖形標準(吳明光等,2011;陳長林,2018)、通用地圖符號(王本林等,2018)、統(tǒng)一行業(yè)標準(Liu et al,2016)等,還有對符號共享的可用性評價(廖嫣然等,2022)。
QGIS是基于Python和C++語言研發(fā)的開源制圖軟件。其用戶界面友好,支持多類型數(shù)據(jù)加載,符號編輯功能豐富,在制圖方面更具優(yōu)勢。而且,QGIS支持插件,可以通過編譯插件擴展軟件的制圖功能。本文將符號讀取、屬性轉(zhuǎn)換、符號輸出功能集成在QGIS插件內(nèi),成功實現(xiàn)ArcGIS符號庫點符號向QGIS的遷移,且遷移前后點符號的制圖功能和效果完全相同。
運用QGIS技術(shù)創(chuàng)建的點符號轉(zhuǎn)換插件主要用于數(shù)據(jù)處理和分析,且用戶界面只需要文件輸入和輸出部件。
QGIS插件開發(fā)主要有2種方式,一種是手動創(chuàng)建,另一種是自動創(chuàng)建。自動創(chuàng)建是利用Plugin Builder生成固定的插件模板,通過對模板文件的編譯實現(xiàn)相應(yīng)功能,比手動創(chuàng)建簡便。此外,自動創(chuàng)建的插件模板有3個,分別為Tool button with dialog(帶有對話框的工具按鈕)、Tool button with dock widge(t帶部件的工具按鈕),以及Processing Provide(r處理框架)。與前2個模板相比,Processing Provider模板能夠生成固定插件界面,簡化設(shè)計界面流程。對比發(fā)現(xiàn),使用Processing Provider自動創(chuàng)建方法能夠更簡單快速地構(gòu)建插件,且插件既能夠用于數(shù)據(jù)批處理,也能夠被Python控制臺調(diào)用。
同一類型的符號在ArcGIS和QGIS平臺中使用的函數(shù)庫不同,基于QGIS技術(shù)設(shè)計的點符號轉(zhuǎn)換插件可以使兩平臺同類型符號匹配。本插件在QGIS平臺生成的新符號與ArcGIS中的同類型符號具有相同的功能、屬性和展示效果。
程序總體流程(圖1)為:①輸入ArcGIS“.style”符號庫文件,對文件中的全部符號進行遍歷循環(huán),提取各類數(shù)據(jù);②對數(shù)據(jù)進行解碼,獲得符號對象的多種屬性信息和guid值(全局唯一標識符,用于識別每個符號的類型,在QGIS創(chuàng)建符號時能夠通過判斷符號類型添加對應(yīng)的符號屬性);③將解碼得到的各種屬性與QGIS中的相同屬性建立一一對應(yīng)關(guān)系,實現(xiàn)兩平臺符號屬性的轉(zhuǎn)換;④對多層符號進行符號層疊加,并將全部符號統(tǒng)一輸出為XML文件。根據(jù)實際需求,本次只完成點符號中的簡單標記符號和字符標記符號2類符號的轉(zhuǎn)換。
圖1 QGIS點符號轉(zhuǎn)換程序流程Fig.1 Flowchart of QGIS point symbol conversion program
調(diào)用Access數(shù)據(jù)庫軟件打開“.style”符號庫文件,查看每個符號屬性表,其中包括ID、Name、Category、Tags和Object,Tags中記錄了符號層數(shù)(多圖層)、色彩模式(rgb、hsv等)、顏色值(藍色、白色、綠色等)、符號類別(字符、簡單)和字體(ESRI Default Marker等)等屬性。參考這些標簽,在符號屬性轉(zhuǎn)換模塊中定義相應(yīng)的轉(zhuǎn)換函數(shù)。
通過對Object進行后臺解碼,獲取每個符號的二進制數(shù)據(jù)(BLOB),這些數(shù)據(jù)包含了Tags中涉及的全部符號屬性信息,這些不同類型的屬性信息(int、string、double、uchar等類型)需要通過創(chuàng)建對應(yīng)的讀取方法獲得其屬性值。調(diào)用這些方法可以得到簡單標記符號(Simple Marker Symbol)的符號層數(shù)、點類型Style、符號大小Size、X和Y的偏移量Offset和輪廓線Outline等屬性;得到字符標記符號(Character Marker Symbol)的符號層數(shù)、Unicode值、旋轉(zhuǎn)角度Angle等屬性。
在符號的二進制數(shù)據(jù)中還能夠提取guid值。在ArcGIS中每類符號具有唯一guid值,如簡單標記符號為“7914e5fe-c892-11d0-8bb6-080009ee4e41”,若待轉(zhuǎn)換符號的guid值與之相匹配,則判斷該符號為簡單標記符號,進而按簡單標記符號的創(chuàng)建方法添加符號屬性。這種方法能夠確保符號類型的唯一性,便于快速識別并創(chuàng)建符號。
在符號屬性轉(zhuǎn)換模塊中,本插件定義了多種轉(zhuǎn)換函數(shù),這些函數(shù)通過調(diào)用QGIS提供的各種類庫和函數(shù)接口,將ArcGIS符號屬性轉(zhuǎn)換為QGIS中相同的符號屬性,實現(xiàn)兩軟件平臺符號屬性的統(tǒng)一。
2.2.1 簡單標記符號。ArcGIS中的Simple Marker Symbol簡單標記符號類型對應(yīng)QGIS中的Simple Marker類型。簡單標記符號的屬性參數(shù)有Color、Style、Size、X Offset、Y Offset、Outline Color和Outline Size。在兩平臺中,有些屬性參數(shù)能夠直接進行關(guān)聯(lián),關(guān)聯(lián)方法是,導入QGIS中的core、gui等核心包和模塊,調(diào)用相應(yīng)方法給參數(shù)賦值。如:代碼(a)為創(chuàng)建參數(shù)點類型(Style)轉(zhuǎn)換方法,其中ArcGIS中的“X”形狀對應(yīng)QGIS中的“Cross2”形狀。有些屬性參數(shù)轉(zhuǎn)換需要通過數(shù)學運算來實現(xiàn),如:代碼(b)為顏色轉(zhuǎn)換,QGIS軟件中只有HSV和RGB2種色彩模式,因此對ArcGIS中的部分以CMYK顯示顏色的點符號來說,需要考慮不同色彩模式的成色原理,實現(xiàn)參數(shù)Color的轉(zhuǎn)換。
代碼(a):
2.2.2 字符標記符號。ArcGIS中的Character Marker Symbol字符標記符號類型對應(yīng)QGIS中的Font Marker類型。字符標記符號的屬性參數(shù)有Font、Unicode、Size、Angle、Color和Offset。與簡單標記符號的轉(zhuǎn)換類似,除了要轉(zhuǎn)換能夠直接關(guān)聯(lián)的屬性參數(shù)外,還需要運用數(shù)學運算完成符號角度參數(shù)的轉(zhuǎn)換。在ArcGIS中,隨著角度數(shù)值的增大,符號呈逆時針轉(zhuǎn)動,而在QGIS中則相反,角度數(shù)值增加,符號順時針轉(zhuǎn)動。由此通過數(shù)學運算中的角度換算,定義了角度轉(zhuǎn)換函數(shù),用360°減去ArcGIS中的符號角度值則為QGIS中的符號角度值。這些數(shù)學運算實現(xiàn)了兩平臺符號角度的一致性。
符號創(chuàng)建包括單層符號和多層符號,本插件定義了符號(層)創(chuàng)建函數(shù),通過調(diào)用符號屬性轉(zhuǎn)換模塊中的屬性轉(zhuǎn)換方法,為符號的每一層添加轉(zhuǎn)換后的屬性參數(shù),調(diào)用qgis.core核心包中的QgsSimpleMarkerSymbolLayer和QgsFontMarkerSymbolLayer方法創(chuàng)建對應(yīng)的2類點符號(層)。
此外,定義符號創(chuàng)建函數(shù)對符號的層數(shù)進行判斷,單層符號直接創(chuàng)建,多層符號疊加后創(chuàng)建。點符號轉(zhuǎn)換插件的輸出結(jié)果為“.xml”格式文件,通過調(diào)用QgsStyle.exportXml方法將新創(chuàng)建的全部點符號打包輸出為XML格式符號庫。轉(zhuǎn)換后的符號庫能夠在QGIS軟件的樣式管理器中直接導入使用。
2.4.1 插件激活。在QGIS的插件管理器中識別并啟用已經(jīng)編譯的點符號轉(zhuǎn)換插件“Marker Symbol”。插件置于Processing ToolBox菜單欄,激活后雙擊運行。
2.4.2 插件調(diào)試。插件初次運行程序經(jīng)常報錯,需不斷調(diào)試并反復修改。使用插件重載器插件(Plugin Reloader),可對自定義插件執(zhí)行重載、加載和卸載的指令,無需重啟QGIS軟件即可實現(xiàn)自定義插件的修改和測試。
以目前地震應(yīng)急專題圖系統(tǒng)在用的“ArcGIS災(zāi)情信息標繪符號庫”為例,運行點符號轉(zhuǎn)換插件進行符號轉(zhuǎn)換。共讀取符號192個,其中點符號141個,由插件運行日志中記錄的符號轉(zhuǎn)換進度,141個點符號按符號ID順序依次讀取、轉(zhuǎn)換、輸出,用時小于3 s。與人工制作符號相對比,運用QGIS插件技術(shù)縮短了符號轉(zhuǎn)換時間,實現(xiàn)了地圖符號從ArcGIS向QGIS的快速批量遷移。將插件運行后生成的.xml文件導入QGIS插件管理器,導入結(jié)果見圖2。
圖2 點符號轉(zhuǎn)換結(jié)果Fig.2 Result of point symbol conversion
在符號外觀方面,與原ArcGIS符號庫(圖3)相比,127個點符號完全轉(zhuǎn)換成功,14個符號在顏色、形狀和大小上也完成轉(zhuǎn)換,但仍有少量符號層偏移現(xiàn)象,如“中型水庫”符號,需人工調(diào)整。存在符號層偏移的原因可能有:①ArcGIS與QGIS軟件的符號單位不一致,如QGIS支持用像素為單位設(shè)置符號尺寸,而ArcGIS用點,二者之間的轉(zhuǎn)換關(guān)系需進一步研究;②在編寫符號轉(zhuǎn)換插件過程中,算法參數(shù)不適用,需根據(jù)實際情況調(diào)整。整體來說,本次符號外觀轉(zhuǎn)換成功率大于90%。此外,QGIS符號的顏色渲染和美觀度優(yōu)于ArcGIS,符號整體效果更簡潔清晰。
圖3 原ArcGIS符號庫Fig.3 Original ArcGIS symbol library
在符號功能方面,ArcGIS中的符號為矢量格式,能夠根據(jù)圖幅比例調(diào)整符號大小,并且能夠更改符號顏色。經(jīng)插件轉(zhuǎn)換后的QGIS點符號同樣支持基礎(chǔ)的屬性修改功能,包括顏色、透明度、大小、偏移量、旋轉(zhuǎn)角度等參數(shù)設(shè)置,證實了用QGIS插件技術(shù)完成點符號轉(zhuǎn)換能夠達到平臺間符號共享的目的。
“災(zāi)情信息標繪符號庫”QGIS轉(zhuǎn)換版已在地震應(yīng)急日常業(yè)務(wù)工作中得到應(yīng)用,如震前準備圖件制作、專題圖模板的快速產(chǎn)出制作等。最新部署的地震應(yīng)急快速評估與協(xié)同系統(tǒng)配置了QGIS版本的多個專題圖模板,其使用的點狀地圖符號均由本點符號轉(zhuǎn)換插件“Marker Symbol”生成。以2022年9月5日四川瀘定MS6.8地震為例,系統(tǒng)自動產(chǎn)出A3、A4幅面震后第一時段專題圖共14張,文中繪出地震快速評估影響范圍圖,見圖4中右側(cè)圖件,左圖為ArcGIS產(chǎn)出圖件,對比可見,QGIS產(chǎn)出圖件符號顏色顯示更均勻,對比度柔和,各要素間無遮蓋,整體成圖效果簡潔、清晰。
圖4 評估系統(tǒng)產(chǎn)出的四川瀘定MS 6.8地震影響范圍專題圖Fig.4 Thematic maps of the influence area of the Luding MS 6.8 earthquake in Sichuan from assessment system
QGIS插件技術(shù)在點狀地圖符號轉(zhuǎn)換中的應(yīng)用,證明基于QGIS插件技術(shù)能夠提高符號轉(zhuǎn)換效率,減少重復工作,實現(xiàn)快速批量轉(zhuǎn)換,且符號轉(zhuǎn)換成功率較高。經(jīng)插件轉(zhuǎn)換后的點狀地圖符號具有以下優(yōu)勢:①符號分辨率高、圖案清晰;②符號形狀標準、大小可調(diào);③符號顏色鮮明、色彩可換;④符號信息齊全、屬性可更改;⑤符號功能完備,專題圖件要素完整、表達精確;⑥符號適用于不同比例尺、不同地圖幅面的專題圖制作;⑦符號制圖效果與在ArcGIS軟件中相同,甚至優(yōu)于ArcGIS,達到直接應(yīng)用的標準。由此可見,QGIS插件技術(shù)具有較強的可操作性,是ArcGIS平臺向QGIS平臺轉(zhuǎn)換的重要工具,不但可以實現(xiàn)不同平臺間的符號共享,還可在其他行業(yè)和領(lǐng)域中實現(xiàn)更廣泛的應(yīng)用。
然而,采用QGIS插件技術(shù)轉(zhuǎn)換后的部分符號會出現(xiàn)符號層偏移現(xiàn)象,可能與兩平臺符號單位不同有關(guān)。此外,特殊字體轉(zhuǎn)換差異可能導致符號轉(zhuǎn)換錯誤。以上問題仍需進一步研究。