C 實現D8演算法,提取流向和河道點

2021-10-10 02:48:59 字數 2725 閱讀 2787

#include

#include

#include

#include

#include

#include

#include

"math.h"

using

namespace std;

#define dem_size 100

//size要小於等於dem資料的長和寬,可以採用vector容器儲存資料,復用性更強

void

main()

//讀取資料,並儲存到陣列當中

string buf;

int src[dem_size]

[dem_size]=;

//資料儲存到二維陣列中

int count =0;

while

(getline

(ifs,buf))

count++

;//測試

/*for (int i = 0; i < dem_size; i++)

cout << endl;*/

}//列印dem提取結果

for(

int i =

0; i <

100; i++

) cout << endl;

}//關閉檔案

ifs.

close()

;//d8演算法

system

("pause");

system

("cls");

//對dem資料進行流向和河道提取

int vector[dem_size]

[dem_size]

=, result[dem_size]

[dem_size]=;

//初始化流向和河道陣列變數

int row = dem_size, col = dem_size;

double sqrt2;

double s =

0, n =

0, e =

0, se =

0, ne =

0, nw =

0, w =

0, sw =0;

sqrt2 =

sqrt(2

);//sqrt只支援float和double型別資料,計算平方根

time_t begin, end;

begin =

clock()

;//d8演算法實體,三目運算子

for(

int i =

0; i < row; i++

)else

if(m == se)

else

if(m == n)

else

if(m == e)

else

if(m == ne)

else

if(m == nw)

else

if(m == w)

else

if(m == sw)

else}}

}int i1 =

0, j1 =0;

//測試流向資料

/*for(i=0;ifor

(int i =

0; i < row; i++

)case2:

case4:

case8:

case16:

case32:

case64:

case

128:

default

:break;}

if(vector[i1]

[j1]==0

|| i1 >= row || j1 >= col)

break;}

}}for(

int i =

0; i < row; i++

)//流向結果和匯流結果儲存

//建立流物件

ofstream ofs;

//開啟方式

ofs.

open

("f:/yym/zunhua/dem/direction.txt"

,ios::out)

;//寫資料

for(

int i =

0; i <

100; i++

) ofs << endl;

}//關閉檔案

ofs.

close()

;//建立流物件

ofstream ofs02;

//開啟方式

ofs02.

open

("f:/yym/zunhua/dem/riverpoint.txt"

, ios::out)

;//寫資料

for(

int i =

0; i <

100; i++

) ofs02 << endl;

}//關閉檔案

ofs02.

close()

; end =

clock()

; cout <<

"runtime: "

<<

double

(end - begin)

/ clocks_per_sec << endl;

getchar()

;//return 0;

system

("pause");

}

D8演算法優化與斜坡單元提取方法研究

arcgis 10.2 如果某像元的 z 值在多個方向上均發生相同變化,並且該像元不是凹陷的一部分,則將使用定義最可能方向的查詢表來指定流向。請參閱 greenlee 1987 如果多個像元的最大下降方向都相同,則會擴大相鄰像元範圍,直到找到最陡下降方向為止。如果某像元的 z 值在多個方向上均發生相...

藍橋杯 演算法提高 8皇后 c 實現

演算法提高 8皇后 改 時間限制 1.0s 記憶體限制 256.0mb 問題描述 規則同8皇后問題,但是棋盤上每格都有乙個數字,要求八皇后所在格仔數字之和最大。輸入格式 乙個8 8的棋盤。輸出格式 所能得到的最大數字和 樣例輸入 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15...

演算法導論的C實現 畫出d叉樹

前幾天寫了乙個畫出二叉樹的函式 演算法導論的c實現 畫出二叉樹。章後有一道題是有關d叉樹的,記得後面幾章也會有用到d叉樹的地方,就把畫二叉樹的函式稍改了下,現在可以畫出d叉樹。d叉樹空格的計算原理和二叉樹很相近,比如現在有一棵高度為 h ei gh theight height 的d叉樹。當 n n...