열지도 만들기 (QGIS3)

열지도는 밀도 포인트 정보에 대해서 시각화하는데 중요한 도구입니다. 열지도는 사용하는 데이터에 대한 정보의 밀도를 결정하는데 유용한 보간법입니다. 열지도는 보통 범죄정보, 교통 사고, 주택밀집도 등 시각화 하는데 사용됩니다. QGIS의 점 레이어 스타일도구에서 열지도를 표현할 수 있고 점 레이어를 통해 레스터를 만들 수 있는 열지도(케널 밀도 추정) 알고리즘도 있습니다.

작업 개요

UK Surrey의 범죄위치 데이터를 활용하여 범죄율이 높은 지역의 열지도를 만들것입니다.

이 예제에서 필요한 다른 기술

  • 가상필드사용하기 및 적절하게 표현하기

데이터 획득

data.police.uk 는 도로에 따른 범죄, 결과 등 관련 정보를 CSV 형태로 제공합니다. `Surrey Police https://data.police.uk/data/>`_ 정보를 내려받아서 묶여있는 파일을 풀어서 CSV파일을 얻습니다.

아래 링크에서 다음 데이터를 손쉽게 내려받을 수 있습니다:

2019-02-surrey-street.csv

정보 출처 [POLICEUK]

과정

  1. We will first load a basemap layer from OpenStreetMap and then import the CSV data. In the Browser tab, scroll down and locate the XYZ Tiles section.

../../_images/150.png
  1. Expand it to see the OpenStreetMap tile layer. Drag and drop it to the main canvas. Next we will load the CSV file. Click the Open Data Source Manager button.

../../_images/229.png
  1. ‘구분자로 분리된 텍스트’항목으로 갑니다. 이곳에서 CSV파일 형태로 구성된 범죄 정보를 넣어줄 예정입니다. ‘…’을 누른 후 ‘파일명’에 내려받았던 2019-02-surrey-street.csv 을 넣으세요. Geometry Definition항목에서 “X 필드”와 “Y 필드”는 에 관련한 내용으로 “경도”와 “위도”로 나타내게 됩니다. Geometry CRS`는 ``EPSG:4326 - WGS 84` 로 설정합니다. 예시데이터 항목에 속성이 알맞게 들어가는지 확인 후 추가 및 닫기합니다.

../../_images/320.png
  1. 레이어 패널에 내려받은 두가지 레이어가 있습니다- “오픈스트리트맵”과 2019-02-surrey-street. `2019-02-surrey-street``레이어를 오른쪽 클릭 한 후 ‘레이어로 확대/축소’를 합니다.

../../_images/49.png
  1. 범죄 사고 점 정보를 오픈스트리트 맵을 기본으로 하는 지도에 올려서 봅니다. 정보를 둘러보시죠. 정보의 밀집정도가 높아 어디가 범죄율이 높은지 찾아내기 힘듭니다. 이런 경우에 열지도 시각화를 통해 쉽게 찾아낼 수 있습니다. 2019-02-surrey-street 레이어를 활성화 시킨후 ‘오픈레이어 스타일링 도구’를 눌러줍시다.

../../_images/59.png
  1. 렌더링 드롭박스에서 “열지도”를 고릅니다. ‘레이어 스타일 패널’은 캔버스에서 내가 변경해준 값에 대해 어떻게 변화했는지 캔버스에서 바로 확인할 수 있도록 고안되었습니다. 이 레이어는 현재 그레이스케일의 형태로 보여집니다.

../../_images/69.png
  1. 열지도는 보통 높은 밀도의 점 벡터들이 있는 구간에 “열”형태로 노랑-빨강 또는 흰-빨강의 색상표로 사용됩니다. ‘색상표’를 누른 후 “Reds”를 사용합니다.

../../_images/79.png
  1. 그 다음 ‘반지름’값을 설정해줍니다. 이 값은 개별의 점 정보 주변에 얼마나 영향을 미치는지 설정할 수 있습니다. 정보유형에 따라서 이 값이 의미하는 바는 다릅니다. 우리가 예제로 사용하고있는 정보에서는, 반경 5km내에서 범죄 사고가 영향을 미친다고 가정합시다. 오른쪽 제일 아래 프로젝트 좌표정보가 EPSG: 3857``인지 확인합니다. 좌표계의 기본 단위는 '미터'임으로, 반지름 항목에 "5000"을 입력합니다. 다른 파라미터는 `Kernel shape`인데 숨겨져있는 항목입니다. 이것은 주어진 반지름에 대해서 얼만큼 퍼져나갈지 결정하는 함수값입니다. 열지도 렌더링은 "4차"함수를 계산식에서 사용합니다. Kernel 모양은 보통 ``Triangular, Uniform, ``Triweight” 그리고 `Epanechnikov``의 형태의 함수를 사용하기도 합니다. ‘<https://www.geodose.com/2017/11/qgis-heatmap-using-kernel-density.html>’ 이곳에서 열지도와 Kernel shape에 따른 적절한 반지름값 정보를 더 확인하실 수 있습니다.

../../_images/89.png
  1. 그렇다면 열지도 시각화가 준비되었습니다. Layer Rendering 항목에서 불투명도를 조정해줍시다. 60%로 설정하여 기본지도와 함께 열지도를 볼 수 있게 해줍시다.

