어제 모 글에서 그림판으로 지도 만드는 것에 대한 이야기를 하다가 QGIS로 단계 구분 지도를 만드는 강의는 안 올라와 있길래 직접 만들어봄



이런 식으로 지리적인 분포 차이를 보이는 속성값을 색깔이나 패턴의 차이로 보여주는 지도를 단계구분도라고 함

이정도는 다들 알 테지만 GIS를 사용하지 않는 챈럼들은 행정구역 투명 png 파일을 구해서 그림판으로 노가다하는 방식의 지도 제작을 하고 있을 거임

사실 서울시 자치구별 통계 지도 정도는 그림판이 더 빠를 수도 있겠지만 전국 단위 시군구 혹은 광역시급 이상의 읍면동 단위 지도 같은 걸 만드려면 수백 수천번의 노가다가 필요하기에 지금부터 QGIS로 이러한 지도를 만드는 방법에 대해서 설명해보고자 한다


1. 시작하기


일단 QGIS에서 통계 지도를 만들기 위해서는 보여주고자 하는 지역의 shp 파일과 지도 위에 덧씌우고자 하는 데이터가 필요함

https://data.seoul.go.kr/ 데이터는 여기서 가져오기로 함

데이터 검색 정도는 다들 해봤을 테니 넘어가고



엑셀 파일이 크니까 모든 년도 모든 데이터를 갖고 올 필요 없이 필요한 년도의 데이터만 선택해서 갖고오도록 하자

물론 안해도 상관은 없음 어차피 엑셀로 또 편집 해야함 ㅠ


QGIS에서 불러오기 위해서는 .csv 파일로 저장해야 함

나중에 엑셀에서 다른 이름으로 저장해도 되지만 귀찮으니까...





저장한 뒤 열어보면 이것저것 많이 적혀 있을 텐데 우리가 지도를 만들기 위해서 필요한 것은 자치구 이름나타내고자 하는 데이터뿐임. 소계 행도 지워줘야 함



필요한 것만 냅두고 다 지워준다

그리고 csv 파일 그대로 저장하자


2. QGIS에서 불러오기


지도에 데이터를 입히기 위해서는 기반이 될 벡터 파일이 있어야 함. QGIS를 비롯한 많은 GIS 프로그램에서는 .shp 확장자로 끝나는 파일을 이용해 벡터 데이터를 불러옴. 좌측 탐색기 패널에서 파일의 출처를 찾아 불러오면 됨!

이 지도는 출처가 불분명하긴 한데

http://www.gisdeveloper.co.kr/?p=2332 여기서 웬만한 지도는 얻을 수 있음

언젠가 전국 지도에서 필요한 행정구역의 지도만 따로 뽑는 방법도 올려볼까 싶음


암튼 지도를 불러왔다면 데이터도 불러오자

.csv 데이터는 탐색기 패널이 아니라 위 사진 좌상단에 있는 데이터 원본 관리자 아이콘을 열어서 불러와야 함



데이터 원본 관리자 창을 열어서 구분자로 분리된 텍스트를 선택하자

그러면 일단은 위의 스크린샷에서 글자 없는 버전의 창이 뜰 텐데 우상단의 [...] 버튼을 클릭하면 파일 탐색기가 열림

파일 탐색기를 열어서 다운받은 데이터를 불러오면 예시 데이터가 보일 텐데, 설정은 위 스크린샷대로 해주자

인코딩은 파일에 따라 korean이 아니라 EUC-KR 등 다른 방법으로 해야하는 경우도 있음 이건 잘 모름... 이것저것 눌러보면서 맞추면 됨(?)


불러오면 레이어 패널에 기존에 있던 shp 파일과 csv 파일이 함께 뜨는 것을 볼 수 있을 것임

이때 csv 레이어를 선택한 뒤 F6 키를 눌러보자


와! 속성 테이블!

이때 '자치구별', '1인당 담당인구'라는 이름이 붙은 열들을 QGIS에서는 '필드'라고 부른다.

GIS를 하면서 종종 쓰게 될 기능이니 알아놓자

참고로 데이터 원본 관리자를 통해 불러온 파일은 QGIS 내에서 편집하기 어려움


3. 데이터 결합하기


속성 테이블을 닫고 shp 레이어를 우클릭한 뒤 속성 창을 열어서 좌측의 많은 메뉴들 중 결합 탭을 클릭하면

하단에 초록색 + 버튼빨간색 - 버튼이 있음

초록색 버튼을 눌러보자


벡터 결합 창이 뜬다.

'결합 레이어'는 아까 불러온 csv 파일,

'결합 필드'는 csv 파일의 자치구 열 이름,

'대상 필드'는 shp 파일의 자치구 열 이름을 선택하자


이때, 결합 필드와 대상 필드의 내용은 순서를 제외하고 완전히 동일해야 함

만약 shp 파일의 자치구는 26개인데 csv 파일에서 편집 실수를 해서 자치구가 하나 날아가서 25개가 되었다면 결합할 수 없음

또한 shp 파일에는 '종로구'라고 입력되어 있는데 csv 파일에 '서울특별시 종로구'라고 입력되어 있으면 마찬가지로 결합할 수 없음

SQL을 다뤄봤다면 조금 빨리 이해될 듯?


여튼 이것저것 했으면 확인 버튼을 누르자


결합 성공!

그러면 이대로 좌측의 심볼 탭으로 가보자


4. 시각화하기


맨 위에 '단일 심볼'이라고 되어 있을 텐데 '단계 구분'으로 바꿔주자


'값' 설정은 아까 결합 탭에서 확인한 csv 파일에서 가져온 필드 선택


단계 구분 방법에는 다양한 게 있는데 이번에는 등간격으로 해주자

각각 다른 색으로 시각화할 수치의 범위를 동일하게 만드는 방법이다


그러면 이렇게 알아서 구분을 해줌

우하단의 '급간'을 조정해서 범례를 더 많이 만들 수도, 더 적게 만들 수도 있음


똑똑한 QGIS가 데이터별로 색칠해 준 모습이다

그런데 너무 빨간색이다 보니 구분도 잘 안되는 것 같고 눈도 아프다

색을 바꿔볼까?

아까 열었던 속성 창에서 심볼 탭으로 들어가거나 간단하게 F7 키를 눌러보자


색상표를 클릭하면 QGIS에서 기본으로 제공하는 색상표들이 많이 있음

맨 밑에 있는 alocdaloc이나 paransaek처럼 직접 색상표를 만들 수도 있다(귀찮음)



눈이 아프지도 않고 가독성도 좋은 단계구분도 완성!

일단 기본적인 방법은 이상과 같다

분명 만드는 데는 15분이면 됐는데 글은 한시간동안 씀... 아니 분명 간단하게 만들려고 했는데;

생각해보니 15분이면 그냥 그림판 채우기 툴 쓰는게 더 빠르겠네

그렇지만 처음에 말했듯이 이보다 더 정밀한 지도를 만들 때는 이 방법이 아주 유용하니 다양하게 활용해보도록 하자

반응이 좋으면 조판 기능을 이용해서 png로 저장하는 방법도 올려봄

읽어줘서 고맙워요