999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

基于MFC的地勢起伏度計(jì)算程序設(shè)計(jì)與實(shí)現(xiàn)

2017-11-07 14:03:33趙強(qiáng)
科技創(chuàng)新導(dǎo)報(bào) 2017年25期

趙強(qiáng)

DOI:10.16660/j.cnki.1674-098X.2017.25.151

摘 要:地勢起伏度是劃分地貌類型的一項(xiàng)重要指標(biāo),提取地勢起伏度的關(guān)鍵在于確定最佳分析區(qū)域窗口單元的選擇,統(tǒng)計(jì)學(xué)上的均值變點(diǎn)法為目前最常用最有效的方法之一。其通常由人工計(jì)算法計(jì)算得出,該方法計(jì)算效率和準(zhǔn)確度均較低。本文設(shè)計(jì)并實(shí)現(xiàn)一套基于MFC開發(fā)框架,結(jié)合STL模版類庫的地勢起伏度計(jì)算程序。選用青藏高原部分地勢起伏度值為數(shù)據(jù)樣本,實(shí)現(xiàn)均值變點(diǎn)法算法,通過實(shí)驗(yàn),得到的結(jié)果準(zhǔn)確且計(jì)算速度高,本程序?qū)⑻岣叩貏萜鸱扔?jì)算效率,得到廣泛使用。

關(guān)鍵詞:地勢起伏度 均值變點(diǎn)法 MFC STL 程序設(shè)計(jì)

中圖分類號:P20 文獻(xiàn)標(biāo)識碼:A 文章編號:1674-098X(2017)09(a)-0151-05

Abstract: The relief degree is an important index of classification of geomorphologic types, The key to the extraction of topographic relief is to determine the optimal window unit of the analysis area. the Mean change-points method of statistics is one of the most commonly used and most effective methods. It is usually calculated by manual calculation. It has low computational efficiency and accuracy. In this paper, we design and implement a program based on MFC(MicroSoft Foundation Classes) development framework and STL(Standard template Library) Library. The part of the Qinghai-Tibetan Plateau is chosen as the data sample to realize the mean point change algorithm. Through experiment, The experiment results show that the results are accurate and the calculation speed is high. This program will improve the efficiency of relief calculation and widely used.

Key Words: Relief amplitude; Mean Change-Point method; MFC; STL; Programing

地勢起伏度(Relief Amplitude)是指在所指定的分析區(qū)域內(nèi)所有柵格中最大高程與最小高程的差,是反映地形起伏的宏觀地形因子[1]。地勢起伏度是劃分地貌類型的一項(xiàng)重要指標(biāo)。提取地勢起伏度的關(guān)鍵在于確定最佳分析區(qū)域窗口單元的選擇。利用DEM數(shù)據(jù)提取地勢起伏度能夠快速、直觀地反映地形的起伏特征。本文以大尺度SRTM3-DEM為實(shí)驗(yàn)數(shù)據(jù)源,利用統(tǒng)計(jì)學(xué)上的均值變點(diǎn)法提取實(shí)驗(yàn)區(qū)地勢起伏度并分級分析的算法,基于MFC編程框架以及STL模板類庫實(shí)現(xiàn)基于研究區(qū)網(wǎng)格單元與平均地勢起伏度對應(yīng)關(guān)系計(jì)算均值變點(diǎn)分析結(jié)果的程序。經(jīng)實(shí)驗(yàn),本程序能夠完全準(zhǔn)確實(shí)現(xiàn)依據(jù)算法,計(jì)算準(zhǔn)確度、速度均有提高。獲得的結(jié)果可獲得實(shí)驗(yàn)區(qū)域內(nèi)地勢起伏度最佳統(tǒng)計(jì)單元。

1 相關(guān)研究

針對不同地貌區(qū)域的地勢起伏度計(jì)算已經(jīng)有較多的研究,鄭琴文、馮玉祥、王玲等在GIS系統(tǒng)的基礎(chǔ)下,采用領(lǐng)域分析方法提取地勢起伏度,運(yùn)用均值變點(diǎn)分析法對其進(jìn)行了最佳統(tǒng)計(jì)單元的計(jì)算[2-4];唐飛等基于DEM和TM影像利用ArcMap中鄰域分析工具對準(zhǔn)噶爾盆地及其西北山區(qū)地勢起伏度進(jìn)行研究最終確定了該地區(qū)地勢起伏度計(jì)算的最佳統(tǒng)計(jì)單元[5];何文秀等運(yùn)用地理信息系統(tǒng)窗口分析和統(tǒng)計(jì)分析等方法利用DEM數(shù)據(jù)研究了寧夏彭陽縣的地勢起伏度[6];趙斌濱等分析人工作圖法與均值變點(diǎn)法是判斷最佳統(tǒng)計(jì)單元相對有效的方法[7]。

