程朋根,李志榮,聶運菊,2,林淇昕
(1.東華理工大學 測繪工程學院,江西 南昌 330013;2. 流域生態與地理環境監測國家測繪地理信息局重點實驗室,江西 南昌 330013;3. 廣西空間信息與測繪重點實驗室,廣西 桂林 541004)
隨著城市現代化的飛速發展,人們對城市道路照明的需求越來越高[1]。照明設施的建設、管理與服務水平的高低越來越體現一個城市社會保障能力的強弱,也反映了一個城市現代化程度的高低。城市道路照明能為各種車輛的駕駛人員以及行人創造良好的視覺環境,達到保障交通安全、完善城市功能、提高交通運輸效率、方便人民生活、降低犯罪率和美化城市環境的目的[2]。因此在城市管理系統中不斷出現城市道路附屬設施管理方案,使城市路燈管理更加科學化、系統化,提高城市路燈的管理水平[3]。三維GIS突破了空間信息在二維地圖平面中單調表現的束縛,為各行各業以及人們的日常生活提供更有效的管理、輔助決策支持[4]?;谌SGIS管理系統能夠為客戶提供直觀的三維路燈展示,能更好地為客戶提供關于路燈建設、路燈改建、路燈管理等輔助決策。
在數字三維城市中,眾多優秀的GIS軟件公司也相繼推出各自的三維軟件,例如SuperMap 8c、Skyline或CityMaker等三維平臺;AutoCAD、3DMax、SketchUp或CityEngine等三維建模軟件。戴彬,鐘若飛,孫偉利,朱紅,張西童等人采用車載激光雷達點云數據對道路附屬設施或路燈進行三維重建,道路附屬設施三維數據精度高,但點云處理的過程復雜,仍需要大量的人工交互,且數據量大[5-8]。趙雨琪,劉茂華,呂永來,陳秋曉,謝衍憶[9-13]等人利用CityEngine參數化建模的特點,在道路中心線引入外部路燈模型進行路燈的批量建模,但所建模型的位置并不是在實際路燈坐標點上,從而導致路燈位置不準確[9-13]。同時,三維城市建設中道路附屬設施通常采用3DMax或SketchUp進行手工建模,再將路燈三維模型手工擺放路燈坐標點上,或隨意擺放到不準確坐標的道路兩旁,因此這種方法導致建模效率低、路燈位置不精確等問題。
本文針對城市道路附屬設施中路燈采用車載激光雷達點云數據進行三維重建,點云處理過程復雜,人工交互多,數據量大;以及采用3DMax或SketchUp進行手工建模及擺放,效率低,位置不準確等缺點;提出基于3DMax與CityEngine的城市道路路燈批量建模與擺放方法。首先,在3DMax 根據實際路燈的外觀建立相同的路燈模型;其次,分析路燈坐標點與道路中心線的空間關系計算鄰近角,再導入到CityEngine中,在路燈坐標點上利用幾何函數與路燈坐標點的屬性信息批量自動建模,并通過規則程序調整路燈的大小與方向;最后,將路燈模型批量單棟導出,導入到3DMax中能夠直接進行模型修改與格式轉換,能夠更快捷地為三維平臺提供數據。為城市管理中城市道路附屬設施路燈的三維建模提供實用、高效率、高精度的解決方案。
本文研究對象為城市道路附屬設施中的路燈。路燈坐標點數據與道路中心線數據是三維建模的基礎,對佛山石灣街道忠信路、東風路、江濱路等道路中的路燈進行采集,利用3DMax進行建模。采用CityEngine軟件通過編寫規則程序引入外部靜態模型,聯接坐標點空間數據、屬性信息、規則、路燈模型庫進行自動建模。
首先,應用GIS和CAD等技術獲取道路中心線、路燈坐標點數據,導入ArcMap中添加路燈高度、路燈樣式、路燈鄰近角字段,將對應的屬性信息添加到屬性表中。其次,在3DMax中建立與實際相同的路燈模型,然后在CityEngine中編寫批量自動生成路燈三維模型的程序,并批量自動生成模型;其中通過幾何創建函數引入外部靜態模型,先初始化路燈的樣式、大小、方向,然后在建模過程中將路燈坐標點屬性表的信息作為實際參數傳遞給初始化的參數,使路燈的真實樣式、大小、方向等信息表現出來,以達到與真實一致。最后,在CityEngine中批量單棟導出obj格式的路燈模型,然后在3DMax中運行批量導入obj格式模型的插件(MaxScript腳本)導入模型,將導入的三維模型數據進行場景整合和格式轉換,最終導入到SuperMap 8c或Skyline三維平臺中,總體流程如圖1所示。
運用3DMax強大的建模功能進行三維建模,建模的過程中綜合運用拉伸、分割、旋轉、對齊及布爾運算等技術,把路燈的模型做到與實物一樣,并注意各個路燈模型的尺寸大致一樣。3DMax中建立的路燈模型如圖2所示。
在模型導出前,將模型的軸點中心坐標值統一設置為(0,0,h/2),其中h為模型的高度,朝向均為正北方向;最后模型導出為obj格式,名稱依次為1至12。
1.2.1 提取路燈坐標點與道路中心線
在城市三維建模中,通??蛻魰峁┙J噶炕A數據,例如建筑點、線、面數據,道路中心線,交通點、線、面數據,水系點、線、面數據等,CAD數據如圖3與圖4所示。如果原始數據是CAD數據,需要提取道路中心線數據與路燈坐標點數據;然后添加到ArcMap中分別保存為shp格式,并添加空間參考,本文采用UTM84投影坐標系。

