GIS

QGIS: 수치지도 DXF 파일 다운로드 및 사용하기

유병혁 2022. 1. 4. 23:52

안녕하세요? 이번 글은 국토정보플랫폼에서 내가 원하는 지역의 수치지도 DXF 파일을 다운로드 받고 QGIS에서 사용하는 과정을 학습해 보겠습니다.

 

Drawing Interchange Format(드로잉 인터체인지 포맷), DXF는 미국 오토데스크 사의 오토캐드를 비롯하여 각종 캐드(CAD) 소프트웨어에서 사용되는 파일 교환용 포맷입니다. QGIS 또한 DXF 파일을 지원하고 있습니다.

 

수치지도 DXF 파일은 '국토정보플랫폼(http://map.ngii.go.kr/)'에서 무료로 다운로드 받으실 수 있는데요, 해당 사이트에 접속해서 직접 확인해 보겠습니다. 해당 웹페이지에 접속한 후 로그인합니다.

국토정보플랫폼 메뉴 중 '국토정보맵 > 통합지도검색'을 클릭합니다.

다음과 같이 지도검색 창이 표출되는데요,

통합검색에서 원하는 지역을 조회할 수 있는데요, 이번 실습에서는 '월출산'을 확인해 보겠습니다.

검색결과가 표출되면 목록 중 원하는 지명을 클릭해 줍니다. 월출산을 클릭하니 해당 지역에 구축된 수치지도, 항공사진, 정사영상, 공개DEM, 측량기준점, 온맵, 구지도, 공공측량 건수가 표시됩니다. 이중 '수치지도'를 클릭해 보겠습니다.

'수치지도' 목록 중 '수치지형도(DXF파일)'을 클릭해볼까요?!

아래와 같이 수치지형도(DXF파일) 3건이 확인되는데요, 이중 1:5000 축척의 '(영암099)34603099'를 확인해 봅니다.

아래와 같이 '미리보기'를 클릭하시면 도엽코드 및 도곽을 확인하실 수 있습니다.

'이력보기'를 클릭하면,

아래와 같이 제작일, 고시번호, 고시일을 확인할 수 있습니다. 저는 2018년 제작된 고시번호 2021-1619(고시일 2021-04-19)를 다운로드 받아 보겠습니다.

신청서 작성과 사용자 준수사항 동의를 거쳐 파일을 내려받으실 수 있습니다.

자, 이제 파일다운로드를 진행합니다! 다운로드 파일은 *.dxf와 *.xml로 구성되어 있습니다.

QGIS를 실행하고 탐색기 패널에서 해당 *.dxf 파일을 더블클릭해 봅니다.

Point와 LineString 유형의 2개 레이어가 표시됩니다. 

'그룹에 레이어 추가'를 체크한 후 '확인'을 클릭합니다.

아래와 같이 수치지도 DXF가 매핑되었습니다!

레이어 좌표계를 설정해 볼까요?! 그룹 이름에서 마우스 오른쪽 클릭한 후,

'그룹 좌표계 설정'을 실행합니다.

현재 수치지도가 사용하고 있는 EPSG 코드에는 EPSG:5185(서부원점), EPSG:5186(중부원점), EPSG:5187(동부원점), EPSG:5188(동해원점)이 있습니다. 월출산은 중부에 해당하는 위치로 'EPSG5186'을 아래와 같이 지정해 줍니다.

자, 이제 레이어 좌표계도 정의되었습니다!

수치지도 DXF 중 LineString 도형 레이어의 속성 테이블을 열어보겠습니다. 아래와 같이 Layer 코드가 해당 코드의 의미를 알아야 수치지도 중 원하는 정보를 추출해 사용할 수 있겠습니다.

Layer 코드 정보는 '수치지형도 작성 작업규정(https://www.law.go.kr/행정규칙/수치지형도작성작업규정/)'을 확인해 보시면 됩니다.

