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

?

基于線性地物要素的綜合化簡(jiǎn)算法設(shè)計(jì)與實(shí)現(xiàn)

2021-04-05 00:31陳鋒
現(xiàn)代信息科技 2021年17期

摘? 要:我國河流水系分布眾多,為滿足生產(chǎn)需要,在眾多水系中提取主要的河流至關(guān)重要。文章采用開方根法和Douglas-peucker法,利用C#語言實(shí)現(xiàn)化簡(jiǎn)程序,同時(shí)與GIS軟件化簡(jiǎn)結(jié)果進(jìn)行對(duì)比分析。研究表明,利用算法程序化簡(jiǎn)的河流條數(shù)與GIS的相同為52條,但是河流節(jié)點(diǎn)數(shù)為965個(gè),比GIS的化簡(jiǎn)結(jié)果少了40個(gè)節(jié)點(diǎn),且化簡(jiǎn)水系圖更加平滑和美觀,自動(dòng)化程度更高,可以用于從大量的河流中提取主要的河流。

關(guān)鍵詞:線狀地物要素;Douglas-peucker法;開方根法;自動(dòng)綜合

中圖分類號(hào):TP311? 文獻(xiàn)標(biāo)識(shí)碼:A 文章編號(hào):2096-4706(2021)17-0017-05

Abstract: There are many river systems in China, in order to meet the needs of production, it is very important to extract the main rivers from many river systems. In this paper, the square root method and Douglas-peucker method are used to realize the simplification program in C# language, meanwhile, the simplification results of it are compared with those of GIS software. The research shows that the number of rivers simplified by the algorithm program is the same as that of GIS, which is 52, but the number of river nodes is 965, which is 40 nodes less than the simplification result of GIS, and the simplified river system map is smoother and more beautiful, with a higher degree of automation. It can be used to extract the main rivers from a large number of rivers.

Keywords: linear ground object element; Douglas-peucker method; square root method; automatic synthesis

0? 引? 言

計(jì)算機(jī)技術(shù)的快速發(fā)展,使得地圖制圖綜合技術(shù)由傳統(tǒng)的方法向數(shù)字化和智能化的方向轉(zhuǎn)變。測(cè)繪的成果主要表現(xiàn)為地表形態(tài)的地圖,因此對(duì)地球形態(tài)的認(rèn)識(shí)以及對(duì)地圖制作方法的改進(jìn)是測(cè)繪學(xué)發(fā)展的重要標(biāo)志。當(dāng)前人類社會(huì)已經(jīng)進(jìn)入信息化時(shí)代,制圖技術(shù)有了跨越式的發(fā)展。由傳統(tǒng)的地圖生產(chǎn)方式向數(shù)字化、自動(dòng)化和智能化的方向轉(zhuǎn)變,在這個(gè)過程中,地圖制圖綜合作為地理信息系統(tǒng)和地圖生產(chǎn)過程中不可回避的問題,變得尤為重要。從整個(gè)地圖科學(xué)方面考慮,地圖綜合是人類認(rèn)識(shí)客觀存在的具體表現(xiàn),是人類進(jìn)行空間信息處理的核心概念。

