Data Park/QGIS

[QGIS] Heat-map 시각화

Data Park 2023. 1. 28. 09:45

□ Heat-map이란 무엇인가

- 열을 뜻하는 히트(heat)와 지도를 뜻하는 (map)을 결합시킨 단어

- 색상으로 표현할 수 있는 다양한 정보를 일정한 이미지 위에 열분포 형태의 시각화한 그래픽으로 출력하는 것

 
 

 

위의 그림은 유로파 유명 축구선수들이 어디서 패스를 받았는지에 대한 Heat-map 시각화를 한 것입니다.

이를 통해 해당 선수가 속해있는 팀을 상대팀으로 만난다면 어떤 전술을 구사해야 하는 지를 작전할 수 있을 것입니다.

여러분께서 분석하고 계신 빅데이터 또한. 산점도(Scatter plot), 공간적 분포를 통해 어느 구간, 지역에 편중되어있는지에 대한 정보를 도출하고 기관에서는 그 정보를 검토하고 활용하여 시행하고 있는 사업의 효율을 높이는 전술을 계획할 것입니다.

□ 실습1. 데이터 출처

- 활용 데이터 : 서울특별시 응급실 위치 정보

http://data.seoul.go.kr/dataList/OA-20338/S/1/datasetView.do

 
 
 

□ 실습1. 응급실 Heat-map

 
 

[속성] - [열지도] - [색상표(=보통 저는 spectral로 합니다.)]

 
 

[확인] - [적용 및 확인]

이 응급실은 [가중치 부여] 를 선택할 필요가 없습니다.

[가중치 부여]는 "2. 성북구, 동대문구 총인구 shp 병합" 에서 보여드리겠습니다.

자, 이제는 열지도에서 [가중치 부여]를 하여 Heat-map 시각화를 진행하겠습니다.

□ 실습2. 데이터 출처

- 활용 데이터 : (1)성북구 총인구 100m 격자.shp, (2)동대문구 총인구 100m 격자.shp

- 데이터 출처 : 국토정보플랫폼 http://map.ngii.go.kr/mn/mainPage.do

 

1. 국토정보플랫폼에서 성북구 총인구 100m 격자.shp 를 다운받는다.

2. 다운 받은 성북구_총인구_100m_5179격자를 4326.shp로 저장한다. (캡처 생략)

3. 4326.shp로 저장한 성북구_총인구_100m 불러오기

4. 위경도 생성

[속성 테이블 열기] - 상단에 [필드 계산기]

#경도(X) 생성 x(centroid($geometry)) #위도(Y) 생성 y(centroid($geometry))
 

5. 편집된 내용 저장 후 shp 레이어를 CSV로 저장

 
 

6. 성북구_총인구_100m_4326.csv 불러오기

 
 

7. 성북구 총인구 Heat-map 생성

 
 

여기서 [가중치 부여]에 "val"를 선택해주는데 이유

응급실은 위치한 곳에만 point좌표가 있는데

총인구는 사람이 없는 곳에도 point좌표가 있고 "val" (value)로 총인구가 해당 지역에 얼마나 있는지를 나타냅니다.

따라서 [가중치 부여]에 "val"를 선택해줍니다.

8. 성북구 Heat-map 시각화 완료

 
 

밀리미터로 설정해놓으면 확대할때마다 반경에 대한 Heat-map이 계산되어 변한다.

만약 이게 싫다면 [밀리미터->지도단위] - [반경=500m] 로 설정해주면 확대해도 변하지 않는 것을 확인할 수 있습니다.

□ 성북구, 동대문구 병합 Heat-map

대부분의 프로젝트는 1개의 지역만 분석하시진 않을 겁니다. 적어도 2개 이상의 시군구의 총인구 Heat-map 시각화를 하셔야 할텐데, 그러면 위의 그림처럼 2개의 heat-map을 올리면 성북구와 동대문구가 비교되지않아서 정확하지 않기때문에 이 2개의 shp를 병합하여 heat-map을 진행하셔야 합니다.

1. 국토정보플랫폼에서 동대문구 총인구 100m 격자.shp 를 다운받는다.

2. 성북구, 동대문구 총인구 100m 격자_5179.shp를 올린다.

3. [벡터] - [위치로 선택]하여 겹치는 부분을 제거한다.

 

[벡터] - [조사도구] - [위치로 선택]해서 두 지역간 중복되는 것을 제거할 겁니다.

겹치는 부분 확인

 

선택된 동대문구의 성북구와 겹치는 격자의 [선택 반전] 수행

 

[선택반전] - [선택한 객체를 다른이름으로 저장]으로 겹치지 않는 곳만 저장한다.

위의 ' heat-map 실습1 - 4 ' 와 같은 방식으로 위경도 생성

[벡터] - [데이터 관리 도구] - [벡터 레이어 병합] 으로 성북구와 동대문구를 "병합"합니다.

 
 

병합 결과를 csv로 저장하고 불러와 전과 같은 방식으로 Heat-map 시각화를 진행합니다.

 

감사합니다. 이상으로 [QGIS] Heat-map 시각화를 마치겠습니다.

읽어주셔서 대단히 감사합니다!

질문이나 요청사항은 댓글로 작성해주시거나 보안상 밝히기 어려우시다면 채팅 주시면 답변드리겠습니다!

혹한기 조심하시고 또 뵙겠습니다!