MFC(Microsoft Foundation Class,微軟基礎(chǔ)類庫)是微軟公司為了簡化程序員的開發(fā)工作所開發(fā)的一套C++類的集合,是一套面向?qū)ο蟮暮瘮?shù)庫,以類的方式提供給用戶使用。可以用它來編寫 Windows 應(yīng)用程序。使用 MFC 類庫和Visual C++提供的高度可視的應(yīng)用程序開發(fā)工具,可使應(yīng)用程序開發(fā)變得更簡單,極大地縮短開發(fā)周期,提高代碼的可靠性和可重用性[8,9]。

STL(Standard Template Library)標(biāo)準(zhǔn)模板庫是C++標(biāo)準(zhǔn)規(guī)范的主要內(nèi)容之一,其本身為幾類“容器”的集合,其目的為構(gòu)建標(biāo)準(zhǔn)化組件,以減少在編寫應(yīng)用程序過程中重復(fù)開發(fā)相同功能的代碼,根據(jù)需要可以選擇最優(yōu)的數(shù)據(jù)結(jié)構(gòu)組件實(shí)現(xiàn)高效的數(shù)據(jù)管理[10]。

2 變點(diǎn)分析法計(jì)算地勢起伏度原理

本文試驗(yàn)數(shù)據(jù)選用基于SRTM3-DEM的數(shù)據(jù)青藏高原國內(nèi)部分,其平面基準(zhǔn)為WGS84,高程基準(zhǔn)為EGM96,置信度達(dá)90%。對實(shí)驗(yàn)區(qū)的DEM數(shù)據(jù)進(jìn)行拼接與投影轉(zhuǎn)換處理。投影方式選擇等面積圓錐投影,第一標(biāo)準(zhǔn)緯線定為25°N,第二標(biāo)準(zhǔn)緯線定為47°N,中央經(jīng)線定為105°E,基準(zhǔn)面選用Krasovsay_1940,將DEM柵格單元重采樣為90m[11]。

應(yīng)用窗口遞增分析法來計(jì)算實(shí)驗(yàn)區(qū)中地勢起伏度的最佳統(tǒng)計(jì)面積。分析窗口類型選擇矩形,計(jì)算網(wǎng)格2×2、3×3、4×4、……32×32的地勢起伏度,對計(jì)算得到的不同窗口下的地勢起伏度,我們?nèi)「髯缘牡貏萜鸱绕骄担ū?)然后與各單元窗口相對應(yīng)的面積作對數(shù)擬合曲線。在面積從100~200之間出現(xiàn)曲線由陡變緩的點(diǎn),而該點(diǎn)對應(yīng)的面積即是我們尋找的最佳統(tǒng)計(jì)單元面積。endprint

利用均值變點(diǎn)法,計(jì)算出擬合曲線上由陡變緩的點(diǎn)位。基于變化網(wǎng)格大小區(qū)域的方法,計(jì)算出對應(yīng)網(wǎng)格大小面積內(nèi)平均地勢起伏度值,將此平均地勢起伏度值作為計(jì)算最佳統(tǒng)計(jì)面積的參考樣本序列,對其對應(yīng)的格網(wǎng)面積求單位面積上的平均地勢起伏度,并求其自然對數(shù)構(gòu)建原始樣本序列。變點(diǎn)的存在使樣本分段后的統(tǒng)計(jì)量Si的變化趨勢會有一個轉(zhuǎn)折。而該轉(zhuǎn)折點(diǎn)處可以很直觀得到網(wǎng)格半徑大小,從而該網(wǎng)格半徑所對應(yīng)的區(qū)域面積即為最佳統(tǒng)計(jì)面積。

計(jì)算均值變點(diǎn)分析法計(jì)算過程如下[12]:

(1)令i=2,…,N,對每個i將樣本分為兩段:X1,X2,…,Xi-1和Xi,Xi+1,…,XN。

