





摘要:為提高工程地質數字化軟件開發效率,提出了基于開源軟件的工程地質數字化開發平臺解決方案,能夠在提高開發效率和標準化水平的同時,減輕勘測企業對商業軟件的依賴,快速形成獨立的、具有自主知識產權的軟件產品。測試結果表明:研究所用開源軟件和多層架構可以滿足工程地質數字化開發的要求,對于勘測企業工程地質數字化研發具有一定的參考價值。
關鍵詞:工程地質數字化; 開源軟件; .NET; 軟件開發
中圖法分類號:P642 文獻標志碼:A DOI:10.15974/j.cnki.slsdkb.2022.02.019
文章編號:1006 - 0081(2022)02 - 0106 - 06
0 引 言
由于工程地質內、外業工作的復雜性,現有商業軟件并不能完全滿足企業數字化的需求,因此大多數勘測企業選擇自行開發工程地質數字化軟件[1-3]。不同企業對工程地質數字化的需求千差萬別,但對于數據庫管理、Excel數據處理、Word格式報告生成、CAD圖件生成等的基本需求是一致的。傳統的開發方式是通過COM技術實現軟件與應用程序的通訊,因此軟件運行依賴Office,AutoCAD等商業軟件的支持[4-6]。隨著計算機技術的發展,尤其是互聯網技術和相關企業的興起,開源軟件在操作系統、數據庫、Web服務器等多個方面的應用已經成為主流[7],通過調用Office,CAD等有關開源組件庫,可以脫離Office,AutoCAD等商業軟件的支持,直接讀寫相應格式的文件。
因此,基于開源軟件設計了一款工程地質數字化開發平臺,對數據庫、CAD、Office文件讀寫等基礎功能進行了封裝,企業開發人員僅需通過簡單的調用,就可以實現較為復雜的功能,從而大幅簡化開發難度,讓開發人員把精力用在業務邏輯上,能夠在有限時間內實現更多的功能,最大程度滿足勘測企業的個性化需求。此外,該開發平臺的搭建基于開源軟件,有助于減輕勘測企業對商業軟件的依賴,形成獨立的、具有自主知識產權的軟件產品。
1 開發語言及相關開源軟件
1.1 開發語言選擇
開發語言的選擇是平臺方案技術路線的決定性因素之一。C#為微軟公司于2000年基于.NET框架推出的一種面向對象且類型安全的現代編程語言。開發人員利用C#語言能夠開發出多種在.NET中運行的安全可靠的應用程序[8]。C#綜合了VB (Visual Basic) 語言的簡單可視化操作和C++語言的高運行效率,兼具Java現代語言的特點,是Windows平臺下的首選編程語言。C#的缺點是在Windows以外的平臺上開發能力較弱,但是近年隨著.NET Core和.NET 5.0的相繼推出,這種情況正在逐步改善。
勘測企業開發人員通常并非專業的程序員,而C#具有的優良性能和簡單易用的特點,使其特別適合作為工程地質數字化開發的首選開發語言。開發時可以選擇免費的Visual Studio 2019社區版作為開發環境,且其同為微軟公司出品,能夠良好地支持C#。
1.2 相關開源軟件選擇
開源軟件已經成為眾多企業和軟件項目的基礎配置,對于軟件領域具有重要意義,不僅有助于提升參與者的研發能力,而且能帶動國家經濟發展。中國已將軟件開源列入“十四五”規劃,并發布木蘭開源系列許可證,致力于構建開源生態[9]。
近年來出現了不少優秀的開源軟件,其中不乏基于.NET框架和C#的軟件[10-13]。經研究,篩選了一批可用于工程地質數字化開發的開源軟件,其中與本文相關的軟件見表1。
2 開發平臺解決方案
2.1 開發架構
數據庫系統開發一般會根據“高內聚、低耦合”思想,把各個功能模塊劃分為表示層(UI)、業務邏輯層(BLL)和數據訪問層(DAL)3層架構,各層之間通過接口訪問[14-15]。雖然這種多層結構在性能上略有損失(因增加了調用處理),但它具有可復用、易維護的特點,比如程序開發完成后,需要將SQLServer數據庫更換為MySQL,僅需修改數據訪問層即可。
考慮到工程地質數字化需求的復雜性,本開發平臺在經典3層架構上進行了拓展,增加了支撐層和基礎服務層(如圖1所示),其中支撐層主要負責提供軟件開發的軟、硬件環境及數據庫支持等。
2.2 數據訪問層實現
數據訪問層基于中國開源軟件SqlSugar 開發,兼容SQLServer、MySQL、SQLite等所有SqlSugar支持的數據庫。根據工程地質數據庫的特點,數據訪問層一般采用DBFirst方式實現,即先建立數據庫,再根據數據庫生成實體模型,實現數據持久化。此外,還需要針對不同的數據庫進行功能封裝,實現通用的增、刪、改、查功能;對于有特殊需求的表,可先用代碼生成器生成增、刪、改、查的代碼,再在此基礎上進行修改生成。事務機制可以保證所有操作正確完成,在操作過程中,一旦出錯便立即回滾到初始狀態,從而保證數據的完整性。因此在對多個表進行刪除操作時,應使用事務機制進行控制,確保刪除操作正確執行。
2.3 基礎服務層實現
雖然直接調用開源.NET組件庫可以實現相關功能,但代碼編寫量大,維護困難。針對工程地質數字化的具體需求,通過對開源.NET組件庫進行二次封裝、建立基礎服務層,既可以避免重復開發,大幅降低開發難度,同時也可以促進標準化進程,方便以后替換為更合適的開源組件。
(1) 平臺管理模塊。平臺管理模塊主要通過調用數據訪問層實現平臺通用管理,包括組織機構、人員、物資、資源的管理,字典管理,角色、權限管理及登錄、注銷等功能。
(2) CAD讀寫模塊。基于NetDXF開發,能夠實現新建、打開和保存dxf文件,新建和選擇圖層,設置字體、字高,繪制直線,繪制多義線,繪制文字,插入圖塊,填充花紋等功能。
(3) Excel讀寫模塊。基于NPOI開發,能夠新建或打開xls,xlsx格式文件,并在該文件中指定單元格讀取或寫入內容,以及畫表格線、合并單元格等功能。
(4) Word讀寫模塊。基于NPOI開發,能夠新建或打開doc,docx格式文件,根據標簽定位并讀取或寫入內容,實現添加或修改表格、段落、頁眉頁腳等功能。
(5) 三維操作模塊。基于Activiz實現,能夠打開和顯示ts(受GOCAD,ItasCAD,CATIA支持)或其他格式三維地質模型,并進行分層顯示、瀏覽、縮放、視圖、面與面的求交運算等功能,其中面與面的求交運算關系到能否根據三維模型實現二維剖面出圖功能,Activiz 5.8版尚未提供此項功能,但在Activiz 9.0試用版中已經實現。
(6) 自定義控件庫。軟件開發過程中不可避免地需要自定義一些控件或對已有控件進行改造。該庫對自定義控件進行統一管理,便于重復使用。
(7) 其他開發模塊。基礎服務層是可擴展的,根據需要還可以添加圖表模塊、地理模塊等。圖表模塊主要用于數據可視化,可將數據以柱狀圖、餅圖、折線圖等形式動態展現;可基于MsChart(為Visual Studio自帶組件)或ZedGraph,ECharts.Net等進行具體開發。地理模塊主要用于地圖操作、坐標變換等;其中地圖操作選用GMap.Net開發,坐標變換可基于DotSpatial開發。
2.4 業務邏輯層實現
(1) 勘測數據管理。主要實現鉆孔、平硐、地質點等勘測數據的增、刪、改、查等,包括數據批量導入、數據檢查與清洗等。
(2) 地質圖自動生成。主要通過調用CAD和數據庫實現,包括鉆孔柱狀圖、地質剖面圖、平切圖等的自動生成功能。運用模板技術和通過定制模板,可以滿足不同工程的出圖需求。
(3) 報告自動生成。通過調用Word讀寫模塊實現,且通過報告模板定制,可以根據數據庫中的數據生成地質報告。
(4) 地質模型管理。通過調用3D操作模塊,可實現地質模型的導入、縮放、瀏覽等,以及通過三維地質模型生成剖面圖的功能。目前三維地質建模軟件價格較高,考慮到地質模型通常由少數人建立、供多數人應用的特點,通過開源軟件開發的切剖面功能可以大幅減少三維建模軟件的采購數量,節約企業資金。
2.5 表示層實現
(1) 桌面應用。基于WinForm開發。由于原生控件在功能性、美觀性上均不盡人意,因此商業軟件一般會采用DevExpress等價格昂貴的第三方商業控件;而開源控件Krypton Component Factory具有Office風格界面,在功能性和美觀性上達到了較好的平衡,開發時可以優先選用。此外,也可選用國產的開源控件SunnyUI,該控件時尚美觀,但在功能性方面沒有增強。
(2) Web應用。采用微軟的MVC架構開發,界面可以選用國產的LayUI等開發。
(3) 移動應用。采用微軟的Xamarin實現,也可以用國產的Smobiler開發。二者都支持C#開發移動應用,前者的運用需要掌握一定的安卓開發知識,后者可以通過拖拽直接生成界面,但如果開發專業應用,需要支付一定費用。
3 測試與驗證
針對開發平臺進行了部分測試和驗證,主要包括數據庫、Excel、Word、3D、CAD等,均采用文中所述開源軟件實現。
(1) 數據庫、多層結構及文檔讀寫。基于SQLite數據庫、SqlSugar框架和多層結構開發了DB Builder,界面采用Krypton控件設計(圖2),實現了工程地質信息數據庫的表結構的管理、數據庫自動創建、文檔自動生成(圖3)等功能。
“工程地質信息系統”實現了Excel格式鉆孔數據的批量導入、數據清洗等功能,可以自動檢查并指出錯誤位置(精確到行和列);同時可以導出符合標準的鉆孔Excel格式文件并用于CATIA三維鉆孔建立。
(2) CAD 自動成圖。開發了灌漿數據管理程序,其CAD自動成圖部分采用netDxf開發,可以根據灌漿數據自動繪制CAD灌漿鉆孔展示圖(圖4)。
(3) 3D操作。采用Activiz 9.0試用版進行試驗研究,實現了ts文件的解析,可以打開三維地質模型并進行分層顯示、縮放、旋轉、平移等操作(圖5)。
根據模型獲取三維剖面線是地質切剖面開發的關鍵技術(圖6),為后續開發掃平了障礙。
測試結果表明:基于開源軟件和多層結構的工程地質數字化開發平臺方案是可行且高效的,可以在不依賴商業軟件的情況下,較好地滿足工程地質數字化開發的需求。
4 結 語
隨著計算機技術特別是網絡技術的發展,開源軟件已經成為人類智慧的寶庫。在工程地質數字化研發中引入開源軟件,結合當前先進技術制定合理的開發方案,可以幫助勘測企業在投資較少的情況下,快速實現工程地質數字化,同時最大限度滿足企業的個性化需求,對于勘測企業數字化轉型具有重要意義。
值得注意的是,開源軟件并不等同于免費軟件,因此企業在引用開源軟件時需充分了解并嚴格遵守開源協議,以避免法律風險。
參考文獻:
[1] 王國光, 李成翔, 陳鍵. GeoStation地質三維系統圖件自動編繪方法研究[J]. 水力發電, 2014, 40(8): 69-71,85.
[2] 石偉明, 劉仕勇, 田華兵. GeoSmart在勘探生產管理中的應用[J]. 水電站設計, 2017, 33(2) :27-28.
[3] 劉聰元, 張春芳, 雷磊. 水利水電工程地質數據庫系統初步研究與開發[J].人民長江, 2020, 51(增1): 127-131.
[4] 陳宇龍, 張宇寧. 工程地質信息化和自動成圖技術研究[J]. 水利水電技術, 2018, 49(4): 145-153.
[5] 張偉偉. 地質礦產鉆孔數據庫管理及成圖系統設計與開發[D]. 合肥:合肥工業大學, 2013.
[6] 段建肖, 廖立兵, 肖騰, 等. GOCAD三維地質建模成果的二次開發及應用研究[J]. 人民長江, 2015, 46(14): 51-54.
[7] OSCHINA.開源軟件及國內發展現狀[EB/OL]. [2021-09-16]. https://www.oschina.net/news/33260/china-opensource-status.
[8] Microsoft. C# 語言介紹[EB/OL]. [2021-09-16]. https: // docs.microsoft.com / zh-cn / dotnet / csharp / tour-of-csharp/.
[9] 涂林延. 開源軟件許可證的法律屬性分析[J]. 法制與社會, 2021(6): 189-190.
[10] 果糖大數據科技. SqlSugar ORM 5.X官網文檔[EB/OL]. [2021-09-16]. https://www.donet5.com/Home/Doc.
[11] nissl-lab.npoi[EB/OL]. [2021-09-16]. https://github.com/nissl-lab/npoi.
[12] haplokuon.netDxf[EB/OL]. [2021-09-16]. https://github.com/haplokuon/netDxf.
[13] kitware. 3D Visualization Library for .Net C# and Unity[EB/OL]. [2021-09-16]. https://www.kitware.eu/activiz/.
[14] 朱玲, 薛賀. 基于.NET平臺下的ORM組件的研究與應用[J].航空計算技術, 2007, 37(6): 89-91.
[15] 陳煥彬,淺談. NET三層架構在系統開發中的應用[J].電腦與信息技術, 2016, 24(5): 45-47.
(編輯:高小雲)