1. 서 론
2. 파이썬(Python)기반 하천공간정보 자동 DB업로드 소프트웨어 RAUT (River information Auto Upload Tool) 개발
2.1 하천정비기본계획 CAD 정보 및 Dream 툴 현황과 한계
2.2 RAUT 툴 개요
2.3 RAUT 주요 기능과 원리
2.4 RAUT 인터페이스
3. RAUT 툴 대상지역 적용
4. 결론 및 향후 과제
1. 서 론
하천단면이나 하상변동 추적 등 하천공간정보는 유량이나 강우 등 수문시계열 정보와 더불어 계획홍수위 산정이나 하천구조물 신설로 인한 하천의 변화를 추적하는 데 있어 근간을 이루는 주요 정보로 국가차원의 유지 및 관리가 필요하다. 국내의 하천공간정보는 RIMGIS, WAMIS, 하천일람, WINS와 같은 웹기반 시스템에서 정보화되어 관리되고 있다. 이중 하천관리지리정보시스템(RIMGIS)는 국토교통부 및 산하 지방국토관리청에서 관리하고 있는 하천대장 및 부도, 구조물도 등의 다양한 하천관련정보를 정보화하여 인허가 및 하천기본계획 등의 하천업무를 보다 신속하고 효울적으로 수행하는 데 필요한 서비스 체계를 지원할 목적으로 2000년도 중반에 개발되어 지금까지 운영되고 있는 대표적인 하천정보시스템이다(http://www.river.go.kr/WebForm/sub_01/sub_01.aspx; MOLIT, 2002). 그러나, RIMGIS는 이러한 위상에도 불구하고 여러 가지 문제점들을 노정하고 있어 근본적 개선을 적극적으로 검토해볼 시점이라고 볼 있다. 우선, RIMGIS는 구축이 10년 이상된 구축기술로 구성되어 온라인 시스템 실행속도가 느리고, 물관리 일원화 와중에 관리주체가 불분명해진 상태이며, 제공되는 정보도 하천망이나 유역 정도로 차원 및 정확도도 낮고 활용도 및 현행화도 부족한 상태이다(Choi et al., 2019). 또한 공간정보 관리 DB표준으로 효율적인 관계형 구조 대신 종이지도(하천대장 등)를 수치화한 개념의 레이어 단위의 주제도로 관리하다보니 자료중복이 불가피하여 시스템이 무겁고, 자료간 연관검색이 거의 불가능하며, 신속한 하천지형 변화 업데이트가 어려운 상태이다. 즉, 관계형 자료구조를 사용하는 최적화된 공간관리를 못하고 있다. 미국의 경우 하천공간정보는 이미 2000년대 초반부터 관계형 공간정보체계를 구축하여 운영 중에 있다(Maidment et al., 2002; NHD Plus). 국내의 경우에도 국제적인 추세에 맞춰서 관계형 형태의 다차원 하천공관정보관리 표준으로의 전환 제안을 Shin et al. (2014) 및 Choi et al. (2018) 등이 하였으나 수자원공사 외 아직 국내에서 실무 반영이 시도되지 않고 있다. 최근 진행되고 있는 RIMGIS 개선 사업은 여전히 종래의 레이어 단위의 주제도들을 추가하거나 개정하는 데 머물고 있는 상태이다. RIMGIS 시스템에 포함되는 하천일람에서는 하천 시점/종점, 하천선형, 하천길이 등 현행화가 가장 정확하고 즉각적이고 신뢰할만한 하천공사의 품샘 산정 등에 기준으로 활용되는 하천 통계정보를 제공하고 있으나 RIMGIS의 공간정보와 결합되어 제공되지 않고 속성정보로만 제공되고 있는 문제가 있다(Choi et al., 2019). 이런 관계로 현재 우리나라의 대표적인 하천정보시스템인 RIMGIS의 실무 활용도는 낮은 것으로 알려져 있고, 대표적인 국내 하천업무 설계사들 등 목표한 이용주체들은 자체로 별도 공간정보시스템을 구축 활용하고 있는 등 비효율화를 겪고 있다. 따라서 차제에 제기되고 있는 최근 하천에서 활발하게 확보되고 있는 드론, CCTV 등 영상자료를 포함한 비정형자료의 관리는 엄두를 내지 못하고 있는 실정이다. 이러한 한계들 보다 필자가 생각할 때 가장 실무활용도를 저하시키고 현행화 상의 문제로 지적되는 부분은 하천법에 의거(MOLIT, 2020) 대략 10년 주기로 하천정비기본계획 수립 시 발생한 공간자료 관리 부실이다. 그간 누적 조단위 이상의 엄청난 예산을 투입하여 국가 및 지방하천, 소하천에 수행되어온 하천정비기본계획수립 시 비용의 30∼40% 투입되어 확보한 하천단면을 포함한 각종 하천공간 측량 정보가 RIMGIS 데이터베이스에 반영되지 않고 있다는 사실이다. 현재 RIMGIS에서는 하천기본계획보고서만 PDF 형태로 제공할 뿐, 실제 지형자료는 과업을 수행한 설계사에 개별 보관되는 등 활용도 뿐만아니라 망실의 우려가 높은 상황이다. 본 논문에서는 RIMGIS의 전반적 개선 방향 중 당면한 문제인 하천기본계획수립 시 측량되는 단면을 포함한 다양한 공간자료를 DB에 효율적으로 저장할 수 있게 하는 방안을 제시하여 위의 문제를 해결하는 단초를 제공하고자 한다. 이때 DB는 레이어형태의 현행 구조보다는 Choi et al. (2019)가 제시한 Arc River 기반 관계형 구조에 기반한다.
홍수방어와 같은 하천계획을 실시하기 위해서는 HEC-RAS 1차원 정상류(부등류)모의가 필요한데, HEC-RAS 1차원 모의를 구동하기 위해서는 하천의 지형측량으로부터 얻은 하천공간정보가 필요하다. 이러한 공간정보는 하천공간정보를 관리하는 RIMGIS (하천지리정보시스템)에서 제공한다. RIMGIS에서는 하천단면, 하천중심선, 제방선 등 하천공간정보를 제공하고, 하천공간정보는 HEC-RAS 1차원 모의 구동에 필요하다. 실제 현업에서 하천설계를 실시하는 국내 하천설계회사의 경우 하천측량자료의 원본 데이터인 CAD 자료로부터 AutoCAD에 호환되는 상용 소프트웨어인 Dream Plus 를 사용하고 해당 소프트웨어의 좌표내보내기 기능을 사용하여, 일일이 수작업으로 Excel에 하천단면의 좌표를 옮기고 다시 옮긴 좌표를 HEC-RAS 지형자료 입력란에 직접 수작업으로 입력을 실시하고 있고, 수작업으로 HEC-RAS 모형의 지형자료의 입력을 완료하고 모형이 구축되면 설계빈도 홍수량으로 모의를 통하여 설계홍수위를 산정하고 하천 설계에 반영한다. 이러한 하천설계를 실시하기 위해 HEC-RAS 모형를 구축하고 모의를 실시하는 과정은 많은 시간과 인력 및 비용이 소요된다.
본 연구에서는 HEC-RAS 1차원 모형 구축 및 구동에 상당한 수작업 및 시간소요 등의 다양한 문제점을 개선하기 위하여 CAD기반의 하천측량자료를 자동으로 읽어 HEC-RAS 구동에 필요한 하천공간정보를 DB화 시키고 HEC-RAS 1차원 수리모형을 구축하고 구동이 가능한 자동화 툴 RAUT (River information Auto Upload Tool)를 파이썬(Python) 코딩을 통하여 개발하였다. RAUT는 하천측량자료의 원본 데이터인 CAD자료를 파이썬 프로그램언어를 통하여 읽고, HEC-RAS 구동에 필요한 하천공간정보인 하천중심선, 단면, 제방자료를 추출하고, 하천공간정보표준 DB인 ArcRiver-K 자료모형에 하천공간정보를 업로드와 동시에 HEC-RAS 1차원 부등류 모의를 자동화 시키며, 사용자가 CAD자료로부터 HEC-RAS 모의구동이 용이하도록 하였다. 또한 본 연구에서는 RAUT의 개발에 대하여 상세히 작성하였고 실제 대상지역인 제주도 한천에 대하여 RAUT를 적용하였다.
2. 파이썬(Python)기반 하천공간정보 자동 DB업로드 소프트웨어 RAUT (River information Auto Upload Tool) 개발
2.1 하천정비기본계획 CAD 정보 및 Dream 툴 현황과 한계
현재 국내에서는 하천정비기본계획 수립을 위하여 설계회사로부터 하천 단면측량을 실시하여 하천공간정보를 취득하고 있다. 이러한 하천 단면측량으로부터 취득한 하천공간정보는 원본 데이터인 CAD자료 형태(Fig. 1)로 보관되고 있고, CAD자료로부터 하천단면정보를 HEC-RAS 1차원 모의를 구동하고 설계 홍수위를 산정하는데 사용되고 있다. 현업에서는 CAD자료로부터 HEC-RAS 1차원 모형의 지형자료를 입력하기위해 설계소프트웨어인 AutoCAD와 호환되는 Dream Plus라는 툴을 사용한다. Dream Plus를 사용하여 CAD자료로부터 HEC-RAS 모형을 구축하는 과정은 다음과 같다(Fig. 2). 첫째로 Dream Plus 툴의 좌표추출 기능을 사용하여 하천측량자료인 CAD파일에서 단면의 좌표를 추출하여 Excel에 하천의 단면 하나하나의 좌표를 입력한다. 두 번째, Excel에 옮겨진 하천단면의 좌표값은 CAD도면상의 좌표로 이를 단면별로 실제하상표고와 비교하여 실제 좌표값으로 변경한다. 세 번째, HEC-RAS 모형의 지형자료 입력란에 단면 개별로 수기로 입력하여 지형자료를 완성하게 된다. 이러한 수작업이 동반된 하천공간정보로부터 HEC-RAS 지형자료 구축까지의 과정은 많은 시간과 인력이 소모될 것으로 보이며, 하천공간정보 또한 DB화 되어있지 않아 자료 관리의 어려움이 있다.
2.2 RAUT 툴 개요
본 연구에서는 기존의 Dream Plus 툴을 사용하여 하천측량 CAD자료로부터 하천공간정보를 추출하고 HEC-RAS 모형을 구축하는 단계의 어려움을 개선하기 위해 CAD자료로부터 하천공간정보의 추출 및 DB 업로드 자동화 툴 RAUT를 개발하였다. 또한 하천공간정보의 DB화를 위해 국내하천표준인 ArcRiver-K (Choi et al., 2018)자료모형을 적용하였다. RAUT (River information Auto Upload Tool)은 오픈소스로 제공되는 프로그래밍언어인 python을 사용하여 개발하였고, RAUT 구동의 개념도는 다음과 같다.
Fig. 3과 같이 하천측량 원본 데이터인 CAD자료를 RAUT 툴에서 읽고 하천공간정보를 DB에 업로드 하고 하천공간정보로 HEC-RAS 모의를 실시하여 홍수위를 해석한다.
2.3 RAUT 주요 기능과 원리
2.3.1 CAD파일 읽기
RAUT 툴에서 CAD자료는 python 라이브러리인 ezdxf (Moitzi, 2021)를 사용하여 dxf형태의 CAD자료를 읽는다. 여기서 CAD자료는 x, y, z 3차원 공간좌표 정보가 있는 평면도를 사용한다. 하천측량자료의 평면도 CAD자료를 dxf 파일 형태로 취합하고 python 프로그래밍 언어를 사용하여 dxf 파일을 읽어 x, y 평면좌표에 접근하고 좌표에 해당하는 z값 표고값을 읽는다. 파이썬 코드로 x, y, z값에 접근한 CAD (dxf) 자료구조 형태는 다음 Fig. 4(a)와 같이 간단히 나타낼 수 있다. 추출된 x, y, z 공간좌표의 point 자료는 python 코드 내에서 배열의 자료형으로 저장되며 이때, 저장된 point 자료는 CAD자료에서 단면 구분이 되어있지 않은 무작위 점들의 집합이다.
2.3.2 단면 자동 인식 및 추출
배열 자료형으로 저장된 하천측량자료의 3차원 공간좌표들은 단면 구분이 되어있지 않은 각각의 하나의 point자료로 구성되어있다. HEC-RAS 1차원 모형의 지형자료의 단면자료로 입력하기 위해 여러 point자료를 단면으로 구분할 필요가 있다. 따라서 python 코드로 무작위 3차원 point자료로부터 단면자료를 추출하는 기능을 구현하였고, 단면을 구분하는 과정은 다음과 같다(Fig. 5).
1)단면 구분이 되어있지 않은 Scatter된 Point자료중 한 점을 선택 후 다른점 과의 모든 점들의 거리 계산.
2)임의점에서 가장 거리가 가까운 점 선택 후 직선의 방정식을 구한다(Fig. 6).
3)2번째 선택된 점에서 가장 가까운 점 2개를 찾고 직선의 방정식으로 부터의 거리가장 가까운 점을 선택.
4)선택된 3개의 점으로 선형회귀식을 산정하여 직선의 방정식을 재산정한다(Fig. 7).
5)재 산정된 직선의 방정식으로 부터 같은 방법으로 마지막으로 선택된 점에서 가장 가까운점 2개를 찾고 직선과 가장가까운점을 선택하여 반복 진행한다(Fig. 8).
6)선형회귀한 직선을 반복하여 산정할 때 상관계수 R값이 일정 비율 이상 상의하게 변동됬을 경우 단면 구분이 완료 되었다고 가정하고 선택된 점들을 단면으로 구분 짓는다(Fig. 9).
2.3.3 하천중심선을 추출
HEC-RAS를 구동하기 위해서는 하천단면자료 뿐만 아니라 하천 중심선 정보도 필요하다. 하천중심선은 HEC-RAS 지형자료에서 하천을 정의하고 해당 하천단면을 입력하기 위한 기본 틀이다. RAUT 에서는 하천 중심선을 추출 하기 위해 하천 단면의 중앙에 위치한 점들을 이어 하천 중심선으로 정의하고 점들을 배열형태로 저장하여 하천중심선의 좌표를 추출 하였다. 다음은 RAUT에서 구분된 하천단면좌표로부터 하천 중심선을 추출하는 과정을 나타낸 그림이다(Fig. 10).
2.3.4 하천제방의 위치를 추출
HEC-RAS 모형의 지형자료를 구축하고 하천단면을 입력한 후 하천 제방의 위치를 입력해야한다. RAUT에서 읽은 하천단면자료로부터 하천 제방의 위치를 특정하기 위해서는 하천단면 별로 표고 값을 비교해야한다. 우선 Section ID 별로 구분되어있는 하천단면 점들의 표고를 비교하여 일정 비율 이상 차이가 나는 위치를 찾아 제방의 위치로 정의한다. 다음 그림(Fig. 11)처럼 단변별 횡단면으로부터 좌측에서우측, 우측에서좌측으로 각각 표고의 차이를 산정하고 표고의 차이가 일정비율 이상 나타날 때 이전 점을 선택하여 하천단면의 제방이라고 정의하고, 하천단면의 좌안, 우안에 따라 제방에 해당하는 점들을 배열형태로 저장한다.
2.3.5 DB업로드
하천단면을 구분하고, 하천중심선 및 제방선의 정보를 추출하였으면, 해당 하천공간정보를 DB에 정보화하여 업로드 한다. 하천공간정보를 DB로 관리하고자 하는 이유는 하천정비기본계획보고인 pdf파일 도면으로 저장되어있는 하천공간정보의 DB화를 통하여 HEC-RAS 1차원 모형의 지형자료를 자동으로 입력하고 모의를 구동함에 목적이 있다. 본 연구에서는 CAD자료로부터 읽어들인 하천단면자료, 하천중심선, 제방선과 하천공간정보를오픈소스 데이터베이스 관리시스템인 mySQL로 구축한 국내하천 표준데이터모델 ArcRiver-K DB (Fig. 12)에 자동 업로드하고 HEC-RAS 1차원 모의를 실시하기 위한 지형자료를 자동으로 생성시키고자 하였다.
CAD자료로부터 배열형태로 추출한 하천공간정보를 DB에 업로드 하는 과정은 다음 그림(Fig. 13)과 같이, python코드 내에서 mySQL 쿼리문 명령어를 사용하여 하천중심선을 Polyline 형태로, 하천단면은 Point 형태, 하천제방은 Polyline 형태로 구축한 ArcRiver DB에 업로드한다.
2.3.6 HEC-RAS 구동에 필요한 입력자료 생성
앞에서 하천측량자료인 CAD데이터로부터 하천공간정보를 추출하고 DB에 업로드하는 과정을 모식도로 살펴보았다. 이어서 본 연구에서는 하천계획에 필요한 계획 홍수위를 산정하기 위해 DB의 하천공간정보로부터 HEC-RAS 1차원 모형을 구축하고 빈도별 홍수위 해석 과정을 자동화 하고자 하였다. 다음은 python 라이브러리인 HEC-RAS controller를 사용하여 하천공간정보로부터 HEC-RAS 1차원 모형을 자동구동을 나타낸 모식도(Fig. 14)이다.
하천단면, 하천중심선, 제방선 정보로부터 HEC-RAS를 실행 시키기위해서는 HEC-RAS 구동에 필요한 파일을 구축해야한다. 필요한 파일로 Flow Data (.f01), Geomety Data (.g01), Plan Data (.p01)의 파일이 필요하고 세 파일로부터 Project file (.pj)를 구축해야한다.우선 하천공간정보로부터 HEC-RAS 지형자료 정보인 Geometry Data (.g01)을 생성한다. 나머지 Flow Data (.f01)와 Plan Data (.p01)는 각각 HEC-RAS 1차원 모의 유량경계조건과, 상류(subcritical fow), 사류(supercritical flow)흐름인지 결정하는 구동 계획 조건을 나타내고, 마찬가지로 python 코드를 사용하여 파일을 생성한다. 일부 툴 사용자가 입력해야할 정보를 포함하고 프로잭트 파일로부터 HEC-RAS Controller (Dysarz, 2018)를 사용하여 배경에서 HEC-RAS 모형을 구동 가능하다.
2.3.7 python으로 HEC-RAS 배경 구동
Python 프로그램언어로 하천지형자료인 단면, 하천중심선, 제방선을 자동으로 추출하였다. 여기서 하천지형정보로부터 HEC-RAS project를 자동으로 구축하여 정류모의를 구동하고자한다. 하지만 HEC-RAS 정류모의를 실시하고자할 때 단면, 하천중심선, 제방선 만으로 HEC-RAS를 완벽하게 구동할 수 없기에, 매닝의 조도계수, 설계유량, 하상경사는 사용자가 직접입력할 수 있게 인터페이스화 하였다. 따라서 하천의 단면, 하천중심선, 제방선, 조도계수, 설계유량, 하상경사 데이터으로 python내에서 정류모의가 가능하다. python으로 HEC- RAS 프로잭트를 구동하는 방법은 다음과 같다. python 라이브러리인 hecrascontroller를 사용하여 project를 백그라운드 내에서 구동이가능하다. 구동에 필요한파일을 생성해야 하는데 파일은 g01, pj 확장자파일은 HEC-RAS controller를 실행하기 위해 필요한 HEC-RAS 프로잭트 파일이다. python script 로 텍스트파일을 생성하고, pj 확장자파일을 hecrascontroller에서 실행시키면 백그라운드에서 HEC-RAS가 구동되어 HEC-RAS 결과파일인 HDF파일을 생성한다.
2.4 RAUT 인터페이스
본 연구에서는 하천공간정보 추출, DB업로드 및 HEC-RAS를 구동하는 Tool RAUT를 개발하였고 소프트웨어구성은 다음과 같다(Fig. 15).
첫째로 CAD자료를 읽어들이고 단면을 구분하기위해 단면의 상류지점을 클릭하고 지형정보화 버튼을 클릭하면 단면이 구분되고 단면별 번호가 입력된다. DB업로드 버튼을 클릭하면 추출된 지형정보를 웹기반 DB에 업로드 되고 웹어플리케이션 내에서 지형정보가 도시가 된다. 마지막으로 홍수위해석 버튼은 추출된 하천단면 자료로부터 HEC-RAS 지형자료를 자동으로 구축하고 GUI에서 하천유량 및 하천경사, 조도계수를 입력하고 버튼을 눌러 실행하면 1차원 부등류 해석을 실시한다.
3. RAUT 툴 대상지역 적용
본 연구에서 개발한 RAUT 툴을 적용하기위해 제주도 한천유역의 한천하류를 대상지역으로 선정하여 측량회사로부터 제공받은 CAD자료를 입력자료로 하여 RAUT툴을 적용해보았다. 추출된 한천하류의 하천 공간정보를 웹기반 DB에 업로드 하고 지형정보를 도시하였다. DB는 하천표준데이터모델인 ArcRiver-k를 따르며 mySQL로 구성하였다. RAUT툴을 적용하여 한천유역의 홍수위 산정하는 과정은 다음과 같다.
우선 제주도 한천 유역의 CAD자료를 받아 DXF파일 형태로 읽어들인다(Fig. 16(a)). 다음으로 읽어들인 CAD자료로부터 지형정보를 추출하기위해 Set Geometry DB 탭에서 조도계수 또는 하천경사와 같은 필요한 정보를 입력하고 Run 버튼을 눌러 지형정보를 추출한다(Fig. 16(b)). 지형정보 추출이 완료되었으면 DB화 시키기위해 Upload to DB 탭에서 Upload 버튼을 눌러 DB에 하천공간정보를 저장한다. 저장된 하천공간정보는 다음 그림(Fig. 16(c))과 같이 저장되고 웹어플리케이션 상에서 도시가 된 것을 확인 할 수 있다. 마지막으로 DB에 하천공간정보 업로드가 완료 되었으면 Make HDF File 탭에서 HEC-RAS를 백그라운드상에서 구동시켜 HEC-RAS 결과파일인 HDF파일 형태로 홍수위 모의 결과파일이 생성된다(Fig. 17).
4. 결론 및 향후 과제
본 연구에서는 제주도 한천유역을 대상으로 CAD자료의 DB업로드 자동화 및 HEC-RAS 모의 실시 및 홍수범람지도 작성의 자동화 툴을 개발하고 적용하였다. 개발 된 자율 및 자동화 된 프로세스는 제주도 한천 유역에서의 홍수위 해석모의를 실시하였고, 이 툴은 홍수범람 정보가 데이터베이스에 저장 되고, 다양한 홍수 시나리오에 대하여 정보를 저장하여 실제 빈도별 홍수위 해석에 도움이 될 것으로 사료된다. 향후 본 연구에서 개발된 RAUT를 적용하여 산정된 빈도별 홍수위 자료로부터 실제 대상 유역의 표고 자료와 비교하여 홍수범람구역 및 홍수취약성분석을 실시하는데 효율적일 것으로 판단된다. 또한 본 RAUT 툴을 고도화 시켜 실제 하천유역에 대하여 폭넓은 검증을 실시할 예정이다.



















