国产日韩欧美一区二区三区三州_亚洲少妇熟女av_久久久久亚洲av国产精品_波多野结衣网站一区二区_亚洲欧美色片在线91_国产亚洲精品精品国产优播av_日本一区二区三区波多野结衣 _久久国产av不卡

?

面向地圖綜合的矢量曲線彎曲識別研究

2014-09-29 02:37:26李朝奎駱文芳嚴(yán)雯英
地理空間信息 2014年4期
關(guān)鍵詞:凹凸極大值拐點

李朝奎,駱文芳,張 強,嚴(yán)雯英

(1. 湖南科技大學(xué) 地理空間信息湖南省工程實驗室,湖南 湘潭 411201;2. 湖南科技大學(xué) 地球空間信息科學(xué)研究中心,湖南 湘潭 411201)

對于大部分GIS軟件而言,數(shù)據(jù)多以矢量形式存在,矢量曲線的綜合是地圖制圖綜合非常重要的內(nèi)容之一[1]。曲線綜合的關(guān)鍵是在保持原曲線基本形態(tài)特征的情況下,刪除那些次要的小彎曲,并同時保持彎曲特征轉(zhuǎn)折點的精確性和不同地段彎曲程度的對比[2]。隨著制圖綜合技術(shù)的不斷發(fā)展,已經(jīng)出現(xiàn)了各種各樣的曲線化簡算法[3-5],如D-P算法、Li-Openshaw算法和James算法等,這些算法都是通過保留某些相對重要的特征點而刪除矢量曲線上的某些坐標(biāo)點來進行化簡的。然而矢量曲線并不僅僅是點的集合,它更是一種具有幾何形態(tài)的地理要素的表達。因此,矢量曲線的化簡綜合不是簡單的點的取舍操作,而應(yīng)充分考慮曲線的彎曲特征,顧及曲線表達的地理語義。

曲線形態(tài)的基本結(jié)構(gòu)單元劃分方法很多,相對其他曲線結(jié)構(gòu)單元,彎曲更易于被人們理解和接受,按彎曲單元進行曲線劃分符合認(rèn)知規(guī)律[6]。只要矢量曲線的彎曲結(jié)構(gòu)描述清楚,線狀要素綜合則表現(xiàn)為由低層小彎曲到上層大彎曲的化簡、合并、刪除過程,從而能夠保證曲線整體結(jié)構(gòu)特征不被破壞,同時曲線低層細節(jié)又得到簡化。本文對矢量曲線彎曲識別的幾種常用算法進行介紹,并在Visual Studio 2008和ArcEngine 9.3基礎(chǔ)上編程對各種識別算法進行實例驗證。

1 矢量曲線彎曲識別方法

1.1 基于通視性的彎曲識別

通視性是指在一個簡單彎曲內(nèi),第一個點到該彎曲上其他點的任一直線都與彎曲曲線不相割?;谕ㄒ曅缘膹澢惴枋鰹椋涸O(shè)點i、j是曲線中任意點,存在i+1≤j≤n,其中點i為某段彎曲的起點,Li,j是點i與點j連接的線段,為對應(yīng)的向量。在同一彎曲中,存在所有的,即它們的向量叉乘存在相同的方向性,即在同一彎曲中向量總會在向量和向量中間。當(dāng)與具有不同的正負性時,表示點j 為當(dāng)前彎曲的結(jié)束點和第二個彎曲的起始點,見圖1。

1.2 基于凹凸性的彎曲識別

基于凹凸性的彎曲識別方法分為以下幾個步驟:①探查拐點;②將曲線起始點和所有拐點按其在曲線中的先后順序依次放進分界點序列中;③根據(jù)分界點序列劃分彎曲。其中,拐點的查找方法有以下兩種:①通過邊線上任一點向兩邊相鄰的點作線段,兩線段的張角小于180°,該點可認(rèn)為是凸部點;大于180°,則是凹部點,等于180°,則該點處于平部。②曲線上點的切向繞行方向在拐點處發(fā)生變化。在拐點一側(cè)為順時針旋轉(zhuǎn),在另一側(cè)則順時針轉(zhuǎn),因而可以采用向量叉乘的方法來判斷。其核心代碼如下:

