楊 文,向明明,謝邱平
(1. 中國電建集團昆明勘測設計研究院有限公司,云南 昆明 650033;2. 中國電建集團市政規劃設計研究院有限公司,廣東 珠海 519000)
隨著信息技術的深入發展,通過數字化、信息化技術提升工程項目管理水平,促進建設行業數字化轉型,已逐漸成為行業創新發展的前沿。BIM 與GIS 技術是實現工程數字化的數據基礎,以BIM、GIS 模型為載體,融合項目設計階段的幾何參數、屬性參數,施工階段的造價、進度、質量、安全、驗收等信息,運維階段的設備性能等屬性,為工程項目信息化提供全生命周期的信息模型,打通項目各環節數據流通渠道,形成項目數字化資產,促進工程建設行業數字化轉型,并為數字孿生城市、智慧城市等建設奠定基礎[1]。CityMaker 是成熟且應用廣泛的國產三維GIS 平臺,對二三維GIS 數據、各平臺BIM 數據都具備良好的支持,在BIM 與GIS 的多源數據整合、大范圍三維場景渲染等方面的性能尤其突出[2]。基于CityMaker 開展BIM 與GIS 的應用,實現工程項目數字化平臺建設,是國內眾多工程數字化研究的首要選擇[3]。其中,基于CityMaker 的平臺軟件Builder,對BIM 數據進行格式轉換、坐標配準、拆分合并、屬性字段添加、重命名等操作,是實現BIM 與GIS 集成的首要環節[4]。然而,CityMaker 現有的BIM 模型處理工具較少,且局限性較強,難以滿足實際項目需求。為有效提升BIM模型處理效率,本文結合項目實際需求,基于CityMaker開發接口,設計了開發BIM模型處理工具的技術路線,研究了常用工具開發的關鍵技術,形成了通用的BIM模型處理工具集。
不同BIM平臺的數據轉換為CityMaker數據后,其格式統一為FDB。這是CityMaker特有的三維空間數據結構,是關系型數據庫FirebirdDataBase的縮寫,同時表明CityMaker 的FDB 數據本質上是通過關系型數據庫進行管理的。FDB數據結構分為數據源、數據集和要素類3層樹形結構(圖1),其中數據源與數據集都是邏輯結構上的概念,不存儲具體數據,相當于文件夾的作用,一個數據源可包含多個數據集[5]。FDB 數據中的數據實體存儲在最下層,即要素類中,一個數據集可包含多個要素類。要素類和數據庫中表的概念一致,其本質上就是關系型數據庫的一張表,包含字符串、數字、布爾等類型的字段。較為特殊的是,要素類中存在名為Geometry的二進制類型字段,用于存儲模型的幾何信息,這也是GIS 數據存儲的通用方法,如Orable、SQLServer 數據庫中均通過擴展的Ge?ometry字段實現對空間幾何數據的存儲[6]。

