李如山,杜 雷,高孝敏,垢元培,于孝民,王佳宏
(1.河北省地礦局第二地質大隊,河北 唐山 063000)
(2.唐山中地地質工程公司,河北 唐山 063000)
長期以來,不管是老舊地質圖的電子化還是新成果地質圖的編繪,圖例的修編工作是地質圖一項重要的環(huán)節(jié);現階段,隨著計算機技術的快速發(fā)展,圖例的修編制作手段逐漸采用計算機輔助人工識別編繪,使用的繪圖軟件Surfer、MapGIS、AutoCAD 等手工繪圖功能強大,但圖例制作工作要求細致且繁瑣,易出現人為遺漏或錯誤。近年部分研究者對MapGIS、AutoCAD、ArcGIS 等軟件進行了圖例制作功能的二次開發(fā)及應用,其繪制圖例也較為繁瑣,而基于MapGIS軟件進行的二次開發(fā)實現了圖例自動制作的功能,但軟件二次開發(fā)的平臺環(huán)境也局限了其圖例圖元屬性開發(fā),因此,從計算機底層數據層面實現制作圖例是解決此類問題的一個解決方案。筆者梳理了地質圖圖例編繪要點,在windows 10 操作系統(tǒng)環(huán)境下,基于Access 數據庫,建設項目數據庫,使用visual studio 2017 編程平臺,采用C#編程語言編寫了相應代碼,通過圖元屬性數字歸一化,可實現一鍵智能生成圖例。本次筆者從地質圖圖例制作層面,首先簡述數據庫建設,而后介紹一鍵生成圖例的制作流程及主要工作思路。
數據庫采用Access 數據庫。在參照現行國家、國際標準及經驗下,編制地層、顏色等字典,建立類型表、地體表、顏色表等,形成共用數據庫;分析地質體-內在關系-圖元數據之間的空間轉換紐帶聯系,按不同的地質信息類別建立點、線、面數據表,將項目地表地質界線、鉆孔、礦體等空間和地質屬性數據分別輸入數據庫,建立項目數據庫?;诮⒌墓灿脭祿旌晚椖繑祿斓穆摵鲜褂媚J?,從而將項目地質信息轉化保存到數據庫文件。
在按照相關規(guī)程建設底層數據庫的基礎上,編寫程序讀取數據庫中的地質信息,通過檢索篩選空間屬性信息,經計算確定圖例區(qū)配置位置;對圖元信息進行去重,按照制定的圖例排序原則排序并存儲;根據獲取的圖例區(qū)位置配置信息和圖例存儲信息,程序實現生成圖例可視化(見圖1)。
圖1 圖例編繪流程
讀取數據庫圖形圖元中的顏色、點、線等字段數據存儲內存中。讀取和存儲代碼簡述如下:
OleDbDataReader rs = cmd.ExecuteReader();//讀數據庫
zdG_LX.Add(lx.Cls, lx)//將數據加入到字典中
檢索內存中存儲的圖形圖元信息,篩選出空間屬性信息,將圖形四角坐標信息(見圖2)標記并存儲于min(x,y)、max(x,y)中,作為圖例位置計算的依據。計算圖形范圍坐標代碼簡述如下:
圖2 圖形信息結構圖
double Xmin = NExmin * scale;
double Xmax = NExmax * scale;
double Ymin = Can_wide - scale * NNymin;
double Ymax = Can_wide - scale * NNymax;
通過不同的關鍵字段對各類圖元信息進行檢索,去除相同的圖元類信息,得到加載圖形圖元種類及數量,即圖例的數量;按照圖例順序結構(見表1),對去重后的圖例信息進行排序存儲。去重和排序代碼簡述如下:
List
dxhR.Sort();//排序
表1 圖例順序結構表
根據圖形占用位置范圍(min(x,y)、max(x,y))和圖例數量,計算圖例區(qū)與圖形區(qū)邊界距離并分配圖例的排列位置,等距放置圖例,使之排列整齊美觀。代碼簡述如下:
//TL_row 為圖例行數
int TL_row = (int)(Ymin - Ymax - 260) / 220;
//TL_total 為圖例中的總個數
int TL_total = dmhR_number + dxhR_number +CZ_number + zkhR_number + pmxhR_number + xdhR_number;
//TL_colum 為圖例中的列數
int TL_colum = TL_total / TL_row + 1;
根據圖例類型及存儲信息,提取圖例類數據庫內相應顏色、符號、線型、線寬等信息,按圖例框尺寸及文字規(guī)格顯示生成在圖例區(qū),保持圖例框內顏色、文字(礦種、探礦工程文字、產狀等)等要素與加載范圍圖形信息一致,生成圖例如圖3。生成圖例代碼簡述如下:
DL_ReadData.zdG_LX.TryGetValue();
GeoPoint.Kjing(canvas,Point,30);
textBlockTL2.Text = g_LXB.Name;
圖3 生成圖例示例
選擇圖例文字輸出控件時,比選了Textbox 和Textblock(見表2),根據兩種控件功能特點,選用Textbox 控件用于圖例框右側的文字說明,Textblock控件主要用于顯示圖例框內文字。
表2 Textbox 與Textblock 控件需求功能對比分析
地質圖是地質工作總結及成果組成的重要部分,而圖例是認識地質圖內容必不可好的輔助工具,幫助讀懂地質圖涵蓋的地質信息。為提高工作效率,減少人為誤差,不受繪圖軟件二次開發(fā)環(huán)境的局限性,基于底層開發(fā)技術開發(fā)了該程序,并采用虛擬地質圖形數據進行測試模塊,實現一鍵智能生成圖例,得到較好效果。該項模塊主要特點:(1)不受繪圖軟件二次開發(fā)環(huán)境的局限;(2)一鍵生成圖例,操作簡單,避免多步手動操作出現人為錯誤,提高制作圖例的準確性;(3)根據加載圖形信息準確配置圖例區(qū);(4)檢索加載的圖形區(qū)信息,圖例各項顯示信息可與之保持一致。