在數(shù)字信息系統(tǒng)中,線性特征通常由采樣得到的離散點(diǎn)來描述。得到的采樣點(diǎn)個(gè)數(shù)越密集,對(duì)原始特征的描述能力就越強(qiáng),所呈現(xiàn)的原始特征就越真實(shí)。隨著數(shù)據(jù)量的不斷增加,對(duì)數(shù)據(jù)的管理和分析變得愈發(fā)困難。因此,有必要對(duì)線性特征元素的數(shù)據(jù)進(jìn)行壓縮。這個(gè)過程也稱為線性特征簡(jiǎn)化,即用盡可能少的采樣點(diǎn)來描述原始特征,保證原始特征的真實(shí)形態(tài)特征能夠在允許的誤差范圍內(nèi)再現(xiàn)。從信息理論的角度來看,線性特征元素集成技術(shù)本質(zhì)上是一個(gè)問題的信息壓縮,從組合曲線點(diǎn)集中提取序列的一個(gè)子集,將這個(gè)子集作為新的信息來源,在規(guī)定的范圍內(nèi),精確子集可以真實(shí)反映原始收集盡可能多的內(nèi)容,但盡量減少數(shù)量。本文以長(zhǎng)江水系分布圖為研究對(duì)象,利用GIS對(duì)長(zhǎng)江水系圖配準(zhǔn)、矢量化。提出了基于(C#語言)Douglas-peucker算法和開方根規(guī)律法編寫線性要素化簡(jiǎn)程序,實(shí)現(xiàn)線性地物要素的自動(dòng)綜合化簡(jiǎn),并對(duì)化簡(jiǎn)結(jié)果進(jìn)行對(duì)比分析。

1? 道格拉斯算法與開方根算法

1.1? Douglas-peucker算法

道格拉斯算法是一種將曲線近似為一系列的點(diǎn)并減少點(diǎn)數(shù)量的算法。它具有平移和旋轉(zhuǎn)不變性的優(yōu)點(diǎn),在給定曲線和閾值后采樣結(jié)果是恒定的。公式為:

道格拉斯算法的優(yōu)缺點(diǎn):

優(yōu)點(diǎn)是經(jīng)過平移和旋轉(zhuǎn)后不改變?cè)械奶匦?,在給出具體的閾值和數(shù)據(jù)后,抽樣結(jié)果是一個(gè)定值。缺點(diǎn)是當(dāng)曲線擁有非常重要的地理意義且情況復(fù)雜時(shí),Douglas-peucker算法的缺陷便顯露出來,大致情況為,在某一化簡(jiǎn)尺度下經(jīng)過化簡(jiǎn)的曲線會(huì)出現(xiàn)自相交或者相鄰的曲線之間出現(xiàn)相交的情況。因此,空間數(shù)據(jù)拓?fù)潢P(guān)系的正確與否至關(guān)重要,一旦出現(xiàn)錯(cuò)誤就會(huì)導(dǎo)致無法正確地在地圖上顯示地理信息,更重要的問題是會(huì)導(dǎo)致評(píng)估和決策錯(cuò)誤。為了保證化簡(jiǎn)結(jié)果的準(zhǔn)確性,必須要做到前后拓?fù)潢P(guān)系正確以及解決化簡(jiǎn)過程中出現(xiàn)相交與自相交的問題,并且在化簡(jiǎn)之后也可能會(huì)出現(xiàn)某些重要特征點(diǎn)的缺失。

1.2? 開方根算法

開方根規(guī)律法是提出一種地圖概括的數(shù)量處置方法,用于解決資料地圖與新編地圖由于比例尺的變換而產(chǎn)生的地物數(shù)量簡(jiǎn)化問題。公式為:

Nf=NA? ? ? ? ? ? ? ? ? ? ? ? ? (6)

其中,Af是新編地圖的比列尺分母,MA是原始地圖的比列尺分母,NA是原始地圖的地物數(shù),Nf是新編地圖的地物數(shù)。

開方根算法的優(yōu)缺點(diǎn):

開方根規(guī)律法公式直觀地顯示了制圖綜合時(shí)從重要到一般的選取指標(biāo),是一個(gè)有序的選取等級(jí)系統(tǒng)。開方根公式是線性方程,在地圖比例尺固定不變的條件下,地物要素的選取比例保持一致。開方根公式的缺點(diǎn)是沒有考慮到地理差異,特別是未將制圖地物分布的密度變化考慮在內(nèi)。

1.3? 數(shù)據(jù)處理

將一幅滿足條件的長(zhǎng)江水系簡(jiǎn)圖通過ArcGIS10.2軟件進(jìn)行影像配準(zhǔn),已知長(zhǎng)江水系簡(jiǎn)圖中七個(gè)點(diǎn)的地理坐標(biāo)值,但是長(zhǎng)江水系簡(jiǎn)圖中x軸和y軸的比例是不協(xié)調(diào)的,這時(shí)候我們可以考慮讓x軸乘以一個(gè)常系數(shù)(這里是10 000),然后進(jìn)行坐標(biāo)匹配。完成坐標(biāo)匹配之后,點(diǎn)擊添加控制點(diǎn),此時(shí)即可完成長(zhǎng)江水系簡(jiǎn)圖校正。利用GIS的編輯工具將校正后的水系圖進(jìn)行矢量化,矢量化完成以后,需要將河流的地理坐標(biāo)系向直角坐標(biāo)系轉(zhuǎn)化,然后坐標(biāo)系需要選擇投影坐標(biāo)系中的WGS 1984 world Mercator坐標(biāo)系。完成坐標(biāo)系轉(zhuǎn)換后,需要將要素折點(diǎn)轉(zhuǎn)點(diǎn),如圖1所示。

