1. 程式人生 > >CityEngine----三維模型匯出與GIS屬性掛接

CityEngine----三維模型匯出與GIS屬性掛接

在CityEngine中建立場景之後,我們需要對建立好的模型匯出(以3ds和obj格式為例)。

匯出模式可以選擇兩種:Use file size limit和Create one file per shape。

Use file size limit:將所選模型作為一個obj或3ds檔案匯出。

Createone file per shape:將模型按照shape匯出,每一個shape產生的模型會生成一個3ds或obj檔案。


圖1 匯出方式

下面我們討論的是以Create one file per shape的方式將模型匯出時,模型檔案的命名問題。

一、當Name欄位為非中文時

經測試,CityEngine的模型匯出時的模型命名是有規律的,即模型檔案的命名規則是: Name1 + ”_” + Name2

Name1為匯出時設定的Name:


   圖2 匯出Name

Name2為shape的Name:


圖3 shape的Name

其中需要注意的是:shape的Name是與GIS資料的屬性表關聯的,即:shape的Name==圖層屬性表的Name欄位的內容。見圖3與圖4


圖4 屬性表的Name欄位

匯出後結果如下圖:


 圖5 模型匯出結果

以上匯出方式適用條件為Name欄位的值為非中文字元。

二、當Name欄位為中文時

 當Name欄位為中文時,通過上述方法匯出的模型檔案命名形式如下:


圖6 Name為中文時的命名

因系統無法識別shape的中文Name,故在shape的Name地方顯示為unnamed,這種情況下我們需要進行通過空間連線的方式將模型檔案與屬性檔案對應起來。具體步驟如下:

1、選中要匯出的模型,匯出模式為Create one file per shape,確定後將模型匯出。


圖7 三維場景


圖8 模型匯出設定


圖9 模型匯出結果

2、在arcmap的ToolBox中選擇Import 3D Files通過該工具將第一步匯出的3ds模型轉換成Feature Class,該Feature Class的屬性表中包含了模型的名稱。


圖10 Import 3D Files工具


圖11Import 3D Files工具引數設定

圖12 Import 3D Files匯入結果

3、載入原始footprint資料,如下圖


圖13 3D模型資料與Footprint資料

4、生成的T3ds資料與原始Footprint重合,若有偏移過大的情況則將T3ds資料進行平移,使其與Footprint基本重合,之後使用Feature to Point工具將其轉換為Point資料


圖14 Feature to Point工具


圖15 Feature to Point結果

5、最後通過spatial join工具將Footprint的屬性與Point資料的屬性進行空間連線,從而得到模型與Footprint的對應關係。


圖16 Spatial Join工具


圖17 Spatial Join最終結果

注意:若GIS資料使用CityEngine不支援的座標系,則使用Import 3D Files工具轉換後得到的MultiPatch資料無法與源資料很好重合,故無法使用Spatial Join工具進行屬性的掛接。

批量匯出建議:

1、 建議使用第一種方法匯出,在GIS屬性表中建立一個非中文的唯一標識欄位

2、在進行自定義座標系建模時,最好先將自定義座標系轉換成CityEngine支援的座標系,建模完成之後在將座標系轉換回去