//構(gòu)建向量

fv = new Vector(pnts[i–1], pnts[i]);

tv = new Vector(pnts[i], pnts[i+1]);

//向量叉乘結(jié)果是否大于0

flag = Vector.CrossProduct(fv, tv) > 0 ? true : false;

//如果當(dāng)前向量叉乘結(jié)果與之前向量叉乘結(jié)果相異,則取當(dāng)前點為特征點

if (curFlag != flag)

{

if (pntCol.PointCount> 2)

{

(bend as IriverLine).Polyline = pntCol as Ipolyline;

bends.Add(bend);

featPnts.Add(pnts[i]); //添加特征點

bend = new Bend();

pntCol = new PolylineClass();

pntCol.AddPoint(pnts[i].ToEsriPoint(),ref missing, ref missing);

}

curFlag = flag;

}

1.3 基于曲率極大值的彎曲識別

基于曲率極大值的彎曲劃分方法如下:首先,計算點pi-1和點pi的切線角αi-1和αi;其次,計算由點pi-1和點pi組成的直線段li-1,i的長度;再次,求取點pi-1和pi的平均曲率ki-1,將ki-1作為點pi-1的曲率;最后,按照上面的方法依次計算每個點的曲率,算出所有曲率極大值(絕對值),如圖2所示。其核心代碼如下:

//求當(dāng)前點與前一點的平均曲率

Cur = Math.Round(Math.Abs(pnts[i].Tangent -pnts[i - 1].Tangent) / PointUtil.GetDistance(pnts[i], pnts[i- 1]),5);

flag = forCur> Cur ? false : true;//與之前的平均曲率的大小對比

forCur = Cur;

//如果當(dāng)前曲率對比為否,之前曲率對比為真,也就是曲率極大值所在

if (curFlag&& !flag)

{

//第i-1個是極大值,添加特征點

featPnts.Add(pnts[i -1]);

//生成彎曲

IPointCollection polyline = new PolylineClass();

for (int j = startIndex; j < i; j++)

{

polyline.AddPoint(pnts[j].ToEsriPoint(), ref missing,ref missing);

}

(bend as IRiverLine).Polyline = polyline as IPolyline;

bends.Add(bend);

//重新初始化

bend = new Bend();

startIndex = i - 2;

}

curFlag = flag;

2 實例驗證

實例設(shè)計的目的是通過實踐來查找彎曲特征并檢驗各種彎曲識別方法的可行性,從而分析各種識別方法的優(yōu)缺點。該實驗以矢量曲線為例,在Visual Studio 2008和ArcEngine 9.3基礎(chǔ)上編程實現(xiàn)。

2.1 基于通視性的彎曲識別

根據(jù)前文算法,得到如圖3所示的結(jié)果??梢钥闯觯@種彎曲識別方法存在著一個極大的優(yōu)點,就是能在彎曲劃分之后,較為輕松地判斷彎曲的類型是U型還是V型。但在彎曲分布不勻稱或不理想的情況下,它也存在某些缺點,如彎曲劃分不勻稱、效果不好。具體表現(xiàn)在,在視覺上應(yīng)為V型或者U型的彎曲,沒有全部劃分出來。在彎曲分布不均勻的曲線上,劃分出的復(fù)雜彎曲和簡單彎曲在長度上差距較大。

2.2 基于凹凸性的彎曲識別

