郭 建 忠,謝 明霞,,李 柱 林
(1.信息工程大學測繪學院,河南鄭州 450052;2.75719部隊,湖北武漢 430074)
基于線緩沖區分析的街區合并方法
郭 建 忠1,謝 明霞1,2,李 柱 林2
(1.信息工程大學測繪學院,河南鄭州 450052;2.75719部隊,湖北武漢 430074)
制圖綜合不僅是地圖學的核心理論和方法之一,而且始終是地圖學家關注的焦點問題[1]。居民地街區綜合是制圖綜合的關鍵部分,而面要素合并是居民地街區綜合的一個重要環節[2]。當相鄰街區的鄰近邊的最大距離小于規定指標時進行合并,街區合并效果的好壞在于合并后的街區能否保持原有街區的輪廓特征[3]。研究一種合理的面要素合并算法是一項具有價值和挑戰性的工作。
定義1:面要素相鄰邊 分別構造面A和面B的某條邊lA和lB緩沖距離為d的緩沖區PA和PB,若PA和PB的交集不為空,則稱lA和lB為面A和B的相鄰邊。
定義2:合并點 某一面要素相鄰邊lA的鄰邊與另一相鄰邊lB的交點稱為合并點,若lA與其鄰邊的夾角小于設定閾值,則過lA的端點作其垂線,垂線與lB的交點也稱為合并點。
在對街區數據進行合并處理前,需對原始的街區數據進行預處理,刪除原始數據中存在的對街區合并無意義的冗余數據。根據街區輪廓多成直角轉折、邊線大多平行的特點,計算街區數據中相鄰三點構成的折角的大小來判斷是否為冗余點。具體步驟如下:
(1)依次存儲構成街區的各頂點數據P1,P2,…,Pn。
(2)獲取某一頂點Pi的兩相鄰頂點:

