2025년도 주요사업 용역보고서	일반용역-2025-??
QGIS 기반 KICT 수자원 해석 모델 실용화 도구 개발
수행기관 : ㈜헤르메시스
2025.10.

QGIS 기반 KICT 수자원 해석 모델 실용화 도구 개발

보고서

2025.10.

(주)헤르메시스

목   차??

제1장 과업범위	1

1. 용역명	1

2. 용역 범위	1

2.1 홍수위험 노출 분석을 위한 위험자산(건물, 차량, 농업, 인구) 공간자료 구축	1

2.2 위험자산 공간자료 구축 성과 검증 및 데이터베이스 서버 배포	1

제2장 사업수행내용	2

1. 용역 수행 내용	2

1.1 홍수위험 노출 분석을 위한 위험자산(건물, 차량, 농업, 인구) 공간자료 구축	2

1.1.1 건물자산 공간자료 구축	3

1.1.2 차량자산 공간자료 구축	5

1.1.3 농업자산 공간자료 구축	7

1.1.4 인구 공간자료 구축	9

1.2 위험자산 공간자료 구축 성과 검증 및 데이터베이스 서버 배포	11

1.2.1 위험자산 공간자료 구축 성과 검증	11

1.2.2 데이터베이스 서버 배포	11

제3장 결론	13

참고문헌	14

표 차례??

[표 1] 건물 인벤토리 구축 시 요구되는 전국 단위 기초자료	3

[표 2] 차량 인벤토리 구축 시 요구되는 전국 단위 기초자료	6

[표 3] 농업 인벤토리 구축 시 요구되는 전국 단위 기초자료	7

[표 4] 인구 인벤토리 구축 시 요구되는 전국 단위 기초자료	9

그림 차례??

[그림 1] QGIS PlugIn인 Build inventory tool 1.0.3	3

[그림 2] 건물 인벤토리 구축 GUI	4

[그림 3] 인벤토리에 사용되는 DBMS의 index 개념도	5

[그림 4] 건물 Table에 대한 DDL SQL 과정 예시	5

[그림 5] 차량 인벤토리 구축 GUI	6

[그림 6] 본 과업에서 구축한 전국 범위 차량 인벤토리 데이터	7

[그림 7] 농업 인벤토리 구축 GUI	8

[그림 8] 농업 Table에 대한 DDL SQL 과정 예시	8

[그림 9] 인구 인벤토리 구축 GUI	9

[그림 10] 본 과업에서 구축한 전국 범위 인구 인벤토리 데이터	10

[그림 11] 차량 인벤토리 검증 자료(부산 강서구 대저2동)	11

[그림 12] 인구 인벤토리 검증 자료(부산 강서구 대저2동)	11

[그림 13] K-CDMS 인벤토리 다운로드 웹사이트	12

제1장

과  업  범  위

1. 용역명

QGIS 기반 KICT 수자원 해석 모델 실용화 도구 개발

2. 용역 범위

2.1 QGIS 기반 K-FRM 모델 운용을 위한 인벤토리 구축 및 분석 모듈 고도화

1) 전국 단위 건물, 차량, 농업, 인구 인벤토리 갱신 구축

2) 인벤토리 구축 결과 정확도 검증

3) 인벤토리 구축 성과 데이터베이스 서버 배포

4) 홍수피해 원단위, 파라미터, 손상함수 등 변경사항 반영

5) 홍수피해 분석도구(K-FRM) 기능 안정화

2.2 예측강우 생산 모델(KICT-RAIN-AI) QGIS 플러그인 고도화

1) KICT-RAIN-AI QGIS 플러그인 고도화

2) KICT-RAIN-AI QGIS 플러그인 호환성 검증

3) KICT-RAIN-AI QGIS 플러그인 배포

2.3 QGIS 기반 SWAT-K 기본 설계 및 분석결과 표출 기능 구현

1) QGIS 플러그인 QSWAT 현황 및 특징 파악

2) SWAT-K 분석 결과파일에 대한 데이터 구조 파악 - 일단위 소유역별 유량자료 대상 (output_daily.rch)

3) 유량자료에 대한 data transform (소유역별 split output_daily_소유역구분명xxx.rch) 및 시간순 sorting

4) 후처리 기능의 PoC(일단위 유량 챠트조회, 소유역별 연도별 유황곡선 조회, 소유역별 연도별 최대홍수량 및 첨두홍수량 표현)

제2장

사  업  수  행  내  용

1. 용역 수행 내용

1.1 QGIS 기반 K-FRM 모델 운용을 위한 인벤토리 구축 및 분석 모듈 고도화

1.1.1 전국 단위 건물, 차량, 농업, 인구 인벤토리 갱신 구축

수행사는 QGIS 기반 K-FRM 모델 운용을 위한 전국 단위 인벤토리 데이터 구축 경험을 보유하고 있으며, 2018년부터 2022년까지 건물, 차량, 농업, 인구 인벤토리 데이터를 단계적으로 구축하였다. 구축된 인벤토리 데이터는 K-CDMS 웹 플랫폼을 통해 공유하여, 사용자가 다운로드 및 활용할 수 있도록 제공하였다.

본 용역에서는 발주처의 요청에 따라 기준 연도를 2023년으로 설정하고, 공간적 범위를 전국(지방자치단체 단위)으로 하여 건물·차량·인구·농업 인벤토리 데이터를 갱신 구축하였다.

인벤토리 구축에는 기개발된 QGIS Plug-in 기반 자동화 도구인 Build inventory tool 최신 버전을 활용하였으며, 발주처에서 제공한 기초자료(원자료)를 기반으로 요구상황에 부합하는 인벤토리 데이터를 구축하였다.

[그림 ] QGIS Plug-in 기반 Build Inventory Tool

[표 ] 발주처에서 제공한 기초자료(원자료)

순서	인벤토리 용도	파일명	내용
1	인구, 차량	bnd_oa_00_2023_4Q.zip	집계구경계 전자지도(SHP)
2	인구, 차량	2023년기준_2023년_성연령별인구.txt	집계구 인구통계(성 연령별 인구)
3	인구, 차량, 농업, 건물	jscode20240208(말소코드포함).zip	법정동 코드
4	인구, 차량, 농업, 건물	emd.shp	법정동경계 전자지도
5	차량	입력자료1_ 자동차등록통계(차량대수)_2023년.xlsx	자동차 등록 통계(차량대수)
6	차량	입력자료2_차종비(전국)_2023년.xlsx	차종비
7	차량	2023년기준_2023년_ 산업분류별(10차_대분류)_종사자수.txt	집계구 사업체통계(종사자 수)
8	농업	248개 시군구 농업데이터(SHP)	스마트팜 맵
9	농업	시도별밭재배현황비_2023.xlsx	밭 재배 현황비
10	건물	17개 시/도 단위로 구분된 Polygon 타입 SHP 파일	도로명주소 기본도_건물
11	건물	건물코드정의서_2023년.xlsx	건물 용도 및 구조 구분 코드
12	건물	mart_djy_03.txt	건축물대장 표제부