圖1 批量建模流程

圖2 路燈模型庫

圖3 CAD圖層管理

圖4 CAD道路中心點與路燈坐標點
在路燈坐標點數據的屬性表中,添加路燈高度、路燈樣式、路燈鄰近角字段,并對照外業采集的相片與路燈模型庫中的路燈進行對照,把對應路燈模型的樣式代碼作為屬性值添加到路燈樣式屬性中,同時將路燈的真實高度錄入到路燈高度屬性中。路燈坐標點屬性表中需添加的字段如表1所示。
在冠詞選擇參數的基礎上,Ionin 等提出波動假說,認為普遍語法在二語習得中具有完全可及性,如果母語中缺少冠詞系統,二語學習者在開始習得冠詞時會在兩種參數值之間波動,直到足夠的二語輸入使其可以設定正確的參數值,從而完全習得冠詞[9]16 。

表1 路燈坐標點屬性表添加的字段
1.2.2 判斷空間關系
判斷路燈坐標點與道路中心的空間關系,將道路中心線作為路燈坐標點的鄰近要素,計算路燈坐標點的鄰近角,如圖5所示,并把鄰近角作為屬性值添加到路燈坐標點的屬性表中。在批量自動建模過程中利用鄰近角來確定路燈的方向。注意:鄰近角以正東方向為正軸方向,逆時針為正,順時針為負。
基于CityEngine參數化批量自動建模是計算機程序三維建模,路燈模型的批量生成依賴于CGA規則程序的幾何函數。采用CGA規則中的幾何創建函數,引入外部的靜態模型,并根據路燈坐標點、路燈樣式屬性值確定路燈的樣式。引入前的靜態模型在3DMax中的朝向為正北方向,在CityEngine中場景坐標系y軸以正北方向為正軸方向,同樣逆時針為正,順時針為負。采用幾何變換函數調整路燈模型的大小,設置模型的偏移量,根據鄰近角調整路燈的方向。批量自動生成模型的流程如圖6所示。

圖5 計算路燈坐標點要素的鄰近角

圖6 批量生成路燈模型步驟
CityEngine中模型的旋轉角度計算過程(相對于正北方向)為:
批量建模過程中主要用到的函數如表2所示。
1)設置路燈樣式: 在CGA規則中初始化路燈樣式,生成模型前聯接路燈坐標點表示路燈樣式的屬性字段,建模時路燈坐標點中代表路燈樣式的屬性值作為實際參數確定路燈的樣式;
AttrLAMP_STYLE=1
importLamp-->
i(getObj(LAMP_STYLE))

表2 主要用到的幾何函數
2)設置路燈的高度: 在CGA規則中初始化路燈的高度,生成模型前聯接路燈高度字段,批量建模時路燈坐標點的高度屬性數據作為實際參數確定路燈的高度信息。
AttrLAMP_HEIGHT=10
importLamp_heitht-->
s(x,LAMP_HEIGHT,z)
3)設置路燈的旋轉角度: 在CGA規則中初始化路燈的鄰近角,聯立路燈坐標點的鄰近角,計算路燈模型的旋轉角度angle_z,建模時路燈點屬性數據鄰近角作為實際參數確定路燈的旋轉角度。
AttrNEAR_ANGLE =10
angle_z=NEAR_ANGLE-90
importLamp_heitht-->
rotate(rel, world, 0,angle_z, 0)
將預處理完成的shp格式的路燈坐標點數據導入CityEngine中,選擇路燈點并關聯路燈點的路燈樣式、路燈高度、鄰近角字段,然后運行CGA批量建模規則程序,批量生成路燈三維模型。建模程序依次讀取每一個shp點以及對應的屬性信息(路燈樣式、路燈高度、鄰近角),根據路燈點的屬性信息獲取對應樣式,生成對應高度的路燈,并且根據鄰近角調整路燈的角度,路燈的燈臂與道路中心線垂直。采用該方法對實驗區佛山石灣街道忠信路、東風路、江濱路等道路的路燈進行建模,批量生成的路燈模型如圖7所示,路燈模型的生成效率高,模型的結構基本一致,路燈的朝向與實際幾乎相符。