以頂點Pi為中間點,計算由Pi及其兩相鄰點構成的倒角θ的大小。
(3)若θ∈[5°,175°],保留頂點Pi;反之,將Pi標記為冗余點。
(4)重復步驟2、3,直至所有點判斷完畢。去除所有被標記的冗余點,由剩余點按原順序構成街區。
街區間相鄰邊定義的恰當與否是合理進行街區合并的關鍵所在。街區間相鄰邊的定義不僅要正確反映客觀現實和主觀判斷,而且要方便計算獲取。街區相鄰邊獲取步驟如下:
(1)根據去除冗余點后的點數據,獲取街區A和B所有邊數據lAi(i=1,2,…,nA)和lBj(j=1,2,…,nB)。
(2)構造街區B的所有邊lBj(j=1,2,…,nB)的緩沖區范圍為d的緩沖區域PBj(j=1,2,…,nB)。
(3)構造街區A的某條邊lAi緩沖區范圍為d的緩沖區域PAi,若PAi∩PBj≠?(j=1,2,…,nB),則lAi和lBj為相鄰邊,將其加入相鄰邊集合NE。
(4)重復步驟3,直至街區A的所有邊判斷完畢;若相鄰邊集合中的個數大于2,獲取NE中各相鄰邊的面歸屬,根據歸屬獲取兩個鄰邊集合NEA和NEB。
(5)計算集合NEA包含的鄰邊與NEB包含的鄰邊之間的端點距離和d=dis(lNEAi,lNEBi)(i=1,2,…,nNEA,j=1,2,…,nNEB),最小d值對應的兩條鄰邊即為街區A和B的相鄰邊lNEA和lNEB。
相鄰街區合并時,需要有中間點(街區合并點)將其點數據連通。根據所獲取的相鄰街區的相鄰邊計算街區合并點時,可以總結為以下3種情況:
(1)街區A和B的相鄰邊lNEA和lNEB中的短邊與其兩鄰邊l1和l2的夾角均在[75°,90°]范圍內。求解短邊兩鄰邊l1和l2的延長線與相鄰邊lNEA和lNEB中的長邊的交點,若交點在長邊延長線上,判斷相鄰邊lNEA和lNEB中的長邊與其兩鄰邊的夾角;同理,根據所述情況,求解相應交點,兩個不在延長線上的交點即為街區A和B的合并點。
(2)街區A和B的相鄰邊lNEA和lNEB中的短邊與其兩鄰邊l1和l2的夾角均小于75°。過相鄰邊lNEA和lNEB中短邊的兩頂點作其垂線,求取該線與長邊的交點,若交點在長邊延長線上,判斷相鄰邊lNEA和lNEB中的長邊與其兩鄰邊的夾角;同理,求解相應交點,兩個不在延長線上的交點即為街區A和B的合并點。
(3)街區A和B的相鄰邊lNEA和lNEB中的短邊與其兩鄰邊l1和l2的夾角大小分別屬于[75°,90°]和(0°,75°)。獲取相鄰邊lNEA和lNEB中短邊的兩鄰邊中與其夾角小于75°的鄰邊與短邊的交點,過該交點作短邊垂線,求其與長邊的交點;同時求解短邊另一鄰邊的延長線與長邊的交點,若交點在長邊延長線上,判斷相鄰邊lNEA和lNEB中的長邊與其兩鄰邊的夾角;同理,根據所述情況,求解相應交點,兩個不在延長線上的交點即為街區A和B的合并點。
構造街區合并面時,首先按照以相鄰邊lNEA和lNEB的頂點作為相應街區面數據的首末節點的原則,按逆時針或順時針的順序調整構成街區的各節點。判斷兩合并點的歸屬,會出現以下兩種情況:
(1)兩合并點均在面相鄰邊lNEA和lNEB的長邊上。在街區B的節點鏈表尾端追加由末節點所在的鄰邊計算得到的合并點P2,計算面相鄰邊lNEA中兩頂點A1和A2與合并點P1和P2的距離,若dA1P1>dA1P2,則在鏈表中追加點A1,反之,追加點A2。判斷追加點后的節點鏈表的末節點是否為街區A的節點鏈表的首或末節點,若為首節點,則順序追加街區A節點鏈表中的各節點,若為末節點,則倒序追加街區A節點鏈表中的各節點。
(2)兩合并點分別在面相鄰邊lNEA和lNEB上。首先判斷面相鄰邊lNEB中與lNEA相交的鄰邊,獲取該鄰邊與lNEB的交點,將該交點作為街區B節點鏈表中的末節點,以lNEB中另一點作為首節點重新構造街區B的節點鏈表,追加相鄰邊lNEB的鄰邊與lNEA的交點P1,判斷面相鄰邊lNEA中與lNEB相交的鄰邊,獲取該鄰邊與lNEA的交點,追加lNEA中不同于該交點的端點。同理,判斷追加點后的節點鏈表的末節點是否為街區A的節點鏈表的首或末節點,若為首節點,則順序追加街區A節點鏈表中的各節點,若為末節點,則倒序追加街區A節點鏈表中的各節點。
基于線緩沖區分析的街區合并流程如圖1所示。當同時合并多個街區要素時,可以對此流程進行循環處理。

圖1 街區合并流程
選取某地區1∶10 000部分居民地數據作為實驗數據,綜合目標比例尺為1∶50 000,街區合并前后的對比情況如圖2所示,合并后街區輪廓上的小毛刺需通過輪廓概括進行去除。從圖2中可以看出,合并后的街區保持了原有街區的分布特征,并遵循了街區輪廓多成直角轉折、邊線大多平行的原則,驗證了本文設計的鄰近邊定位方法和構面規則的正確性。

圖2 街區合并前后對比
[1] 王家耀.普通地圖制圖綜合原理[M].北京:測繪出版社,1992
[2] 郭仁忠,艾廷華.制圖綜合中建筑物多邊形的合并與化簡[J].武漢測繪科技大學學報,2000,25(1):25-30.
[3] 錢海忠,武芳,朱鯤鵬,等.一種基于降維技術的街區綜合方法[J].測繪學報,2007,36(1):102-107.