본문 바로가기
🌐 공간정보

[스페이스인] QGIS 실습 | 4. 좌표정보 가공 및 공간통계 시각화

by 일단연 2023. 6. 7.

* 본 글은 공간정보교육포털 '스페이스인'의 [ QGIS 실습 ] 강의를 듣고 정리한 글입니다.

비교적 과거의 강의이기 때문에 현재의 기술과는 차이가 있을 수 있습니다.

 

공간정보교육포털

공지사항서버 재기동(23.04.06)에 따른 공간정보 교육포털 이용 안내 2023-03-24

www.spacein.kr

 

 4. 좌표정보 가공 및 공간통계 시각화 

엑셀시트 가공

1. 엑셀시트 데이터 다운로드

  • 서울 열린데이터 광장에서 다운로드
    • 서울시 작은도서관 위치 정보, 서울시 공공도서관 위치정보 다운로드 (WGS1984 기준)

2. CSV 파일 불러오기

  • 1) 레이어 > 레이어 추가 > 구분자로 분리된 텍스트 레이어 추가
    • 파일 이름 > 확장자가 CSV인 파일 선택
    • 인코딩: EUC-KR (안 되면 UTF-8 해보기)
    • 파일 포맷: CSV(쉼표로 구분된 값)
    • 도형 정의 > 포인트 좌표 > X 필드: 경도, Y 필드: 위도, 도형좌표계: ESPG 4326(WGS 84) 선택

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

3. 불러온 레이어를 저장

  • 1) 레이어 > 다른 이름으로 저장 > 파일명, 좌표계, 인코딩 설정 > 확인

레이어 > 다른 이름으로 저장

 

열지도 제작

1. Shape 파일들을 하나로 결합

  • 1) 벡터 > 데이터 관리 도구 > 벡터 레이어 병합

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

  • 2) 입력 레이어의 ‘…’버튼 클릭 >  두 레이어(공공도서관, 작은도서관) 선택

벡터 > 데이터 관리 도구 > 벡터 레이어 병합 설정

  • 3) 다시 뒤로 돌아와서 대상 좌표계 선택 > 병합한 산출물: 디렉터리와 파일명을 설정해 파일로 저장

벡터 > 데이터 관리 도구 > 벡터 레이어 병합 > 대상 좌표계 선택 > 병합한 산출물: 디렉터리와 파일명을 설정해 파일로 저장

  • 결과

 

2. 열지도 스타일 적용

  • 레이어 스타일 작업(F7) > 심볼 종류: 열지도

레이어 스타일 작업(F7) > 심볼 종류: 열지도

  • 원하는 색상표 선택

레이어 스타일 작업(F7) > 심볼 종류: 열지도 > 원하는 색상표 선택

  • 결과
    • 도서관이 밀집된 부분을 열지도로 확인할 수 있음

  • 추가 옵션
    • 웹 > TMS for Korea > VWorld Maps > VWorld Gray 를 배경으로 적용해 실제 위치를 확인
    • 열지도의 불투명도는 80%으로 설정해 VWorld Gray가 배경으로 보이게 함

  • 결과
    • 지도상에서 어떤 행정구역에 도서관의 밀도가 높은지 직관적으로 확인할 수 있음

도서관 밀집도를 표현한 열지도

  • 추가 옵션
    • 웹 > TMS for Korea > VWorld Maps > VWorld Gray 를 배경으로 적용해 실제 위치를 확인
    • 열지도의 불투명도는 80%으로 설정해 VWorld Gray가 배경으로 보이게 함

웹 > TMS for Korea > VWorld Maps > VWorld Gray

  • 결과
    • 지도상에서 어떤 행정구역에 도서관의 밀도가 높은지 직관적으로 확인할 수 있음

VWorld Gray를 배경으로 한, 도서관 밀집도를 표현한 열지도

 

3. 열지도 (커널 밀도 추정) 실행

  • 포인트 레이어의 열지도를 별도의 메소드로 추출하는 방법
  • 1) 공간 처리 > 툴박스 > ‘열지도’ 검색 > 보간-열지도 (커널 밀도 측정) 클릭

