1. 程式人生 > >CityEngine使用對映圖層來控制模型生成

CityEngine使用對映圖層來控制模型生成

有些時候我們的資料的屬性可能並不那麼完整,從而導致我們的三維建模工作沒辦法依賴於屬性來構建。面對這種情況,CityEngine可以從其他外部的內容來提取我們需要的屬性,並對映到地圖要素上,作為變數控制模型的構建。下面我們以一個案例來講解對映地圖的使用。
我們現在面臨一個區域,這個區域的資料是比較老舊的資料,只有紙質圖紙。目前在這個區域需要建立模擬的模型。但是我們面臨的問題是該區域的資料只有一個二維的地形輪廓,連建築物的高度都沒有,因此我們無法從二維資料中獲取資訊來構建我們的模型。
例如我們現在有以下這樣的資料:


 


圖中的Shape資料沒有建築高度的屬性,我們只能通過人手來對資料進行一些處理。首先我們有街道的柵格圖,我們可以通過其他的一些渠道知道某個街道屬於高建築群等資訊,我們就可以在其他製圖軟體內製作一個建築分類的圖片,如下所示:


 


紅色代表高建築區域,綠色代表中層建築,藍色代表是底層平房,最後將除了建築分類以外的區域塗黑,並儲存成PNG格式,如下所示:


 


然後我們可以把這個圖片以對映圖層的形式加入場景,步驟如下:


 


在圖層選單中選擇新增地圖圖層,然後在彈出窗中選擇對映圖層:


 


然後選擇圖片,並設定圖片的大小已經新增一個對映值:


 


完成後在場景內可以看到新新增的對映圖層,我們可以在屬性窗裡面繼續新增對映值,由於紅色區域是高建築群,我們將Red對應紅色的值域設定在0至200英尺,Green對應綠色則設定為0至50,Blue對應藍色設定為0至20,如下圖:


 


最後我們就可以製作規則檔案來構建模型,我們的規則思路是通過Red、Green、Blue三個變數跟對映圖層中定義的屬性進行連結,從而將建築拔高。程式碼如下:


 


規則檔案建立好後我們將其應用到要素中,並構建模型,效果如下圖:
 


這樣我們就可以初步解決了GIS資料無法提供完整資訊而無法建模的問題。