차량 인벤토리 데이터 구축을 위한 기초자료는 발주처로부터 제공받은 자동차 등록 통계(차량 대수) 파일, 차종비 파일, 집계구 인구 및 종사자 수 통계자료, 법정동 코드, 법정동 경계 전자지도를 입력자료(Input Data)로 활용하여 구축하였다. Build inventory Tool에 입력하기 전에, 기초자료의 일부 필드명을 Tool 구동에 적합하게 보완하였으며, 그 내역은 아래 표에 제시하였다.

[표 ] 차량 인벤토리 전국 단위 기초자료 및 수정 내용

구분	입력 데이터	포맷	기초 자료 수정 내용
차량	자동차 등록 통계(차량대수)	Excel	없음
	차종비	Excel	없음
	집계구경계 전자지도	SHP	- 필드명 수정 BASE_DATE → BASE_YEAR
	집계구 인구통계(성 연령별 인구)	Text	-헤더 추가 : BASE_YEAR^TOT_OA_CD^ITEM^VALUE
	집계구 사업체통계(종사자 수)	Text
	법정동 코드	Excel	없음
	법정동경계 전자지도	SHP	도형 수정(Repair) 진행

이러한 가공, 정제 과정은 데이터 트랜스폼의 일종이며, 데이터 엔지니어링에서 가장 중요하면서도 간과되기 쉬운 절차이다.

아래 그림은 2025년 수행된 본 과업에서 2023년 대상 자료에 대한 변환 과정의 일부 예시이다.

[그림 ] 차량 Inventory DB 구축 지원 툴 GUI

상기 그림은 차량 인벤토리에 대한 데이터 변환과정의 예시이며, 아래 그림을 보면 수십개 이상의 속성(어트리뷰트)이 관여되는 복잡한 과정임을 확인할 수 있다.

[그림 ] 본 과업에서 구축한 2023년 전국 범위 차량 인벤토리 데이터

농업 인벤토리 데이터 구축을 위한 기초자료는 스마트팜 맵 파일, 밭 재배 현황비, 법정동 코드, 법정동 경계 전자지도를 입력자료(Input Data)로 활용하여 구축하였다. 농업 인벤토리 데이터의 핵심 데이터인 스마트팜 맵 기초데이터는 시·군·구 단위로 구분된 총 248개 SHP 파일로 구성되어 있으며, 약 10.3GB 규모의 대용량 데이터이다.

Esri에서 개발한 벡터 자료 포맷. 사실상의 산업표준 포맷으로 간주됨

[그림 ] 발주처에서 제공한 농업 기초데이터

농업 인벤토리 데이터 구축에는 농업종류(과수, 밭, 논, 시설, 인삼, 비경지) 항목이 필수적으로 활용된다. 발주처에서 제공한 스마트팜맵 기초자료의 경우, 농업종류 관련 필드명이 기존 시스템과 상이한 것으로 확인되어, 스마트팜맵과 Build inventory tool 간의 농업종류 관련 필드명을 일치화하였다. 이 외의 기초자료 또한 Tool 구동에 적합하게 일부 필드명을 보완하였으며, 그 내역은 아래 표에 제시하였다.

[표 ] 농업 인벤토리 구축 시 요구되는 전국 단위 기초자료

구분	입력 데이터	포맷	기초 자료 수정 내용
농업	시군구단위 스마트팜 맵 (248건)	SHP	- 농업종류 필드명 일치화 : FL_NM → CLSF_NM
	시도별 밭 재배 현황비	Excel	- 시도명 수정 : 강원도 → 강원특별자치도 전라북도 → 전라특별자치도
	법정동 코드	Excel	없음
	법정동경계 전자지도	SHP	도형 수정(Repair) 진행

아래 그림은 2025년 수행된 본 과업에서 2023년 대상 농업 자료에 대한 변환 과정의 일부 예시이다.

[그림 ] 농업 Inventory DB 구축 지원 툴 GUI

[그림 ] 본 과업에서 구축한 2023년 전국 범위 농업 인벤토리 데이터

인구 인벤토리 데이터 구축을 위한 기초자료는 집계구 경계 전자지도, 성·연령별 인구 집계 파일, 법정동 코드, 법정동 경계 전자지도를 입력자료(Input Data)로 활용하여 구축하였다. Build inventory Tool에 입력하기 전에, 기초자료의 일부 필드명을 Tool 구동에 적합하게 보완하였으며, 그 내역은 아래 표에 제시하였다.

[표 ] 인구 인벤토리 구축 시 요구되는 전국 단위 기초자료

구분	입력 데이터	포맷	기초 자료 수정 내용
인구	집계구경계 전자지도	SHP	필드명 수정 : BASE_DATE → BASE_YEAR
	집계구 인구통계(성 연령별 인구)	Text	-헤더 추가 : BASE_YEAR^TOT_OA_CD^ITEM^VALUE
	법정동 코드	Excel
	법정동경계 전자지도	SHP	도형수정(Repair) 진행

이처럼 인벤토리 구축을 위한 입력 데이터는 영원불변이 아니라, 여러 가지 상황에 따라 변경되기 때문에 인벤토리 구축 과정 역시, 단순히 기계적으로 수행되는 것이 아니라, 전문가의 관여가 요구된다. 기존 절차대로 수행시 오류가 발생하면 역추적하여 어떠한 입력 부분에서 변경이 있었는지 찾아내야 한다. 또한 오류가 명시적으로 발생하지 않더라도 샘플링 검수 등을 통하여 의도한 데이터변환(데이터 트랜스폼)이 이루어 졌는지 검증해야 한다. 이러한 부분은 숙련된 전문가의 개입이 반드시 필요하다.

[그림 ] 인구 Inventory DB 구축 지원 툴

[그림 ] 본 과업에서 구축한 2023년 전국 범위 인구 인벤토리 데이터

건물 인벤토리 데이터 구축을 위한 기초자료는 도로명 주소 기본도(건물), 건물코드 정의서, 법정동 코드, 법정동 경계 전자지도, 건축물대장 표제부를 입력자료(Input Data)로 활용하여 구축하였다. Build inventory Tool에 입력하기 전에, 건축물대장 표제부의 필드명을 Tool 구동에 적합하게 보완하였으며, 그 내역은 아래 표에 제시하였다.

?? 원>심 : 과업기간중 발주처 자료 입수여부 재확인 합시다.

