一種針對相交線狀地理要素的空間剖分方法
【技術(shù)領(lǐng)域】
[0001] 本發(fā)明屬于地理信息技術(shù)與應(yīng)用領(lǐng)域,具體涉及一種基于交叉輔助點(diǎn)的相交線狀 地理要素進(jìn)行地理空間剖分的方法。
【背景技術(shù)】
[0002] 在地理信息技術(shù)與應(yīng)用領(lǐng)域中,較多涉及到最優(yōu)配置問題的解決。而最優(yōu)配置中, 首先需要考慮的是每一要素各自影響范圍的確定。如何做到合理確定每一個要素的影響范 圍?目前,運(yùn)用最多的是空間剖分方法,且相關(guān)研宄主要集中于點(diǎn)要素的空間剖分,而對基 于線狀要素的空間剖分方法研宄較少。
[0003] 王新生等提出了一種任意發(fā)生元Voronoi圖逼近方法(《基于GIS的任意發(fā)生 元Voronoi圖逼近方法》,王新生、劉紀(jì)遠(yuǎn)、莊大方、姜友華,地理科學(xué)進(jìn)展,2004, 23 (4)),針 對線要素的剖分,主要是通過將線要素離散成等間隔點(diǎn)集,然后生成任意發(fā)生元Voronoi 圖來實現(xiàn)。但該方法中難以避免交點(diǎn)被認(rèn)為同屬于多個發(fā)生元而無法生成Voronoi圖的 情況,且需借助ArcGIS平臺實現(xiàn),自動化程度較低。張輝等設(shè)計了一種構(gòu)建任意發(fā)生元 Voronoi圖的算法(《一種構(gòu)建任意發(fā)生元Voronoi圖的實用算法》,張輝、胡瑋、蒲英霞、王 結(jié)臣,地理與地理信息科學(xué),2011,27 (4))。該方法與王新生方法類似,且針對交叉線要素, 設(shè)計了一種在交點(diǎn)處將交叉線打斷并對交點(diǎn)做微量偏移的處理方法,雖避免了交點(diǎn)被認(rèn)為 同屬于多個發(fā)生元而無法生成Voronoi圖的情況,但由于交點(diǎn)的偏移處理,改變了交點(diǎn)同 屬于多個發(fā)生元的這一事實,帶來了一定的剖分誤差。此外,這兩種方法,由于是采用將線 要素離散成等間隔點(diǎn)集的方法,會對原始要素形狀造成一定的影響,且效率較低。
【發(fā)明內(nèi)容】
[0004] 為此,本發(fā)明主要針對相交線狀地理要素,提出了一種基于交叉輔助點(diǎn)的相交線 狀地理要素空間剖分方法。一方面,直接采用原始線要素的點(diǎn)作為離散點(diǎn)生成Voronoi圖, 不會改變原始要素的形狀,且執(zhí)行效率較高;另一方面,當(dāng)出現(xiàn)線要素相交情況時,通過分 別在兩個線要素中的交叉點(diǎn)位置兩側(cè)分別等比例增加兩個微量分開但視覺難以區(qū)分的輔 助點(diǎn),在不改變交點(diǎn)同屬于多個發(fā)生元的這一事實的情況下,避免了無法生成Voronoi圖 的情況,且具有較好的剖分效果。
[0005] 本發(fā)明的主要思路是:依據(jù)Voronoi分配模型的原則,將相交線狀要素離散為點(diǎn) 集;并對相交的兩線要素的交叉位置,進(jìn)行增點(diǎn)處理;再基于點(diǎn)集進(jìn)行Delaunay三角剖分 和生成Voronoi圖;對生成的Voronoi圖進(jìn)行裁剪,最后將歸屬于同一個線要素的點(diǎn)集所生 成的子區(qū)域進(jìn)行歸并,得到不同線要素各自的子區(qū)域,從而實現(xiàn)相交線狀地理要素的空間 剖分。
[0006] 本發(fā)明的具體步驟如下:
[0007] 步驟一:加載GIS線要素集合L= {l」i = 1,2, ···,!!},η為線要素的個數(shù)。
[0008] 步驟二:求取線要素集合L中不同線要素 Ip Ij間的交叉點(diǎn)C μ(Χ,y),并進(jìn)行內(nèi)插 處理,具體過程為:
[0009] (a)首先,針對線要素 Ii,讀取線要素1,上的點(diǎn)集,查找線要素1 ,上交叉點(diǎn)鄰近的 兩個點(diǎn),分別記為Ca(xa,ya),C b(xb,yb);
[0010] (b)根據(jù)下式⑴,計算待插入點(diǎn)Ijx。,y。)、Id(xd,y d)坐標(biāo),其中(X,y)為交叉點(diǎn) Cij的坐標(biāo),(X a,ya)和(xb,yb)為交叉點(diǎn)附近的兩點(diǎn)C a,Cb的坐標(biāo),(X。,y。)和(xd,yd)為待 插入點(diǎn)I。,1<!的坐標(biāo),s為步長因子,s可取10,100,1000, ... 10 n。
[0012] (c)將點(diǎn)Ia,Ib插入到線要素 I i中的點(diǎn)C a、(;之間;
[0013] (d)其次,針對該交叉點(diǎn)所在的另一線要素 Ij,重復(fù)執(zhí)行步驟(a)-(c),將生成的相 應(yīng)插入點(diǎn)插入到線要素 L中;
[0014] 步驟三:將線要素集合L離散為點(diǎn)集P= {Pi(Xi,yi) Ii = 1,2,…,幻沽為點(diǎn)要素 的個數(shù)(包含交叉輔助點(diǎn)),并使用點(diǎn)集P的"線要素"屬性來記錄該點(diǎn)所歸屬的線要素;
[0015] 步驟四:基于點(diǎn)集P,生成Delaunay三角網(wǎng)D,算法的具體過程如下:
[0016] (a)引入 3 個輔助點(diǎn) pn(xn,yn),p22 (x22 , y22),p33 (x33, y33),構(gòu)建一個初始凸殼 S, 輔助點(diǎn)坐標(biāo)可由公式(2)求得,其中MaxX/MaxY為點(diǎn)集P中最大x/y坐標(biāo)值,AvgX/AvgY為 點(diǎn)集P中x/y坐標(biāo)的平均值,MinX/MinY為點(diǎn)集P中最小x/y坐標(biāo)值。該初始凸殼S必須 包含點(diǎn)集P中的所有點(diǎn);
[0018] (b)從點(diǎn)集P中找出距離點(diǎn)?1最近的點(diǎn),將兩點(diǎn)連線成為Delaunay三角網(wǎng)的初始 基線,遵循LOP原則,然后找出第三點(diǎn),構(gòu)建第一個三角形。
[0019] (C)基于第一個三角形的另兩條基線,遵循局部優(yōu)化過程原則,分別尋找它們第3 點(diǎn)。依次循環(huán)處理所有新生成的邊,遵循局部優(yōu)化過程原則,尋找第三點(diǎn),直到所有點(diǎn)都成 為Delaunay三角網(wǎng)的點(diǎn);
[0020] 步驟五:基于Delaunay三角網(wǎng)D,生成Voronoi圖V ;
[0021] 步驟六:將點(diǎn)集P中各點(diǎn)的"線要素"屬性值,賦給包含該點(diǎn)的相應(yīng)Thicssen多邊 形心的"原線要素"屬性;
[0022] 步驟七:Voronoi圖V的裁剪處理。通過求解給定矩形范圍R(如圖層數(shù)據(jù)的最 小矩形范圍)與圖V中各Thicssen多邊形&的交集,生成裁剪后的Thicssen多邊形集合 t/。每個Thicssen多邊形&裁剪的具體步驟為:
[0023] (a)求出矩形范圍R與Thicssen多邊形&的所有交點(diǎn),并存放于點(diǎn)集D中;
[0024] (b)分別求出包含在矩形范圍R內(nèi)的Thicssen多邊形&的頂點(diǎn)和包含在 Thicssen多邊形&內(nèi)的矩形范圍R的頂點(diǎn),繼續(xù)添加到點(diǎn)集D中;
[0025] (c)將點(diǎn)集D中第一點(diǎn)再放入點(diǎn)集D中,構(gòu)成首尾相接的點(diǎn)集D ;
[0026] (d)將點(diǎn)集D按順時針或者逆時針的順序排序,由點(diǎn)集D構(gòu)成的多邊形便是裁剪后 的Thicssen多邊形t/ ;
[0027] (e)循環(huán)操作以上步驟,直至完成所有Thicssen多邊形的裁剪處理;
[0028] 步驟八:根據(jù)"原線要素"屬性,依次將Voronoi圖中具有同樣"原線要素"屬性值 的Thicssen多邊形t/合并為一個多邊形,每個多邊形區(qū)域便是一個線要素的影響范圍。
[0029] 相比于現(xiàn)有技術(shù),本發(fā)明的突出優(yōu)點(diǎn)主要表現(xiàn)在三個方面:一是本發(fā)明直接采用 原始線要素的點(diǎn)作為離散點(diǎn)生成Voronoi圖,不會改變原始線要素的形狀;二是當(dāng)線要素 相交時,本發(fā)明通過在兩個線要素中的交叉點(diǎn)位置兩側(cè)分別等比例增加兩個微量分開但視 覺難以區(qū)分的輔助點(diǎn),未改變交點(diǎn)同屬于多個發(fā)生元這一事實,避免了無法生成Voronoi 圖的情況;三是本發(fā)明的自動化程度高,現(xiàn)有技術(shù)仍需要借助ArcGIS平臺實現(xiàn)。
【附圖說明】
[0030] 圖1本發(fā)明方法的流程圖;
[0031] 圖2實驗線圖層數(shù)據(jù);
[0032] 圖3點(diǎn)集化后的線圖層數(shù)據(jù);
[0033] 圖4增點(diǎn)處理示意圖;
[0034] 圖5增點(diǎn)處理后的點(diǎn)集化線圖層數(shù)據(jù);
[0035] 圖6為生成的Delaunay三角網(wǎng)D ;
[0036] 圖7為生成的Voronoi圖V ;
[0037] 圖8將Voronoi圖V進(jìn)行裁剪后的圖V' ;
[0038] 圖9線圖層數(shù)據(jù)空間剖分的效果圖。
【具體實施方式】
[0039] 下面結(jié)合附圖并通過描述一個針對線狀地理要素的空間剖分的實例,來進(jìn)一步說 明本發(fā)明的效果。本實例選擇一 shp格式的線圖層為實驗數(shù)據(jù)。
[0040] 具體實施過程如下:
[0041] 1,打開圖層名為"道路"的線圖層文件,如圖2所示。存入線要素集合L中,本例 中集合L包含4個線要素,分別為I1, 12, 13, I4。其ID屬性分別為1,2, 3,4。
[0042] 2,求取L中不同線要素間的交叉點(diǎn)C,并進(jìn)行內(nèi)插處理,其中本實例中的4個線 要素的點(diǎn)集如圖3所示。實例中有4個交叉點(diǎn),分別為點(diǎn)C1 (-96. 07,0. 33),點(diǎn)C2 (-24. 39, 5. 74),點(diǎn)C3(-75. 71,-51.78)和點(diǎn)C4(-0.39, -42. 68)。針對每一個交叉點(diǎn),進(jìn)行內(nèi)插處 理,根據(jù)公式(1)分別求出它們所在線要素的鄰近兩個點(diǎn),本實施例中,取S = 100,求得 16個內(nèi)插點(diǎn)。以交叉點(diǎn)C1為例,基于交叉點(diǎn)C1,分別內(nèi)插出I1上的兩個點(diǎn)(-93. 36851, 0.336116),(-93. 56850,0· 32959)和 I3上的兩個點(diǎn)(-93. 36851,0· 11350),(-93.56850, 0.55220),內(nèi)插效果如圖4所示。其余C2周圍四個內(nèi)插點(diǎn)為(-24. 29142,5.74238), (_24· 4Θ142, 5· 740〇8),(_24· 29142, 5· 57623),(_24· 4Θ142, 5. 9〇623) ;C3周圍的四個內(nèi) 插點(diǎn)為(-75. 60735, -51.76809),(-75. 80734, -51.79939),(-75.60735,