最近想了想弄了幾年的勘探決策支持系統EDSS的內部技術,雖然名字起得有點大,但主要是提供勘探數據集成查詢和可視化的,程序開發人員更換得不算多,功能不斷修修補補,現在靜下心來梳理一下技術點,應該還是挺有內容的,為了不泄漏企業秘密,圖片只用對外宣傳材料上有的,技術點只寫些名字。
1、SOA的軟件框架
報獎時不提SOA顯得你一點水平也沒有,整體系統從來也不與第三方系統通訊,不知道這SOA有多少用處,可能以后會用得上吧。
實際的軟件框架就是三層構架,客戶端、應用服務器和數據庫,2004年簡單實現,好像是2006年大改一次。
客戶端:最早的就是C#做的Form,后來改為插件式的,隨着編程人員的加入,幾個模塊之間的耦合也越來越重,最嚴重的就是項目數據樹模塊吧,估計這個模塊不插入,其它模塊根本無法運轉,所以說插件式的設計需要大量的設計模式的經驗和對功能的理解。
應用服務器:這個是不可或缺的,因為這個系統中要訪問地震數據體,要從中抽取地震剖面或水平切片,另外還要訪問一些圖形或文檔,圖檔用數據庫的大字段還行,但幾十GB的地震數據就不太好辦了。最早用.NET remoting實現,后來嫁接到IIS中了,確實也可以提供WS服務和Rest。
數據庫,就是oralce和sqlserver,沒有太多的技術。后來主要用到了iBatis的ORM,至於使用這東西倒底有什么好處,我現在不太清楚了。
這個框架中我一直不太滿意的是業務對象封裝與傳遞,因為業務對象會不斷發生變化,數據庫中會變化,應用服務器會改變,而這時強行要求所有客戶端必須同時升級來保證這些業務對象嚴格一致是不合情理的,但在企業內部軟件應用時,這種方式一直運轉多年也沒發現什么問題。
還有一個就是消息通訊,實際上在某些模塊之間還是要用WM_COPYDATA這種方式來通訊的,這是一段在2004年改寫的代碼。
2、底圖模塊
這是最早就具有的模塊,使用了INT公司GeoToolkit.NET中的Carnac.NET組件,當年為了買這個組件可花了企業不少的錢,后來的作用還是明顯的,關於圖形方面的開發方面還是提高了許多效率,程序性能和穩定性都不錯。
主要功能:
多地震工區顯示,抽取任意測線;成果圖件(平面圖)的坐標校正及疊加顯示;工作現場保存與恢復;強大的圖層管理,支持工區、構造圖、層位、測線、探井、開發井和設計井等對象的拖放操作;可輸出CGM;通過右鍵菜單查詢各圖層對象的詳細資料。
3、剖面模塊
這也是最早就具有的模塊,使用了INT公司GeoToolkit.NET中的Seismic.NET組件,可以直接打開並顯示專業的SEGY剖面,並且可以進行多種設置。
主要功能:
一鍵式顯示方式切換,支持波形、變面積和變密度等顯示方式;按研究人員設置的標准顏色顯示層位等信息;根據VSP、鄰井、經驗公式顯示時深關系數據;快速從任意工區中打開任意地震剖面;實時設計和修改井位的靶點數據。
對剖面模塊Seismic.NET感興趣的可以到這里看看。
4、綜合錄井圖
最早用INT公司GeoToolkit.NET中的WellLog.NET組件寫了一個原型,后來忘了是什么原因要自己從底層寫一個,后來終於也完成了,功能也不錯。
主要功能:
支持綜合錄井圖、岩屑錄井圖、標准測井圖、組合測井圖等多種模板的定制與切換;支持圖件橫向或縱向顯示方式。
5、井身結構圖及試油管柱圖
這個是后來升級了INT公司GeoToolkit.NET后,用其中的WellSchematic.NET開發實現的。
主要功能:
井身結構圖和試油管柱圖的動態繪制;標注主要目的層、岩芯、試油井段等關鍵信息;根據鑽井、測井、試油等決策模式,定制探井生產基礎數據和動態信息的顯示模板。
6、遙感與三維GIS模塊
這是與一個公司合作完成的,其中用到了SkyLine的技術。
主要功能:
綜合各種地質因素確定井位后,快速查看設計井附近的遙感圖像和地理信息,實際上里面也可以導航查詢各種信息。
7、電子掛圖模塊
這里面技術難度涉及到一個非常大的圖件的縮放性能的技術,其它技術難度不大。
8、項目樹模塊
這就是前面提到的耦合最大的一個模塊,幾乎其它模塊都與這個樹上的結點有關系。
9、三維可視化模塊
這是在2012年發布的模塊,使用OpenInventor.NET寫成的,經歷過C++/Qt等曲折的過程,主要功能:
主要功能列表:
1)數據體顯示:邊框顯示、表面顯示
2)數據體橫、縱剖面及水平切片顯示與交互、抽取過井十字剖面
3)井集數據顯示:井名、井口信息、井軌跡及地質分層
4)解釋層位數據顯示:點狀顯示,簡單網格化的模型由於性能關系還沒有加上
5)色棒定制功能:可以控制色棒的顯示范圍、透明度等參數
6)輔助交互功能:井數據查詢功能、井數據定位功能、各種三維對象的顯示/隱藏、添加、刪除等控制功能,鼠標的三維空間定位以及拾取功能,狀態欄的即時狀態信息顯示功能
10、案例庫模塊
里面收集了在鑽井過程中決策的一些情況、措施、原因等100多個案例,由於某些原因這個庫沒有人再繼續充實。
11、數據管理功能
涉及到所有數據都在這里集中有相應的界面進行增刪改查。
12、系統管理
用戶管理、授權、日志等。
13、自動升級模塊
這是小模塊發揮了大作用,大大減輕了系統的維護工作量。