張永輝

摘 要:針對手工繪制地質圖件煩瑣而重復的過程,本文選用MapGIS K9作為開發平臺,在Visual Studio環境中,使用C#語言和COM組件技術研發了一個計算機技術支持下的鉆孔柱狀圖自動繪制系統。系統建成后,利用河南省煤田地質局二隊所提供的補1號鉆孔數據其進行了測試。結果表明,該系統能達到省時、省力和高效的目的。
關鍵詞:MapGIS;二次開發;鉆孔柱狀圖;自動成圖
中圖分類號:TP391.41文獻標識碼:A文章編號:1003-5168(2020)19-0013-03
Abstract: In view of the tedious and repeated process of drawing geological maps by hand, a practical program that can automatically generate histograms is developed. This paper introduces the content of system design from the aspects of design principle, overall structure, development process and development environment configuration. The development and realization process of the automatic generation system of borehole histogram based on MapGIS is introduced in detail from the aspects of system key algorithm implementation, database design and implementation, and histogram drawing. After the completion of the system, the data of No.1 borehole provided by the second team of Henan Coalfield Geological Bureau was used for testing. The results show that the system can save time, labor and efficiency.
Keywords: MapGIS;secondary development;borehole histogram;automatic mapping
鉆孔柱狀圖是煤田必備的綜合性圖件之一,是根據鉆孔過程中所得到的資料,按巖層新老關系的排列順序,將巖層恢復到水平狀態后繪制出的一種圖紙[1]。鉆孔柱狀圖在礦井生產前期以及整個生產過程中都起著非常重要的作用[2]。鉆孔柱狀圖的繪制工作在20世紀80年代以前主要靠手工繪制完成,因工作量大,工序煩瑣,重復過程多,人工繪制費時費力,成圖質量難以保證,不僅浪費大量的人力和物力,而且成圖慢、效率低,難以滿足實際生產的需要[3]。20世紀80年代以后,多數柱狀圖是由計算機成圖的,主要通過掃描矢量化完成。這樣的柱狀圖雖然在信息共享和傳遞上有一定的進步,但同樣存在繪制時間長、效率低、精確度差、編輯困難等問題,無法滿足一些工期緊、任務重的資料處理工作的需求[4-5]。針對上述鉆孔柱狀圖繪制存在的不足,本文選用MapGIS K9作為開發平臺,在Visual Studio環境中,使用C#語言和COM(Component Object Model)組件技術[6]研發了一個計算機技術支持下的鉆孔柱狀圖自動繪制系統,以提高繪圖精度,節約工作時間,避免人為操作可能造成的錯誤,提高工作效率[7-9]。
1 系統的功能分析與確定
本文的研究目標是,在廣泛調研的基礎上,根據用戶實際需求,研究并建立一個能集成多種數據源、數據采集手段方便快捷、成本低廉、作業速度快、精度高、信息豐富、兼容性高、操作簡便的鉆孔柱狀圖快速生成系統。
1.1 利用手工方式的圖件繪制過程
鉆孔柱狀圖自動生成系統是建立在手工繪圖基礎上的,因此,要對手工繪圖過程進行分析。首先,地質技術人員需要對野外采集的數據進行簡單計算,根據國家規范擬定圖件繪制方案,確定比例尺。其次,根據規范繪制圖頭、查野外編錄及其規范、根據比例尺計算中間結果、繪制線圖元及點圖元,再查野外編錄、根據比例尺計算中間結果、繪制下一個線圖元及點圖元,循環至圖件完成[10]。整個過程復雜且極容易出錯。
1.2 系統功能確定
通過對手工繪制圖件步驟進行分析,利用計算機對其過程進行了優化與歸納[11]。據此,研究者系統劃分為4個模塊:數據操作模塊、柱狀圖繪制模塊、圖形輸出模塊、數據庫管理模塊。其中,數據操作模塊主要實現鉆孔數據的導入、更新、分條錄入、導出等;柱狀圖繪制模塊實現鉆孔柱狀圖自動繪制,并對新舊鉆孔柱狀圖進行對比;圖形輸出模塊可實現多種圖形輸出格式,滿足用戶的不同需要;數據庫管理模塊主要是對標準數據庫進行管理。
2 系統實現
2.1 數據操作模塊的實現
數據操作模塊包括導入數據、更新數據、添加數據、導出數據4大功能。其中,導入數據支持直接將Excel表格中的數據導入數據庫;也可實現不同類型數據庫之間數據的導入,如SQL Server或者Oracle數據導入GDB企業管理器中;還可實現相同類型數據庫之間的數據導入,如GDB企業管理器中的不同數據庫。更新數據功能是指對用戶選擇的數據進行更新。添加數據功能實現了數據的實時更新。導出數據功能可以將數據庫中的多種格式數據導出為6x表文件或者TXT文件。
2.2 繪制柱狀圖模塊的實現及需要注意的問題
2.2.1 繪制柱狀圖模塊的實現。鉆孔柱狀圖的繪制過程如圖1所示。
整個鉆孔柱狀圖可以看成是由一列一列組成的,每一列都是由圖頭和內容構成的。用戶可以根據需要,將不同的列組合起來,形成不同模式的鉆孔柱狀圖。因此,這里采用復選框的形式,用戶可以根據需要,選擇復選框,鉆孔柱狀圖中就生成相應的列。
每天都在掘進的鉆孔,每天都會更新鉆孔數據資料。為了便于對每天的鉆孔資料進行分析,對比新舊的鉆孔數據,就要對新舊鉆孔柱狀圖進行對比。該系統具有分條錄入的功能,用戶可以將當天更新的鉆孔數據資料分條錄入數據庫,重新生成新的鉆孔柱狀圖,并與舊的鉆孔柱狀圖進行對比分析。
2.2.2 需要注意的問題
2.2.2.1 緩沖線繪制算法的實現。在繪制柱狀圖過程中,若分層的巖性描述文本高度超出分層高度,就會產生巖性描述文本溢出現象,為了保證鉆孔柱狀圖的美觀,在巖性柱兩側加入緩沖區,引入緩沖線。
為了保證圖幅的美觀,緩沖線一般要與鉆孔柱狀圖的各個分層底部相一致。但是,在特殊情況下,允許各分層線上下浮動,緩沖線同時隨之移動,盡量使緩沖線水平,減少斜緩沖線的數量。
在手工繪圖過程中,可以通過目測,人為調整緩沖線;而利用計算機進行自動繪圖,則無法進行目測,需要采用一定的算法進行計算來繪制緩沖線,具體過程如下。
①初始化變量[i]=0,讀取數據庫中的巖層真厚度數據TrueHeight[i],將其賦給rowheight[i],假如rowheight[i]小于2,將rowheight[i]賦值為2,對其累加求和,得到巖性描述文本的總高度sumrowheight,累加巖層真厚度數據,得到巖層累計真厚度sumheight。
②判斷sumrowheight和sumheight的大小,假如sumheight較大,則直接繪制鉆孔柱狀圖,否則執行③。
③初始化變量[j]=0,進行for循環,從數據庫中依次讀取每一層的巖層真厚度數據TrueHeight[j]。
④使用if語句,對TrueHeight[j]進行判斷,假如TrueHeight[j]大于2,利用TrueHeight[j]繪制鉆孔柱狀圖,否則將rowheight[j]賦值給TrueHeight[j],繪制鉆孔柱狀圖。
2.2.2.2 文字換行算法的實現。在繪制鉆孔柱狀圖的過程中,巖性描述是必不可少的。在利用計算機自動繪圖時,巖性描述的行寬是固定的,這就要求必須對數據庫中讀取的巖性描述進行換行,具體步驟如下。
①初始化變量[i]=0,從數據庫中讀取巖性描述的內容row[i],比較巖性描述的文字長度length和字體高度size的乘積與巖性描述文本的長度width,若前者較大,則執行②,否則直接添加巖性描述。
②定義字符串S1,初始化變量[j]=0,以巖性描述文字長度作為循環控制變量,以(j+2)*size>width作為判斷條件,確定[j]的值,將row[i]中的前[j]個字賦給字符串S1。
③定義字符串S2,根據[j]的值,將row[j]后面的字賦給字符串S2。
④根據S1和S2完成巖性描述的填寫。
2.3 圖形輸出模塊的實現
圖形輸出模塊借助MapGIS K9的AxMxEditControl對象的StartTool方法,實現打印設置、打印預覽、打印、輸出光柵文件、輸出PS/EPS文件、生成WEB圖片等功能。
2.4 數據庫管理模塊的實現
2.4.1 添加數據功能實現。利用mcGDBServer類的Connect函數連接數據庫,通過mcXClsTool類的CreatXCls方法,調用MapGIS對象類創建向導,在MapGIS的GDB企業管理器的指定數據庫中創建對象類,用戶可以根據已有的對象類的屬性結構,導入新對象類中,完成屬性結構的設置。
2.4.2 數據編輯功能實現。利用EditConnector控件的StartTool函數,將不同參數傳入StartTool函數中,實現不同點、線、區、注記的輸入、選擇和修改,以及框選、圓選、多邊形選擇和平移功能。
2.4.3 數據導入/導出功能實現。利用mcDataConvertTool類的DataConvert函數,通過調用對象類的數據導出/導出對話框,完成數據導入/導出功能,實現簡單要素類(sfcls)、注記類(acls)、要素類(fcls)、對象類(ocls)、CAD類(cadcls)、MapGIS6x(*.wb;*.wp;*.wl;*.wt)、MapGIS6x工程文件(*.MPJ)、Txt Files(*.txt)、Mif Files(*.mif)、E00 Files(*.e00)、Shape Files(*.shp)、Dxf Files(*.dxf)、數據庫表格等數據格式之間的導入與導出功能。
3 系統應用
系統完成后,利用河南省煤田地質局二隊所提供的補1號鉆孔數據進行了測試。鉆孔位于XX鎮,高程為239 m,終孔深度為382.4 m。開工日期為2010年08月28日,竣工日期為2010年10月29日。試驗結果表明,該系統達到了省時、省力和高效的目的。
4 結論
本文在廣泛調研的基礎上,系統研究了鉆孔柱狀圖的主要構成及繪制技巧,基于MapGIS K9建立了鉆孔數據基本信息數據庫,借助Visual Studio .NET 2008開發環境,使用C#語言,采用組件開發技術,設計開發了基于MapGIS的鉆孔柱狀圖自動繪制系統。該系統具有鉆孔數據的信息化管理、鉆孔柱狀圖的自動繪制、數據導入和導出等功能,為鉆孔柱狀圖的繪制提供了便利,并在實際應用中達到了省時、省力和高效的目的。但由于時間和作者個人能力的限制,對于一些細節性的問題未進行深入研究,還有待進一步補充完善。
參考文獻:
[1]趙鋒,崔希民,王蕊香,等.基于ObjectARX與OLEDB的鉆孔柱狀圖自動繪制[J].河北建筑科技學院學報,2002(4):61-64.
[2]曹博,郝文信.基于VBA的鉆孔柱狀圖的自動生成[J].露天采礦技術,2008(z1):14-17.
[3]黃樹桃,王樹紅,韓邵陽,等.鉆孔資料管理和自動成圖技術研究[J].鈾礦地質,2004(1):50-53.
[4]李成.地質剖面圖和柱狀圖的計算機自動生成技術[D].西安:西安科技大學,2004.
[5]陳文杰,應軼.第四系鉆孔柱狀圖成圖系統的設計與實現[J].地礦測繪,2007(4):14-16.
[6]張運香,吳麗蓉.基于MAPGIS二次開發的鉆孔柱狀圖軟件介紹及其應用[J].福建地質,2008(2):230-236.
[7]文廣超,鄧寅生.煤礦礦井防治水信息化系統的研究與實現[J].礦業研究與開發,2010(6):64-67.
[8]馬江平,王志宏.基于AutoCAD的預想鉆孔生成及其柱狀圖繪制[J].露天采礦技術,2005(6):17-20.
[9]黃樹桃,王樹紅,韓紹陽,等.鉆孔資料管理和自動成圖技術研究[J].鈾礦地質,2004(1):51-55.
[10]王小勇.“鉆孔地質柱狀圖”的計算機編圖應用研究[J].化工礦產地質,2007(1):33-38.
[11]解華明,陳守余.基于MAPGIS的鉆孔柱狀圖繪制軟件的編制[J].物探化探計算技術,2004(1):85-90.