利用GIS工具中的數(shù)據(jù)管理工具添加XY坐標(biāo),將屬性數(shù)據(jù)導(dǎo)出為TXT文本格式,將導(dǎo)出的數(shù)據(jù)整理為Excel表格,并將一些不需要的數(shù)據(jù)刪除后得到所有節(jié)點(diǎn)的點(diǎn)名和坐標(biāo)數(shù)據(jù)。再將河流經(jīng)過坐標(biāo)投影后的線圖層中的屬性數(shù)據(jù)表導(dǎo)出、整理為Excel表格得到所有的線名,河流長(zhǎng)度數(shù)據(jù)。分別如表1(河流局部數(shù)據(jù))和表2(河流局部數(shù)據(jù))所示。

2? 界面設(shè)計(jì)與核心代碼

2.1? 界面設(shè)計(jì)功能實(shí)現(xiàn)

利用Visual studio 2013編程軟件,采用面向?qū)ο缶幊碳夹g(shù)來完成線性要素化簡(jiǎn)程序界面設(shè)計(jì)。根據(jù)程序功能的需要,添加相應(yīng)的組件(如菜單欄控件、工具欄控件、桌面控件(tabControl1)、openFileDialog1控件、saveFileDialog1控件等組件)來實(shí)現(xiàn)打開、保存、開方根計(jì)算、道格拉斯計(jì)算、數(shù)據(jù)顯示、圖形可視化等功能。程序功能界面如圖2所示。

2.2? 核心代碼

化簡(jiǎn)模塊主要分為兩項(xiàng),首先是通過開方根規(guī)律法對(duì)河流數(shù)據(jù)進(jìn)行數(shù)量化簡(jiǎn),再用道格拉斯算法對(duì)已經(jīng)進(jìn)行河流數(shù)量化簡(jiǎn)的數(shù)據(jù)進(jìn)行節(jié)點(diǎn)化簡(jiǎn)和壓縮。下面給出了開方根算法和道格拉斯算法的核心代碼:

(1)開方根算法核心代碼為:

double L,C,K;//定義三個(gè)雙精度變量。

int A,B;

C=math.sqrt(A/B);//利用開方根函數(shù)計(jì)算開方根。

K=C*L;

(2)首先要聲明線段起點(diǎn)和線段終點(diǎn),新建一個(gè)待檢查的節(jié)點(diǎn)堆棧和壓縮結(jié)果的堆棧;定義一個(gè)讀取閾值,再設(shè)置一個(gè)初始起點(diǎn)和初始終點(diǎn)。將初始起點(diǎn)壓入結(jié)果堆棧,初始終點(diǎn)壓入待檢查的節(jié)點(diǎn)堆棧中。用while循環(huán)來執(zhí)行當(dāng)待檢查的節(jié)點(diǎn)堆棧元素,當(dāng)元素不為空時(shí)執(zhí)行循環(huán);若元素為空,則說明壓縮算法執(zhí)行完畢。While循環(huán)中的if判斷起點(diǎn)和終點(diǎn)之間是否還有其他節(jié)點(diǎn),如果有則執(zhí)行下面的語句。道格拉斯算法的核心代碼為:

Pnt P0=new Pnt ();//聲明線段起點(diǎn)。

Pnt P1=new Pnt();//聲明線段終點(diǎn)。

StackproPnt=new Stack();//待檢查的節(jié)點(diǎn)堆棧。

StackrePnt=new Stack();//壓縮結(jié)果的堆棧。