공간 처리 > 툴박스 > ‘열지도’ 검색 > 보간-열지도 (커널 밀도 측정) 클릭

  • 2) 열지도 (커널 밀도 측정) 설정
    • 입력 점 레이어에서 통합한 레이어 선택
    • 반경: 1000 입력
      • 반지름: 밀도 추정 시 각각의 포인트가 갖고 있는 밀도의 범위를 얼마로 할지를 지정 > 밀도 결과값 조정
    • 픽셀 크기 X: 30, 픽셀 크기 Y: 30 설정
    • 고급 파라미터는 기본값으로 설정
      • 고급 파라미터: 다른 필드값을 가중치로 사용하는 등 ‘레이어 스타일 작업’보다 더 자세히 열지도 결과값을 조정 가능

열지도 (커널 밀도 측정) 설정

  • 여기서 오류가 발생했었는데 반경과 픽셀 크기 X, Y를 너무 작게 설정해서 발생한 문제였음
    • 오류: Could not create destination layer
    • 원인: 반경을 100으로, 픽셀 크기 X, Y는 1로, 너무 작게 설정함
  • 결과
    • 별도의 열지도 메소드로 추출된 상태
    • 해당 레이어는 래스터 데이터임

포인트 레이어의 열지도를 별도의 래스터 데이터로 추출한 화면

  • 3) 위의 래스터 스타일 변경 - 레이어 스타일 작업(F7)
    • ‘단일 밴드 유사색상’ 선택
    • 색상표 선택 > 색상표 편집에서 불투명도 조절(60%로 설정)

레이어 스타일 작업(F7) > ‘단일 밴드 유사색상’ 선택 > 색상표 선택
레이어 스타일 작업(F7) > ‘단일 밴드 유사색상’ 선택 > 색상표 선택 > 색상표 편집에서 불투명도 조절

  • 결과
    • 스타일을 조정하기 전보다 훨씬 정밀해짐

열지도 레이어의 스타일을 조정한 결과

  • 마지막으로 프로젝트 저장하기

 

 

구역별 통계지도 제작

  • 앞에서 포인트 데이터의 밀도 추정을 열지도를 통해 살펴봄
  • 서울시 각각의 행정구역 내에 몇 개의 도서관이 있는지 수치적으로 추출해 속성데이터에 넣고 가시화하는 작업을 할 것

 

1. 전국 행정구역 데이터 다운로드

모든 행정구역 데이터를 다운로드해 레이어 추가한 화면 - 병합 전
모든 행정구역 데이터를 다운로드해 레이어 추가한 화면 - 병합 후

2. 서울 법정구역정보 저장: 표현식을 이용해 ‘서울’ 선택

  • 1) 레이어 우클릭 > 속성 테이블 열기 > 표현식을 이용해 객체 선택

레이어 우클릭 > 속성 테이블 열기 > 표현식을 이용해 객체 선택

  • 2) 표현식 작성 > 객체 선택
    • 표현식 - “COL_ADM_SE” LIKE ‘11%’
      • COL_ADM_SE 필드에서 11로 시작하는 값만 선택
      • 서울시 법정구역정보만 선택하겠다는 것

레이어 우클릭 > 속성 테이블 열기 > 표현식을 이용해 객체 선택 > 표현식 작성
속성 테이블에서 COL_ADM_SE 값이 11로 시작하는 데이터만 선택된 화면
전국에서 서울 법정구역정보만 선택된 결과

  • 3) 선택된 객체를 다른 이름으로 저장
    • 전국 법정구역 레이어 우클릭 > 선택된 객체를 다른 이름으로 저장 > 이름, 좌표계 설정 > 확인
  • 결과
    • 전국에서 서울 법정구역정보만 선택된 레이어가 별도의 파일로 저장됨

전국에서 서울 법정구역정보만 선택된 레이어가 다른 이름으로 저장됨

 

3. 구역별 도서관 개수 계산: 폴리곤에 포함하는 포인트 개수 계산

  • 1) 벡터 > 분석 도구 > 폴리곤에 포함하는 포인트 개수 계산

벡터 > 분석 도구 > 폴리곤에 포함하는 포인트 개수 계산

  • 2) 폴리곤에 포함하는 포인트 개수 계산 설정
    • 폴리곤, 포인트 선택
      • 폴리곤: District_Seoul
      • 포인트: Total_Library_Symbol
    • 개수 필드 이름: Total_Lib
    • 다른 이름으로 파일 저장: Total_Lib

