戴勁松,楊明
(寧波市測繪和遙感技術研究院,浙江 寧波 315042)
地圖符號是地圖的語言單位,是可視化表達地理信息內容的基本工具,它本質上是用來表示實地物體與現象的特定圖解記號,由點、線和幾何圖形所組成,具備3個基本要素,即形狀、尺寸和顏色[1]。符號化是地圖繪制時現實地物抽象為符號的過程。符號化后的地物往往帶有部分地物屬性特征(如地物長度、形狀、面積等),這些特征既方便地圖使用者辨識地物,也會向地圖使用者傳達圖形要素信息。在互聯網技術尚未得到普及的年代,地圖符號樣式及類型沒有得到較好的統一,各地圖符號代表類型、意義不盡相同,但后續隨著互聯網技術的普及較好地解決了符號統一問題,而目前各平臺程序如何高效并精確描述地圖符號成為新的挑戰。
目前國內外GIS平臺在符號庫中設計符號的途徑主要可概括為4種[2]:
(1)文本編輯器設計法。它利用文本描述繪制的符號,其缺點是設計速度慢,且符號編寫的過程中容易產生語法錯誤,不能實時觀察設計的符號;
(2)系統提供的二次開發語言編程。某些地物符號由于地物本身結構復雜,或樣式獨特具備唯一性,不易采用文本編輯,因此需要借助開發語言完成描述;
(3)系統本身的圖形編輯功能。它將符號當作普通的圖形塊,追加符號碼等描述項后存儲到符號庫,隨后根據需要或應用,繪圖時調用符號庫中的圖形塊顯示在地圖上;
(4)系統提供的符號設計功能。使用者可將系統本身提供的基本符號與自定義符號(如點符號)進行某種組合、位移、放縮,隨后得到制圖輸出所需的復雜符號(如復雜線型和面狀填充符號),這也是目前較為流行的符號設計方式。
除符號設計方法外,地圖符號的組織格式也具備系列的發展研究。可根據地圖符號組織的數據格式的不同(即矢量數據或柵格數據),將地圖符號分為基于矢量數據的符號,基于柵格數據的符號和基于兩種混合數據的符號[3]。對應3種數據類型符號,已有許多研究陸續提出了組織方法,用以提高不同應用目的下符號的存儲與可視化效率[4~7],如:在符號繪制的過程中,借助圖形系統與圖像處理軟件繪制圖形塊[8,9];新興地理信息表達技術,如WebGIS技術用網絡數據交換格式(如JSON)表達并解析符號[10,11];三維地理信息技術也發展出對應的符號化方法[12,13]。
眾多類型的符號庫中,矢量符號庫用離散形式的坐標點對表示的點、線、面狀符號的有序集合[14],庫中符號占用內存小、冗余數據少、調用效率高,符合土地調查工作要求,根據上述各研究的發展,將其應用于土地調查是合理且具備潛力的。
常規建立矢量符號庫的方法有3種,分別是程序塊法、信息塊法與綜合法。程序塊法是通過系統提供的開發語言直接編寫圖形符號或符號識別語句;信息塊法則將符號和繪圖程序獨立,符號被離散為單純線劃;綜合法即為兩者的結合,根據不同的需求,將前兩種方法不同程度上協調起來。
本文以不產生冗余符號化數據為基本目標,將符號通過程序控制以圖面渲染的方式而非以矢量實體形式展現在圖面上,這樣既能保證數據規范制圖的要求,又避免了因為地物符號化而產生的冗余數據,從而大大節省數據存儲空間,提升數據檢索效率和圖面瀏覽速度。
在上述研究基礎之上,本研究按照土地調查數據制圖的相關標準,提取標準中所規定的符號圖元與參數,使用矢量圖元的方式制作要素符號,實現土地數據要素符號的標準化,形成完整的土地調查要素符號庫。設計并研發通用符號庫訪問接口,為不同的制圖軟件使用符號庫提供途徑,實現符號共享與符號庫的跨平臺應用。
土地調查中的各類地物按照類型可分為點狀地物、線狀地物、面狀地物和注記地物等,地物在數據庫中表達時,若采取類似面向對象方法,在符號層定義矢量圖元并予以表達,便可達到符號冗余小,結構簡潔的目標[15]。據此,本研究符號化的基本是對圖元的抽象定義,同時定義需滿足圖元的可組織性及對地物符號的全覆蓋性,目標需建立在對實體地物結構,各平臺符號化格式、表達機制,實際表達效果全面了解的基礎上。圖元定義完畢后,各類地物符號便可由地圖符號庫模板實現,模板記錄土地調查庫中地物實體和地物符號的基本屬性信息,包括地物名稱、地物實體類型(點、線、面、注記)及地物符號語句。符號庫模板完善后,對地物符號的表達會轉化為對地物已存儲的符號語句及完成這個語句相關圖元的表達。
根據土地調查要素符號標準,并參考各平臺符號定義格式與表達機制,測試比對實際符號化結果,歸納地物符號類如下:
(1)點狀地物:如民用機場、高程點等。
(2)簡單線狀地物:包括擬合復合線(如公路)、不擬合復合線(如境界線)和兩邊平行的雙線地物(如不依比例的管道運輸用地等)。
(3)兩點定位地物:需要兩個定位點來確定符號形狀及位置的地物。
(4)四點定位地物:需要三個點或四個點來確定形狀的地物。
(5)范圍面地物:除了四點定位面狀地物外的一般面狀地物及其內部填充,如各類土地利用面狀圖斑等。
(6)程序控制復雜地物:需要使用程序控制符號繪制的復雜地物,前5類地物無法描述的復雜面狀實體。
(7)文字類地物:有定位點的文字型地物,如圖面文字注記等。
地物符號類總結了圖面地物表達形式,同類符號具有一定的相似特征,據此抽象出矢量圖元,從結構上可作為符號構成的基本,從效果上可有效精簡符號形式。
本文將各類地物符號作為整體拆分,多次拆分后,各類符號拆分為單點、實線、圓、圓弧、實心三角形、實心圓、實心圓弧、基本文字八類,因此可將此八類看作是組成地物符號的最小模型單位,定義為基本圖元,通過圖元的組合表達各類地物符號。
確立符號表達機制后,若要將其與空間數據庫關聯,根據數據庫中的地類數據類別在圖面表達,需在符號庫鏈接時將數據庫、比例尺、實體要素、符號這幾者關聯,實現不同比例尺下的數據符號化效果[16]。為達到上述效果,符號庫模型在建立時,需將對應的數據庫的結構、屬性、地物編碼體系等內容寫入符號庫配置表中,程序在數據庫中可根據此類模型,關聯空間數據與地物符號,達到精確高效的符號化效果。
目前常用的GIS平臺,如ArcGIS、MapGIS等,調用符號庫繪制地物符號的規則不同。土地調查作業不局限在單一平臺,因此矢量土地調查符號庫還應實現跨平臺效果。
符號化分發步驟分為3步,第1步是初始化,即讀取定義符號化的模板(db文件),解析符號化語句,構建符號化指針;第2步是根據編碼獲取符號化指針;第3步是根據符號化指針和實體幾何屬性及擴展屬性分發符號,獲取符號打散結果,最終利用回調函數獲取擴展屬性及符號化效果。其中,第1步只需在符號化開啟時執行1次,第2步和第3步在每次進行實體分發依次進行。依照符號化分發步驟,設計并編寫通用符號庫接口。
根據土地調查要素符號標準,各平臺符號定義格式、表達機制與大量測試比對拆分作業,本研究將地物符號看作基本矢量圖元組合、嵌套的整體,即地物符號的主實體經多次拆分被分解為單點、實線、圓、圓弧、實心三角形、實心圓、實心圓弧、基本文字八大基本圖元[17]。各地物符號由符號庫模板記錄了實體符號間一一對應的基本屬性與符號語句,其中,主實體描述存儲于符號表,子實體描述存儲于符號輔助表,子實體與上級實體通過編碼關聯。
符號庫模板中,一個符號由一條或多條符號描述語句定義,一條語句是一個字符串,對應一種基本矢量圖元。單一符號可以包含多個語句,以圖1所示草地符號為例,符號主體可拆解為三條獨立的矢量線段,對于單條矢量線段,即單個實線圖元,語句通過定義實線起點、終點便定義了符號形狀:

圖1 符號庫模板中的草地符號
如圖1所示草地描述語句,橫線部分語句表述為:
2;0.15;-1.25,0;1.25,0
此語句代表一條線寬為0.15,以中點為原點,坐標從(-1.25,0)的起點至(1.25,0)的終點的線要素。
第二句語句表述為:
2;0.15;-0.5,1.3;-0.5,0
此語句代表一條線寬為0.15,以中點為原點,坐標從(-0.5,1.3)的起點至(-0.5,0)的終點的線要素。
第三句語句表述為:
2;0.15;0.5,1.3;0.5,0
此語句代表一條線寬為0.15,以中點為原點,坐標從(0.5,1.3)的起點至(0.5,0)的終點的線要素。
坐標圖解分析如圖2所示:

圖2 草地符號坐標圖解分析
為實現將數據庫-地物-符號三者一一對應,形成穩定的符號調用模型和機制,也為了使符號庫能夠適應于各種不同的數據庫結構和編碼體系,本項目將“符號庫模型”的概念引入符號庫建立中,使一個符號庫能夠根據此類模型自動掛接到符合的數據庫中,實現地物的正確識別和符號化。
成果符號庫中,除定義了各個地物的各個符號之外,還通過配置表格定義了對應數據庫的圖層、字段信息、地物編碼、顏色體系,建立了地物與符號間的一一對應關系。
圖層信息表:定義了該模板對應的空間數據庫中包含的要素類及其基本屬性。數據在進行符號化時通過此表可定位地物所在圖層(表1)。