計(jì)算每段樣本的自述平均值和及統(tǒng)計(jì)量。

(2)統(tǒng)計(jì)量:

(3)期望值:

(4)通過觀察計(jì)算結(jié)果很容易就能得到統(tǒng)計(jì)結(jié)果趨勢變化的點(diǎn)。

通過變點(diǎn)即可確定格網(wǎng)半徑大小,從而確定最佳統(tǒng)計(jì)面積。

3 計(jì)算程序設(shè)計(jì)實(shí)現(xiàn)

利用輸入樣本數(shù)據(jù),通過算法公式計(jì)算得出每段樣本的前半段算術(shù)平均值和后半段算術(shù)平均值,以及輸出統(tǒng)計(jì)量。基于MFC對話框程序構(gòu)建,利用STL對數(shù)據(jù)進(jìn)行管理。架構(gòu)圖如圖1所示。

3.1 數(shù)據(jù)輸入

由于樣本數(shù)據(jù)量較小,可以選擇手工輸入或數(shù)據(jù)文件導(dǎo)入的形式,定義基于STL的map模板,第一個參數(shù)保存格網(wǎng)半徑,即模版保存數(shù)據(jù)中的key數(shù)據(jù),變量類型定義為整型值;第二個參數(shù)為不同格網(wǎng)大小范圍內(nèi)平均地勢起伏度的平均值。數(shù)據(jù)從外部讀入軟件后,在內(nèi)存中以map的形式組織保存。

3.2 數(shù)據(jù)預(yù)處理

單元格網(wǎng)面積相同,原始樣本序列采用格網(wǎng)半徑從2開始,依次遞加1的方式取格網(wǎng)。隨著格網(wǎng)半徑的增加,樣本格網(wǎng)的面積也在増加,而所取格網(wǎng)面積內(nèi)的平均地勢起伏度由于面積的増大,起伏度值也在増大。為了更好地找到擬合曲線上由陡變緩的這一臨界點(diǎn),我們需要對格網(wǎng)面積內(nèi)再取單位網(wǎng)格面積的平均地勢起伏度,并對其求自然對數(shù)來構(gòu)建真正的原始樣本序列。

所以在初始樣本序列插入計(jì)算平均地勢起伏度值的函數(shù)中,對平均地勢起伏度值進(jìn)行預(yù)處理,即定義原始樣本構(gòu)建函數(shù):

selType CReliefDlg::insertReliefs(int num, double relief)

其中在構(gòu)建計(jì)算用的平均地勢起伏度原始樣本序列ReliefMap中時,需要先進(jìn)行平均格網(wǎng)地勢起伏度的自然對數(shù)運(yùn)算:

relief = log(relief / (num*num))

運(yùn)算結(jié)果再插入原始樣本序列中:

m_Reliefs.insert(make_pair(num, relief));

其中變量m_Reliefs為std::map格式,即自定義map結(jié)構(gòu),用于存儲預(yù)處理過的地勢起伏度值。

3.3 算法實(shí)現(xiàn)

由均值變點(diǎn)分析法,對樣本序列進(jìn)行計(jì)算時,需要設(shè)定一個起始i值,i值即為格網(wǎng)半徑數(shù)變化序列,計(jì)算時將樣本從當(dāng)前i值處,分為前后兩段樣本,并且要對每段樣本的算術(shù)平均值和分段樣本的統(tǒng)計(jì)量。這也就相當(dāng)于樣本數(shù)量是動態(tài)變化的,而動態(tài)變化的數(shù)值需要通過函數(shù)參數(shù)傳入計(jì)算過程。

由此,將求平均值的算法和求統(tǒng)計(jì)量的算法定義兩個函數(shù)分別為:

double CReliefDlg::getAverValue(int iBeginPos, int iEndPos)

double CReliefDlg::getReliefS(int iBeginPos, int iEndPos)

通過輸入樣本序列的起始位置和終止位置來確定樣本序列的內(nèi)容和長度,而這一數(shù)值又同時與ReliefMap中第一個參數(shù)網(wǎng)格值相對應(yīng)。故可以直接根據(jù)傳參對樣本序列Map進(jìn)行遍歷計(jì)算,得出當(dāng)前動態(tài)樣本序列的平均值和統(tǒng)計(jì)量;

