本發(fā)明屬于電力線路設(shè)計(jì)的技術(shù)領(lǐng)域,具體地涉及一種傾斜測量場景的地物提取方法,其在保證數(shù)據(jù)精度和地物輪廓準(zhǔn)確度前提下,能夠從傾斜測量場景自動(dòng)提取房屋樹木等地物。
背景技術(shù):
傾斜攝影三維建模技術(shù)及應(yīng)用是近年來測繪領(lǐng)域關(guān)注的熱點(diǎn),由于其數(shù)據(jù)精度高、地表覆蓋全面等突出優(yōu)點(diǎn)廣泛應(yīng)用于智慧城市、智慧水利、智慧旅游等各方面。本發(fā)明主要涉及其在電力線路設(shè)計(jì)方面的應(yīng)用。
電力線路設(shè)計(jì)中要求獲取線路走廊范圍內(nèi)的房屋、樹木、道路等交叉跨越地物信息,測量這些地物到電力線、桿塔等的距離,根據(jù)量測結(jié)果合理選擇桿塔位置、桿塔型號(hào)、架線參數(shù)等以保證滿足電力線路設(shè)計(jì)規(guī)范的校核要求。然而傾斜測量的原始數(shù)據(jù)一般采用自動(dòng)化方式生成三維場景成果,由于其生成機(jī)理,得到的模型是一個(gè)連續(xù)的tin(不規(guī)則三角網(wǎng))加貼圖,即地物、地形等是作為一個(gè)整體提供的,并沒有將地物劃分為可以單獨(dú)操作的對(duì)象,這種情況下是無法進(jìn)行距離校核計(jì)算的。因此,在電力線路設(shè)計(jì)中使用傾斜測量場景時(shí),首先需要對(duì)場景中的房屋、樹木等電力線路關(guān)心的地物進(jìn)行單體化處理。
目前市面上傾斜測量場景三維應(yīng)用中的地物單體化方式主要有三種:一種是在地物上疊加配套的矢量面,表面上看起來是單體效果,實(shí)際上只是簡單地查詢了建筑輪廓點(diǎn)矢量面,而非真正意義上的單體分離;二是簡單的三角面分組,將場景中原有的三角面直接區(qū)分為地物或地形,但這樣的處理會(huì)導(dǎo)致地物邊界呈現(xiàn)鋸齒狀,且不同精度等級(jí)的地物邊界不一致,極不美觀,并且當(dāng)需要將地物替換為人工制作的高精度模型時(shí)無法與地形場景實(shí)現(xiàn)無縫拼接;三是人工設(shè)定地物邊界進(jìn)行三角面切割分離地物,此種方法地物邊界比較整齊美觀,不同精度等級(jí)邊界一致,且不損傷原有數(shù)據(jù)精度。但該方法操作比較繁瑣,既費(fèi)人力,又很難達(dá)到地物輪廓精確匹配。
技術(shù)實(shí)現(xiàn)要素:
本發(fā)明的技術(shù)解決問題是:克服現(xiàn)有技術(shù)的不足,提供一種傾斜測量場景的地物提取方法,其具有較高的自動(dòng)化程度,僅需簡單操作即可獲取地物精確輪廓,具有房屋、樹木等地物真正與傾斜測量場景相分離的功能,保證了地物具有原始數(shù)據(jù)的精確度,可以方便將地物替換為人工精細(xì)建模的模型,將邊緣準(zhǔn)確拼接,可以在保留數(shù)據(jù)高精度的情況下實(shí)現(xiàn)快速加載顯示。
本發(fā)明的技術(shù)解決方案是:這種傾斜測量場景的地物提取方法,原始傾斜測量場景采用樹狀存儲(chǔ)結(jié)構(gòu)數(shù)據(jù),整個(gè)場景為根節(jié)點(diǎn),由多個(gè)場景塊子節(jié)點(diǎn)構(gòu)成,每個(gè)子節(jié)點(diǎn)除了擁有自身的三角面圖元集,還包含若干個(gè)更高精度等級(jí)場景塊子節(jié)點(diǎn),該傾斜測量場景的地物提取方法包括以下步驟:
(1)設(shè)定地物提取區(qū)域,地物提取區(qū)域?yàn)橐崛〉匚锏姆秶?,該區(qū)域由若干邊界輪廓線和若干空洞輪廓線組成,邊界輪廓線定義提取區(qū)域的外部范圍界線,空洞輪廓線定義提取區(qū)域的內(nèi)部范圍界線,用于排除區(qū)域內(nèi)不需要提取的部分,邊界以內(nèi)空洞以外的為地物提取區(qū)域;
(2)設(shè)定高度過濾面,高度過濾面是這樣一個(gè)曲面,其水平范圍由地物提取區(qū)域限制,高程隨范圍內(nèi)的地勢高低變化起伏(或者為常量),該過濾面高于背景地形且低于要提取地物主體部分的最低高度,地物高于過濾面的部分形成了一個(gè)個(gè)孤島三角面集合,將所有的孤島三角面取出并投影到水平面,其投影外輪廓為地物的邊界線;
(3)提取地物三角面圖元,根據(jù)步驟(2)取得的所有地物三角面計(jì)算地物邊界輪廓線,這里采用復(fù)合區(qū)域并集運(yùn)算的方式進(jìn)行處理;
(4)分離地物,采用步驟(3)計(jì)算所得的地物輪廓線從傾斜測量數(shù)據(jù)中提取地物,首先采用輪廓線對(duì)傾斜測量數(shù)據(jù)三角網(wǎng)進(jìn)行三角剖分,剖分后處于輪廓線內(nèi)的所有三角面為地物圖元;其次在原場景節(jié)點(diǎn)中,將當(dāng)前地物輪廓內(nèi)的所有三角面提取出來,存儲(chǔ)為單獨(dú)的地物圖元分組,并采用地物的id加以標(biāo)識(shí);
(5)地物操作,地物操作包括:獲取地物圖元數(shù)據(jù),距離計(jì)算,射線碰撞檢測地物模型相關(guān)操作,以及地物屬性信息的添加與檢索操作。
由于本發(fā)明保留原始場景數(shù)據(jù),所以可以很方便地修改或刪除地物,只需對(duì)原始場景數(shù)據(jù)按照修改后的所有相關(guān)輪廓重新切割即可。由于本發(fā)明保存了所有地物輪廓數(shù)據(jù),當(dāng)需要更換更高精度的場景數(shù)據(jù)時(shí),只需自動(dòng)讀取所有輪廓數(shù)據(jù)重新切割即可,不必再次手工設(shè)定地物輪廓。本發(fā)明采用地物輪廓提取方法獲取地物邊界,操作簡單,精確度高,且可以同時(shí)提取多個(gè)地物,在提高精確度的同時(shí)也大大提高了工作效率。由于本發(fā)明采用實(shí)際分離原始傾斜測量場景圖元的方法進(jìn)行單體化,實(shí)現(xiàn)了真正意義上的單體化。單體化后的地物作為獨(dú)立個(gè)體可以對(duì)其單獨(dú)操作,如設(shè)置與背景不同的顏色,單獨(dú)選中,獲取頂點(diǎn)數(shù)據(jù)等,滿足了電力線路設(shè)計(jì)要求。本發(fā)明采用地物輪廓線切割三角形圖元的方式,將與輪廓線相交的三角形重新構(gòu)建為多個(gè)三角形的組合,再選取輪廓線內(nèi)的三角形作為地物數(shù)據(jù),不僅保證了地物輪廓的邊緣整齊美觀,而且方便替換為更高精度、更美觀的人工模型。本發(fā)明切割原有場景的所有精度等級(jí)圖元數(shù)據(jù),切割后的地物圖元數(shù)據(jù)以圖元組形式保留在原場景節(jié)點(diǎn)內(nèi),通過地物id標(biāo)識(shí)。地物圖元組的精度等級(jí)及精度切換策略與單體化之前沒有變化,從而保證了較高的地物顯示精度與渲染速度。同時(shí)保證了在任意縮放狀態(tài)下地物邊界不變。因此,本發(fā)明具有較高的自動(dòng)化程度,僅需簡單操作即可獲取地物精確輪廓,具有房屋、樹木等地物真正與傾斜測量場景相分離的功能,保證了地物具有原始數(shù)據(jù)的精確度,可以方便將地物替換為人工精細(xì)建模的模型,將邊緣準(zhǔn)確拼接,可以在保留數(shù)據(jù)高精度的情況下實(shí)現(xiàn)快速加載顯示。
附圖說明
圖1是根據(jù)本發(fā)明的傾斜測量場景的地物提取方法的主流程圖。
圖2是本發(fā)明的復(fù)合區(qū)域的示意圖。
圖3是本發(fā)明的地物輪廓提取的流程圖。
具體實(shí)施方式
如圖1所示,這種傾斜測量場景的地物提取方法,原始傾斜測量場景采用樹狀存儲(chǔ)結(jié)構(gòu)數(shù)據(jù),整個(gè)場景為根節(jié)點(diǎn),由多個(gè)場景塊子節(jié)點(diǎn)構(gòu)成,每個(gè)子節(jié)點(diǎn)除了擁有自身的三角面圖元集,還包含若干個(gè)更高精度等級(jí)場景塊子節(jié)點(diǎn),該傾斜測量場景的地物提取方法包括以下步驟:
(1)設(shè)定地物提取區(qū)域,地物提取區(qū)域?yàn)橐崛〉匚锏姆秶?,該區(qū)域由若干邊界輪廓線和若干空洞輪廓線組成,邊界輪廓線定義提取區(qū)域的外部范圍界線,空洞輪廓線定義提取區(qū)域的內(nèi)部范圍界線,用于排除區(qū)域內(nèi)不需要提取的部分,邊界以內(nèi)空洞以外的為地物提取區(qū)域;
(2)設(shè)定高度過濾面,高度過濾面是這樣一個(gè)曲面,其水平范圍由地物提取區(qū)域限制,高程隨范圍內(nèi)的地勢高低變化起伏(或者為常量),該過濾面高于背景地形且低于要提取地物主體部分的最低高度,地物高于過濾面的部分形成了一個(gè)個(gè)孤島三角面集合,將所有的孤島三角面取出并投影到水平面;
(3)提取地物三角面圖元,根據(jù)步驟(2)取得的所有地物三角面計(jì)算地物邊界輪廓線,這里采用復(fù)合區(qū)域并集運(yùn)算的方式進(jìn)行處理;
(4)分離地物,采用步驟(3)計(jì)算所得的地物輪廓線從傾斜測量數(shù)據(jù)中提取地物,首先采用輪廓線對(duì)傾斜測量數(shù)據(jù)三角網(wǎng)進(jìn)行三角剖分,剖分后處于輪廓線內(nèi)的所有三角面即為地物圖元;其次在原場景節(jié)點(diǎn)中,將當(dāng)前地物輪廓內(nèi)的所有三角面提取出來,存儲(chǔ)為單獨(dú)的地物圖元分組,并采用地物的id加以標(biāo)識(shí);
(5)地物操作,地物操作包括:獲取地物圖元數(shù)據(jù),距離計(jì)算,射線碰撞檢測地物模型相關(guān)操作,以及地物屬性信息的添加與檢索操作。
由于本發(fā)明保留原始場景數(shù)據(jù),所以可以很方便地修改或刪除地物,只需對(duì)原始場景數(shù)據(jù)按照修改后的所有相關(guān)輪廓重新切割即可。由于本發(fā)明保存了所有地物輪廓數(shù)據(jù),當(dāng)需要更換更高精度的場景數(shù)據(jù)時(shí),只需自動(dòng)讀取所有輪廓數(shù)據(jù)重新切割即可,不必再次手工設(shè)定地物輪廓。本發(fā)明采用地物輪廓提取方法獲取地物邊界,操作簡單,精確度高,且可以同時(shí)提取多個(gè)地物,在提高精確度的同時(shí)也大大提高了工作效率。由于本發(fā)明采用實(shí)際分離原始傾斜測量場景圖元的方法進(jìn)行單體化,實(shí)現(xiàn)了真正意義上的單體化。單體化后的地物作為獨(dú)立個(gè)體可以對(duì)其單獨(dú)操作,如設(shè)置與背景不同的顏色,單獨(dú)選中,獲取頂點(diǎn)數(shù)據(jù)等,滿足了電力線路設(shè)計(jì)要求。本發(fā)明采用地物輪廓線切割三角形圖元的方式,將與輪廓線相交的三角形重新構(gòu)建為多個(gè)三角形的組合,再選取輪廓線內(nèi)的三角形作為地物數(shù)據(jù),不僅保證了地物輪廓的邊緣整齊美觀,而且方便替換為更高精度、更美觀的人工模型。本發(fā)明切割原有場景的所有精度等級(jí)圖元數(shù)據(jù),切割后的地物圖元數(shù)據(jù)以圖元組形式保留在原場景節(jié)點(diǎn)內(nèi),通過地物id標(biāo)識(shí)。地物圖元組的精度等級(jí)及精度切換策略與單體化之前沒有變化,從而保證了較高的地物顯示精度與渲染速度。同時(shí)保證了在任意縮放狀態(tài)下地物邊界不變。因此,本發(fā)明具有較高的自動(dòng)化程度,僅需簡單操作即可獲取地物精確輪廓,具有房屋、樹木等地物真正與傾斜測量場景相分離的功能,保證了地物具有原始數(shù)據(jù)的精確度,可以方便將地物替換為人工精細(xì)建模的模型,將邊緣準(zhǔn)確拼接,可以在保留數(shù)據(jù)高精度的情況下實(shí)現(xiàn)快速加載顯示。
另外,所述步驟(1)中,設(shè)定地物提取區(qū)域包括:手工選取邊界輪廓線及空洞輪廓線,初次提取地物時(shí)通過在三維場景中逐個(gè)選取轉(zhuǎn)角點(diǎn),定義若干封閉多線段,封閉多線段為輪廓線,每個(gè)輪廓線代表區(qū)域的一個(gè)邊界或空洞,一個(gè)邊界及其內(nèi)部若干空洞定義一個(gè)連續(xù)區(qū)域,所有的輪廓線為簡單多邊形,同一個(gè)多邊形的任意兩條線段之間不存在相交情況,任意兩個(gè)輪廓線不相交;二是從文件加載預(yù)存的區(qū)域數(shù)據(jù),手工定義的提取區(qū)域數(shù)據(jù)保存到文件中,需要再次使用時(shí)從文件加載并直接作用于傾斜測量場景。
另外,所述步驟(2)中,高度過濾面分為平地高度過濾面和山地高度過濾面兩種;若地物所處地形為平地或地物主體部分遠(yuǎn)高于地面及地面上的微小起伏,采用水平面作為過濾面,根據(jù)區(qū)域邊界輪廓線和空洞輪廓線構(gòu)造三角網(wǎng),且三角網(wǎng)上的所有頂點(diǎn)都設(shè)為同一個(gè)高度,該平面為提取區(qū)域的平地高度過濾面;若地物所處地形不夠平整,或者地物主體高度較低,不容易與地面突起相區(qū)分,采用由用戶定義的山地高度過濾面,該過濾面隨地勢起伏變化,首先將上一步定義提取區(qū)域的邊界輪廓線和空洞輪廓線按一定的水平間隔進(jìn)行插值處理,再查詢傾斜測量數(shù)據(jù)獲取每一個(gè)點(diǎn)的高程,由操作人員通過鼠標(biāo)點(diǎn)選的方式添加若干地面點(diǎn),地面點(diǎn)在提取區(qū)域內(nèi)應(yīng)分布均勻且盡可能覆蓋所有地面,對(duì)于想要濾除的微小突起,也采集其頂點(diǎn),將上述所有輪廓線插值點(diǎn)和離散地面點(diǎn)合并到一起構(gòu)造不規(guī)則三角網(wǎng),此三角網(wǎng)為山地高度過濾面。
另外,對(duì)于平地高度過濾面,直接比較頂點(diǎn)高程與水平面高程;對(duì)于山地高度過濾面,采用傾斜測量數(shù)據(jù)的頂點(diǎn)水平座標(biāo)在此過濾面上查詢高度,若頂點(diǎn)高度大于過濾面高度值,則此點(diǎn)為地物頂點(diǎn),否則認(rèn)為是地面點(diǎn),將其忽略;若一個(gè)三角面的所有頂點(diǎn)都高于過濾面,則將此三角面標(biāo)記為地物三角面。
另外,所述步驟(3)中,采用復(fù)合區(qū)域并集運(yùn)算的方式為:
(a)將復(fù)合區(qū)域a與b分別作規(guī)范化處理,將邊界輪廓線處理為頂點(diǎn)按逆時(shí)針排列的封閉多線段,將空洞輪廓線處理為頂點(diǎn)按順時(shí)針排列的封閉多線段;
(b)計(jì)算區(qū)域a中的每一條輪廓線與區(qū)域b中的每一條輪廓線的交點(diǎn),并將每個(gè)交點(diǎn)分別記錄在兩個(gè)輪廓線結(jié)構(gòu)內(nèi),每個(gè)交點(diǎn)采用全局唯一交點(diǎn)號(hào)標(biāo)識(shí);
(c)按照交點(diǎn)將每條輪廓線拆分為若干多線段,每條多線段記錄其起止交點(diǎn)號(hào),所有多線段按其原先所屬區(qū)域分別歸入a、b兩個(gè)多線段組;
(d)過濾多線段,采用區(qū)域b過濾a組多線段,剔除處于區(qū)域b中的多線段,保留處于b外部的多線段;同理采用區(qū)域a過濾b組多線段;
(e)根據(jù)起止交點(diǎn)號(hào)從ab兩組中交替取出多線段進(jìn)行拼接,形成新的輪廓線;
(f)構(gòu)造并集復(fù)合區(qū)域c,將步驟(e)取得的輪廓線加入此區(qū)域,逆時(shí)針排列的輪廓線標(biāo)記為邊界,順時(shí)針排列的輪廓線標(biāo)記為空洞;
(g)獲取復(fù)合區(qū)域c中的所有最外層邊界輪廓線,作為地物邊界線。
另外,所述步驟(4)中,對(duì)于一個(gè)待拆分的三角面,首先計(jì)算三角形與當(dāng)前輪廓線的交點(diǎn),若無交點(diǎn)則忽略此三角形;根據(jù)交點(diǎn)將輪廓線拆分為若干多線段,保留三角形范圍內(nèi)的多線段,刪除其他多線段;將原三角形的3個(gè)頂點(diǎn)與步驟(3)獲取的若干多線段的頂點(diǎn)重新構(gòu)造三角網(wǎng),保證各個(gè)多線段作為三角形的邊出現(xiàn)在新構(gòu)造的三角網(wǎng)中,這些折線段可以被分割為若干段,但不能有缺失;三角形剖分完成后,將原三角形從場景三角網(wǎng)中刪除,代之以三角剖分生成的所有新三角形。
另外,所述步驟(4)中,對(duì)于場景圖元分組中的每個(gè)三角形,首先計(jì)算三角形水平中心點(diǎn),將三角形三個(gè)頂點(diǎn)的平面坐標(biāo)(xy)分別相加再除以3,得三角形中心點(diǎn)坐標(biāo);其次判定三角形中心點(diǎn)是否在地物輪廓內(nèi);最后分離地物圖元,如果當(dāng)前三角形在輪廓多邊形內(nèi),則將其從場景分塊的地形分組中移除,并加入到當(dāng)前地物分組中,如果不在輪廓多邊形內(nèi),則忽略。
另外,所述步驟(5)中,地物的圖元信息,從三維場景中獲取地物圖元信息需要指定地物id以及模型的精度等級(jí),從根節(jié)點(diǎn)開始逐級(jí)查詢,直到到達(dá)指定等級(jí)的節(jié)點(diǎn),若節(jié)點(diǎn)圖元數(shù)據(jù)未加載,則從相應(yīng)的數(shù)據(jù)文件加載,根據(jù)id獲取指定的圖元組,打包為需要的格式,逐級(jí)返回到根節(jié)點(diǎn)。
另外,所述步驟(5)中,射線碰撞檢測為:首先將三維圖形窗口中的鼠標(biāo)點(diǎn)擊位置轉(zhuǎn)換為三維空間中的射線,再將射線與傾斜測量場景中每個(gè)可視節(jié)點(diǎn)中的地物分組進(jìn)行碰撞檢測,若碰撞距離小于當(dāng)前最小碰撞距離,則記錄當(dāng)前點(diǎn)以及命中的三角面所屬的地物id,處理完所有的可視節(jié)點(diǎn)就得到命中的傾斜測量地物。
另外,所述步驟(5)中,距離計(jì)算為:計(jì)算電力線等帶電體與地物之間的距離,采用地物的最高精度圖元計(jì)算,對(duì)于每個(gè)地物,獲取其最高精度等級(jí)三角網(wǎng)數(shù)據(jù),依次計(jì)算這些三角面與電線的距離并取最小值。
下面結(jié)合實(shí)施例對(duì)本發(fā)明進(jìn)行詳細(xì)的描述。
原始傾斜測量場景采用樹狀存儲(chǔ)結(jié)構(gòu)數(shù)據(jù)。整個(gè)場景為根節(jié)點(diǎn),由多個(gè)場景塊子節(jié)點(diǎn)構(gòu)成。每個(gè)子節(jié)點(diǎn)除了擁有自身的三角面圖元集,還包含若干個(gè)更高精度等級(jí)場景塊子節(jié)點(diǎn)。如此逐層細(xì)分下去,直到最高等級(jí)子節(jié)點(diǎn)。場景節(jié)點(diǎn)精度等級(jí)越高,其細(xì)節(jié)越豐富,而面積范圍越小。渲染場景時(shí)根據(jù)節(jié)點(diǎn)到攝像機(jī)(代表三維場景中的觀察者)的距離決定是渲染當(dāng)前節(jié)點(diǎn)圖元集還是渲染子節(jié)點(diǎn)。
本發(fā)明提供的傾斜測量場景房屋樹木提取方法,針對(duì)以上樹狀存儲(chǔ)結(jié)構(gòu)的傾斜測量場景數(shù)據(jù)進(jìn)行地物切割分離操作,參見圖1,包括以下步驟:
1)設(shè)定地物提取區(qū)域
地物提取區(qū)域定義要提取地物的范圍,該區(qū)域由若干邊界輪廓線和若干空洞輪廓線組成。邊界輪廓線定義提取區(qū)域的外部范圍界線,空洞輪廓線定義提取區(qū)域的內(nèi)部范圍界線,用于排除區(qū)域內(nèi)不需要提取的部分(排除不需要處理的部分可以提高后續(xù)處理速度),即邊界以內(nèi)空洞以外的為地物提取區(qū)域??刹捎脙煞N方式設(shè)定地物提取區(qū)域,一是手工選取邊界輪廓線及空洞輪廓線,二是從文件加載預(yù)存的區(qū)域數(shù)據(jù)。
(1)手工定義地物提取區(qū)域
初次提取地物時(shí)可通過在三維場景中逐個(gè)選取轉(zhuǎn)角點(diǎn)定義若干封閉多線段,即輪廓線。每個(gè)輪廓線代表區(qū)域的一個(gè)邊界或空洞,一個(gè)邊界及其內(nèi)部若干空洞定義一個(gè)連續(xù)區(qū)域。所有的輪廓線應(yīng)為簡單多邊形,即同一個(gè)多邊形的任意兩條線段之間不存在相交情況。任意兩個(gè)輪廓線不應(yīng)相交。每個(gè)輪廓線應(yīng)附加屬性,以區(qū)別是邊界還是空洞。
一般情況下,定義的提取區(qū)域應(yīng)包圍地物水平投影的所有點(diǎn)且面積盡量小,以保證獲取完整且邊界正確的地物,但為了縮短人工處理時(shí)間,也可以定義比較粗糙的提取區(qū)域,而由后續(xù)的自動(dòng)處理環(huán)節(jié)進(jìn)行精細(xì)處理。另外,在電力線路設(shè)計(jì)中為減小地物與電線之間距離的計(jì)算量,提高校核速度,也可以僅選取地物中距離線路較近的一部分,這是符合電力線路設(shè)計(jì)實(shí)際情況的。
(2)使用已有地物提取區(qū)域數(shù)據(jù)
手工定義的提取區(qū)域數(shù)據(jù)可以保存到文件中,需要再次使用時(shí)從文件加載并直接作用于傾斜測量場景。特別適用于將原有場景數(shù)據(jù)更換為更高精度場景數(shù)據(jù)的情況,省去了重新逐個(gè)手工定義地物提取區(qū)域的繁瑣操作。文件中的區(qū)域數(shù)據(jù)保存了地物id,創(chuàng)建時(shí)間等信息,重新選取地物時(shí)應(yīng)以上次創(chuàng)建時(shí)相同的順序進(jìn)行。
2)設(shè)定高度過濾面
高度過濾面是這樣一個(gè)曲面,其水平范圍由地物提取區(qū)域限制,高程隨范圍內(nèi)的地勢高低變化起伏(或者為常量)。該過慮面高于背景地形(包括地面以及附著在地面上的低矮植被、車輛等),且低于要提取地物主體部分的最低高度,于是地物高于過濾面的部分就形成了一個(gè)個(gè)“孤島”,將所有的孤島三角面取出并投影到水平面,其投影外輪廓即為地物的邊界線。此種算法對(duì)于具有垂直外墻面的建筑物以及下部向內(nèi)凹陷的樹木等地物準(zhǔn)確度尤為高。
為兼顧地物提取的效率與準(zhǔn)確度,將高度過濾面分為平地和山地兩種。若地物所處地形為平地或地物主體部分遠(yuǎn)高于地面及地面上的微小起伏(植被、車輛等),可采用水平面作為過濾面。水平面的好處是判別三角面的頂點(diǎn)處于過濾面上方還是下方及其簡單快速,只要將三角面頂點(diǎn)的高度值與過慮面高度值直接作大小比較即可。具體做法是根據(jù)上一步定義的區(qū)域邊界輪廓線和空洞輪廓線構(gòu)造三角網(wǎng),且三角網(wǎng)上的所有頂點(diǎn)都設(shè)為同一個(gè)高度,即該平面為提取區(qū)域的水平投影面。
若地物所處地形不夠平整,如山坡河堤等,或者地物主體高度較低,不容易與地面突起相區(qū)分,則應(yīng)采用由用戶定義的山地高度過濾面,該過濾面隨地勢起伏變化。此種方法速度較慢,但準(zhǔn)確度高,可以省去后期對(duì)錯(cuò)誤數(shù)據(jù)的調(diào)整修正時(shí)間,總體上效率較高。具體做法為,首先將上一步定義提取區(qū)域的邊界輪廓線和空洞輪廓線按一定的水平間隔進(jìn)行插值處理,再查詢傾斜測量數(shù)據(jù)獲取每一個(gè)點(diǎn)的高程,此步驟自動(dòng)完成,無需操作人員干預(yù);由操作人員通過鼠標(biāo)點(diǎn)選的方式添加若干地面點(diǎn),地面點(diǎn)在提取區(qū)域內(nèi)應(yīng)分布均勻且盡可能覆蓋所有地面,對(duì)于想要濾除的微小突起,也應(yīng)采集其頂點(diǎn)。將上述所有輪廓線插值點(diǎn)和離散地面點(diǎn)合并到一起構(gòu)造不規(guī)則三角網(wǎng),此三角網(wǎng)即為山地高度過濾面。
過濾面構(gòu)造完成后,操作人員手工調(diào)整此過濾面高度,直至滿足如下要求:(1)所要提取的地物主體部分位于過濾面之上;(2)地面及地面突起都位于過濾面之下。若無法達(dá)到此要求,則修改提取區(qū)域使之避開無法濾除的部分,或者添加地面點(diǎn)重新構(gòu)造過濾面,直至滿足要求為止。
對(duì)于水平過濾面,直接比較頂點(diǎn)高程與水平面高程;對(duì)于山地過濾面,采用傾斜測量數(shù)據(jù)的頂點(diǎn)水平座標(biāo)在此過濾面上查詢高度。若頂點(diǎn)高度大于過濾面高度值,則此點(diǎn)為地物頂點(diǎn),否則認(rèn)為是地面點(diǎn),將其忽略。若一個(gè)三角面的所有頂點(diǎn)都高于過濾面,則將此三角面標(biāo)記為地物三角面。
3)計(jì)算地物邊界
根據(jù)上一步取得的所有地物三角面自動(dòng)計(jì)算地物邊界輪廓線。這里采用復(fù)合區(qū)域并集運(yùn)算的方式進(jìn)行處理。復(fù)合區(qū)域是指這樣的一種區(qū)域(見圖2):
(1)復(fù)合區(qū)域由至少一個(gè)獨(dú)立子區(qū)域組成;
(2)獨(dú)立子區(qū)域是指由一個(gè)連續(xù)的最外層邊界輪廓線包圍的區(qū)域;
(3)最外層邊界是指不被其他任意輪廓線包圍的邊界輪廓線;
(4)每個(gè)邊界輪廓線(不局限于最外層邊界輪廓線)可以包圍若干空洞輪廓線,空洞輪廓線必須處于邊界輪廓線內(nèi);
(5)每個(gè)空洞輪廓線內(nèi)可以包圍若干邊界輪廓線;
(6)邊界輪廓線之間不可以直接嵌套;
(7)空洞輪廓線之間不可以直接嵌套;
(8)所有輪廓線應(yīng)為簡單多邊形,所有輪廓線不得相交。
兩個(gè)復(fù)合區(qū)域(設(shè)分別為a與b)并集運(yùn)算規(guī)則如下(參見圖3):
(1)將復(fù)合區(qū)域a與b分別作規(guī)范化處理,將邊界輪廓線處理為頂點(diǎn)按逆時(shí)針排列的封閉多線段,將空洞輪廓線處理為頂點(diǎn)按順時(shí)針排列的封閉多線段;
(2)計(jì)算區(qū)域a中的每一條輪廓線與區(qū)域b中的每一條輪廓線的交點(diǎn),并將每個(gè)交點(diǎn)分別記錄在兩個(gè)輪廓線結(jié)構(gòu)內(nèi)。每個(gè)交點(diǎn)采用全局唯一交點(diǎn)號(hào)標(biāo)識(shí),此外還需點(diǎn)坐標(biāo),在當(dāng)前輪廓線交點(diǎn)中的順序號(hào)等;
(3)按照交點(diǎn)將每條輪廓線拆分為若干多線段,每條多線段記錄其起止交點(diǎn)號(hào)。所有多線段按其原先所屬區(qū)域分別歸入a、b兩個(gè)多線段組;
(4)過濾多線段。采用區(qū)域b過濾a組多線段,剔除處于區(qū)域b內(nèi)部的多線段,保留處于b外部的多線段;同理采用區(qū)域a過濾b組多線段;
(5)拼接多線段,形成新的輪廓線。具體做法為,從a組多線段中取出一條多線段a1,在區(qū)域b中查找以多線段a1終止點(diǎn)號(hào)作為起始點(diǎn)號(hào)的多線段b1,將其拼接在當(dāng)前多線段之后,并修改終止點(diǎn)點(diǎn)號(hào)為b1的終止點(diǎn)點(diǎn)號(hào),形成新的多線段a1b1;再從區(qū)域a中查找以a1b1終止點(diǎn)號(hào)為起始點(diǎn)號(hào)的多線段a2并拼接于其后,形成多線段a1b1a2。如此循環(huán)交替進(jìn)行,直到形成一條閉合多線段,即為一條合并后的輪廓線。每條使用過的多線段都要從原組中刪除。重復(fù)上述操作,直到處理完所有的多線段;
(6)構(gòu)造并集復(fù)合區(qū)域c,將步驟(5)取得的輪廓線加入此區(qū)域,逆時(shí)針排列的輪廓線標(biāo)記為邊界,順時(shí)針排列的輪廓線標(biāo)記為空洞;
(7)獲取復(fù)合區(qū)域c中的所有最外層邊界輪廓線,即為地物邊界線。
具體在本專利中,先初始化一個(gè)空的復(fù)合區(qū)域a,然后將每一個(gè)三角面作為復(fù)合區(qū)域b與a進(jìn)行并集運(yùn)算,得到并集區(qū)域c。再將區(qū)域c作為新的區(qū)域a,與下一個(gè)三角面區(qū)域b做并集運(yùn)算,如此循環(huán),直到處理完所有的三角面。提取最終運(yùn)算結(jié)果區(qū)域c中的所有最外邊界輪廓線,即為地物包絡(luò)線。
4)地物提取
采用步驟3)計(jì)算所得的地物輪廓線從傾斜測量數(shù)據(jù)中提取地物。首先采用輪廓線對(duì)傾斜測量數(shù)據(jù)三角網(wǎng)進(jìn)行三角剖分,剖分后處于輪廓線內(nèi)的所有三角面即為地物圖元。
(1)三角剖分
對(duì)于一個(gè)待拆分的三角面,首先計(jì)算三角形與當(dāng)前輪廓線的交點(diǎn),若無交點(diǎn)則忽略此三角形。根據(jù)交點(diǎn)將輪廓線拆分為若干多線段。保留三角形范圍內(nèi)的多線段,刪除其他多線段。
將原三角形的3個(gè)頂點(diǎn)與上一步獲取的若干多線段的頂點(diǎn)重新構(gòu)造三角網(wǎng)。構(gòu)造三角網(wǎng)可采用比較流行的德洛奈三角剖分法(delaunaytriangulation)。需要注意的是,要保證各個(gè)多線段作為三角形的邊出現(xiàn)在新構(gòu)造的三角網(wǎng)中,這些折線段可以被分割為若干段,但不能有缺失。
三角形剖分完成后,將原三角形從場景三角網(wǎng)中刪除,代之以三角剖分生成的所有新三角形。
以上僅為處理一個(gè)三角形的情況,需要依次處理當(dāng)前場景分塊的其他所有三角形。再依次擴(kuò)大到當(dāng)前精度等級(jí)的其他場景分塊,其他精度等級(jí)的傾斜測量場景數(shù)據(jù)。
剖分時(shí)可采用輪廓包圍框與場景分塊包圍框不相交作為快速剔除手段,而不必每個(gè)三角形都詳細(xì)計(jì)算。
(2)分離地物
在原場景節(jié)點(diǎn)中,將當(dāng)前地物輪廓內(nèi)的所有三角面提取出來,存儲(chǔ)為單獨(dú)的地物圖元分組,并采用地物的id加以標(biāo)識(shí)。此圖元分組即為地物在當(dāng)前場景節(jié)點(diǎn)中的圖元分組。
對(duì)于場景圖元分組中的每個(gè)三角形,執(zhí)行如下操作:
首先計(jì)算三角形水平中心點(diǎn)。將三角形三個(gè)頂點(diǎn)的平面坐標(biāo)(xy)分別相加再除以3,即可得三角形中心點(diǎn)坐標(biāo)。
其次判定三角形中心點(diǎn)是否在地物輪廓內(nèi)?;舅惴椋簶?gòu)造一條原點(diǎn)為三角形中心點(diǎn),且方向?yàn)?1,0)的射線。計(jì)算射線與地物輪廓多邊形相交的情況,每當(dāng)射線與多邊形的一條邊相交時(shí),就進(jìn)行一次從內(nèi)到外的轉(zhuǎn)換或者相反的轉(zhuǎn)換。記錄跟蹤穿過多邊形次數(shù)的奇偶性,穿過奇數(shù)次說明三角形中心點(diǎn)位于多邊形內(nèi),偶數(shù)次說明位于多邊形外。
最后分離地物圖元。如果當(dāng)前三角形在輪廓多邊形內(nèi),則將其從場景分塊的地形分組中移除,并加入到當(dāng)前地物分組中。如果不在輪廓多邊形內(nèi),則忽略。
依次處理當(dāng)前場景分塊的所有其他三角形。處理完成后原先場景節(jié)點(diǎn)中的圖元被分為一個(gè)地形分組和多個(gè)地物分組(分別屬于多個(gè)地物)。地物圖元分組用地物id標(biāo)記,并可以可通過地物id進(jìn)行圖元提取或設(shè)置顏色等操作。
將上述操作擴(kuò)大到當(dāng)前等級(jí)的其他場景節(jié)點(diǎn),以確保地物完整性;再擴(kuò)大到其他等級(jí)數(shù)據(jù),從而保證地物與地形數(shù)據(jù)的精度一致性。
5)地物操作
地物操作主要包括獲取地物圖元數(shù)據(jù)、距離計(jì)算、射線碰撞檢測地物模型相關(guān)操作,以及地物屬性信息的添加與檢索操作。
①獲取圖元信息
某些情況下需要使用地物的圖元信息,如將地物模型導(dǎo)出為指定格式的文件供別的程序使用等。從三維場景中獲取地物圖元信息需要指定地物id以及模型的精度等級(jí)。從根節(jié)點(diǎn)開始逐級(jí)查詢,直到到達(dá)指定等級(jí)的節(jié)點(diǎn)。若節(jié)點(diǎn)圖元數(shù)據(jù)未加載,則從相應(yīng)的數(shù)據(jù)文件加載。根據(jù)id獲取指定的圖元組,打包為需要的格式,逐級(jí)返回到根節(jié)點(diǎn)。
②射線碰撞檢測
三維線路設(shè)計(jì)中經(jīng)常需要用鼠標(biāo)選中地物以執(zhí)行其他操作。首先將三維圖形窗口中的鼠標(biāo)點(diǎn)擊位置轉(zhuǎn)換為三維空間中的射線,再將射線與傾斜測量場景中每個(gè)可視節(jié)點(diǎn)中的地物分組進(jìn)行碰撞檢測,若碰撞距離小于當(dāng)前最小碰撞距離,則記錄當(dāng)前點(diǎn)以及命中的三角面所屬的地物id,處理完所有的可視節(jié)點(diǎn)即可得到命中的傾斜測量地物(也可能命中地形或沒有點(diǎn)中任何物體)。
③距離計(jì)算
電力線路設(shè)計(jì)中導(dǎo)入地物的主要目的是計(jì)算電力線等帶電體與地物之間的距離,并與設(shè)計(jì)規(guī)范中的安全距離作比較以判別當(dāng)前設(shè)計(jì)是否合理。由于電氣校核要求精度高,因此應(yīng)該采用地物的最高精度圖元計(jì)算,即對(duì)于每個(gè)地物,獲取其最高精度等級(jí)三角網(wǎng)數(shù)據(jù),依次計(jì)算這些三角面與電線的距離并取最小值。
④附加屬性信息
對(duì)于每個(gè)地物創(chuàng)建一個(gè)屬性數(shù)據(jù)結(jié)構(gòu),采用地物id標(biāo)識(shí)。地物屬性可分為共有屬性和私有屬性兩類,共有屬性適用于每一種地物,包含地物類別、地物名稱、地物顏色、是否顯示等;私有屬性適用于某一種或幾種地物,如房屋高度、所有者、樹木高度等。地物屬性可與地物輪廓合并保存到數(shù)據(jù)文件中,以便下次讀取。
以上所述,僅是本發(fā)明的較佳實(shí)施例,并非對(duì)本發(fā)明作任何形式上的限制,凡是依據(jù)本發(fā)明的技術(shù)實(shí)質(zhì)對(duì)以上實(shí)施例所作的任何簡單修改、等同變化與修飾,均仍屬本發(fā)明技術(shù)方案的保護(hù)范圍。