해당 웹페이지에 접속한 후 상단 메뉴 중 '첨부파일 > 첨부 파일 다운로드 > 별표1수치지도 지형지물 표준코드.xls'를 클릭합니다.

해당 파일은 다음과 같습니다. 현재 실습에서 다루고 있는 DXF 파일은 '수치지도 1.0 > 1:5,000'이므로, 해당 항목을 확인해 보시면 되겠습니다.

예를 들면 Layer 코드 중 주곡선은 'F0017111'으로 선택할 수 있고 R/G/B는 255/127/0으로 정의합니다.

 

(참고) 등고선은 같은 표고를 가진 지점을 연결한 곡선으로 주곡선, 계곡선, 간곡선, 조곡선으로 구분합니다. 축척별 등고선 간격은 아래 그림(https://www.ngii.go.kr/kor/content.do?sq=272)과 같습니다. 주곡선은 등고선 중 가장 기본이 되는 선으로 1:5,000 및 1:10,000은 5m 간격, 1:25,000은 10m 간격, 1:50,000 지형도는 20m 간격의 실선으로 표시한다.

그럼 주곡선에 심볼을 적용해 볼까요?! LineString 유형 레이어의 속성 창을 실행합니다.

콤보박스 '단일 심볼 > 규칙 기반'으로 변경하고,

'규칙 추가' 버튼을 클릭합니다.

아래와 같이 'Edit Rule' 창이 실행되는데요,

아래와 같은 표현식 문자열 작성기 실행 버튼을 클릭합니다.

창 가운데에 위치한 '필드와 값 > Layer'를 더블클릭합니다.

다음과 같이 표현식에 "Layer"가 자동 추가됩니다.

이어서 =를 추가합니다.

'모든 유일값'을 클릭한 후, 목록 중 'F0017111(주곡선 통합코드)'를 더블클릭해 줍니다.

다음과 같이 구문이 완성되었습니다. 이제 Layer 코드가 F0017111인 객체에 어떤 심볼을 적용할 지 정하면 되겠습니다.

'색상'을 클릭하고 앞서 확인한 주곡선의 R/G/B 값을 입력해 줍니다.

자, 이제 설정이 끝난 듯 합니다!

이제 '확인' 버튼을 클릭하면,

아래와 같이 표준색상으로 표현된 주곡선을 확인하실 수 있습니다.

이번에는 DXF 파일을 SHP 파일로 저장해 보겠습니다. 레이어 이름을 우클릭한 후 '내보내기 > 객체를 다른 이름으로 저장'을 실행합니다. 포맷, 파일 이름, 좌표계, 인코딩을 체크해 봅니다.

도형 유형은 '자동 > LineString'으로 변경하고 'Z 차원 포함'을 체크해 줍니다. 

자, 수치지도 LineString 레이어가 별개의 쉐이프파일로 추출되었습니다!

해당 레이어의 속성 테이블을 확인해 봅니다. 이번엔 속성 테이블에 새 필드를 추가하고 Z값을 자동 입력해 보겠습니다.

먼저 '편집 모드 전환'을 클릭(작업 후 다시 클릭하면 편집 모드 종료)합니다.

'필드 계산기 열기' 창을 클릭합니다.

'새로운 필드 생성'을 체크한 후, 산출 필드 이름은 'HEIGHT'로, 산출 필드 유형과 길이는 다음과 같이 지정해 줍니다.

표현식은 'z(start_point($geometry))'이라고 입력해 줍니다. 이 표현식은 3가지 함수가 결합된 형태인데요, $geometry 함수는 현재 객체의 도형을 반환하며, start_point 함수는 도형에서 첫 번째 노드를, z 함수는 포인트 도형의 Z 좌표를 반환하거나, 도형에 Z 값이 없는 경우 NULL을 반환하는 역할을 수행합니다.

자, 아래와 같이 'HEIGHT' 필드에 Z 값이 추가되었습니다!