../../_images/99.png
  1. 여러종류의 분석에서, 점의 밀도를 고려하는 것만으로도 충분합니다. 하지만 가끔씩, 개별 점에 대해서 중요도를 다르게 주고 싶을 때도 있습니다. 열지도에서 강도사건보다 더 심각한 범죄가 영향이 크다는 것을 설정할수 있습니다. 한 지역의 점의 정보는 다양하게 분석될 수 있습니다. 이렇게, 개별 점 정보를 **가중치**를 설정하여 다른 의미를 부여해 줄 수 있습니다. 가중치 필드를 생성하여 열지도를 더 발전시켜봅시다. ``2019-02-surrey-street``레이어를 오른쪽 클릭 후 ‘속성 테이블 열기’를 합니다.

../../_images/1013.png
  1. 테이블 필드 중에서 범죄 유형을 구분한 “Crime type”을 확인할 수 있습니다. 다른 범죄 유형에 따라 높은 가중치를 주어 분류해봅시다.

../../_images/1116.png
  1. ‘필드계산기’를 열어봅시다.

../../_images/1214.png
  1. ``Crime type``에 따라 계산식을 통해 가중치를 계산할 것입니다. QGIS는 가상필드 생성하기 기능이 있습니다. 이 기능은 QGIS 프로젝트 상에서는 저장되지만 데이터 원본에는 저장되지 않습니다. 다양하게 계산될 수 있으며 QGIS상에서 어디서든 테이블 값으로 사용될 수 있습니다. 산출필드명에 ``weight``를 입력한 후 ``정수 (integer)`를 설정해줍니다. 표현식 패널안에서 작성을 할 것입니다. 우리는 CASE 진술을 사용할 것입니다. 다른 상태에따라 다른 값을 가집니다. 입력 후 확인을 누릅니다.

CASE
WHEN "Crime type" LIKE 'Violence%' THEN 10
WHEN "Crime type" LIKE 'Criminal%' THEN 5
ELSE 1
END
../../_images/1312.png
  1. 가중치에 대한 정보가 들어있는 새로운 필드가 생성되었습니다.

../../_images/1411.png
  1. 레이어 스타일 패널에 돌아가서, 가중치 부여 항목에서 “weight”를 설정해줍니다.

../../_images/1511.png
  1. 열지도에서 가중치에 따른 변화를 보실 수 있습니다. 레이어 스타일 패널을 닫아줍니다.

../../_images/1610.png
  1. 열지도에 대한 시각화 정보를 파라미터 레스터 레이어 또는 원하는 kernels, 다양한 반지름에 따라 변경하고 싶을 경우 공간툴박스에서 **열지도(커널 밀집도 평가)**를 사용할 수 있습니다. 이제 이 알고리즘을 사용해봅시다. 공간처리 툴박스에 갑시다.

../../_images/1711.png
  1. 열지도를 생성하기 전, 우리는 좌표계를 변경하기 위해 재투영을 할 필요가 있습니다. 거리는 열지도를 계산하기에 있어서 중요하기 때문에, 지리상 좌표계를 사용한다면 맞지 않을 수 있습니다. 공간처리 툴박스에서 벡터일반–> 레이어 재투영을 누릅니다.

../../_images/189.png
  1. 레이어 재투영에서 ‘좌표계 선택’을 눌러준 후 EPSG:27700 OSGB 1936 / British National Grid 이 좌표계를 설정합니다. 이 좌표계는 영국과 알맞은 좌표계입니다. 확인을 누릅니다.

../../_images/198.png
  1. 레이어 패널에서 재투영 레이어가 추가되었습니다. ``2019-02-surrey-street``레이어는 비활성화해줍니다.

../../_images/208.png
  1. 공간처리툴박스에서 ‘보간법 –> 열지도(커널 밀집도 평가)’를 누릅니다.

../../_images/2113.png
  1. 열지도(커널 밀집도 평가) 창에서, 앞에서 진행해왔던 정보값을 동일하게 적용할 것입니다. 반지름은 5000 미터로 설정한 후, 가중치 부여는 “weight” 항목을 설정하고 X,Y의 픽셀 크기는 50미터로 설정합니다. 그리고 Kernel shape는 4차로 설정한 후 확인합니다.

../../_images/2210.png

참고

‘필드값을 반지름으로’라는 항목은 각 개별 점에 대해서 다양한 반지름 값을 부여할 경우 사용합니다. ‘가중치 부여’와 함께 사용하여 얼마나 개별 점이 영향을 주는지 사용할 수 있습니다.

  1. 과정이 끝났다면, 새로운 레스터 레이어가 “결과물”로 나타나있을 것입니다. 기본으로 설정되어 표시되는 시각자료는 ‘단일 밴드 그레이’로 매우 멋스럽지 못합니다. 레스터 스타일 패널을 들어가줍시다.

../../_images/237.png
  1. “단일 밴드 유사색상”으로 변경해준 후 “Reds”로 색상도를 변경합니다. 이제 레이어가 앞에서 했었던 열지도 시각화처럼 보이네요.

../../_images/248.png

참고

“결과물”레이어는 ``2019-02-surrey-street``레이어와 다릅니다. 열지도 렌더링에서 열지도 레이어를 표현 시 문제점은 범례를 사용할 수 없습니다. 범례를 사용하여 열지도를 표현하고 싶다면, 범례를 추가하여 ‘새 조판만들기’를 하십시오. 레스터로 만들어진 열지도 만들기는 이러한 경우에 사용할 수 있습니다.


If you want to give feedback or share your experience with this tutorial, please comment below. (requires GitHub account)