QGIS 표현식을 이용하여 원하는 객체를 선택하는 방법을 알려드리겠습니다.

해당 기능은 QGIS를 이용하여 데이터 오픈 시, 원하는 객체를 별도로 저장하거나 확인하는데 유용합니다.

활용 데이터

    • 국가공간정보포털 > 오픈마켓 > 행정구역시군구_경계 데이터

시나리오

목적 : 행정구역시군구_경계(경북) 데이터에서 법정동 코드가 478로 시작되는 지역의 객체만 추출

    • QGIS를 통해 데이터의 속성테이블을 확인
    • 행정표준코드관리시스템 법정동 코드 조회를 통해 법정동 코드 및 위치 확인 (선택 객체 추출 후, 확인용)
    • 표현식을 이용한 객체선택 표현식으로 478로 시작하는 법정동 코드의 객체 추출 

 

1. 행정구역시군구_경계 데이터(경북)를 QGIS에서 오픈합니다. 

 

2. QGIS에서 속성테이블을 확인합니다.

    • 레이어 > 우클릭 > 속성 테이블 열기

 

    • 속성테이블의 법정동 코드 컬럼 확인

속성테이블을 보게되면 첫번째 컬럼 ADM_SECT_C가 법정동 코드로 확인됩니다. 법정동 코드가 맞는지 확인은 행정표준코드관리시스템 법정동 코드 조회를 통해 확인합니다 (https://www.code.go.kr/stdcode/regCodeL.do)

 

3. [표현식을 이용한 객체선택] 버튼 클릭 및 객체 선택 표현식 입력

    • 표현식을 이용한 객체선택 아이콘을 클릭

 

여기부터 핵심입니다 집중!!!!!!!!!!!!!!!!!!

첫 번째로 컬럼을 선택하기 위해 위 그림에 표시된 [필드와 값]부분을 선택하여 법정동 코드 등록되어있는 컬럼을 더블 클릭합니다!!

그러면 좌측화면에 "ADM_SECT_C"라고 표시됩니다.

두 번째로 [연산자]부분을 선택하여 LIKE를 더블 클릭합니다. 

"[필드명]" LIKE '찾을 값' 형태로 생각하시면 좋겠습니다. 

그리고!!! 중요한 부분!!!!!!!!! [필드명]부분은 "" 요렇게!!! 찾을 값은 '' 요렇게 작성합니다. 저도 이유는 잘 모르겠네요;;;;

뒤에 %표시는 전체를 의미합니다. 저는 법정동 코드가 478로 시작하는 모든 법정동 코드를 찾기 위해 '478%'이렇게 입력했습니다. 만약 '%478%' 이렇게 앞뒤로 넣게되면 중간부분에 478 숫자가 들어간 모든 값을 찾을겁니다.

 

마지막으로 우측 하단에 객체 선택이라는 버튼이 있습니다. [객체 선택]버튼을 클릭합니다.

3. 선택된 객체로 이동

화면 뒤쪽이 보이시나요??? 법정동 코드 478로 시작하는 데이터가 4개이고 속성테이블 뒤편 화면을 보시면 선택된 객체가 노란색으로 나타납니다.

선택된 객체 우클릭 시, 위 그림처럼 나타납니다. 3번째 [Zoom to Feature]를 클릭합니다. 그러면 선택한 객체의 위치로 이동합니다.

 

4. 확인

법정동 코드가 478로 시작하는 4개 지역이 선택되어 있고, 그 지역으로 이동하여 QGIS상에서 보여줍니다.

만약 선택한 객체를 별로의 shp파일로 저장을 원하신다면 아래 그림처럼 진행하시면 되겠습니다.

선택한 객체를 다른이름으로 저장(shp, dxf 등...) 방법은 국가공간정보포털 전문가iN에 있는 이미지를 이용하여 설명하겠습니다.

 

<이미지 출처 : 국가공간정보포털 전문가iN>

<이미지 출처 : 국가공간정보포털 전문가iN>

 

그리고 선택한 객체만 저장하기 위해 위 체크박스를 선택하시면 표현식을 이용해 선택한 객체를 별도의 shp파일로 저장할 수 있습니다.

 

 

DEM 이란?

DEM(Digital Eleveation Model) 실세계 지형 정보 중 건물, 수목, 인공 구조물 등을 제외한 지형 부분을 표현한 모형

DSM(Digital Surface Model) 실세계의 모든 정보, 즉 지형, 수목, 건물, 인공구조물 등을 표현한 모형 (네이버 지식백과)

 

 

국가공간정보포털에서 제공하는 수치표고모델(DEM)를 Qgis에서 활용해보겠습니다. (Qgis version 3.4.4)

수치표고모델(DEM) 다운로드

해당 자료를 다운로드 후 압축해제하면 3종류의 폴더가 존재하는데  ascil(공백으로 구분되어 있는 x, y, z 값 텍스트 파일), img, pdf 파일이 있습니다.

Qgis에 드레그 드랍으로 img 파일을 추가

 

1. 해당 자료를 확대하여 확인해보면 90m 간격으로 픽셀이 연결되어 있으며 픽셀에 하나의 고도값을 가지는 것을 확인 할 수 있습니다.

 

2. 자료를 추가하신 뒤에 Qgis 상단 메뉴에 '보기 > 새 3D 맵 뷰' 버튼을 클릭하면 해당 DEM자료가 3D 뷰어로 표출됩니다.

3D뷰어에서 환경설정 버튼을 선택하시면 위의 3D Configuration 창이 활성화 되고 사용하려는 값을 지정해 주시면 됩니다.

  • 고도 : 해당 수치지형도
  • 수직축척 : 2
  • 나머지 설정값을 Default로 하여 확인버튼

 

해당 픽셀의 고도값에 따라 지형이 변형된 것을 확인할 수 있습니다.

 

3. Tile 이미지를 DEM 자료위에 중첩시켜 좀더 시각적 효과 주기

Qgis 왼쪽 탐색기 패널에 'XYZ Tiles' 카테고리에서 마우스 오른쪽 버튼을 클릭하여 New Connection을 클릭합니다.

명칭과 URL을 입력하고 확인 버튼을 클릭합니다.

이후 사용하고 싶은 Tile을  레이어 추가하여 DEM자료에 중첩시킵니다.

저는 구글 위성지도를 사용하였습니다. 이외에도 구글에서 제공하는 타일서비스는 아래와 같습니다.

>Roadmap
http://mt0.google.com/vt/lyrs=m&hl=en&x={x}&y={y}&z={z} 

>Terrain
http://mt0.google.com/vt/lyrs=p&hl=en&x={x}&y={y}&z={z}

Altered roadmap
http://mt0.google.com/vt/lyrs=r&hl=en&x={x}&y={y}&z={z}

>Satellite only
http://mt0.google.com/vt/lyrs=s&hl=en&x={x}&y={y}&z={z}

>Terrain only
http://mt0.google.com/vt/lyrs=t&hl=en&x={x}&y={y}&z={z}

>Hybrid
http://mt0.google.com/vt/lyrs=y&hl=en&x={x}&y={y}&z={z}

>Vworld Satellite
http://xdworld.vworld.kr:8080/2d/Satellite/201710/{z}/{x}/{y}.jpeg

 

4. 포인트를 DEM 자료 변경

위에 언급되어 있듯이 'ascil' 폴더에 공백으로 구분되어 있는 x, y, z 값 텍스트 파일을 이용하여 좀더 조밀한 DEM자료로 변환해보겠습니다.

레이어 > 레이어추가 > 구분자로 분리된 텍스트 레이어를 추가

 

공간 처리 툴박스를에 SAGA > Raster creation tools > Natural neighbour 

 

 

Cellsize : 50m로 지정하여 기존격자(90m)보다 조금더 조밀하게 설정하겠습니다.

이제 해당 자료를 다시 위와 같은 방법으로 3D뷰어에 타일이미지를 이용해 시각적효과를 주겠습니다.

 

5. 임의로 90m급 DEM자료를 더 조밀한 간격으로 변경했을때의 문제점

기존 90m셀이 50m로 변경되면서 보정법에 의해 어느정도 수치가 맞추어 지는데, 50m 와 100m 사이에 보정한 셀의 고도값이 75m로 임의값이 정해지지만 실제로 90m셀 두개의 간격 사이에 수많은 고도 값이 존재할 것이기 때문에 75m는 정확한 값은 아닙니다.

* 90m급 DEM자료는 90m급에서 사용하자

QGIS를 활용한 폴리곤 병합

이번 시간에는 Qgis를 활용하여 폴리곤을 병합하는 방법을 공유하도록 하겠습니다. 

필자는 Qgis 3.4 버전에서 작업하였음을 알립니다.

 

데이터 제공 - 센서스경계(시도경계)  :  

Z_SOP_BND_SIDO_PG.zip
다운로드

데이터 기본 좌표계 - UTM-K

데이터 출처 - 국가공간정보포털 (오픈마켓)

 

Qgis에 데이터를 업로드 합니다. (좌표계를 EPSG:5181로 지정해주세요.)

 

 

매우 중요한 부분입니다. 폴리곤 병합에 앞서 데이터의 "무결성 검증"을 실시해야 합니다. 무결성 검증의 순서는 다음과 같습니다.

  * 메뉴 -> 벡터 -> 도형 도구 -> 무결성 검증

* Tip - "무결성 검증" 을 실시하는 이유는 데이터가 병합 또는 여타 작업 실행 전, 오류 및 적합성을 판단하기 위함입니다. 

 

무결성 검증 실시 후 데이터 오류 처리하기

"무결성 검증"을 완료하게되면 유효한 산출물, 유효하지 않은 산출물, 오류 산출물 이렇게 3가지의 레이어가 생성됩니다.

 

오류를 처리하는 방법은 다음과 같습니다.

  * 오류 처리 할 레이어 선택 -> 편집 모드 켜기 -> 버텍스 툴 (VertextTool) 활성화 -> 오류 처리 

오류 지점을 자유롭게 선택 후 키보드 "delete"를 눌러 삭제합니다. 이와 같은 방법으로 다른 오류 지점도 처리하여 보세요.

오류 지점을 다 처리하였다면 편집 모드 토글을 재클릭하여 작업을 저장합니다.

 

데이터 오류 처리 후 레이어 병합하기

데이터 오류를 처리한 후 2가지 레이어 (유효한 산출물, 유효하지 않은 산출물)를 병합합니다. 순서는 다음과 같습니다.

실행 버튼을 눌러 병합을 진행합니다.

 

폴리곤 병합하기 

먼저, 데이터 오류 처리 작업까지 완료한 데이터를 업로드 합니다.

다시 한번 편집 모드를 켜준 후 "객체 선택" 토글을 누릅니다. 

 

객체 선택 기능을 활용하여 병합 할 폴리곤들을 다중 선택 합니다. (ctrl버튼과 좌클릭을 통해 다중선택을 쉽게 할 수 있습니다.)

 

선택한 객체 병합하기

선택한 폴리곤들을 병합하는 방법은 다음과 같습니다.

  * 메뉴 -> 편집 -> 선택한 객체 병합

 

확인을 눌러 병합을 완료합니다.

사진과 같이 두개의 폴리곤이 하나의 폴리곤으로 병합된 것을 볼 수 있습니다.

* Tip - 폴리곤을 병합할 시 병합할 수 없다는 에러 메세지가 표출되면 현재의 데이터로 재차 무결성 검증을 실시하세요.

  각 폴리곤 속성 테이블의 속성값이 달라도 병합이 가능합니다.  

Qgis 사용자 정의 좌표계 사용하기 

이번 시간에는 shp파일을 사용하여 사용자 정의 좌표계를 지정하는 방법을 공유하겠습니다.

필자는 Qgis 3.4 버전에서 작업하였음을 알립니다.

 

작업에 활용한 데이터는 국가공간정보포털에서 다운로드 한 데이터 입니다. (국가공간정보포털-오픈마켓 바로가기)

데이터 - (연속주제)_환경/기타용도지역지구  :  

LSMD_CONT_UM101_강원.zip
다운로드

 

다운로드한 데이터를 Qgis에 업로드 하고 좌표계를 EPSG:5174로 지정합니다. 

* 좌표계 변환 방법 참고 

서비스바로가기

 

좌표계를 지정한 데이터를 확인합니다.

사진과 같이 데이터와 지도 간 이격이 있는 것을 볼 수 있습니다.

 

사용자 지정 좌표계 생성하기 

EPSG:5174 좌표계로 지정하였음에도 불구하고 이격이 발견된것은 5174좌표계의 투영체계수값을 추가하지 않아서 입니다.

링크된 게시물을 참고하여 EPSG:5174의 투영체계수를 추가하세요.

* 사용자 지정 좌표계 설정 참고

서비스바로가기

 

 

tpwgs84 추가 proj4text 

+proj=tmerc +lat_0=38 +lon_0=127.0028902777778 +k=1 +x_0=200000 +y_0=500000 +ellps=bessel +units=m +no_defs +towgs84=-115.80,474.99,674.11,1.16,-2.31,-1.63,6.43

 

사용자 지정 좌표계 정의 방법은 아래의 순서로 진행됩니다.

우선, 메뉴 -> 설정 -> 사용자 지정 투영체 의 순서를 진행합니다.

그리고, "+버튼"을 눌러 새로운 좌표계를 생성 후 투영체계수를 넣어주고 확인을 누릅니다. 

 

사용자 지정 좌표계를 활용하여 다시 좌표계를 지정합니다.

사진과 같이 이격이 사라진것을 볼 수 있습니다.

Qgis를 이용한 레이어 병합

필자는 Qgis 3.4버전에서 작업을 진행하였습니다.

작업에 활용한 데이터는 대한민국 국립, 군립 등의 공원 데이터 입니다. (

국립, 군립 공원 데이터.zip
다운로드

)

1. 데이터 업로드 하기 

작업할 데이터중 shp파일들을 Qgis에 업로드 합니다.

 

2. 병합하기 

다음과 같은 순서로 레이어 병합을 진행합니다.

백터 -> 데이터 관리도구 -> 백터레이어 병합  

 

* 입력 레이어 선택버튼을 눌러 전체 선택을 하고 확인을 클릭합니다.   

* 지정할 좌표계를 선택합니다.

 

* 병합한 산출물 버튼을 누르고 파일로 저장합니다. 

 

3. 병합된 레이어 확인하기 

병합이 완료된 레이어를 Qgis에 업로드 합니다. 

Qgis를 이용한 지형 형상 편집하기

 

* 본 작업은 Qgis 3.4 버전에서 이루어졌음을 알립니다.

 

지형 형상 편집 작업을 하는 시기는 다양합니다. 그 중에서도 단순화 작업을 한 후에 지형 형상 편집 작업을 하는 경우가 많습니다.

독자분들에게 기능적 설명을 하고 이해를 돕기위해 본 게시물에서도 단순화 작업을 진행한 데이터를 활용해 보도록 하겠습니다.

 

1. Qgis를 열고 지형 형상 편집작업을 실행 할 데이터를 불러옵니다.

단순화 작업을 진행한 데이터를 불러와서 확대해보니 사진과 같이 지형 간 이격이 보이는 것을 확인할 수 있습니다.

우리는 이것을 슬리버(Sliver) 라고 부릅니다.

 

2. 작업을 하기위한 스냅핑 (Snapping) 도구를 활성화 합니다.

 - 먼저, Qgis 상단 툴박스에서 마우스 우클릭을 하여 패널창을 엽니다.

 - 패널창 하단 '스냅 툴바' 토글을 활성화 시킵니다.

 - 사진과 같이 스냅핑 도구가 생성 된것을 확인할 수 있습니다.

 

3. 스냅핑 도구와 편집 도구 설명

 

4. 지형 형상 편집 작업 

작업에 이용할 도구들을 모두 활성화 했습니다. 

이제 지형 형상 편집 작업을 시작합니다.

수정하고자 하는 지형의 꼭짓점과 꼭짓점을 맞추어 편집을 합니다.

3. 에서 설명하였던 "교차 영역에 스냅 허용" 도구로 인해 각 지형의 꼭짓점이 맞춰집니다.

 

Tip. 꼭짓점이 없는 면의 경우 중간중간 x자 형식의 구분점이 있으니 이를 활용하여 스냅을 할 수 있습니다.

 

 

 

 

 

 

 

 

Qgis를 통한 데이터 좌표계 변환 및 저장

* 작업한 QGIS의 버전은 3.4 버전임을 알려드립니다.

 

* 원본 데이터 좌표계 확인

  • 원본 데이터의 좌표계를 확인합니다.

원본데이터의 좌표계가 EPSG:5179로 되어있습니다.

 

* 좌표계 변환 방법

- 레이어트리에서 좌표계를 변환하려는 데이터를 우클릭 합니다.- Set CRS 선택 후 원하는 좌표계 선택 및 확인을 클릭합니다.

 

* 데이터 저장 방법

- 레이어트리에서 데이터를 우클릭 후 내보내기/객체를 다른이름으로 저장하기를 선택합니다.

 

- 데이터를 저장할곳과 파일명을 지정합니다.

- 변환하고자하는 좌표계를 선택 후 확인을 눌러 저장합니다. 

 

* 좌표계를 변환하여 저장한 shp파일(데이터)을 QGIS로 불러옵니다.

좌표계가 WGS84(EPSG:4326)로 변환이 완료된 모습입니다.

 

-> 위와 같은 방법으로 다른 좌표계로 변환할 수 있습니다. 

 

 

 

 

 

단순화 작업 (벡터 > 도형도구 > 단순화)

geoserver에 읍면동 데이터(shp)를 등록하여 WFS서비스를 사용했다. 해당 데이터의 용량은 55MB로 전국레벨에서 벡터(WFS)서비스를 사용하기에 무리가 있어 QGIS를 사용하여 단순화 작업에 들어갔다.
 

 

단순화 작업이 끝난 후에 레이어의 단순화 모양이 예상과 다르게 나왔다.

다시한번 허용범위를 1m 지정하고 단순화 작업을 실행했지만 결과는 동일하게 나타났다.
이유는 투영좌표계에 따라서 QGIS가 사용하는 단위가 다르기 때문이다.
현재 읍면동데이터의 좌표계는 WGS84 EPSG:4326을 사용하고 있다.
(Proj4: +proj=longlat +ellps=WGS84 +datum=WGS84 +no_defs +towgs84=0,0,0)

 

QGIS는 계산시 CRS의 단위를 사용하는데 EPSG:4326와 같은 지리좌표체계(CRS)는 단위로 degrees를 사용한다. 계산을 위해서 meters, feet 단위를 가지는 투영좌표계를 사용해야한다.

 

데이터의 좌표계를 meters 단위를 사용하는 EPSG:5174로 변경하여 다시한번 단순화 작업을 실행하였다.
(Proj4: +proj=tmerc +lat_0=38 +lon_0=127.0028902777778 +k=1 +x_0=200000 +y_0=500000 +ellps=bessel +units=m +no_defs)

버텍스 개수가 줄어 들고 단순화작업이 정상적으로 이루어졌다.

 

국가공간정보포털 오픈마켓에서는 다양한 종류의 공간정보 관련 공공데이터를 제공한다. 

또한 국가공간정보포털에서 제공하는 데이터의 파일 포맷은 여러가지가 있지만 대부분의 데이터가 shp 포맷으로 제공된다.

QGIS를 이용하여 SHP 포맷의 데이터를 DXF 포맷으로 변환하는 방법에 대하여 알아보자.

 

1. 먼저 QGIS에서 SHP 포맷의 데이터를 오픈한다.

 QGIS : ver2.18.22

 활용 데이터 : 건물통합정보마스터_대구 (활용 데이터 출처 : 국가공간정보포털 오픈마켓)

 활용 데이터 좌표계 : Bessel/중부(200,000/500,000) EPSG : 5174

 

2. Layers Panel에서 DXF로 변환이 필요한 데이터 오른쪽 클릭

 

 - 데이터 오른쪽 클릭 후, 다른이름으로 저장 버튼 클릭

 

3. 새 이름으로 벡터 레이어 저장하기

 다른이름으로 저장 클릭 시, 새 이름으로 벡터 레이어 저장하기 화면이 나타난다.

- 형식 : 저장 파일 포맷을 선택하는 부분

 - File name : 파일의 이름 

 - 탐색(File name) : 저장 위치

 - 좌표계 : 파일의 좌표계 선택

 

4.  결과 

+ Recent posts