QGIS 조건문(CASE) 연습

QGIS 필드 계산기에서 CASE 조건문을 연습해 보았다. if 조건문도 있긴 한데 CASE가 더 먼저 있길래 우선 협상자로 선정하고 if 조건문은 다음에 연습해 보는 것으로.

일단 무작위로 포인트 11개를 만들어 놓고 아무 맥락 없고 개연성 없는 속성을 넣어 아래와 같이 준비했다.

  • 선호음식 : 김치찌개, 된장찌개, 부대찌개, 콩나물, 숙주나물, 돌나물, 누룽지, 숭늉을 무작위 입력
  • 투표인원 : 무작위 숫자 입력
preparation

1. 조건문 방향

선호음식에서,

  • 김치찌개, 된장찌개, 부대찌개찌개
  • 콩나물, 숙주나물, 돌나물나물
  • 나머지 여기에 속하지 않는 항목은 기타 음식으로 변환

투표인원에서,

  • 10명 미만적음으로,
  • 10명 이상 50명 미만보통으로,
  • 50명 이상 100명 미만많음으로,
  • 그 밖의 100명 이상매우 많음으로 변환

2. 조건문(CASE) 형식 확인

일단 표현식이,

CASE WHEN condition THEN result [ …n ] [ELSE result ] END

으로 되어 있다. 엑셀에서의 조건식 느낌이라기보다는 왠지 영어 문장 같다. 참고로,

  • 필드 이름은 큰 따옴표로 묶고 "필드 이름"
  • 필드 값, 조건 값이 문자면 작은 따옴표로 묶고 '문자'
  • 필드 값, 조건 값이 숫자면 아무 것도 붙이지 않고 숫자 그대로를 사용
case formulas
조건문 CASE의 표현식

3. 선호음식 part

3-1. 조건문 만들기

일단 내가 원하는 표현식을 보기 편하게 줄 바꿈을 하며 만들어 봤는데 한 줄로 만들지 않고 그냥 이 상태로 입력해도 인식을 잘한다.

CASE
WHEN "선호음식" = '김치찌개' THEN '찌개'
WHEN "선호음식" = '된장찌개' THEN '찌개'
WHEN "선호음식" = '부대찌개' THEN '찌개'
WHEN "선호음식" = '콩나물' THEN '나물'
WHEN "선호음식" = '숙주나물' THEN '나물'
WHEN "선호음식" = '돌나물' THEN '나물'
ELSE '기타 음식'
END

input formula
'선호음식 - 음식 종류' 표현식 입력

3-2. 결과

result
음식 종류로 변환한 결과

4. 투표인원 part

4-1. 조건문 만들기

재밌는 부분이 있다면, 가운데 범위(예를 들어 10~50 명, 50~100 명)의 경우, WHEN으로 먼저 잡아버린 조건은 넣지 않는다는 점이다. 마치 '10 <= "투표인원" < 50'처럼 넣어야 할 것 같지만 실제 이렇게 넣어 보면 의외로 엉망징창 결과가 나온다.

CASE
WHEN "투표인원" < 10 THEN '적음'
WHEN "투표인원" < 50 THEN '보통'
WHEN "투표인원" < 100 THEN '많음'
ELSE '매우 많음'
END

input formula
'투표인원 - 투표인원 정도' 표현식 입력

이런 형태의 표현식은 QGIS의 예제에도 비슷하게 써 있다. 그렇게 써야 제대로 동작하나보다.

examples
조건문(CASE) 예제

4-2. 결과

results
투표인원 정도로 변환한 결과
Categories GIS

카테고리의 다른 글

  1. QGIS. 도, 도분, 도분초 포맷으로 변환하기 (경위도 좌표 값)
  2. QGIS. $area와 area 함수의 면적 값 차이
  3. 우리나라 국립공원(23개)의 경계・범위 shp 파일
  4. QGIS. 평면직각좌표계(TM) XY좌표 포인트를 지리좌표계로 재투영하고 경위도 저장
  5. QGIS 조건문(if) 연습

댓글 남기기