郭 建 忠,謝 明霞,,李 柱 林
(1.信息工程大學(xué)測繪學(xué)院,河南鄭州 450052;2.75719部隊,湖北武漢 430074)
基于線緩沖區(qū)分析的街區(qū)合并方法
郭 建 忠1,謝 明霞1,2,李 柱 林2
(1.信息工程大學(xué)測繪學(xué)院,河南鄭州 450052;2.75719部隊,湖北武漢 430074)
制圖綜合不僅是地圖學(xué)的核心理論和方法之一,而且始終是地圖學(xué)家關(guān)注的焦點問題[1]。居民地街區(qū)綜合是制圖綜合的關(guān)鍵部分,而面要素合并是居民地街區(qū)綜合的一個重要環(huán)節(jié)[2]。當相鄰街區(qū)的鄰近邊的最大距離小于規(guī)定指標時進行合并,街區(qū)合并效果的好壞在于合并后的街區(qū)能否保持原有街區(qū)的輪廓特征[3]。研究一種合理的面要素合并算法是一項具有價值和挑戰(zhàn)性的工作。
定義1:面要素相鄰邊 分別構(gòu)造面A和面B的某條邊lA和lB緩沖距離為d的緩沖區(qū)PA和PB,若PA和PB的交集不為空,則稱lA和lB為面A和B的相鄰邊。
定義2:合并點 某一面要素相鄰邊lA的鄰邊與另一相鄰邊lB的交點稱為合并點,若lA與其鄰邊的夾角小于設(shè)定閾值,則過lA的端點作其垂線,垂線與lB的交點也稱為合并點。
在對街區(qū)數(shù)據(jù)進行合并處理前,需對原始的街區(qū)數(shù)據(jù)進行預(yù)處理,刪除原始數(shù)據(jù)中存在的對街區(qū)合并無意義的冗余數(shù)據(jù)。根據(jù)街區(qū)輪廓多成直角轉(zhuǎn)折、邊線大多平行的特點,計算街區(qū)數(shù)據(jù)中相鄰三點構(gòu)成的折角的大小來判斷是否為冗余點。具體步驟如下:
(1)依次存儲構(gòu)成街區(qū)的各頂點數(shù)據(jù)P1,P2,…,Pn。
(2)獲取某一頂點Pi的兩相鄰頂點:
以頂點Pi為中間點,計算由Pi及其兩相鄰點構(gòu)成的倒角θ的大小。
(3)若θ∈[5°,175°],保留頂點Pi;反之,將Pi標記為冗余點。
(4)重復(fù)步驟2、3,直至所有點判斷完畢。去除所有被標記的冗余點,由剩余點按原順序構(gòu)成街區(qū)。
街區(qū)間相鄰邊定義的恰當與否是合理進行街區(qū)合并的關(guān)鍵所在。街區(qū)間相鄰邊的定義不僅要正確反映客觀現(xiàn)實和主觀判斷,而且要方便計算獲取。街區(qū)相鄰邊獲取步驟如下:
(1)根據(jù)去除冗余點后的點數(shù)據(jù),獲取街區(qū)A和B所有邊數(shù)據(jù)lAi(i=1,2,…,nA)和lBj(j=1,2,…,nB)。
(2)構(gòu)造街區(qū)B的所有邊lBj(j=1,2,…,nB)的緩沖區(qū)范圍為d的緩沖區(qū)域PBj(j=1,2,…,nB)。
(3)構(gòu)造街區(qū)A的某條邊lAi緩沖區(qū)范圍為d的緩沖區(qū)域PAi,若PAi∩PBj≠?(j=1,2,…,nB),則lAi和lBj為相鄰邊,將其加入相鄰邊集合NE。
(4)重復(fù)步驟3,直至街區(qū)A的所有邊判斷完畢;若相鄰邊集合中的個數(shù)大于2,獲取NE中各相鄰邊的面歸屬,根據(jù)歸屬獲取兩個鄰邊集合NEA和NEB。
(5)計算集合NEA包含的鄰邊與NEB包含的鄰邊之間的端點距離和d=dis(lNEAi,lNEBi)(i=1,2,…,nNEA,j=1,2,…,nNEB),最小d值對應(yīng)的兩條鄰邊即為街區(qū)A和B的相鄰邊lNEA和lNEB。
相鄰街區(qū)合并時,需要有中間點(街區(qū)合并點)將其點數(shù)據(jù)連通。根據(jù)所獲取的相鄰街區(qū)的相鄰邊計算街區(qū)合并點時,可以總結(jié)為以下3種情況:
(1)街區(qū)A和B的相鄰邊lNEA和lNEB中的短邊與其兩鄰邊l1和l2的夾角均在[75°,90°]范圍內(nèi)。求解短邊兩鄰邊l1和l2的延長線與相鄰邊lNEA和lNEB中的長邊的交點,若交點在長邊延長線上,判斷相鄰邊lNEA和lNEB中的長邊與其兩鄰邊的夾角;同理,根據(jù)所述情況,求解相應(yīng)交點,兩個不在延長線上的交點即為街區(qū)A和B的合并點。
(2)街區(qū)A和B的相鄰邊lNEA和lNEB中的短邊與其兩鄰邊l1和l2的夾角均小于75°。過相鄰邊lNEA和lNEB中短邊的兩頂點作其垂線,求取該線與長邊的交點,若交點在長邊延長線上,判斷相鄰邊lNEA和lNEB中的長邊與其兩鄰邊的夾角;同理,求解相應(yīng)交點,兩個不在延長線上的交點即為街區(qū)A和B的合并點。
(3)街區(qū)A和B的相鄰邊lNEA和lNEB中的短邊與其兩鄰邊l1和l2的夾角大小分別屬于[75°,90°]和(0°,75°)。獲取相鄰邊lNEA和lNEB中短邊的兩鄰邊中與其夾角小于75°的鄰邊與短邊的交點,過該交點作短邊垂線,求其與長邊的交點;同時求解短邊另一鄰邊的延長線與長邊的交點,若交點在長邊延長線上,判斷相鄰邊lNEA和lNEB中的長邊與其兩鄰邊的夾角;同理,根據(jù)所述情況,求解相應(yīng)交點,兩個不在延長線上的交點即為街區(qū)A和B的合并點。
構(gòu)造街區(qū)合并面時,首先按照以相鄰邊lNEA和lNEB的頂點作為相應(yīng)街區(qū)面數(shù)據(jù)的首末節(jié)點的原則,按逆時針或順時針的順序調(diào)整構(gòu)成街區(qū)的各節(jié)點。判斷兩合并點的歸屬,會出現(xiàn)以下兩種情況:
(1)兩合并點均在面相鄰邊lNEA和lNEB的長邊上。在街區(qū)B的節(jié)點鏈表尾端追加由末節(jié)點所在的鄰邊計算得到的合并點P2,計算面相鄰邊lNEA中兩頂點A1和A2與合并點P1和P2的距離,若dA1P1>dA1P2,則在鏈表中追加點A1,反之,追加點A2。判斷追加點后的節(jié)點鏈表的末節(jié)點是否為街區(qū)A的節(jié)點鏈表的首或末節(jié)點,若為首節(jié)點,則順序追加街區(qū)A節(jié)點鏈表中的各節(jié)點,若為末節(jié)點,則倒序追加街區(qū)A節(jié)點鏈表中的各節(jié)點。
(2)兩合并點分別在面相鄰邊lNEA和lNEB上。首先判斷面相鄰邊lNEB中與lNEA相交的鄰邊,獲取該鄰邊與lNEB的交點,將該交點作為街區(qū)B節(jié)點鏈表中的末節(jié)點,以lNEB中另一點作為首節(jié)點重新構(gòu)造街區(qū)B的節(jié)點鏈表,追加相鄰邊lNEB的鄰邊與lNEA的交點P1,判斷面相鄰邊lNEA中與lNEB相交的鄰邊,獲取該鄰邊與lNEA的交點,追加lNEA中不同于該交點的端點。同理,判斷追加點后的節(jié)點鏈表的末節(jié)點是否為街區(qū)A的節(jié)點鏈表的首或末節(jié)點,若為首節(jié)點,則順序追加街區(qū)A節(jié)點鏈表中的各節(jié)點,若為末節(jié)點,則倒序追加街區(qū)A節(jié)點鏈表中的各節(jié)點。
基于線緩沖區(qū)分析的街區(qū)合并流程如圖1所示。當同時合并多個街區(qū)要素時,可以對此流程進行循環(huán)處理。
圖1 街區(qū)合并流程
選取某地區(qū)1∶10 000部分居民地數(shù)據(jù)作為實驗數(shù)據(jù),綜合目標比例尺為1∶50 000,街區(qū)合并前后的對比情況如圖2所示,合并后街區(qū)輪廓上的小毛刺需通過輪廓概括進行去除。從圖2中可以看出,合并后的街區(qū)保持了原有街區(qū)的分布特征,并遵循了街區(qū)輪廓多成直角轉(zhuǎn)折、邊線大多平行的原則,驗證了本文設(shè)計的鄰近邊定位方法和構(gòu)面規(guī)則的正確性。
圖2 街區(qū)合并前后對比
[1] 王家耀.普通地圖制圖綜合原理[M].北京:測繪出版社,1992
[2] 郭仁忠,艾廷華.制圖綜合中建筑物多邊形的合并與化簡[J].武漢測繪科技大學(xué)學(xué)報,2000,25(1):25-30.
[3] 錢海忠,武芳,朱鯤鵬,等.一種基于降維技術(shù)的街區(qū)綜合方法[J].測繪學(xué)報,2007,36(1):102-107.