圖層信息表 表1
字段定義表:定義了數據中一些與地物符號識別、地物符號相關的字段,如地物編碼所在字段、高程信息所在字段、角度信息所在字段等,而數據在符號化時,需根據這些字段進行相應地物的符號化(表2)。

字段定義表 表2
地物編碼配置表:定義了地物的代碼、所在圖層、顏色號等信息,此配置表作為最為重要的定義表,將模型中數據庫、地物和符號進行了一一對應,使數據在掛接符號庫時能正確將數據與符號對應上并正確符號化(表3)。

地物編碼配置表 表3

續表3
字體定義表:Textstle表定義了字體的樣式,通過這個表可以在符號化是自動根據定義的字體樣式符號化文字類符號(表4)。

字體定義表 表4
顏色定義表:表定義了符號顯示時的顏色號,可同時定義一種顏色的RGB和CMYK的色值(表5)。

顏色定義表 表5
跨平臺有兩層概念,一是跨軟件層次的平臺,如idata和ArcGIS為兩個平臺,但是它們可以共用一套符號化的定義和接口,使得符號定義一次,在各個軟件平臺通用;二是跨系統平臺,由于符號化使用C++語言編寫,編譯后可以在各大系統使用,如iData(Window平臺)與iDataMoblile(Android平臺),其他如Linux平臺一樣可以使用。
符號庫定義打散輸出的基礎圖元的接口,如基本的點、線、面、圓、圓弧等,使得各個平臺都能接收打散后的結果,其中接口都定義為虛函數,各個不同的軟件平臺需要進行實現,如ArcGIS圖面渲染時可以進行GDI+的繪制,導出DWG分發時可以生成點、線、面等實體[18,19]。借助于這種接口的設置,不同平臺不同的用途使用相同的符號化打散技術可以實現需求功能。
本文研發了ArcGIS平臺符號化插件驗證跨平臺符號化實現效果。ArcGIS平臺符號化插件用于在ArcGIS平臺加載、解析符號庫模板:插件通過解析符號描述語句,渲染數據庫地物,實現實時符號化。
使用示例數據庫,插件加載、解析符號庫效果如圖3所示:

圖3 ArcGIS平臺符號化效果示例
測試結果顯示,ArcGIS平臺符號化插件測試結果良好,可做到實時渲染任意加載的mdb數據,同時保證了地物符號化準確度與效率。
模型驅動的符號設計可以應用到國土調查中,矢量符號在多種GIS平臺與項目應用中均能表現出優秀的適應性,其本身也具備提高數據組織與利用效率的特點,在信息化的土地調查作業中,矢量符號可顯著提高數據表達的準確性、節省數據存儲空間及優化數據檢索速度。本文致力于集成高效化的矢量符號庫,它不同于傳統的程序塊與信息塊法,而是將所有地物符號抽象為基本矢量圖元或圖元組合,利用骨架線符號化渲染技術實時生成符號。
本文將矢量符號融入土地調查工作,既是土地調查工作對數據高效性的要求,也是矢量符號投入多元應用的試驗。雖然目前兩者適用性良好,矢量符號可以滿足調查作業的需求,但在具體應用中,發現其對復雜符號的適應性仍顯薄弱,這是由于其數據結構帶來的適應性問題,在未來的研究中,仍有進步的空間。可以預見的是,隨時代的發展,土地調查勢必會產生更多方位更多層次上的要求,符號化技術在應對這些可能出現的要求時也需保持不斷進步,做出新的突破。