Int intYuZhi=Convert.ToInt16(toolStripComboBox1.Text);//讀取閾值。

Po=oriPnt[0];//設(shè)置初始起點(diǎn)。

P1=oriPnt[intoriPntNum-1];//設(shè)置初始終點(diǎn)。

rePnt.Push(P0);//初始起點(diǎn)壓入結(jié)果堆棧。

proPnt.Push(P1);//初始終點(diǎn)壓入待檢查的節(jié)點(diǎn)堆棧。

while(proPnt.Count !=0)//當(dāng)待檢查的節(jié)點(diǎn)堆棧元素不為空時(shí),執(zhí)行循環(huán);若元素為空,則說明壓縮算法執(zhí)行完畢。

{if(P0.ID !=P1.ID-1)

//設(shè)置一個(gè)線段距離最大的節(jié)點(diǎn),并初始化它到線段的距離最小。

Pnt maxPnt=new Pnt();maxPnt.Dis=0;

//循環(huán)線段起點(diǎn)和終點(diǎn)之間的所有其他節(jié)點(diǎn),若距離大于maxPnt則代替它。

for(int j=P0.ID+1;j<=P1.ID-1;j++)

{Pnt tempPnt=new Pnt();

tempPnt=oriPnt[j];

tempPnt.Dis=Distanct(P0,P1,tempPnt);//調(diào)用一個(gè)自定義函數(shù)Distanct,返回值為點(diǎn)到線段的距離。

if(tempPnt.Dis>maxPnt.Dis)

{maxPnt=tempPnt;}

}

//找出距離線段距離最遠(yuǎn)的節(jié)點(diǎn)以后,比較其距離和閾值的大小。

//若大于閾值,則將節(jié)點(diǎn)壓入到待檢查的節(jié)點(diǎn)堆棧,并將該節(jié)點(diǎn)設(shè)置為線段的終點(diǎn)。

If(maxPnt.Dis>intYuZhi)

{P1=maxPnt;proPnt.Push(maxPnt);

}//若小于閾值,則將終點(diǎn)設(shè)置為線段起點(diǎn),并壓入到結(jié)果堆棧中,并將待檢查堆棧頂部的節(jié)點(diǎn)設(shè)置為線段終點(diǎn)。

Else //判斷起點(diǎn)和終點(diǎn)之間是否還有其他節(jié)點(diǎn),如果沒有則執(zhí)行:

{P0=P1;rePnt.Push(P0);

proPnt.Pop();

if(proPnt.count !=0){P1=proPnt.Peek();}

}}

While(rePnt.count !=0)//置換堆棧中節(jié)點(diǎn)的順序。

{proPnt.Push(rePnt.Pop());}

}

3? 結(jié)果分析

3.1? GIS軟件下化簡(jiǎn)結(jié)果

將矢量化后的長(zhǎng)江水系簡(jiǎn)圖數(shù)據(jù)文件導(dǎo)入軟件,再將已投影的矢量化線狀圖層拖到窗體中。并對(duì)矢量化的線狀要素圖層進(jìn)行要素折點(diǎn)轉(zhuǎn)點(diǎn),通過開方根算法將原始比例尺為1:1 000 000的長(zhǎng)江水系簡(jiǎn)圖化簡(jiǎn)為比例尺為1:4 000 000的水系圖,將利用開方根算法化簡(jiǎn)后的河流按照河流長(zhǎng)度的大小排序。并將小于閾值205 215.772 6 km的河流刪除,此時(shí)通過人機(jī)交互的方式對(duì)河流的數(shù)量進(jìn)行化簡(jiǎn),化簡(jiǎn)后的新編地形圖上的河流數(shù)量為52條。其次使用ArcGIS的制圖工具中的制圖綜合,利用Douglas-peucker算法進(jìn)行河流節(jié)點(diǎn)的化簡(jiǎn)與壓縮,對(duì)河流線狀要素進(jìn)行綜合化簡(jiǎn)的效果從總體上來說還是非常實(shí)用和美觀的。結(jié)果圖如圖3所示。

3.2? 算法化簡(jiǎn)結(jié)果

