수문 분석과 관련해서는 ArcHydro라는 무지 좋은 extesion이 있습니다.


저도 사용해보려고 깔았는데 프로시저 어쩌구 하면서 에러메세지가 떠서 봤더니 뭔가 설치를 잘못한 것 같습니다.(제대로 잘. 설치하는 방법은 http://www.biz-gis.com/6014 댓글에 잘 설명되어 있습니다)


그래서 Toolbox에 있는  Hydrology를 이용했습니다. 


기본적으로 ArcHydro와 돌아가는 로직은 똑같습니다.


다만, 기능의 이름이 이것저것 차이가 있어서 Toolbox  Hydrology로 유역을 구분하는 방법을 설명드리겠습니다.



Toolbox의 Hydrology 위치입니다. 제법 기능 많습니다.


사용자 지정 1.jpg



먼저 [Fill]이라는 기능으로 빈 부분을 채워줍니다.


예상 외로 움푹 들어가 있거나 삐죽 튀어나와 있는 곳을 smoothing하게 만들어주나 봅니다.


Tarboton et al (1991)에 따르면 DEM의 0.9 ~ 4.7 %는 이런 sink or peak한 cell이 있다고 하네요. 그래서 이 작업을 해줘야 한대요.


 

사용자 지정 3.jpg 




이제 물이 어느 방향으로 흐를지 계산하겠습니다.


[Flow Direction] 기능을 사용합니다.


[Flow Direction]은 해당 지점(즉, cell)에 빗방울이 떨어졌을 때 어느 방향으로 갈지를 계산합니다. 당연히 가장 낮은 곳으로 흐르겠지요.


예를 들어 아래에 있는 그림 들 중 왼쪽 그림에서 붉은 색으로 칠해져 있는 37라고 적힌 셀은 자신의 주변 8개의 셀 중에 가장 고도가 낮은 22라고 적힌 셀로 빗물이 흘러들어 갑니다. 


그래서 [Flow Direction] 결과 "4"라는 값을 갖습니다.


이 때 1, 2, 4, 8, 16, 32, 64, 128는 Direction Coding의 그림과 같이 방향을 나타냅니다.


이렇게 2의 n승을 사용하는 이유는 [Focal Flow]와 같은 기능에서와 같이 물이 어느 방향에서 흘러들어왔는지 계산을 할 때 숫자의 고유성을 유지하기 위해서 입니다.


예를 들어 [Focal Flow]결과 어떤 cell에 73이라는 숫자가 나왔다면 1, 2, 4, 8, 16, 32, 64, 128이라는 숫자 중에 1, 8, 64라는 숫자가 더해져서 나왔음을 단번에 알 수 있습니다.


다시 말하면 73이라는 결과가 나온 cell은 동쪽, 남서쪽, 북쪽방향에서 물이 흘러들어왔다는 뜻이 됩니다.


[Focal Flow]에 대해서는 다음에 더 자세히 설명하겠습니다.

 

    사용자 지정 5.jpg




결과는 다음과 같이 나타납니다.


사용자 지정 6.jpg





[Basin]이라는 기능으로 유역을 만들었습니다. 결과는 다음과 같습니다. 흠... 그런데 마음에 들지 않습니다. 권역이 너무 크네요.


사용자 지정 7.jpg 





그래서 다르게 만들어보겠습니다.


먼저 물이 가장 많이 흘러들어와서 하천을 이루고 있는 곳을 [Flow Accumulatio]으로 만들었습니다.


흰색이 하천입니다. 물이 많이 흘러들어왔을테니 이 cell들은 높은 값을 갖습니다.


사용자 지정 8.jpg 





다음으로 하천을 정의하겠습니다.


[Single Map Algebra]에 다음과 같이 적습니다.(Arc Toolbox-->Spatial Alayst tools-->Map Algebra-->Single map Algebra)


단, flowacc에는 앞의 과정인 [Flow Accumulatio]에서 output 데이터로 지정했던 이름을 씁니다.


con (flowacc > 100000, 1)


이것은 "얼만큼의 물이 누적되어야 그것을 하천으로 부를 것이냐!" 라는 것을 정의하는 부분입니다.

여기서 값을 크게 지정할 수록 큰 하천을, 값을 작게 지정하면 작은 하천까지 하천으로 정의됩니다.


저는 100000을 적용해봤습니다.


사용자 지정 9.jpg



결과, 검정색 cell(값은 1)이 "하천으로 정의되어" 추출되었습니다.


사용자 지정 10.jpg





이제 정의된 하천들의 차수를 지정해야 합니다.


여기서는 [Stream Order]로 구할겁니다.


input stream raster에는 바로 전 단계에서 "하천으로 정의한" 파일을 넣습니다.


input flow direction rater에는 앞 단계에서 [Flow Direction]으로 만들었던 파일을 넣습니다.


사용자 지정 11.jpg 




저는 숫자를 너무 크게 잡아서 4차수까지 나왔네요.


사용자 지정 12.jpg




이제 마지막 단계입니다. 하천 유역을 생성하겠습니다.


[Watershed] 에서 다음과 같이 설정합니다. 


input flow direction raster에는 물이 어디로 흐를것인가에 대한 데이터를,


input rater or feature pour point data에는 하천들의 차수를 정의한(stream order) 데이터를 넣습니다.


    사용자 지정 13.jpg 





[Watershed] 결과로 나온 하천 유역입니다. 여기에 하천 차수(stream order)를 올려봤습니다.


사용자 지정 14.jpg 



하천 유역 만드는 과정 끝!


혹시 결과로 나온 하천 유역을 polygon으로 만들고 싶으시면 extension의 spatial analyst-->convert-->raster to feature를 하시면 됩니다.



하천 유역 구하는 과정... 꽤나 여러 단계를 거쳐야 하네요.^^