개별 장소의 명칭 같은 정보를 전달하는 데 라벨이 유용하긴 하지만, 모든 정보를 전달할 수는 없습니다. 예를 들어 각 landuse 구역이 어떻게 이용되는지 알고 싶다고 합시다. 라벨을 사용할 경우 이런 결과가 나옵니다.
라벨을 읽기 어려울 뿐만 아니라 맵 상에 수많은 토지이용구역이 있을 경우 혼잡하기까지 합니다.
이 강의의 목표: 벡터 데이터를 효율적으로 범주화하는 방법 배우기.
landuse 레이어의 Layer Properties 대화 창을 엽니다.
Single Symbol 이라는 드롭다운 메뉴를 클릭해서, Categorized 로 변경하십시오.
새 패널에 있는 Column 을 landuse 로, Color ramp 를 Greens 로 바꿉니다.
Classify 버튼을 클릭하십시오.
OK 를 클릭합니다.
결과는 다음과 같습니다.
Layer list 의 landuse 옆에 있는 화살표(또는 더하기표)를 클릭합니다.
이제 토지이용 폴리곤들이 동일한 토지이용 유형일 경우 동일한 색상을 가지도록 적절하게 범주화됐습니다. landuse 레이어에서 검은색 경계선을 없애는 편이 좋을 수도 있습니다.
Simple Fill 레이어에서 경계선을 제거하여 심볼을 변경한 다음 OK 를 클릭합니다.
이제 토지이용 폴리곤의 윤곽선이 제거되어, 각 카테고리별로 면 색만 남은 것을 볼 수 있을 것입니다.
원한다면 연관된 색상 블럭을 더블클릭해서 각 토지이용구역의 면 색을 바꿀 수도 있습니다.
비어 있는 카테고리가 하나 있는 게 보이십니까?
이 빈 카테고리는 토지이용 값이 정의되지 않았거나, NULL 값을 가지고 있는 오브젝트를 칠하는 데 쓰입니다. 맵 상에서 NULL 값을 가진 구역을 표현하기 위해 이 카테고리를 그대로 두어야 합니다. 정의되지 않은 값이나 NULL 값을 좀 더 확실히 표현하기 위해 색상을 바꾸는 편이 좋을 수도 있습니다.
여러분이 힘들게 바꾼 변경 사항을 잃지 않도록 지금 맵을 저장하세요!
사용자가 초급 수준 내용만을 따라가고 있는 경우, 앞에서 얻은 지식을 이용해서 buildings 레이어를 범주화해보십시오. building 열에 대해 카테고리를 설정하고 Spectral 색상표를 이용하십시오.
주석
결과를 보려면 도심 지역으로 줌인해야 합니다.
범주화에는 명칭, 순서, 간격, 그리고 비율, 네 가지 유형이 있습니다.
명칭 범주화에서는 오브젝트의 명칭을 기준으로 카테고리를 범주화합니다. 예를 들면 도시명, 우편번호 등에는 어떤 순서도 없습니다.
순서 범주화에서는 특정 순서로 카테고리를 배열합니다. 예를 들면 세계 무역, 관광, 문화 등에 대한 중요도를 기준으로 세계 도시들의 순위를 매기는 경우입니다.
간격 범주화에서는 양수, 음수, 0 값을 기준으로 숫자를 나누게 됩니다. 해수면 위/아래 높이, 빙결 온도(섭씨 0도) 위/아래 기온 등이 그 예입니다.
비율 범주화에서는 양수 및 0 값만을 기준으로 숫자를 나눕니다. 절대 영도(켈빈 0도) 이상의 온도, 어떤 포인트로부터의 거리, 특정 거리의 월별 평균 교통량 등이 그 예입니다.
앞의 예제에서 우리는 각 농장을 해당 지자체에 할당하는 명칭 범주화를 사용했습니다. 이제 농장을 면적을 기준으로 범주화하는 비율 범주화를 사용해보겠습니다.
저장하지 않은 채로 레이어를 재범주화하면 기존 심볼을 잃게 됩니다.
landuse 레이어의 속성 테이블을 여십시오.
토지이용구역을 면적을 기준으로 범주화하고자 하지만 문제가 있습니다. 속성에 면적 항목이 없기 때문에 새로 만들어야 합니다.
다음 버튼을 클릭해서 편집 모드로 들어갑니다.
다음 버튼을 클릭해서 새 열을 추가합니다.
새로 나타나는 대화 창을 다음과 같이 설정해줍니다.
OK 를 클릭합니다.
새 항목이 추가될 것입니다. (테이블의 맨 오른쪽에 추가되므로 수평 방향으로 스크롤해야 보일 수도 있습니다.) 그러나 현재 아무 값도 없이 NULL 값으로만 채워져 있습니다.
이 문제를 해결하려면 면적을 계산해야만 합니다.
항목 계산기를 실행하십시오.
다음 대화 창이 나타날 것입니다.
대화 창의 맨 위에 있는 값을 다음과 같이 변경합니다.
Function List 에서 Geometry ‣ $area 를 선택한 다음,
더블클릭하면 Expression 항목에 $area 가 나타납니다.
OK 를 클릭합니다.
이제 AREA 열에 값이 채워졌을 것입니다. (데이터를 다시 불러오려면 열 제목을 클릭하십시오.) 편집 내용을 저장한 다음 OK 를 클릭합니다.
주석
면적이 도 단위로 돼 있습니다. 나중에 평방미터 단위로 다시 계산할 것입니다.
범주화 스타일을 Categorized 에서 Graduated 로 변경합니다.
Column 을 AREA 로 변경한 다음,
Color ramp 아래에 있는 New color ramp... 옵션을 선택하면 다음 대화 창이 나타납니다.
Gradient 를 (벌써 선택되어 있지 않다면) 선택하고 OK 를 클릭합니다. 다음과 같은 창이 나타납니다.
이 창을 이용해서, 적은 면적을 Color 1 로, 큰 면적을 Color 2 로 나타낼 것입니다.
적합한 색상을 선택하십시오.
이 예제에서는 다음과 비슷한 결과가 나옵니다.
OK 를 클릭합니다.
새 색상표에 어울리는 명칭을 선택하십시오.
명칭을 입력한 다음 OK 를 클릭합니다.
이제 다음과 같은 화면을 보게 됩니다.
다른 항목은 그대로 놔둡니다.
OK 를 클릭합니다.
각 단계 사이의 라인을 제거하겠습니다.
여러분의 범주화를 이해하기 쉽도록 Mode 및 Classes 의 값을 변경해보십시오.
범주화에 복수의 기준을 결합하는 것이 유용할 경우가 많지만, 아쉽게도 일반 범주화에서는 단일 기준만 적용됩니다. 이런 경우 규칙 기반 범주화를 쓸 수 있습니다.
landuse 레이어의 Layer Properties 대화 창을 엽니다.
범주화 스타일을 Rule-based 로 바꾸면 다음 화면을 보게 됩니다.
그러면 새 대화 창이 나타납니다.
Filter 텍스트 공간 옆에 있는 생략부호 ... 버튼을 클릭합니다.
이때 나타나는 쿼리 빌더를 이용해서, 기준이 될 표현식 "landuse" = 'residential' AND "name" != ' |majorUrbanName| ' 을 입력한 후 OK 를 클릭하고, 엷은 청회색을 선택한 다음 경계선을 제거합니다.
다른 기준 "name" = ' |majorUrbanName| ' 을 추가하고 해당 지역에서 도시의 중요성을 강조하기 위해 짙은 청회색을 할당합니다.
이 기준을 목록 맨 위로 클릭 & 드래그합니다.
이 필터들은 배제적으로, 다 함께 작용하여 (면적이 0.00005 미만이거나, 주거지역이 아니거나, ‘Swellendam‘ 에 포함되지 않을 경우) 맵 상의 일부 지역을 제외하게 됩니다. 이렇게 제외된 폴리곤들은 기본적인 (no filter) 카테고리의 스타일을 적용받습니다.
맵 상에서 제외된 폴리곤들은 주거지역이 아니므로 기본 카테고리에 어울리는 엷은 청회색을 할당하도록 합시다.
이제 사용자의 대화 창이 이렇게 보여야 합니다.
이 심볼을 적용하십시오.
사용자 맵이 다음과 비슷하게 보일 것입니다.
이제 Swellendam 이 가장 두드러진 주거지역으로 나타나고 다른 비주거지역은 면적에 따라 다른 색상을 보여주는 맵이 되었습니다.
심볼을 이용하면 레이어의 속성들을 읽기 쉬운 방법으로 나타낼 수 있습니다. 우리가 선택한 연관 속성을 이용해서 피처의 중요성을 이해하도록 만들 수 있습니다. 여러분이 당면한 문제가 무엇이냐에 따라 다른 범주화 기술을 적용해서 문제를 해결하십시오.
이제 멋진 맵을 만들었습니다만, 이것을 어떻게 QGIS에서 분리시켜 인쇄할 수 있는 파일 형식이나 이미지 또는 PDF로 만들 수 있을까요? 이것이 다음 강의의 주제입니다!