打開線性要素綜合化簡(jiǎn)程序所在的文件夾。打開文件夾以后,找到該程序并點(diǎn)擊運(yùn)行按鈕即可。此時(shí)就會(huì)生成線性要素綜合化簡(jiǎn)的界面,點(diǎn)擊打開按鈕,同時(shí)把河流ID和河流長(zhǎng)度文檔以及河流坐標(biāo)文檔導(dǎo)入界面之中。然后點(diǎn)擊開方根算法按鈕,對(duì)河流要素的數(shù)量進(jìn)行化簡(jiǎn),然而,采用的閾值是河流的長(zhǎng)度小于205 215.772 6 km的長(zhǎng)度,大于這個(gè)閾值的河流予以保留。

將開方根算法化簡(jiǎn)后的河流數(shù)量保存,并使用道格拉斯算法按鈕對(duì)化簡(jiǎn)后的河流數(shù)量進(jìn)行河流節(jié)點(diǎn)化簡(jiǎn)和節(jié)點(diǎn)壓縮,將結(jié)果保存。化簡(jiǎn)后的河流線狀要素圖形如圖4所示。

3.3? 化簡(jiǎn)結(jié)果對(duì)比

在ArcGIS10.2軟件支持下并不能很好地按一定的閾值對(duì)河流的數(shù)量化簡(jiǎn),只能通過操作人員的手動(dòng)操作來刪除不需要的河流線性要素。這一點(diǎn)是比較麻煩的,不但給實(shí)際操作人員帶來非常大的工作量,而且還會(huì)產(chǎn)生很大的誤差。這就要求工作人員時(shí)刻仔細(xì)認(rèn)真,以避免不必要的麻煩和相應(yīng)的后續(xù)工作。

在使用線性地物要素綜合化簡(jiǎn)程序的過程中主要用到兩個(gè)線性要素化簡(jiǎn)算法,分別是開方根算法和道格拉斯算法。首先將相關(guān)的河流數(shù)據(jù)導(dǎo)入化簡(jiǎn)界面中,利用開方根算法對(duì)河流數(shù)量進(jìn)行化簡(jiǎn),再利用道格拉斯算法對(duì)化簡(jiǎn)的結(jié)果進(jìn)行河流節(jié)點(diǎn)化簡(jiǎn)和壓縮。此過程中可以利用開方根算法對(duì)大量的河流線狀要素進(jìn)行數(shù)量化簡(jiǎn),并利用道格拉斯算法對(duì)化簡(jiǎn)的結(jié)果進(jìn)行節(jié)點(diǎn)化簡(jiǎn)和壓縮。此過程可以節(jié)省大量的時(shí)間,提高工作人員的工作效率,對(duì)線狀要素的綜合化簡(jiǎn)效果更好??梢詾闈M足實(shí)際需求而做出相應(yīng)的改變。同時(shí)還減少了經(jīng)費(fèi)的支出,節(jié)省了大量的人力財(cái)力。

將化簡(jiǎn)前的長(zhǎng)江水系簡(jiǎn)圖數(shù)據(jù)、ArcGIS10.2軟件支持下的線性要素化簡(jiǎn)可視化結(jié)果和線性地物要素綜合化簡(jiǎn)程序的化簡(jiǎn)結(jié)果進(jìn)行整理,并將其河流的節(jié)點(diǎn)數(shù)和河流條數(shù)統(tǒng)計(jì)在同一張表中進(jìn)行比較分析,如表3所示。

通過對(duì)化簡(jiǎn)后的圖形和表格數(shù)據(jù)進(jìn)行對(duì)比分析,得出以下結(jié)論:

(1)由上表可知,利用算法程序化簡(jiǎn)與利用GIS軟件化簡(jiǎn)的河流數(shù)量相同,都為52條,其中算法程序化簡(jiǎn)河流的節(jié)點(diǎn)數(shù)量要比GIS軟件化簡(jiǎn)數(shù)量少,且圖形更平滑。

(2)在圖形上,算法程序化簡(jiǎn)的結(jié)果比GIS化簡(jiǎn)的結(jié)果更優(yōu)化、平滑、美觀。