[표 ] 건물 인벤토리 구축 시 요구되는 전국 단위 기초자료(?? caption 가운데? 좌측? 정렬?)

구분	입력 데이터	포맷	기초 자료 수정 내용
건물	도로명 주소 기본도_건물	SHP	- 표제부 헤더 추가 : 관리_건축물대장_PK | 대장_구분_코드 | 대장_구분_코드_명 | 대장_종류_코드 | 대장_종류_코드_명 | 대지_위치 | 도로명_대지_위치 | 건물_명 | 시군구_코드 | 법정동_코드 | 대지_구분_코드 | 번 | 지 | 특수지_명 | 블록 | 로트 | 외필지_수 | 새주소_도로_코드 | 새주소_법정동_코드 | 새주소_지상지하_코드 | 새주소_본_번 | 새주소_부_번 | 동_명 | 주_부속_구분_코드 | 주_부속_구분_코드_명 | 대지_면적(㎡) | 건축_면적(㎡) | 건폐_율(%) | 연면적(㎡) | 용적_률_산정_연면적(㎡) | 용적_률(%) | 구조_코드 | 구조_코드_명 | 기타_구조 | 주_용도_코드 | 주_용도_코드_명 | 기타_용도 | 지붕_코드 | 지붕_코드_명 | 기타_지붕 | 세대_수(세대) | 가구_수(가구) | 높이(m) | 지상_층_수 | 지하_층_수 | 승용_승강기_수 | 비상용_승강기_수 | 부속_건축물_수 | 부속_건축물_면적(㎡) | 총_동_연면적(㎡) | 옥내_기계식_대수(대) | 옥내_기계식_면적(㎡) | 옥외_기계식_대수(대) | 옥외_기계식_면적(㎡) | 옥내_자주식_대수(대) | 옥내_자주식_면적(㎡) | 옥외_자주식_대수(대) | 옥외_자주식_면적(㎡) | 허가_일 | 착공_일 | 사용승인_일 | 허가번호_년 | 허가번호_기관_코드 | 허가번호_기관_코드_명 | 허가번호_구분_코드 | 허가번호_구분_코드_명 | 호_수(호) | 에너지효율_등급 | 에너지절감_율 | 에너지_EPI점수 | 친환경_건축물_등급 | 친환경_건축물_인증점수 | 지능형_건축물_등급 | 지능형_건축물_인증점수 | 생성_일자
	건물코드 정의서	Excel
	법정동 코드	Excel
	법정동경계 전자지도	SHP
	건축물대장 표제부	/.,Text

1.1.2 인벤토리 구축 결과 정확도 검증

전국 단위로 구축된 K-FRM 모델 입력용 인벤토리 데이터는 사용자 배포에 앞서 정밀 검증을 수행하였다.

전국 범위로 구축된 인벤토리 중 부산 강서구 대저2동을 대상으로, Build Inventory Tool 산출 결과와 수작업 결과를 비교 검증하여 데이터 정확도를 확보하였다. 수작업 검증은 QGIS 3.4와 구글 스프레드시트를 활용하여 구축 및 계산하였으며, 검증문서의 URL 경로는 발주처에 공유하였다. 구글 스프레드세트는 엑셀 파일과 달리 리빙 도규먼트(Living Document)기술이며, 내용의 업데이트가 상호 실시간 전파되는 장점이 있다. 이러한 효율적 기술을 통하여 검증 수행 및 검증 검토를 유기적으로 진행하였다.

https://en.wikipedia.org/wiki/Living_document#In_technology

[그림 ] 2023년 인벤토리 데이터 검증 INPUT DATA 목록

차량 및 인구 인벤토리 데이터는 집계구 경계를 기준으로 산출되며, 이 과정에는 집계구 단위 성·연령별인구수와 종사자별 인구수 통계자료가 계산식에 반영된다. 모듈에서 산출한 통계자료의 정확성을 확인하기 위해, 집계구 단위로 성·연령별인구수와 종사자별 인구수를 수작업으로 산출하고 모듈 산출 결과와 비교한 결과, 모두 일치함을 확인하였다.

[그림 ] 전국 집계구 단위 인구 통계 검증화면 예시

Build Inventory Tool을 활용하여 차량 및 인구 인벤토리 데이터를 구축한 후, 공간데이터 검증 과정에서 슬리버 폴리곤(Sliver polygon)으로 판단되는 노이즈 데이터가 확인되었다.