벡터 > 분석 도구 > 폴리곤에 포함하는 포인트 개수 계산 설정

  • 3) 오류 수정 (참고)
    • 오류: ‘District_Seoul’ has invalid geometry
    • 해결 방법
      • 공간 처리 > 툴박스 > 무결성 검증(Check validity) > 입력 레이어: 오류 있는 레이어(District_Seoul) 선택 > 메소드: GEOS 선택 > 실행
      • ‘오류 산출물’이라는 새로운 점 레이어와 ‘유효하지 않은 산출물’이라는 면 레이어가 만들어짐
        • 오류 산출물: 오류가 있는 점 데이터 표시
        • 유효하지 않은 산출물: 오류가 있는 면 데이터 표시
      • 오류 산출물의 속성 테이블을 열어서 어떤 오류인지 확인: 링 자기 교차(Ring self-intersection)
      • 공간 처리 > 툴박스 > 도형 수정(Fix geoemtries) > 입력 레이어: 오류 있는 레이어(District_Seoul) 선택 > 실행
      • 오류 없는 면 레이어와 점 레이어가 생성됨 > 다른 이름으로 저장해두기
      • 상단의 ‘편집 모드 켜고 끄기’ 클릭 > 꼭짓점 도구 클릭 > 한 정점(vertex)에서 다른 점으로 클릭해서 하얀 빈 공간들을 제거

편집 모드 켜고 끄기 > 꼭짓점 도구
류 제거

  • 4) 결과: Total_Lib 필드가 자동 생성되었는지 확인
    • Total_Lib 레이어 우클릭 > 속성 테이블 열기 > Total_Lib 필드가 자동 생성되어 있음

 

4. 구역별 통계(Total_Lib)에 맞게 가시화

  • 레이어 스타일 작업 > 심볼: ‘단계 구분’ 선택
  • 모드: 등간격, 분류: 5 로 설정
    • 모드: 보여주고자 하는 통계값을 어떤 기준으로 자를 것인지
    • 분류(클래스): 몇 개의 클래스로 나눠서 표현할 것인지

레이어 스타일 작업 > 심볼: ‘단계 구분’ 선택 > 모드, 분류 선택

  • 결과
    • 통계를 기준으로 구분된 단계가 가시화됨
    • 모드와 분류에 따라 아래의 지도들처럼 결과가 달라짐

모드: 등간격
모드: 등개수

 

사용자 정의 좌표계

  • QGIS에서 타원체 변환 계수를 포함시켜 좌표계를 설정하는 방법 (QGIS에 없는 좌표계를 새로 만들 수 있음)
    • 아래의 예시: 법정구역을 적용할 때 EPSG5174의 towgs84 파라미터가 반영되어 있지 않아 정확한 위치가 표시되지 않으므로, towgs84 파라미터를 반영한 EPSG5174WithWGSPara를 사용자 정의 좌표계로 생성
  • 1) 설정 > 사용자 정의 좌표계

  • 2) 사용자 정의 좌표계에서 이름, 포맷, 파라미터 설정
    • 이름: EPSG5174WithWGSPara
    • 포맷: Proj 문자열
    • 파라미터: +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 +units=m +no_defs

설정 > 사용자 정의 좌표계 > 이름, 포맷, 파라미터 설정

  • QGIS 3.28 버전에는 EPSG5174가 위의 파라미터로 업데이트 되어 있어서 사용자 정의 좌표계를 만들 필요가 없음

 

  • 3) 벡터 > 데이터 관리 도구 > 레이어 재투영 > 만든 사용자 정의 좌표계 선택

 

  • 참고
    • 국내 좌표계 towgs84 파라미터 계산
    • 한국 주요 좌표계 EPSG코드 및 proj4 인자 정리
    • EPSG5174
      • +proj=tmerc +lat_0=38 +lon_0=127.0028902777778 +k=1 +x_0=200000 +y_0=500000 +ellps=bessel +units=m +no_defs
    • EPSG5174WithWGSPara
      • +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 +units=m +no_defs