圖1 FDB數據的3層數據結構
1)要素類整合與拆分需求。CityMaker 通過BIM插件的方式將BIM模型轉換為自身平臺支持的FDB格式,從而實現對不同BIM格式的統一。然而,插件轉換而來的FDB格式的數據內部分類較詳細,以BIM 平臺Revit 為例,轉換后的數據以族類別劃分,如將建筑物的墻、門、窗分為不同的要素類,結構過于詳細,不利于模型的整合應用,需將轉換后的要素類批量合并。此外,對于已整合的FDB 格式的BIM 數據,在工程數字化平臺開發過程中,基于不同的業務開發需求,需要對要素類進行拆分,如為實現基于BIM模型的進度可視化模擬,需要BIM模型與工程分部分項WBS 對應,此時就需要將BIM 模型按照WBS 進行拆分。
2)屬性字段批量添加與刪除需求。BIM 模型的某項重要角色是項目全過程全范圍信息的載體,因此需對FDB格式BIM模型的字段進行定制化的新增與刪除,如添加時間類型的計劃施工時間、實際施工時間,便于在模型中存儲各構件的施工進度信息,從而進行BIM4D模擬分析。
3)字段值批量設置需求。BIM 模型的構件數量龐大,如一幢普通別墅的全專業構件可能上萬,構件中某些字段值可能相同或可按條件批量賦值,如在BIM4D 進度模擬中需對已施工完成的構件進行標記,就需要對相關字段值進行批量設置。
4)坐標系批量設置需求。坐標系是GIS平臺整合BIM模型的標志性特征,只有在統一、真實的地理坐標系下,BIM模型才能具備模擬真實世界的空間參考基礎。在實際項目中,BIM 模型個數眾多,而其GIS坐標系往往相同,因此就產生了對眾多模型批量設置坐標系的需求。
5)數據集與要素類重命名需求。在現有的City?Maker 數據處理軟件Builder 中,用戶只能對第一層結構(數據源)進行重命名,而數據集與要素類是FDB中檢索數據的重要依據,在不同的平臺開發業務需求中,經常需對二者進行重命名,如需要根據項目編碼對各要素類進行命名,便于對數據進行統一的編碼管理。
CityMaker 是基于Windows 開發的桌面端GIS 平臺,對其進行二次開發時,首選Windows 平臺下的.NET 開發環境。目前,CityMaker 開發的SDK 對于WinForm的支持優于WPF,因此本文采用基于.NET的WinForm進行BIM模型處理工具的開發[7]。技術路線如圖2 所示。需要注意的是,與一般GIS 桌面程序二次開發不同,CityMaker二次開發時需將工程的輸出目錄設置為CityMakerConnect的安裝目錄或將Connect安裝路徑下的文件拷貝至工程的bin/Debug 路徑下,才能確保程序順利運行。此外,若需使用AxRenderControl控件顯示FDB模型,則需在WinFrom初始化后,通過代碼創建AxRenderControl 實例,并將其加入WinFrom的Panel等容器控件中。

圖2 基于CityMaker的BIM數據處理工具開發技術路線
1)要素類整合與拆分。要素類整合工具開發的基本思路為將源要素類的每一行數據(即每個BIM構件)復制為新的IRowBuffer 實例,再將該實例通過目標要素類的遍歷游標新增到目標要素類中,其核心API 除打開數據源、數據集、要素類的常用接口外,主要為ITable.Search、IFdeCursor.InsertRow 等。要素類拆分工具開發的基本思路為依據要素類某字段的唯一值,將要素類中的數據行分離為不同的FDB 數據。在新建的FDB中,需要將源數據集中的模型、材質進行拷貝,其核心API 主要為IQueryFilter、IResourceM?anager、IModel、IImage等。
2)屬性字段批量添加與刪除。屬性字段批量添加工具的開發思路為首先定義需添加字段的類型、名稱、別名等信息為配置文件,再通過接口按配置文件批量添加新字段,其核心API 為ITable.AddField。屬性字段刪除工具則是通過設定需刪除字段的名稱,利用接口ITable.DeleteField實現。
3)字段值批量設置。該工具可通過要素類逐行遍歷和UpdateSQL 語句兩種方式實現。通過實驗對比發現,后者效率遠高于前者。UpdateSQL 語句的實現思路為獲取要素類對應的關系數據庫表名,定義Up?dateSQL 語句,其核心API 為IDataSource.ExecuteUp?date。
4)坐標系批量設置。FDB 數據集中的要素類具備同一坐標系,因此數據的GIS 坐標系定義在數據集中。該工具的開發思路為定義坐標系WKT,遍歷FDB 中所有數據集進行坐標系批量設定,其核心API 為ICRSFactory.CreateFromWKT、IFeatureDataSet.SpatialReference。
5)數據集與要素類重命名。該工具是BIM 數據處理過程中較常用、開發方式較簡單的工具,其核心API為IFeatureDataSet.Name、IObjectClass.Name。實現界面如圖3所示。

圖3 數據集與要素類重命名工具實現界面
作為國產三維GIS 領域中為數不多的成熟平臺,CityMaker 對多源BIM 的支持使其在工程數字化、CIM、智慧城市等領域的應用前景廣闊;但其現有BIM數據處理軟件所具備的工具難以滿足實際應用需要;因此,基于其豐富的二次開發接口進行定制開發,是解決數據處理瓶頸的必然選擇。本文結合工程項目實際需求,研究了常用工具的開發需求、技術路線和實施過程,在此基礎上,可進一步開展模型批量更新、二進制設計參數解析、模型偏移、坐標轉換、多格式導出、空間關系計算等高級BIM模型處理工具的定制開發,進一步深化BIM 與GIS 的集成融合,為基于BIM 與GIS 的工程數字化應用奠定良好的數據基礎。