(3)在自動(dòng)化方面,算法程序化簡(jiǎn)比GIS化簡(jiǎn)更優(yōu)化,其人工編輯的部分少,自動(dòng)化程度更高。

4? 結(jié)? 論

由于計(jì)算機(jī)技術(shù)發(fā)展迅速,信息化的程度越來越高,在線性要素制圖方面可以實(shí)現(xiàn)綜合的化簡(jiǎn)算法向自動(dòng)化方向發(fā)展。將相關(guān)的算法與人工智能相結(jié)合,優(yōu)化算法結(jié)構(gòu),使其更好地為工作人員服務(wù)。

然而,傳統(tǒng)的道格拉斯算法在計(jì)算過程中通常沒有考慮到記錄的中間距離最大的節(jié)點(diǎn),導(dǎo)致循環(huán)時(shí)間和遞歸嵌套層次過深,影響了程序的運(yùn)行效率。本文提出一種基于堆棧數(shù)據(jù)結(jié)構(gòu)的分段道格拉斯算法。從曲線的一端開始,取起始點(diǎn)和終止點(diǎn)作為改進(jìn)道格拉斯算法的工作范圍。然后,確定最遠(yuǎn)點(diǎn)的距離是否大于規(guī)定限差,從而完成線性要素的化簡(jiǎn)。本文的Douglas-peucker算法,通常使用堆棧記錄中間結(jié)果,得到最終結(jié)果。為了保證曲線的極值點(diǎn)不被刪除,將曲線在彎曲極值點(diǎn)處分成兩段,彎曲極值點(diǎn)由中間點(diǎn)與相鄰兩個(gè)頂點(diǎn)的夾角來測(cè)量。

根據(jù)結(jié)果對(duì)比可以看出,雖然結(jié)果相差不大,但在相同的閾值下,線性地物要素綜合化簡(jiǎn)算法程序的自動(dòng)程度更高,結(jié)果更優(yōu)化。

參考文獻(xiàn):

[1] 齊清文,姜莉莉.面向地理特征的制圖綜合指標(biāo)體系和知識(shí)法則的建立與應(yīng)用研究 [J].地理科學(xué)進(jìn)展,2001(S1):1-13.

[2] 王留召,梁洪有,米振通.地圖自動(dòng)綜合的現(xiàn)狀及發(fā)展方向 [J].中州煤炭,2001(6):15-16.

[3] 應(yīng)申,李霖.制圖綜合的知識(shí)表示 [J].測(cè)繪信息工程,2003(6):26-28.

[4] 裵廷睿.主成分分析與系統(tǒng)聚類法在評(píng)估經(jīng)濟(jì)效益中的應(yīng)用 [J].湘潭大學(xué)自然科學(xué)學(xué)報(bào),1995(2):30-33.

[5] 陳波.道路網(wǎng)自動(dòng)制圖綜合的研究和實(shí)踐 [D].鄭州:解放軍信息工程大學(xué),2006.

[6]毛贊猷,朱良,周占鰲,等.新編地圖學(xué)教程:第2版 [M].北京:高等教育出版社,2008.

[7] 初宏晟,劉穎,宋國大.保持圖形特征的線狀要素的化簡(jiǎn)方法 [C]//2008年(第十屆)中國科協(xié)年會(huì).鄭州:中國科學(xué)技術(shù)協(xié)會(huì),2008:562-565.

[8] 汪琦,陳飛翔,彭俊杰.適用于移動(dòng)平臺(tái)的快速生成地形剖面線方法 [J].地球信息科學(xué)學(xué)報(bào),2015,17(7):830-836.

[9] 張利君.土地利用總體規(guī)劃制圖綜合方法研究 [D].上海:華東師范大學(xué),2011.

[10] 李巧,董箭.道格拉斯-普克改進(jìn)算法及其在海圖岸線制圖綜合中的應(yīng)用 [C]//第十屆東北三省測(cè)繪學(xué)術(shù)與信息交流會(huì).漠河:中國測(cè)繪學(xué)會(huì),2009:378-380.

作者簡(jiǎn)介:陳鋒(1994—),男,漢族,安徽六安人,碩士研究生在讀,研究方向:礦山開采沉陷監(jiān)測(cè)。