根據(jù)拐點劃分彎曲是運用最廣的方法。通過圖4可以看出,此方法的優(yōu)點是十分明確地區(qū)分了曲線的凹部和凸部,即凹凸的彎曲按順序均勻地分布在拐點連線的左右。但也存在著許多缺點,如小彎曲(長度?。?、微彎曲(彎曲度小)也被劃分為彎曲。

2.3 基于曲率極大值的彎曲識別

通過此方法得到的彎曲大多數(shù)情況下是簡單彎曲,如圖5所示。

從上述實驗中可以看出,基于通視性的彎曲識別其結(jié)果不是很均勻,其中既包括復(fù)雜彎曲,又包括簡單彎曲。彎曲的弧底點在曲折系數(shù)較大的彎曲上較為突出,在曲折系數(shù)小的彎曲上表現(xiàn)不突出?;诎纪剐缘膹澢R別其結(jié)果比較均勻,視覺效果比較理想?;谇蕵O大值點的彎曲識別方法所探查到的曲率極大值點很多,超出了我們視覺上所認(rèn)為的曲率極大值點數(shù),比基于凹凸性彎曲識別方法的結(jié)果更加細膩。此外,其劃分的彎曲都是簡單彎曲。

3 結(jié) 語

線要素化簡的基本要求是整體輪廓形態(tài)的保持,尤其是每段大彎曲的特征點和形狀的保持,而根據(jù)不同的需要利用以上識別方法之一對矢量曲線進行彎曲識別后再對曲線進行化簡,有利于線要素整體形狀的自然保持,也可使化簡綜合的結(jié)果更合理。本文從理論和實踐的角度對比了幾種彎曲識別方法的合理性和優(yōu)缺點,為地圖綜合中矢量曲線的化簡提供了質(zhì)量保障。

[1]王結(jié)臣,閭國年.曲線矢量數(shù)據(jù)綜合的微凹凸消除算法[J].測繪通報,2002(1) : 17-18

[2]Wang Jiayao. The Principle of Cartographic Generalization for General Map[M].Beijing: Publishing House of Surveying and Mapping, 1993

[3]Douglas D H, Pecuker T K. Algorithms for the Reduction of the Number of Points Required to Represent a Digitized Line or Its Caricature[J]. The Canadian Cartographer, 1973,10(2):112-122

[4]Mamaster.Automated Line Generalization[J].Cartographica,1987,24(2):74-111

[5]Li Zhilin, Openshaw S. Algorithms for Line Generalization Based on Natural Objective Principles[J]. International Journal of Geographic Information Systems, 1992,6(5):373-389

[6]Wang Z, Muller J C. Line Generalization Based on Analysis of Shape Characteristics [J].Cartography and Geographic information Systems.1998, 25 (1):3-15

[7]錢海忠,伍芳.采用斜拉式彎曲劃分的曲線化簡方法[J].測繪學(xué)報,2007,36(4):443-449

猜你喜歡
凹凸極大值拐點
三個與凹凸性相關(guān)的不等式及其應(yīng)用
含有陡峭勢阱和凹凸非線性項的Kirchhoff型問題的多重正解
秦國的“拐點”
新拐點,新機遇
廣州化工(2020年5期)2020-04-01 07:38:52
恢復(fù)高考:時代的拐點
最易寫錯筆順的字
《廉潔拐點》
紅巖春秋(2017年6期)2017-07-03 16:43:54
基于小波模極大值理論的勵磁涌流新判據(jù)研究
消除凹凸紋理有妙招!
Coco薇(2015年5期)2016-03-29 23:22:15
基于經(jīng)驗?zāi)B(tài)分解的自適應(yīng)模極大值去噪方法
新民市| 绥芬河市| 台北市| 通许县| 桃江县| 宜阳县| 乾安县| 海城市| 山阴县| 宣威市| 普定县| 西丰县| 龙陵县| 静安区| 华阴市| 康平县| 屯昌县| 东丽区| 曲阳县| 济南市| 石阡县| 历史| 大同市| 湄潭县| 临城县| 右玉县| 开鲁县| 永年县| 盈江县| 宜丰县| 通化市| 囊谦县| 西贡区| 襄汾县| 吴旗县| 三门峡市| 广平县| 南昌市| 琼海市| 托克逊县| 日喀则市|