1. 수치지도를 이용한
DEM 생성과 지형분석
2021.11
이민파
MAPPLUS@GMAIL.COM
Creative Commons License CC-BY-NC
2. https://www.osgeo.kr
학습 목표와 내용
학습 목표: QGIS에서 국토지리정보원 수치지도를 이용하여 DEM을 생성하고 지형 분석(경사
도, 경사 방향, 음영기복도)을 수행하고 분석 결과물을 이용하여 여러 가지 래스터 분석에 응
용할 수 있다.
2
QGIS 개요
분석지역 준비
수치지도를 이용한 DEM 생성
DEM을 이용한 지형 분석
지형분석 결과를 이용한
래스터 분석
QGIS 팁
4. https://www.osgeo.kr
OSGeo & OSGeo Korean Chapter
OSGeo(Open Source Geospatial Foundation)는 오픈소스 지리공간 SW, GeoData의 개발 지원과
광범위한 사용 증진을 위해 2006년 2월 4일 미국 시카고에서 창설된 비영리 민간 기구
4
홈페이지
- https://www.osgeo.org
로컬 지부 운영
- OSGeo 한국어지부 포함 전세계 29개의 로컬 지부 운영
FOSS4G 국제 Conference 개최
- OSGeo의 주최로 개최되는 세계 최대의 오픈소스 GIS 연례 컨퍼런스
- 유럽, 북미, 기타 지역의 대륙별 순환 원칙에 따라 개최
- 2015년 대한민국 서울에서 개최
Content Management Systems
Desktop Applications
Geospatial Libraries
Metadata Catalogs Spatial Databases
Web Mapping OSGeo 주요 프로젝트 현황
출처: 2021, 오픈소스 GIS를 활용한 공간분석 기초 과정, LX공간정보아카데미
5. https://www.osgeo.kr
오픈소스 QGIS에 대한 이해
5
QGIS – http://qgis.org
무료, 오픈소스 GIS 소프트웨어 (QGIS 데스크탑이 대표적인 애플리케이션)
공간정보(GIS) 데이터 시각화, 편집, 분석
사용 운영체제: 윈도우, Mac OS X, 리눅스, BSD, 안드로이드
C++, Python, Qt(UI Framework) 로써 개발
다양한 플러그인에 의해 기능 확장
타 오픈소스 GIS인 PostGIS, GRASS, MapServer 등과 용이한 통합
배경
2002. 7. 개발 (Gary Sherman), Quantum GIS로 명칭
2009. 1. 버전 1.0 출시
2016. 10. 버전 2.18 (Las Palmas) 출시
2018. 2. 버전 3.0 (Girona) 출시
2018. 10. 버전 3.4 (Madeira) 출시
자발적 참여 개발자에 의해 개발관리가 이루어짐 (소스코드 관리체계: GitHub)
라이선스: GNU GPL (무료, 자유롭게 수정 가능)
Long Term Release (LTR)
안정적이며 버그 수정과 기능개선을 지속적으로 보장하는 버전을 지칭
버전 3.16.11 (가장 최근 LTR)
※ Road Map: https://www.qgis.org/en/site/getinvolved/development/roadmap.html
출처: 2021, 오픈소스 GIS를 활용한 공간분석 기초 과정, LX공간정보아카데미
6. https://www.osgeo.kr
여러 가지 QGIS 애플리케이션
6
QGIS 데스크탑
QGIS 브라우저
QGIS 서버
QGIS 웹 클라이언트
QGIS 안드로이드
간단히 QGIS라고 하는 경우, 바로 이것
(Beta)
출처: 2021, 오픈소스 GIS를 활용한 공간분석 기초 과정, LX공간정보아카데미
10. https://www.osgeo.kr
QGIS 기본 환경 설정 - 좌표계 확인
① QGIS 실행 후 [설정] – [옵션] 메뉴 실행
② [좌표계] 탭으로 이동하여 프로젝트 좌표계는 [첫 레이어의 좌표계를 사용], 레이어 좌표계는 [ 좌표계
확인] 선택 후 확인 버튼을 눌러 환경 설정
이 프로젝트에서 사용할 DXF 파일은 좌표계 정보(파일 등)를 명시적으로 포함하고 있지 않으
므로 QGIS에서 레이어 추가 시 사용자가 좌표계를 선택하도록 옵션 설정
10
11. https://www.osgeo.kr
분석대상지역 준비
① 웹 브라우저에서 http://data.nsdi.go.kr/ 이동 후 로그인
② 행정구역 검색 또는 http://data.nsdi.go.kr/dataset/15145 이동하여 최신의 경기도
(LSMD_ADM_SECT_UMD_경기.zip) 파일 다운로드
③ QGIS [보기] – [패널] – [탐색기] 패널을 활성화하여 다운로드 한 폴더(QGIS-SurfaceAnalysisNSDI)로 탐
색 후 읍면동경계 추가 (좌표체계가 EPSG:5179 – Korea 2000/Unified CS 임을 확인)
국가공간정보포털 오픈마켓에서 행정구역 읍면동(법정동) 경계 다운로드
11
데이터: QGIS-SurfaceAnalysisNSDI
12. https://www.osgeo.kr
분석대상지역 준비
① 레이어 패널에서 LSMD_ADM_SECT_UMD_41 선택 후 [편집] – [선택] – [표현식으로 객체 선택…] 또는
툴바에서 [표현식으로 객체 선택] 도구 클릭
② 표현식으로 선택 창에서 "EMD_NM" = '청운면' 입력 후 객체 선택 버튼 클릭
표현식으로 객체 선택… 도구를 이용하여 경기도 양평군 청운면 선택
12
13. https://www.osgeo.kr
분석대상지역 준비
① 레이어 패널에서 LSMD_ADM_SECT_UMD_41 선택 후 오른쪽 마우스 클릭하여 [내보내기] – [선택한 객
체를 다른 이름으로 저장…] 버튼 클릭
② 파일 이름은 StudyArea.shp, 좌표계는 EPSG:5186 – Korea 2000 / Central Belt 2010 선택
③ [선택한 객체만 저장] 확인 후 확인 버튼을 눌러 저장
경기도 양평군 청운면 선택하여 다른 이름으로(StudyArea) 저장하기
13
14. https://www.osgeo.kr
분석대상지역 준비
① 내보내기 한 StudyArea 레이어만 남기고 나머지 레이어는 제거
② StudyArea 레이어에서 오른쪽 마우스 클릭하여 [레이어 좌표계] - [레이어에서 프로젝트 좌표계 설정]
실행 후 프로젝트 좌표계가 EPSG:5186임을 확인
프로젝트 좌표계를 StudyArea 레이어의 EPSG:5186으로 설정하기
14
15. https://www.osgeo.kr
VWorld 지도를 배경지도로 추가
① [보기] – [패널] – [탐색기] 패널을 활성화
② 탐색기 패널을 끌어다가 적당한 위치에 고정
XYZ Tiles: 공개된 TMS 서버(ESPG:3857 좌표계를 사용)를 배경지도로 활용해 보자
15
16. https://www.osgeo.kr
VWorld 지도를 배경지도로 추가
① [탐색기] – [XYZ Tiles] 에서 오른쪽 마우스 클릭하여 [새 연결…] 메뉴 실행
② 이름, URL에 아래 양식을 차례로 입력 및 추가
VWorld 일반, 회색, 영상 지도를 배경지도로 추가
16
- Vworld Base: http://xdworld.vworld.kr:8080/2d/Base/service/{z}/{x}/{y}.png
- Vworld Gray: http://xdworld.vworld.kr:8080/2d/gray/service/{z}/{x}/{y}.png
- Vworld Satellite: http://xdworld.vworld.kr:8080/2d/Satellite/service/{z}/{x}/{y}.jpeg
19. https://www.osgeo.kr
수치지도 다운로드
① 국토정보맵 – 통합지도검색으로 이동하여 [통합검색] – [인덱스] – [1:25,000] 선택
② 1:25,000 수치지도 도엽번호 중 (청운)377074, (양덕원)377083 선택 후 다운로드
③ 좌표체계: EPSG:5186(Korea 2000 / Central Belt 2010) 확인
국토정보플랫폼(http://map.ngii.go.kr/)을 이용하여 수치지도 다운로드(가입 및 인증)
19
데이터: QGIS-SurfaceAnalysisNGII-Map
20. https://www.osgeo.kr
참고: 연속수치지형도 다운로드
① 국토지리정보원 연속수치지형도 등고선 데이터(http://data.nsdi.go.kr/dataset/20180927ds0069) 다운
로드 페이지로 이동하여 다운로드
② 연속수치지형도란 도엽단위의 수치지도를 동일 지형·
지물 레이어별로 연결하여 대상 지역 전체를 끊
김 없이(seamless) 연속되는(continuous) 수치지도를 말함
국가공간정보포털(http://www.nsdi.go.kr/ , 가입 및 인증)에서 연속수치지형도 다운로드
20
21. https://www.osgeo.kr
수치지도(DXF) 파일 QGIS에서 불러오기
① [보기] – [패널] – [탐색기] 패널을 활성화 후 QGIS-SurfaceAnalysisNGII-Map 폴더로 이동(*즐겨찾기)
② (B010)수치지도_377074_2019_00000504686144.dxf 파일 더블클릭 후 좌표체계는 EPSG:5186(Korea
2000 / Central Belt 2010) 선택(중요!!!)
③ 추가할 벡터 레이어 선택 창에서 LineString만 선택하고 확인 버튼을 눌러 레이어로 추가
④ (B010)수치지도_377083_2019_00000864713040.dxf 파일 위와 같은 방법으로 추가
수치지도 DXF 파일을 QGIS에서 불러와 보자: (청운)377074, (양덕원)377083
21
22. https://www.osgeo.kr
수치지도(DXF) 파일을 Shapefile로 변환하기
① 레이어 패널에서 (B010)수치지도_377074 레이어 선택 후 오른쪽 마우스 클릭하여 [내보내기] – [객체
를 다른 이름으로 내보내기…] 클릭
② 포맷 ESRI Shapefile, 파일 이름 QGIS-SurfaceAnalysisData청운_377074.shp, 좌표계 EPSG:5186 확인, 도
형 옵션에서 도형 유형은 LineString, Z차원 포함 설정(중요!!!) 후 내보내기
③ (B010)수치지도_377083 레이어도 위와 같은 방법으로 Shapefile(양덕원_377083.shp)로 내보내기
④ 내보내기 후 수치지도 DXF 레이어는 레이어 패널에서 선택 후 레이어 제거
수치지도 DXF 파일을 Shapefile로 변환해 보자: (청운)377074, (양덕원)377083
22
23. https://www.osgeo.kr
Shapefile에서 등고선 추출하기
① 레이어 패널에서 청운_377074 선택 후 [편집] – [선택] – [표현식으로 객체 선택…] 또는 툴바에서 [표현
식으로 객체 선택] 도구 클릭
② 표현식으로 선택 창에서 "Layer" = 'F0017111' OR "Layer" = 'F0017114' 입력 후 객체 선택 버튼 클릭
③ 위와 같은 방법으로 양덕원_377083 레이어도 등고선만 선택
표현식으로 객체 선택 도구를 이용하여 등고선만 선택하기
23
24. https://www.osgeo.kr
Shapefile에서 등고선 추출하기
① 레이어 패널에서 청운_377074 레이어 선택 후 오른쪽 마우스 눌러 [내보내기] – [선택한 객체를 다른
이름으로 저장…] 후 파일 이름을 QGIS-SurfaceAnalysisDatacontour_377074.shp 으로 저장
② 레이어 패널에서 양덕원_377083 레이어 선택 후 오른쪽 마우스 눌러 [내보내기] – [선택한 객체를 다
른 이름으로 저장…] 후 파일 이름을 QGIS-SurfaceAnalysisDatacontour_377083.shp 으로 저장
선택한 객체를 다른 이름으로 저장하기 도구를 이용하여 등고선만 저장하기
24
25. https://www.osgeo.kr
등고선의 Z값을 속성정보로 추출하기
① 레이어 패널에서 contour_377074 레이어를 더블클릭 후 정보 탭을 확인
② 도형 유형이 Line (MultiLineStringZ) 임을 확인(도형의 좌표값에 X,Y 외 Z값을 포함하고 있음을 의미)
③ Contour_377074 레이어의 속성 테이블을 열고 필드를 확인(높이값이 포함된 필드가 없음)
등고선의 높이값을 확인해 보자
25
26. https://www.osgeo.kr
등고선의 Z값을 속성정보로 추출하기
① [공간 처리] – [툴박스] 를 실행하여 [공간 처리 툴박스] 활성화
② [벡터 도형] – [Z값 추출] 도구 실행
③ 입력 레이어 contour_377074, 접두어 z_ 산출물 QGIS-SurfaceAnalysis/Data/contour_377074_z.shp 으로
저장
④ 추가된 레이어의 속성 테이블을 열어 z_first 필드 값 확인
등고선 레이어에 높이값을 속성으로 계산해 보자
26
27. https://www.osgeo.kr
등고선으로 DEM 만들기 - 첫번째 방법
① [공간 처리] – [툴박스] 를 실행하여 [공간 처리 툴박스] 활성화
② [보간] - [TIN 보간] 도구 실행
③ 벡터 레이어 contour_377083, 보간에 z좌표값 이용 선택 후 버튼
④ 벡터 레이어 contour_377083, 보간에 z좌표값 이용 선택 후 버튼
⑤ 공간범위에 .. 버튼 눌러 [레이어서 계산] – [StudyArea] 선택
⑥ 산출 래스터 크기의 픽셀 크기 10(단위는 m) 설정
⑦ 보간 산출물 DEM10.tif 설정 후 실행
등고선 레이어의 도형 Z값으로 DEM을 만들어 보자
27
28. https://www.osgeo.kr
등고선으로 DEM 만들기 – 두번째 방법
① [공간 처리] – [툴박스] 를 실행하여 [공간 처리 툴박스] 활성화
② [보간] - [TIN 보간] 도구 실행
③ 벡터 레이어 contour_377083, 보간 속성값 z_first 선택 후 버튼
④ 벡터 레이어 contour_377083, 보간 속성값 z_first 선택 후 버튼
⑤ 공간범위에 .. 버튼 눌러 [레이어서 계산] – [StudyArea] 선택
⑥ 산출 래스터 크기의 픽셀 크기 10(단위는 m) 설정
⑦ 보간 산출물 DEM10.tif 설정 후 실행
등고선 레이어의 필드 고도값으로 DEM을 만들어 보자
28
32. https://www.osgeo.kr
지형분석에 필요한 기반 데이터 불러오기
① QGIS의 탐색기 또는 레이어 불러오기 기능을 이용하여 파일을 추가
② 각 레이어의 스타일을 변경
분석대상 지역 Shapefile(StudyArea.shp, 경기도 양평군 청암면)과 DEM(DEM10.tif) 파일 준비
32
33. https://www.osgeo.kr
경사도(Slope) 분석
① [래스터] - [분석] - [경사...] 또는 [공간 처리 툴박스] - [GDAL] - [래스터 분석] - [경사] 실행
② 입력 레이어는 DEM10, 경계 계산 체크 후 실행
경사도란 지형의 기울어진 각도, 단위는 도(degrees) 또는 퍼센트(percent rise)
33
https://pro.arcgis.com/en/pro-app/latest/tool-reference/spatial-analyst/how-slope-works.htm
34. https://www.osgeo.kr
경사 방향(Aspect, 사면향) 분석
① [래스터] - [분석] - [경사 방향...] 또는 [공간 처리 툴박스] - [GDAL] - [래스터 분석] - [경사 방향] 실행
② 입력 레이어는 DEM10, 경계 계산 체크 후 실행
경사면의 방향을 표현하는 0에서 360까지의 값으로 이 값은 북(0°)에서 시작해 시계방향
34
35. https://www.osgeo.kr
음영기복도(Hillshade) 생성
① [래스터] - [분석] - [음영기복도...] 또는 [공간 처리 툴박스] - [GDAL] - [래스터 분석] - [음영기복도] 실행
② 입력 레이어는 DEM10, 경계 계산, 결합 음영 체크 후 실행
태양의 위치에 따라 레이어의 음영을 계산하며, 태양의 수평 각도(방위각, azimuth)와 수직 각
도(태양 고도) 를 설정
35
https://docs.qgis.org/3.16/ko/docs/user_manual/processing_algs/qgis/rasterterrainanalysis.html
36. https://www.osgeo.kr
DEM과 음영기복도 중첩 시각화
① DEM 및 Hillshade 레이어를 드래그하여 순서 조정
② DEM10 레이어를 더블 클릭하여 레이어 속성 창 불러오기
③ [투명도] 탭에서 50% 설정, [심볼] 탭의 색상 렌더링의 혼합모드를 중첩으로 설정 후 적용
DEM과 음영기복도를 중첩하여 시각화하기
36
40. https://www.osgeo.kr
구역 통계(Zonal Statistics) 도구 활용
① [공간 처리 툴박스] - [래스터 분석] – [구역 통계] 실행
② 입력 레이어는 StudyArea, 래스터 레이어는 Slope(경사도), 산출 열 접두어는 s_ 입력
③ 계산할 통계에서 아래 그림처럼 개수, 합, 평균, 최소값, 최대값 등 선택 후 확인 버튼 클릭
④ 실행 버튼을 누른 후 추가된 레이어의 속성 테이블 확인
질문: 청운면의 평균 경사도와 평균 표고를 구해보자
40
41. https://www.osgeo.kr
래스터 계산기 활용
① [래스터] - [래스터 계산기…] 실행
② 산출 레이어 저장 버튼을 눌러 MySite.tif로 저장(확장자 입력 필요)
③ 래스터 계산기 표현식 입력
④ 확인 버튼을 눌러 분석 실행
질문: 경사도가 5도(˚) 이상 15도(˚) 이하이면서 남향(112.5 ~ 247.5)인 지역을 찾아보자
41
( "Slope@1" >= 5 AND "Slope@1" <= 15 )
AND ( "Aspect@1" >= 112.5 AND
"Aspect@1" <= 247.5)
112.5˚
247.5˚
42. https://www.osgeo.kr
래스터 계산기 활용
① MySite 레이어 더블클릭 후 심볼 탭으로 이동
② 렌더링 유형을 팔레트/고유 값 선택 후 분류 버튼 눌러 심볼 추가
③ 0값 심볼 선택 후 (-) 버튼 눌러 제거 후 1값의 심볼을 더블 클릭하여 설정
④ 결과 확인
질문: 경사도가 5도(˚) 이상 15도(˚) 이하이면서 남향(112.5 ~ 247.5)인 지역을 찾아보자
42
43. https://www.osgeo.kr
분석결과 잘라내기
① [래스터] - [추출] - [마스크 레이어로 래스터 자르기...] 또는 [공간 처리 툴박스] - [GDAL] - [래스터 추출]
- [마스크 레이어로 래스터 자르기] 실행
② 입력 레이어는 MySite, 마스크 레이어는 StudyArea, 입력 래스터의 해상도 유지 체크 후 실행
래스터 계산기로 분석한 영역을 청운면 행정경계로 잘라내 보자
43
46. https://www.osgeo.kr
공간인덱스와 피라미드 생성
대용량 래스터 레이어의 렌더링 성능을 향상하려면 피라미드를 생성하자
46
피라미드를 생성해도 분석도구에서는 원본 데이터를 사용합니다.
피라미드 이미지 출처: https://en.wikipedia.org/wiki/Pyramid_(image_processing)
47. https://www.osgeo.kr
벡터 레이어의 한글 문제
레이어 속성에서 데이터 원본 인코딩 변경: System – CP949 – Windows949 – EUC-KR – UTF-8
47
Shapefile의 경우 cpg 파일을 사용하자
48. https://www.osgeo.kr
래스터 분석 시 고려사항
좌표체계, 공간범위, 셀 크기(해상도)를 통일하자
48
좌표체계 통일
좌표체계를 통일하면 연산 과정에서 불필요한 [좌표체계 변환] 과정을 피할
수 있습니다.
공간 범위와 셀 크기 통일
공간 범위와 셀 크기를 통일하면 연산 과정에서 불필요한 리샘플링을 하지
않습니다.
NoData 이해
NoData는 래스터 연산(분석 포함)에서 제외되는 데이터입니다.
따라서, 연구지역을 대상으로 분석할 경우 언제 NoData를 적용할 지 판단해
야 합니다.