在計(jì)算分段樣本序列的基礎(chǔ)上,對所有平均地勢起伏度樣本進(jìn)行循環(huán)處理,依次計(jì)算當(dāng)前樣本遞進(jìn)時不同位置分段樣本序列的統(tǒng)計(jì)量和算術(shù)平均值,并計(jì)算分段后的統(tǒng)計(jì)量Si的值,此值也正是我們需要求出并加以分析的結(jié)果。

3.4 程序?qū)崿F(xiàn)

C++編程語言與MFC編程框架相結(jié)合,基于MFC可視化界面設(shè)計(jì),程序主界面包含ListBox控件用于輸入數(shù)據(jù)顯示及修改、“添加/修改”按鈕用于打開手動數(shù)據(jù)輸入對話框以及啟動起伏度值計(jì)算并輸出計(jì)算結(jié)果的“計(jì)算”按鈕,如圖2。

手動數(shù)據(jù)輸入對話框包含一個ComboBox下拉框控件,用于顯示當(dāng)前輸入數(shù)值的序號,面積為EditBox,用于輸入格網(wǎng)單元半徑,平均地勢起伏度即為對應(yīng)網(wǎng)格大小區(qū)域內(nèi)平均地勢起伏度的值,一個數(shù)值輸入完成,點(diǎn)擊“下一個”即進(jìn)行下一個地勢起伏度值的輸入,“完成”按鈕即輸入結(jié)束,手動數(shù)據(jù)輸入對話框自動關(guān)閉,點(diǎn)擊主界面“計(jì)算”按鈕,計(jì)算Si值并輸出到文本文檔中。

3.5 結(jié)果輸出

計(jì)算出Si值后,仍將其放入ReliefMap類型map模板數(shù)據(jù)結(jié)構(gòu)中,利用STL中的map結(jié)構(gòu)對其進(jìn)行存儲和管理,結(jié)果可以在主程序界面中的ListBox控件里插入顯示,也可以文件形式輸出保存到硬盤中。

4 數(shù)據(jù)驗(yàn)證

依據(jù)表1中的數(shù)值,輸入程序后,計(jì)算可得均值變點(diǎn)分析的統(tǒng)計(jì)結(jié)果(表2)。

根據(jù)表2的分析計(jì)算結(jié)果可以很輕松得出均值變點(diǎn)分析結(jié)果曲線,如圖3。

圖中Si值為縱軸,i值為橫軸,可以很清楚看出有一個很明顯的趨勢轉(zhuǎn)折,格網(wǎng)半徑i從2開始到12,其Si的值均為下降趨勢;而格網(wǎng)半徑i從12到31過程中,Si的值是呈上升趨勢,即i=12這一點(diǎn)處即為我們的變點(diǎn)處,格網(wǎng)半徑為12也即為要求的最佳統(tǒng)計(jì)單元格網(wǎng)半徑,其對應(yīng)的面積即為最佳統(tǒng)計(jì)面積,與實(shí)驗(yàn)預(yù)期結(jié)果一致。

5 結(jié)語

對地勢起伏度計(jì)算中基于平均地勢起伏度和變點(diǎn)分析法求最佳統(tǒng)計(jì)面積是地勢起伏度研究中比較重要的研究方法之一。本文基于MFC利用模板庫STL對以上地勢起伏度計(jì)算方法進(jìn)行程序?qū)崿F(xiàn),并針對特定實(shí)驗(yàn)區(qū)數(shù)據(jù)計(jì)算,得到的結(jié)果與預(yù)期結(jié)果一致。本文設(shè)計(jì)實(shí)現(xiàn)的程序具有計(jì)算速度快、結(jié)果準(zhǔn)確精度高、界面美觀易操作等特點(diǎn)。本文首次將基于MFC的C++程序應(yīng)用在地勢起伏度計(jì)算方面,增加了地勢起伏度計(jì)算的手段,在創(chuàng)新性和實(shí)用性方面具有一定價值。

參考文獻(xiàn)

[1] 涂漢明,劉振東.中國地勢起伏度研究[J].測繪學(xué)報(bào),1991,20(4):311-319.

[2] 鄭琴文,馬維峰,劉文婷,等.三峽庫區(qū)地勢起伏度研究[J].廈門理工學(xué)院學(xué)報(bào),2014,22(5):82-87.

[3] 馮玉祥,鄧青春,楊海青,等.基于變點(diǎn)分析法提取元謀縣地形起伏度[J].四川林勘設(shè)計(jì),2015(3):28-33.