圖7 CityEngine批量生成三維路燈模型
數字三維城市建設中,在三維平臺(例如:SuperMap 8c或Skyline)中構建三維場景,通常需要在3DMax中將三維場景分別轉換為fbx格式或.x與xp2格式的數據,然后再導入到三維平臺中。由于三維平臺中導入三維場景數據格式的要求,所以本文批量自動建立的路燈模型最終需要導入到3DMax進行格式轉換,所以在CityEngine批量建模的模型需要全部導出。然后使用批量導入obj格式模型的插件將文中圖7的路燈模型導入到3DMax中,如圖8所示,路燈模型可以直接進行修改,能夠更高效地為三維平臺構建三維場景提供三維數據,并可方便地進行數據共享和重復利用。

圖8 3DMax批量導入的路燈三維模型
綜上所述,本文以二維城市測繪數據的空間信息和屬性信息為建?;A,通過分析路燈坐標點與道路中心線的空間關系,采用鄰近角來控制路燈的方向,編制批量自動生成路燈三維模型的CGA程序,將二維數據的屬性信息與程序中設置的參數建立聯接關系,控制模型的樣式、大小及方向,其程序方法簡單,實現成本低,建模效率高,同時在路燈坐標點上建立路燈模型提高模型位置的精度;然后使用編制的模型導入插件,將模型導入到3DMax軟件中進行場景整合與格式轉換,更高效地為三維平臺中提供三維場景數據。
本文提出的基于3DMax與CityEngine的城市道路路燈批量建模與擺放方法可以更充分利用路燈坐標點二維數據的空間信息和屬性信息,并對路燈三維模型的樣式、大小及方向進行有效控制,快速批量自動生成坐標更為準確的路燈三維模型;為三維城市建設中道路附屬設施路燈的批量自動建模提供了實用、低成本、高效率的解決方案。但該方法對城市道路附屬設施中具有文字信息,如路牌的三維建模仍具有局限性。
[1] 黃飛龍. 城市道路照明管理規劃系統中路燈自動配置算法和照明評價模型[J]. 測繪科學技術學報,2011,28(3):231-234.
[2] 楊建華. 新建城市總體規劃中路燈照明專項規劃思路探討——以貴安新區路燈照明專項規劃為例[J]. 中外建筑,2016(10):84-90.
[3] 萬劍華,陶為翔,劉國慶. 基于WebGIS和GSM短消息的城市路燈智能管理設計[J]. 測繪工程,2007,16(3):52-55.
[4] 朱慶. 三維GIS及其在智慧城市中的應用[J]. 地球信息科學學報,2014,16(2):151-157.
[5] 戴彬,鐘若飛,胡競. 基于車載激光掃描數據的城市地物三維重建研究[J]. 首都師范大學學報(自然科學版),2011,32(3):89-96.
[6] 孫偉利. 基于車載LiDAR技術的公路三維建模與應用[D].北京:首都師范大學,2013.
[7] 朱紅,張正鵬. 車載LiDAR點云數據分割與半自動化建模方法[J]. 國土資源遙感,2014,26(1):47-51.
[8] 張西童,劉會云,李永強,等. 車載LiDAR場景中路燈的提取與識別[J]. 測繪工程,2016,25(9):50-54.
[9] 趙雨琪, 牟乃夏, 張靈先. 利用CityEngine進行三維校園參數化精細建模[J]. 測繪通報, 2017(1): 83-86,111.
[10] 劉茂華,楊洋,岳強. CityEngine與ArcGIS結合的輔助道路規劃設計[J]. 測繪通報,2016(12):64-67,95.
[11] 呂永來,李曉莉. 基于CityEngine平臺的高速鐵路建模方法的研究與實現[J]. 測繪,2013,36(1):19-22.
[12] 陳秋曉,張斌,吳寧,等. 城市道路參數化建模規則初探[J]. 建筑與文化,2013(7):40-41.
[13] 謝衍憶,黃良平,陳元增,等. 基于CityEngine的城市三維快速建模方法及應用[J]. 地理空間信息,2016,14(2):39-40.