陳潤(rùn)華
摘 要:文章針對(duì)數(shù)字城市三維建模的需求,提出了使用FME結(jié)合三維矢量線和航片進(jìn)行快速建模的方法,介紹了實(shí)現(xiàn)過(guò)程。
關(guān)鍵詞:FME;三維矢量線;航片;建模
1 概述
雖以Smart3D為代表的利用照片建模的三維重建技術(shù)正在迅速普及,但受限于使用此種方法得到的場(chǎng)景模型尚未實(shí)現(xiàn)模型單體化,在需要制作精細(xì)模型的項(xiàng)目中,仍然使用屋頂三維線結(jié)合航片影像生成模型的技術(shù)。
2 總體流程設(shè)計(jì)
3 實(shí)現(xiàn)過(guò)程
3.1 準(zhǔn)備源數(shù)據(jù)。提取第三方航測(cè)軟件生成的空三成果,整理成CSV格式文件方便在FME中使用,整理好的文件格式如下:外方位元素文件:相片文件路徑,X,Y,Z,Phi,Omega,Kappa。測(cè)區(qū)參數(shù)文件:相機(jī)焦距,像主點(diǎn)x0,像主點(diǎn)y0,相片高(像素),相片寬(像素),像素大小,地面分辨率。準(zhǔn)備屋頂三維矢量線和DEM文件。
3.2 檢查、處理屋頂矢量線
首先對(duì)屋頂矢量線做必要的檢查,包括檢查不閉合的面、檢查面邊界是否有弧、重復(fù)頂點(diǎn)、面自相交、面重疊等。針對(duì)圖形規(guī)范的檢查和自動(dòng)處理,可以使用GeometryValidator轉(zhuǎn)換器。
人工采集屋頂矢量線的過(guò)程中,容易出現(xiàn)因捕捉不到位造成的頂點(diǎn)間以及點(diǎn)線間的縫隙,需要對(duì)其進(jìn)行一定容差內(nèi)的規(guī)范處理,包括二三維捕捉和給人字形屋頂加中線。其中人字形屋頂?shù)乃许旤c(diǎn)不在同一個(gè)平面上,屬于不規(guī)范圖形。但因?yàn)榇祟愐剌^多,如果采集過(guò)程中分別采集兩個(gè)屋頂面,會(huì)嚴(yán)重降低作業(yè)效率。可以在FME處理過(guò)程中針對(duì)此類圖形自動(dòng)添加屋脊線,將其分隔成兩個(gè)面。
3.3 檢查屋頂線與相片是否重合
使用InsidePointReplacer轉(zhuǎn)換器得到各屋頂投影面的中心點(diǎn),使用NeighborFinder轉(zhuǎn)換器求出離各屋頂面中心點(diǎn)最近的相片文件,然后根據(jù)攝影測(cè)量專業(yè)的共線條件方程,將矢量線的各頂點(diǎn)坐標(biāo)計(jì)算到相片坐標(biāo),然后輸出到FME Data Inspector中查看。在Inspector轉(zhuǎn)換器中按相片全路徑分組,矢量線對(duì)應(yīng)的相片路徑會(huì)直接顯示在FME Data Inspector數(shù)據(jù)列表的節(jié)點(diǎn)上,可以更方便的檢查。若屋頂線與相片不套合,最常見(jiàn)的原因是相片的外方位元素不規(guī)范,航測(cè)條帶轉(zhuǎn)向后坐標(biāo)系正方向未保持一致。程序提供根據(jù)航帶號(hào)的奇偶性進(jìn)行自動(dòng)糾正的功能。
3.4 獲取底面
源數(shù)據(jù)確認(rèn)無(wú)誤后,使用SurfaceDraper轉(zhuǎn)換器將每個(gè)屋頂面投影到DEM上,得到對(duì)應(yīng)的底面。但通常每幢房屋范圍內(nèi)的DEM的高度都是不相等的,而最終房屋模型底面各頂點(diǎn)的高程就有不同的選擇。最常見(jiàn)的要求是整幢房屋底都是平的,其次是要求房屋各頂點(diǎn)都正好貼到地表,最復(fù)雜的要求是對(duì)房屋邊線進(jìn)行頂點(diǎn)內(nèi)插,使得整條線都貼合在地表上。第二種情況處理最簡(jiǎn)單,但是生成的模型從側(cè)面看就會(huì)不美觀。第三種會(huì)造成底面邊線生成過(guò)多頂點(diǎn),不僅會(huì)極大增加模型的體積,還會(huì)嚴(yán)重影響側(cè)面紋理效果。第一種要求需要統(tǒng)計(jì)投影面各頂點(diǎn)的Z值,根據(jù)需要取最小值、最大值或平均值。
3.5 掏空模型
掏空模型指對(duì)同一幢房屋(投影面相鄰或重疊)的各部分進(jìn)行體布爾運(yùn)算,刪除體內(nèi)部表面,只保留最外部表面。此步驟可以使用FME Store上共享的SolidDissolver轉(zhuǎn)換器完成。
3.6 裁切紋理
根據(jù)共線方程求出矢量線各頂點(diǎn)在相片上的坐標(biāo)后,使用PointConnector轉(zhuǎn)換器將點(diǎn)重新連接成面,然后使用Clipper轉(zhuǎn)換器裁切離面中心點(diǎn)最近的相片得到紋理。
3.7 處理紋理
因?yàn)椴们械玫降募y理是相片坐標(biāo),需要根據(jù)原屋頂線的所有頂點(diǎn),使用AffineWarper轉(zhuǎn)換器將其糾正回空間直角坐標(biāo)。程序根據(jù)實(shí)際需求,提供了紋理最大像素限制和紋理轉(zhuǎn)正的功能。因?yàn)槌R?jiàn)的三維平臺(tái)對(duì)紋理像素有限制,可以使用RasterResampler轉(zhuǎn)換器進(jìn)行重采樣。另外因?yàn)榧y理柵格文件是正矩形,當(dāng)屋頂面的斜外接矩形與正南正北方向存在一定角度時(shí),會(huì)存在多余的紋理。使用BoundingBoxReplacer轉(zhuǎn)換器得到屋頂面斜外接矩形,求出旋轉(zhuǎn)角后同時(shí)將屋頂面和已裁切的紋理旋轉(zhuǎn)至水平方向并再次裁切,得到轉(zhuǎn)正后紋理。紋理轉(zhuǎn)正不會(huì)影響模型效果,卻能有效的減少紋理文件大小。
3.8 輸出模型
使用AppearanceSetter轉(zhuǎn)換器對(duì)屋頂貼紋理。因?yàn)轫斆?、?cè)面是分開(kāi)的要素,為保證輸出后一幢房屋為一個(gè)模型對(duì)象,可以使用Aggregator轉(zhuǎn)換器聚合同幢房屋的頂面和側(cè)面。
3.9 使用自定義轉(zhuǎn)換器分組處理
在最初測(cè)試中發(fā)現(xiàn),當(dāng)紋理數(shù)量較多時(shí)程序的處理效率非常慢,經(jīng)檢查發(fā)現(xiàn)主要原因是紋理糾正步驟使用的AffineWarper轉(zhuǎn)換器目前在FME中沒(méi)有提供原生的分組處理功能。后將紋理糾正步驟保存成自定義轉(zhuǎn)換器,使用自定義轉(zhuǎn)換器提供的分組功能實(shí)現(xiàn)并行處理。對(duì)比后發(fā)現(xiàn),分組并行處理1000個(gè)紋理的效率是單進(jìn)程處理的30倍以上。
4 結(jié)束語(yǔ)
整個(gè)處理流程共405個(gè)轉(zhuǎn)換器,相比完全用代碼實(shí)現(xiàn),F(xiàn)ME提供的方案實(shí)在是簡(jiǎn)單、易用、可靠。在實(shí)際使用中,搭配多核CPU計(jì)算機(jī),使用FME的并行處理功能,可以極大的提高處理效率,完全滿足實(shí)際需求。
參考文獻(xiàn)
[1]張劍清,潘勵(lì),王樹(shù)根.攝影測(cè)量學(xué)[M].武漢:武漢大學(xué)出版社,2000.
[2]李永泉,韓文泉,黃志洲.數(shù)字城市三維建模方法比較分析[J].現(xiàn)代測(cè)繪,2010,33(2).