인접 폴리곤 경계 처리 과정에서 발생하는 매우 좁고 길쭉한 불필요한 다각형 데이터(출처: https://en.wikipedia.org/wiki/Sliver_polygon)

[그림 ] Sliver polygon 예시

차량 및 인구 인벤토리를 생성하는 과정에서 법정동경계와 집계구 경계를 교차(intersection)한 후 면적비율을 계산에 반영하였다. 이 과정에서 행정경계 일부에서  Sliver polygon이 생성된 것으로 확인되었으며, 면적 기준으로는 약 0.2㎡(약 45cm × 45cm) 수준이다. 해당 Sliver polygon은 아래 그림의 LineString 형태의 RED 영역으로 표시된 부분에서 나타난 것으로 판단되었다.

[그림 ] 인벤토리 데이터의 Sliver polygon(붉은색)

해당 노이즈 데이터는 전체 레코드의 약 4.79%(건수 대비)에 해당하며, 차량 인벤토리 DB의 차량 대수(type별: 승용, 승합, 화물) 합계는 모두 0으로 산출됨을 확인하였다. 따라서 본 노이즈 데이터는 인벤토리 데이터에서 제외하는 것으로 발주처와 협의하였다. 이처럼 인벤토리 구축과정에서의 이슈는 발주처와 유기적으로 협의하여 결정하였다.

[표 ] 인벤토리 데이터 레코드수와 면적 비율

구분	레코드수	면적(㎡)
인벤토리	159,740	100,054,406,223.71
면적 0.2㎡ 미만	7,651	435.96
비율	4.79%	0.00000044%

전국 범위로 구축한 인구 인벤토리(152,089건), 차량 인벤토리(152,089건), 농업 인벤토리(10,736,673건), 건물 인벤토리 구축자료 중 부산광역시 강서구 대저2동을 대상으로 수작업으로 직접 산출한 결과와 Build inventory tool 산출 결과를 비교 검증하여 데이터의 정확도를 확보하였다. 아래 그림은 인구·차량·농업·건물 인벤토리에 대한 검증 비교 결과 화면이다.

[그림 ] 인구 인벤토리 검증 화면 예시(부산 강서구 대저2동)

[그림 ] 차량 인벤토리 검증 화면 예시(부산 강서구 대저2동)

[그림 ] 농업 인벤토리 검증 화면 예시(부산 강서구 대저2동)

데이터 검증 과정은 모든 과정을 수작업으로 수행해야 하므로 작업 프로세스가 복잡하며, 여러 단계를 거쳐 진행된다. 또한 검증 과정에서 데이터의 조정 사항이 발생할 수 있어, 자동화 툴을 이용한 데이터 구축보다 더 많은 시간과 비용이 소요된다. 그럼에도 불구하고, 본 수행 과정에서는 데이터의 신뢰성과 정확성을 확보하기 위해 여러 단계의 정밀 검증을 수작업으로 수행하여 최종 인벤토리 데이터의 품질을 확보하도록 하였다.

1.1.3 인벤토리 구축 성과 데이터베이스 서버 배포

농업 인벤토리 데이터는 전국 248개 시·군·구 SHP 파일로 구축되었으며, 전체 데이터 용량은 약 11.1GB, 총10,736,673건의 레코드로 구성되어 있다. 구축된 248개 시·군·구 단위 농업 인벤토리 데이터가 누락 없이 DBMS에  적재되었는지 여부를 확인하였다.

[그림 ] 시군구 단위 전국 농업 레코드수

이와 같이 방대한 데이터를 시·도 단위 또는 시·군·구 단위로 구분하여 다운로드하는 과정에서는 DBMS 내부에서 성능(Performance) 저하가 발생할 수 있다. 이에 따라 데이터 처리 속도를 개선하기 위해 농업, 차량, 인구 인벤토리 데이터에 인덱스(Index) 정보를 구축하였다. 인덱스는 인벤토리 테이블의 l_admin(법정동 주소), sig_cd(시·군·구 코드), geometry(공간객체 정보) 컬럼에 대해 생성하였다.

[그림 ] 농업 Table에 대한 SQL 인덱스 생성 사례

수행사는 본 사업에서 구축한 인벤토리 구축 성과를 K-CDMS 웹사이트를 통해 배포하였다. 이때, 지방자치단체(시도 단위, 시군구 단위)로 구분된 인벤토리 SHP 포맷과 함께,  속성값을 저장하는 데이터베이스파일(DBF), 공간 객체의 빠른 검색을 위한 공간 index 파일(SHX), 좌표참조 정보 파일(PRJ)과 동반하여 압축파일로 구성하고, 이를 다운로드 가능하도록 제공하였다.

[그림 ] K-CDMS 인벤토리 다운로드 웹사이트(2023년 대상그림가능시에 교체 예정..??)

1.1.4 홍수피해 원단위, 파라미터, 손상함수 등 변경사항 반영

?? 원 ->석 :  확인해봐요~

본 과업에서는 발주처로부터 제공되는 최신 피해 산정 기준 데이터(원단위, 파라미터, 손상함수 등)를 QGIS 기반 홍수피해 분석 도구(K-FRM)에 반영함으로써, 분석의 신뢰도와 실용성을 제고하였다. 이는 수행사가 보유하고 있는 기존 노하우 및 기술력을 바탕으로 수행하였다. 구체적으로는 기존 K-FRM 아키텍처에 대한 충분한 이해와 기존  데이터 구조에 대한 이해, 그리고 Git 기반 소스코드 관리 능력에 기인한다.

[그림 ] 수행사가 추진한 기존 K-FRM building 피해 원단위

1.1.5 홍수피해 분석도구(K-FRM) 기능 안정화

수행사는 기존 QGIS 기반 K-FRM 모듈 제작에 참여하였으며, 이에 관련된 개발 경험 과 노하우를 압도적으로 월등하게 보유하고 있다.

[그림 ] K-FRM Tool Release 상황

수행사는 발주처와 긴밀히 협력하여 변경된 내용을 충분히 이해하고, 이를 효율적으로 반영하였다. 수행사는 발주처가 요구한 변경 사항을 소스코드에 반영하였다. K-FRM의 코드는 Microsoft GitHub Repository를 통해 관리되며, 수행사는 소스코드의 커밋, 롤백 ,브랜치 ,머지 등 Git의 버전관리에 대한 전문성을 보유하고 있다. 필요한 경우 특정 버전으로 롤백할 수 있다.

예를 들어 본 용역기간 중 고난이도 기술 이슈가 발생한 바 있다. 이는 발주처의 협조 등을 통하여 신속하게 v1.8.4에서 조치되었으며, 그 내역은 요약하면 아래와 같다.

- Hazard 모듈에서 '침수구역도 변환 오류' 문제 발생

- 해결이 완료된 KFRM 1.8.4 버전을 배포

- 해당 오류는 인구 및 차량 관련 부분에서 depth code가 0부터 10 사이의 정수 범위를 벗어날 경우 발생

- 건물, 농업 부분에서는 해당 오류가 발생하지 않음

- depth code 값이 0보다 작을 경우 0으로 인식되도록 수정 조치함

1.2 예측강우 생산 모델(KICT-RAIN-AI) QGIS 플러그인 고도화

1.2.1 KICT-RAIN-AI QGIS 플러그인 고도화

수행사는 AI 및 QGIS 플러그인 제작에 대한 경험이 있으며, KICT에서 주관하는 다수의 수자원, 물관리 모델을 협업한 경험을 가지고 있다.

[그림 ] 제주 홍수 피해 예측 MLOps 구성(KICT)

[그림 ] 수행사의 K-FRM GitHub Repository

본 과업에서는 발주처(KICT)에서 제공한 예측강우 생산 모델(KICT-RAIN-AI)의 실행 소스코드를 기반으로, PyQGIS, PyQt5, Tensorflow 기술을 활용하여 QGIS 플러그인을 고도화하였다. 주요 고도화 내용은 다음과 같다.

주요 고도화 범위

모델 실행 연계 기능

발주처가 제공한 “KICT-RAIN-AI 모델”파일과의 연동 기능을 구현하여, QGIS 환경 내에서 작업이 순차적으로 이루어지는 일관된 워크플로우를 구축하였다. 사용자는 플러그인을 통해 입력자료 생성부터 모델 실행, 결과 수신, 그리고 후처리까지의 전 과정을 중단 없이 수행할 수 있다.

GUI/UX 최적화

Qt Designer를 기반으로 사용자 친화적인 다이얼로그 화면을 설계하고 개선하였다. 기존 인터페이스 설계안과 발주처의 요구사항을 적극 반영하여, 복잡한 설정 과정 없이 몇 번의 클릭만으로 모델 실행이 가능하도록 사용자 경험(UX)을 최적화하였다.

[그림 ] KICT-RAIN-AI UI/UX

클래스 기반 구조화 및 모듈화

코드의 유지보수 편의성과 재사용성을 극대화하기 위해 객체지향 프로그래밍(OOP) 원칙에 따라 전체 구조를 설계하였다. 입출력, 모델 실행, 결과 처리 등 핵심 기능들을 각각 독립된 모듈로 분리하여 안정성을 높이고 향후 기능 확장이 용이하도록 구성하였다.

[그림 ] OOP 형태로 구현된 KICT-RAIN-AI

기존 인터페이스 및 구조 반영

기존에 개발된 QGIS 플러그인의 설계안, 아키텍처, UI 구성안을 면밀히 분석하고 이를 기반으로 신규 기능을 개발하여 기존 사용자들이 새로운 환경에 쉽게 적응할 수 있도록 일관성을 유지하였다.

1.2.2 KICT-RAIN-AI QGIS 플러그인 호환성 검증

본 과업에서는 플러그인 고도화 개발 완료 후, 발주처가 지정한 운영 환경에서의 호환성 및 안정성 검증을 수행하였다. 테스트는 QGIS 3.40 LTR 버전을 기준으로 Windows 11 PRO와 Ubuntu 24.04 LTS(Gnome 내장) 두 가지 운영체제에서 진행되었다. 검증 과정에서는 다양한 데이터 형식의 입출력 처리, 각 운영체제에서 모델 실행 파일과의 안정적인 연동, 그리고 GUI 요소들의 반응성 등 핵심 기능들을 중점적으로 점검하였다.

[

[그림 ]  KICT-RAIN-AI 검증 과정

검증 결과, Windows 11 PRO 환경에서는 플러그인의 모든 핵심 기능이 안정적으로 작동함을 확인하였다. 반면, Ubuntu 24.04 LTS 환경에서는 테스트 중 일부 호환성 문제가 발견되어(?? 원 ->석 : 여기 보완) 이를 극복하기 위하여는 상당한 원인 분석 및 수정 조치가 필요한 것으로 파악되었다. 다만 본 QGIS 플러그인 프로그램의 사용자 후보층에 대한 분석이 선행되어야 이를 위한 투자회수(ROI) 측면 판단이 가능할 것으로 예상된다.

1.2.3 KICT-RAIN-AI QGIS 플러그인 배포

수행사는 QGIS 플러그인 개발을 GitHub로 진행하며, 이에 대한 관리 경험을 가지고 있다.

[그림 ] K-FRM Git Log

수행사는 고도화된 KICT-RAIN-AI QGIS 플러그인을 발주처와 일반 사용자가 손쉽게 설치하고 활용할 수 있도록 표준화된 형식으로 패키징하고, 온라인 저장소 또는 공식 채널을 통해 배포하고자 목표하였다. 결국 과업 수행을 통하여 고도화된 플러그인은 발주처와 일반 사용자가 손쉽게 설치하고 활용할 수 있도록 표준화된 형식의 패키지로 제작하여 온라인 저장소를 통해 배포하였다. 먼저, 플러그인은 QGIS에서 공식적으로 인식 가능한 .zip 형식으로 압축하여 패키징했으며, 패키지 내부에는 metadata.txt와 같은 메타정보 파일, __init__.py와 같은 초기 실행 파일, UI 정의 파일(.ui), 실행 모듈(.py) 등 플러그인 구동에 필요한 모든 구성 요소를 포함하여 제공하였다. 배포는 온라인 저장소를 통해 이루어졌다. 소스코드와 설치 파일은 누구나 접근할 수 있도록 공개 GitHub 저장소에 등록하였으며, README.md 파일에 개발 환경, 주요 기능, 상세한 설치 방법 및 사용법을 명시하여 사용자의 편의성을 높였다. 더 나아가, 오픈소스 플러그인으로서 더 많은 사용자가 활용할 수 있도록 QGIS 공식 Plugin Repository 등록 절차를 진행하였고, 최종 승인을 거쳐 엔드유저에게 성공적으로 배포되었다.

1.2.4 플러그인 패키징 및 설치 파일 제공

플러그인은 QGIS에서 공식적으로 인식 가능한 .zip 형식으로 압축하여 패키징하였다. 패키지에는 플러그인 구동에 필요한 모든 구성 요소를 포함하여 제공하였다.

주요 요소 포함:

metadata.txt (플러그인 메타정보 파일)

__init__.py (초기 실행 파일)

UI 정의 파일 (.ui) 및 실행 모듈 (.py)

실행 환경 설정 파일 및 기타 리소스

라이선스 파일

1.2.5 온라인 저장소 등록 및 배포

GitHub 등록:

소스코드와 설치 파일을 공개 GitHub 저장소에 등록하여 누구나 접근할 수 있도록 하였다.

README.md 파일에는 개발 환경, 주요 기능, 상세한 설치 방법 및 사용법을 명시하여 사용자의 편의성을 높였다.

QGIS Plugin Repository 등록(선택)

오픈소스 플러그인으로서 더 많은 사용자가 활용할 수 있도록 QGIS 공식 Plugin Repository 등록 절차를 진행하였다.

metadata.txt 파일 수정, Plugin ID 부여 등 공식 등록 절차를 이행했으며, 엔드유저에게 성공적으로 배포하였다.

[그림 ] KICT RAIN AI 플러그인 배포 현황

1.3 QGIS 기반 SWAT-K 기본 설계 및 분석결과 표출 기능 구현

1.3.1 QGIS 플러그인 QSWAT 현황 및 특징 파악

QSWAT에 대하여 공식적이고 신뢰가능한 웹사이트를 통하여 특징을 파악하였다. 주로 참고한 웹사이트는 swat.tamu.edu와 github.com/swat-model/QSWAT이다.

먼저 QSWAT의 주요버전에 대하여는 아래와 같다.

2012년, SWAT에 대한 MapWindow(오픈소스 GIS) 플러그인. 최종 버전

2022년, QSWAT 1.6 출시(QGIS3에 맞추어 개발한 버전을 QSWAT3으로 표현)

2024년, QSWAT 2.0.0 출시

2025년, QSWAT 2.0.3 출시(2025.10월)

현재 최종버전인 v2.0.3을 살펴보면 .py가 191개 포함된 대규모 플러그인으로 개발되어 있으며 주요 의존성은 아래와 같다.

Windows OS (64bit)

Microsoft Office (64bit)

QGIS (3.7, 3.9 or 3.12)

대부분의 QSWAT 유저라면 MS EXCEL은 미리 설치로 가정할 수 있겠으나, 본 프로그램은 대체요소로서 Access Database Engine Redistributable 2016 (64bit)을 가이드하고 있다. 또한 SWAT Editor의 경우 Microsoft .Net Framework 3.5을 추가적으로 요구하고 있다. 설치 요구(Install Requirements)는 개발관점에서는 Software module간 의존성(dependency)으로 간주할 수 있다.  즉 SWAT Editor의 개발에 있어 Microsoft .Net Framework 3.5가 사용된 것으로 보면 자연스럽다.

QSWAT이 채택중인 소프트웨어 라이센스는 일반적인 QGIS 플러그인과 동일하게 GPL2로 판단된다. 플러그인의 핵심 소스파일(init) 에서 스스로 명시적으로 표명하고 있다.

QSWAT-2.0.3.zip\QSWAT-2.0.3\QSWAT3\__init__.py

[그림 ] QSWAT 라이센스 확인

즉 QSWAT은 오픈소스 프로젝트이므로 누구나 관여하여 개발에 합류할 수 있다. 물론 라이센스 규정에서 요구하는 의무사항은 준수되어야 한다. 예를 들어 소스코드 재공개 등이다.

[그림 ] QSWAT 소스 코드의 제어(추가,수정) 가능 여부 확인

1.3.2 SWAT-K 분석 결과파일에 대한 데이터 구조 파악(output_daily.rch)

프로그램을 위해 주어진 입력 rch file의 구성은 아래 그림과 같다고 전제된다.

[그림 ] SWAT-K의 output rch file에 대한 sample 구조

주어진 입력 file에 대하여 아래와 같이 일단위 유량자료를 소유역별로 구분하여 CSV 제작하였다.

[표 ] output_daily.rch_1.csv 제작 예시

1980-01-01,0.4513

1980-01-02,1.251

..

2022-12-29,0.8673

2022-12-30,0.9191

2022-12-31,0.9126

1.3.3 유량자료에 대한 data transform

주어진 입력 RCH file에 대하여 아래 그림과 같이 연도별 소팅된 유황정보를 소유역별로 구분하여 CSV산출하였다.

[그림 ] reach 1번에 대한 유황정보 구성 예시

1.3.4 첨부홍수량 추출

reach 단위(1, 41, 78,..) 및 연도별(1980, 1981,..) 최대홍수량을 산출하였다. 이때 전후 day에 대한 정보도 같이 확보하였다.

[그림 ] reach단위 년도별 최대홍수량 정보

최종적으로는 KICT 관계식을 사용하여 첨두홍수량 CSV를 산출하였다.

[그림 ] reach단위 년도별 첨두홍수량 정보

1.3.5 전체 대상 변환 기능(필터 없이)

한편 특정년도 및 리치를 한정하지 않고 전체 대상으로 작동 테스트가 수행되었다. 일반적인 PC수준 성능에서 약 90초 동안 작동되었다.

[그림 ] 자료 변환 성능 측정 머신

아래와 같은 결과물 목록이 산출된다.

[그림 ] SWAT 자료 변환기 산출물 목록(윈도우 탐색기)

이를 dir /b 커맨드로 추출한 전체 목록은 아래 표와 같다.

[표 ] SWAT 후처리 자료 목록

구분	목록
일별 자료	output_daily.rch_1.csv output_daily.rch_10.csv output_daily.rch_11.csv output_daily.rch_12.csv output_daily.rch_13.csv output_daily.rch_14.csv output_daily.rch_15.csv output_daily.rch_16.csv output_daily.rch_17.csv output_daily.rch_18.csv output_daily.rch_19.csv output_daily.rch_2.csv output_daily.rch_20.csv output_daily.rch_21.csv output_daily.rch_22.csv output_daily.rch_23.csv output_daily.rch_24.csv output_daily.rch_25.csv output_daily.rch_26.csv output_daily.rch_27.csv output_daily.rch_28.csv output_daily.rch_29.csv output_daily.rch_3.csv output_daily.rch_30.csv output_daily.rch_31.csv output_daily.rch_32.csv output_daily.rch_33.csv output_daily.rch_34.csv output_daily.rch_35.csv output_daily.rch_36.csv output_daily.rch_37.csv output_daily.rch_38.csv output_daily.rch_39.csv output_daily.rch_4.csv output_daily.rch_40.csv output_daily.rch_41.csv output_daily.rch_42.csv output_daily.rch_43.csv output_daily.rch_44.csv output_daily.rch_45.csv output_daily.rch_46.csv output_daily.rch_47.csv output_daily.rch_48.csv output_daily.rch_49.csv output_daily.rch_5.csv output_daily.rch_50.csv output_daily.rch_51.csv output_daily.rch_52.csv output_daily.rch_53.csv output_daily.rch_54.csv output_daily.rch_55.csv output_daily.rch_56.csv output_daily.rch_57.csv output_daily.rch_58.csv output_daily.rch_59.csv output_daily.rch_6.csv output_daily.rch_60.csv output_daily.rch_61.csv output_daily.rch_62.csv output_daily.rch_63.csv output_daily.rch_64.csv output_daily.rch_65.csv output_daily.rch_66.csv output_daily.rch_67.csv output_daily.rch_68.csv output_daily.rch_69.csv output_daily.rch_7.csv output_daily.rch_70.csv output_daily.rch_71.csv output_daily.rch_72.csv output_daily.rch_73.csv output_daily.rch_74.csv output_daily.rch_75.csv output_daily.rch_76.csv output_daily.rch_77.csv output_daily.rch_78.csv output_daily.rch_8.csv output_daily.rch_9.csv
유황 자료	output_daily.rch_FlowDuration_1.csv output_daily.rch_FlowDuration_10.csv output_daily.rch_FlowDuration_11.csv output_daily.rch_FlowDuration_12.csv output_daily.rch_FlowDuration_13.csv output_daily.rch_FlowDuration_14.csv output_daily.rch_FlowDuration_15.csv output_daily.rch_FlowDuration_16.csv output_daily.rch_FlowDuration_17.csv output_daily.rch_FlowDuration_18.csv output_daily.rch_FlowDuration_19.csv output_daily.rch_FlowDuration_2.csv output_daily.rch_FlowDuration_20.csv output_daily.rch_FlowDuration_21.csv output_daily.rch_FlowDuration_22.csv output_daily.rch_FlowDuration_23.csv output_daily.rch_FlowDuration_24.csv output_daily.rch_FlowDuration_25.csv output_daily.rch_FlowDuration_26.csv output_daily.rch_FlowDuration_27.csv output_daily.rch_FlowDuration_28.csv output_daily.rch_FlowDuration_29.csv output_daily.rch_FlowDuration_3.csv output_daily.rch_FlowDuration_30.csv output_daily.rch_FlowDuration_31.csv output_daily.rch_FlowDuration_32.csv output_daily.rch_FlowDuration_33.csv output_daily.rch_FlowDuration_34.csv output_daily.rch_FlowDuration_35.csv output_daily.rch_FlowDuration_36.csv output_daily.rch_FlowDuration_37.csv output_daily.rch_FlowDuration_38.csv output_daily.rch_FlowDuration_39.csv output_daily.rch_FlowDuration_4.csv output_daily.rch_FlowDuration_40.csv output_daily.rch_FlowDuration_41.csv output_daily.rch_FlowDuration_42.csv output_daily.rch_FlowDuration_43.csv output_daily.rch_FlowDuration_44.csv output_daily.rch_FlowDuration_45.csv output_daily.rch_FlowDuration_46.csv output_daily.rch_FlowDuration_47.csv output_daily.rch_FlowDuration_48.csv output_daily.rch_FlowDuration_49.csv output_daily.rch_FlowDuration_5.csv output_daily.rch_FlowDuration_50.csv output_daily.rch_FlowDuration_51.csv output_daily.rch_FlowDuration_52.csv output_daily.rch_FlowDuration_53.csv output_daily.rch_FlowDuration_54.csv output_daily.rch_FlowDuration_55.csv output_daily.rch_FlowDuration_56.csv output_daily.rch_FlowDuration_57.csv output_daily.rch_FlowDuration_58.csv output_daily.rch_FlowDuration_59.csv output_daily.rch_FlowDuration_6.csv output_daily.rch_FlowDuration_60.csv output_daily.rch_FlowDuration_61.csv output_daily.rch_FlowDuration_62.csv output_daily.rch_FlowDuration_63.csv output_daily.rch_FlowDuration_64.csv output_daily.rch_FlowDuration_65.csv output_daily.rch_FlowDuration_66.csv output_daily.rch_FlowDuration_67.csv output_daily.rch_FlowDuration_68.csv output_daily.rch_FlowDuration_69.csv output_daily.rch_FlowDuration_7.csv output_daily.rch_FlowDuration_70.csv output_daily.rch_FlowDuration_71.csv output_daily.rch_FlowDuration_72.csv output_daily.rch_FlowDuration_73.csv output_daily.rch_FlowDuration_74.csv output_daily.rch_FlowDuration_75.csv output_daily.rch_FlowDuration_76.csv output_daily.rch_FlowDuration_77.csv output_daily.rch_FlowDuration_78.csv output_daily.rch_FlowDuration_8.csv output_daily.rch_FlowDuration_9.csv
첨두유량 중간 과정	output_daily.rch_Max_step1_1.csv output_daily.rch_Max_step1_10.csv output_daily.rch_Max_step1_11.csv output_daily.rch_Max_step1_12.csv output_daily.rch_Max_step1_13.csv output_daily.rch_Max_step1_14.csv output_daily.rch_Max_step1_15.csv output_daily.rch_Max_step1_16.csv output_daily.rch_Max_step1_17.csv output_daily.rch_Max_step1_18.csv output_daily.rch_Max_step1_19.csv output_daily.rch_Max_step1_2.csv output_daily.rch_Max_step1_20.csv output_daily.rch_Max_step1_21.csv output_daily.rch_Max_step1_22.csv output_daily.rch_Max_step1_23.csv output_daily.rch_Max_step1_24.csv output_daily.rch_Max_step1_25.csv output_daily.rch_Max_step1_26.csv output_daily.rch_Max_step1_27.csv output_daily.rch_Max_step1_28.csv output_daily.rch_Max_step1_29.csv output_daily.rch_Max_step1_3.csv output_daily.rch_Max_step1_30.csv output_daily.rch_Max_step1_31.csv output_daily.rch_Max_step1_32.csv output_daily.rch_Max_step1_33.csv output_daily.rch_Max_step1_34.csv output_daily.rch_Max_step1_35.csv output_daily.rch_Max_step1_36.csv output_daily.rch_Max_step1_37.csv output_daily.rch_Max_step1_38.csv output_daily.rch_Max_step1_39.csv output_daily.rch_Max_step1_4.csv output_daily.rch_Max_step1_40.csv output_daily.rch_Max_step1_41.csv output_daily.rch_Max_step1_42.csv output_daily.rch_Max_step1_43.csv output_daily.rch_Max_step1_44.csv output_daily.rch_Max_step1_45.csv output_daily.rch_Max_step1_46.csv output_daily.rch_Max_step1_47.csv output_daily.rch_Max_step1_48.csv output_daily.rch_Max_step1_49.csv output_daily.rch_Max_step1_5.csv output_daily.rch_Max_step1_50.csv output_daily.rch_Max_step1_51.csv output_daily.rch_Max_step1_52.csv output_daily.rch_Max_step1_53.csv output_daily.rch_Max_step1_54.csv output_daily.rch_Max_step1_55.csv output_daily.rch_Max_step1_56.csv output_daily.rch_Max_step1_57.csv output_daily.rch_Max_step1_58.csv output_daily.rch_Max_step1_59.csv output_daily.rch_Max_step1_6.csv output_daily.rch_Max_step1_60.csv output_daily.rch_Max_step1_61.csv output_daily.rch_Max_step1_62.csv output_daily.rch_Max_step1_63.csv output_daily.rch_Max_step1_64.csv output_daily.rch_Max_step1_65.csv output_daily.rch_Max_step1_66.csv output_daily.rch_Max_step1_67.csv output_daily.rch_Max_step1_68.csv output_daily.rch_Max_step1_69.csv output_daily.rch_Max_step1_7.csv output_daily.rch_Max_step1_70.csv output_daily.rch_Max_step1_71.csv output_daily.rch_Max_step1_72.csv output_daily.rch_Max_step1_73.csv output_daily.rch_Max_step1_74.csv output_daily.rch_Max_step1_75.csv output_daily.rch_Max_step1_76.csv output_daily.rch_Max_step1_77.csv output_daily.rch_Max_step1_78.csv output_daily.rch_Max_step1_8.csv output_daily.rch_Max_step1_9.csv
첨두유량 중간 과정	output_daily.rch_Max_step2_1.csv output_daily.rch_Max_step2_10.csv output_daily.rch_Max_step2_11.csv output_daily.rch_Max_step2_12.csv output_daily.rch_Max_step2_13.csv output_daily.rch_Max_step2_14.csv output_daily.rch_Max_step2_15.csv output_daily.rch_Max_step2_16.csv output_daily.rch_Max_step2_17.csv output_daily.rch_Max_step2_18.csv output_daily.rch_Max_step2_19.csv output_daily.rch_Max_step2_2.csv output_daily.rch_Max_step2_20.csv output_daily.rch_Max_step2_21.csv output_daily.rch_Max_step2_22.csv output_daily.rch_Max_step2_23.csv output_daily.rch_Max_step2_24.csv output_daily.rch_Max_step2_25.csv output_daily.rch_Max_step2_26.csv output_daily.rch_Max_step2_27.csv output_daily.rch_Max_step2_28.csv output_daily.rch_Max_step2_29.csv output_daily.rch_Max_step2_3.csv output_daily.rch_Max_step2_30.csv output_daily.rch_Max_step2_31.csv output_daily.rch_Max_step2_32.csv output_daily.rch_Max_step2_33.csv output_daily.rch_Max_step2_34.csv output_daily.rch_Max_step2_35.csv output_daily.rch_Max_step2_36.csv output_daily.rch_Max_step2_37.csv output_daily.rch_Max_step2_38.csv output_daily.rch_Max_step2_39.csv output_daily.rch_Max_step2_4.csv output_daily.rch_Max_step2_40.csv output_daily.rch_Max_step2_41.csv output_daily.rch_Max_step2_42.csv output_daily.rch_Max_step2_43.csv output_daily.rch_Max_step2_44.csv output_daily.rch_Max_step2_45.csv output_daily.rch_Max_step2_46.csv output_daily.rch_Max_step2_47.csv output_daily.rch_Max_step2_48.csv output_daily.rch_Max_step2_49.csv output_daily.rch_Max_step2_5.csv output_daily.rch_Max_step2_50.csv output_daily.rch_Max_step2_51.csv output_daily.rch_Max_step2_52.csv output_daily.rch_Max_step2_53.csv output_daily.rch_Max_step2_54.csv output_daily.rch_Max_step2_55.csv output_daily.rch_Max_step2_56.csv output_daily.rch_Max_step2_57.csv output_daily.rch_Max_step2_58.csv output_daily.rch_Max_step2_59.csv output_daily.rch_Max_step2_6.csv output_daily.rch_Max_step2_60.csv output_daily.rch_Max_step2_61.csv output_daily.rch_Max_step2_62.csv output_daily.rch_Max_step2_63.csv output_daily.rch_Max_step2_64.csv output_daily.rch_Max_step2_65.csv output_daily.rch_Max_step2_66.csv output_daily.rch_Max_step2_67.csv output_daily.rch_Max_step2_68.csv output_daily.rch_Max_step2_69.csv output_daily.rch_Max_step2_7.csv output_daily.rch_Max_step2_70.csv output_daily.rch_Max_step2_71.csv output_daily.rch_Max_step2_72.csv output_daily.rch_Max_step2_73.csv output_daily.rch_Max_step2_74.csv output_daily.rch_Max_step2_75.csv output_daily.rch_Max_step2_76.csv output_daily.rch_Max_step2_77.csv output_daily.rch_Max_step2_78.csv output_daily.rch_Max_step2_8.csv output_daily.rch_Max_step2_9.csv
첨두유량	output_daily.rch_Max_step3.csv

1.3.6 후처리 기능의 PoC

후처리 기능의 PoC는 QGIS 플러그인을 고려하여 pyQT환경을 활용하였다. PoC를 위하여 리치1번과 1980년을 대상으로 수행하였다. 예를 들어 PoC이후 본 개발 단계가 되면 리치 지정 또는 대상 연도 지정 등이 부가될 수도 있을 것이다.

일자료 조회 기능, 유황곡선 조회기능, 첨두유량 조회기능에 대한 PoC 화면은 아래와 같다.

[그림 ] KICT SWAT PoC 2025 화면 예시

제3장

결  론

본 과업은 4개월이라는 한정된 기간에 3가지 독립적인 서브 프로젝트로 구성되어 있다.  프로젝트 관리 관점에서는 매우 도전적인 과업이다. 과업 초기 발생하는 필연적인 행정적 절차 등을 고려 시, 실질 수행기간이 짧은 초단기 프로젝트의 성격을 가진다. 수행사가 기존에 유사수행 경험을 보유하고 있다는 점과 발주처에서 적극적으로 협업에 참여했다는 점이 과업 성공에 크게 기여하였다.

기술 실무적인 사항은 과업 수행중 발주처와 유기적으로 수시로 교류하였으며 본 문서에서 그 외 관점에서 두가지 제언을 드리고자 한다.

1. 인벤토리 데이터 구축을 위한 원시 자료에 있어, 일부 자료의 접근성에 제약이 있다. 수년전과 비교 시 전반적인 추세는 데이터의 개방성 및 접근성 개선이 뚜렷하다. 그러나 아직 일부 데이터는 공공 기관의 공문 등을 통하여만 접근이 가능한 상태이다. 이러한 부분의 개방성이 좀 더 확대된다면 보다 신속한 원시데이터 입수, 가공이 가능해지므로 발주처와 수행사 모두 윈윈에 도움이 된다. 발주처에서도 이러한 부분을 원시데이터 공급기관에 피력하는 것을 제언드린다.

2. 향후 유사 발주 상황이 있는 경우, 가능하면 과업 기간을 보다 길게 확보한다면 프로젝트의 리스크 저감에 도움이 될 수 있다. 한주 또는 한달 정도라도 조기 발주가 가능하다면 바람직하겠다. 이미 여러 방면에서 최선의 노력이 가해지고 있다고 예상하고 있으므로, 필요시 용역이 아닌 [기술 자문 서비스]나 [데이터 구매] 등의 형태를 활용하는 방안도 고려될 수 있다고 판단된다. PMI의 PMBOK에서 제시하는 T&M 계약 방법(PMI, 2021, p. 191) 또한 병행할 수 있다. 본 건 용역에서 입찰 참가 업체가 2개를 넘지 않았다고 알고 있으며, 향후 유사 발주건에서는 이부분이 증가하는 것이 바람직하다. 본 수행사의 수주 가능성과 별개로 많은 수행사 후보가 관심을 가지고 입찰에 참가하는 사업이 바람직한 발주라고 할 수 있다. 충분한 기간과 대가의 책정 또한 필요하겠다.

참고문헌

Github (swat-model/QSWAT) [Online]. Available at  https://github.com/swat-model/QSWAT (Accessed 20 October 2025).

Project Management Institute(PMI), Inc. (2021).  “A Guide to the Project Management Body of Knowledge (PMBOK Guide) -- Seventh Edition and The Standard for Project Management”, Pennsylvania, USA

SWAT Soil & Water Assessment Tool [Online]. Available at https://swat.tamu.edu (Accessed 20 October 2025).

㈜헤르메시스 (2023). 홍수해석을 위한 K-FRM 구성 체계 및 GQIS-GRM 개선. 일반용역-2023-068, 한국건설기술연구원

㈜헤르메시스 (2024). 예측강우 및 홍수피해 분석 도구 기능 설계 및 개발. 일반용역-2024-0??, 한국건설기술연구원 (?? 이게 2024년 본 과제 선행 과제가 맞는지)