[4] 王玲,呂新.基于DEM的新疆地勢起伏度分析[J].測繪科學(xué),2009,34(1):113-116.

[5] 唐飛,陳曦,程維明,等.基于DEM的準(zhǔn)噶爾盆地及其西北山區(qū)地勢起伏度研究[J].干旱區(qū)地理,2006,29(3):388-392.

[6] 何文秀,石云,馬超.基于DEM的彭陽縣地勢起伏度分析[J].寧夏工程技術(shù),2016,15(1):30-32.

[7] 趙斌濱,程永鋒,丁士君,等.基于SRTM-DEM的我國地勢起伏度統(tǒng)計(jì)單元研究[J].水利學(xué)報(bào),2015,46(6):284-290.

[8] 聶斐,殷興輝.基于MFC的實(shí)時數(shù)據(jù)動態(tài)顯示界面設(shè)計(jì)[J].電子設(shè)計(jì)工程,2013,21(10):136-138.

[9] 裴亮,蔡鋒,李國慶.DLT程序設(shè)計(jì)與應(yīng)用[J].測繪工程,2003,12(4):50-54.

[10] 賴祥芳.選擇合適的STL容器[J].數(shù)字技術(shù)與應(yīng)用,2015(9):177.

[11] 韓海輝,高婷,易歡,等.基于變點(diǎn)分析法提取地勢起伏度——以青藏高原為例[J].地理科學(xué),2012,32(1):101-104.

[12] 項(xiàng)靜恬,史久恩.非線性系統(tǒng)中數(shù)據(jù)處理的統(tǒng)計(jì)方法[M]. 北京:科學(xué)出版社,1997.endprint

主站蜘蛛池模板: 亚洲天堂久久久| 国产精品亚洲天堂| 国产高清在线观看| 亚洲天堂网在线观看视频| 亚洲综合极品香蕉久久网| 日本一区中文字幕最新在线| 婷五月综合| 国产在线观看一区精品| 久久综合九色综合97婷婷| 在线观看精品自拍视频| 亚洲精品视频在线观看视频| 婷婷成人综合| 久久99国产精品成人欧美| 激情爆乳一区二区| 囯产av无码片毛片一级| 国产在线精彩视频论坛| 伊人久久婷婷五月综合97色| 熟妇无码人妻| 国产毛片片精品天天看视频| 国产手机在线小视频免费观看| 日韩精品毛片人妻AV不卡| 国产欧美在线观看一区| 乱系列中文字幕在线视频| 国产成人高清精品免费5388| 久久久精品无码一二三区| 2020久久国产综合精品swag| 婷婷六月色| 黄色一及毛片| 国产区精品高清在线观看| 国产成人一二三| 天天色天天综合网| 精品無碼一區在線觀看 | 婷婷综合亚洲| 青青久视频| 亚洲国产精品无码AV| 中文字幕乱码二三区免费| 免费a在线观看播放| AV天堂资源福利在线观看| 二级特黄绝大片免费视频大片| 2021国产精品自产拍在线观看| 72种姿势欧美久久久大黄蕉| 亚洲欧美另类久久久精品播放的| 极品私人尤物在线精品首页| 九九九精品视频| 欧美日本中文| a色毛片免费视频| 日本亚洲成高清一区二区三区| 亚洲午夜国产精品无卡| 亚洲一区二区三区在线视频| 久青草免费在线视频| 欧美另类视频一区二区三区| 麻豆精选在线| 999在线免费视频| 欧美精品一区在线看| 毛片一级在线| av在线5g无码天天| 亚洲高清日韩heyzo| 国产噜噜在线视频观看| 国产黑人在线| 操美女免费网站| 91外围女在线观看| 免费毛片全部不收费的| 亚洲第一综合天堂另类专| 久久这里只有精品2| 1024你懂的国产精品| 精品人妻无码中字系列| 欧美精品成人一区二区视频一| 欧美另类一区| 欧美日韩中文国产| 国产成人无码播放| 亚洲欧美不卡视频| 欧美激情福利| 狠狠v日韩v欧美v| 亚洲性一区| 国内精自线i品一区202| 国内精品视频在线| 欧美不卡视频一区发布| 国内毛片视频| 谁有在线观看日韩亚洲最新视频| 91av国产在线| 在线免费a视频| 中文字幕在线一区二区在线|