14.2. 표현식

레이어 데이터 및 사전 생성된 또는 사용자가 정의한 함수를 기반으로, 표현식 은 도형 스타일, 라벨의 내용 또는 위치, 도표의 값, 조판기 항목의 높이 등을 동적으로 변경하고, 피처를 선택하고, 가상 필드 등을 생성하기 위해 속성값, 도형 및 변수를 처리할 수 있는 강력한 방법을 제공합니다.

14.2.1. 표현식 문자열 작성기

Expression string builder 는 표현식을 생성하기 위한 주 대화창으로, QGIS의 여러 부분에서 이용할 수 있는데 특히 다음과 같은 경우에 접근할 수 있습니다:

표현식 작성기 대화창에서 다음 탭들을 선택할 수 있습니다:

  • 표현식 탭: 사전 정의 함수 목록을 이용해서 사용할 표현식을 작성하고 확인할 수 있습니다.

  • 함수 편집기 탭: 사용자 지정 함수를 생성해서 함수 목록을 확장할 수 있습니다.

몇몇 표현식 용례

  • 필드 계산기에서 기존 《total_pop》과 《area_km2》 필드를 이용, 《pop_density》 필드를 계산합니다:

    "total_pop" / "area_km2"
    
  • 《pop_density》 값에 따른 범주로 《density_level》 필드를 업데이트합니다:

    CASE WHEN "pop_density" < 50 THEN 'Low population density'
         WHEN "pop_density" >= 50 and "pop_density" < 150 THEN 'Medium population density'
         WHEN "pop_density" >= 150 THEN 'High population density'
    END
    
  • 지역 레이어의 필드를 담겨 있는 공항의 (쉼표로 구분된) 이름으로 업데이트하십시오:

    aggregate('airport_layer', 'concatenate', "name", within($geometry, geometry(@parent)), ', ')
    
  • 평균 집값이 제곱미터 당 1만 유로 이하인지 초과인지를 기준으로 모든 피처에 범주 스타일을 적용합니다:

    "price_m2" > 10000
    
  • Select By Expression… 도구를 통해 “High population density” 지역인 동시에 평균 집값이 제곱미터 당 1만 유로를 초과하는 지역을 나타내는 모든 피처를 선택합니다:

    "density_level" = 'High population density' and "price_m2" > 10000
    

    마찬가지로 이런 표현식을 이용해서 어떤 피처에 라벨을 적용하고 맵에 표시할지 정의할 수도 있습니다.

표현식을 이용하면 수많은 가능성이 열립니다.

표현식을 읽기 쉽도록 명명된 파라미터를 이용

어떤 함수들은 설정하는 데 여러 파라미터가 필요합니다. 표현식 엔진은 명명 파라미터를 지원하고 있습니다. 즉 암호 같은 표현식 clamp(1, 2, 9) 을 작성하는 대신, clamp(min:=1, value:=2, max:=9) 같은 표현식을 사용할 수 있다는 뜻입니다. 이렇게 하면 인자들도 clamp(value:=2, max:=9, min:=1) 처럼 위치를 바꿀 수 있습니다. 명명 파라미터를 이용하면 표현식 함수의 인자들이 어떤 의미인지 명확해집니다. 시간이 지난 뒤에 표현식을 해석하려 할 때 유용하겠죠!

14.2.2. 함수 목록

Expression 탭은 함수, 레이어의 필드 및 값을 이용해서 표현식을 작성할 수 있는 주 인터페이스를 제공합니다. 이 탭에 다음 작업을 할 수 있는 위젯들이 있습니다:

  • 표현식을 입력하거나 붙여넣을 수 있는 표현식 편집기 영역이 있습니다. 표현식 작성 속도를 향상시키기 위해 자동완성 기능을 사용할 수 있습니다:

    • 입력 텍스트에 대응하는 변수, 함수명 및 필드명을 아래쪽에 표시합니다. UpDown 화살표를 사용해서 항목을 탐색한 다음 Tab 을 누르거나 원하는 항목을 클릭하기만 해도 표현식에 삽입할 수 있습니다.

    • 파라미터 입력 시 함수 파라미터가 표시됩니다.

    또한 QGIS는 표현식이 올바른지 점검하고 다음을 사용해서 모든 오류를 강조합니다:

    • 밑줄(Underline): 알 수 없는 함수, 틀렸거나 유효하지 않은 인수(argument)를 표시합니다.

    • 마커(Marker): 단일 위치에 있는 다른 모든 오류를 (예를 들어 빠진 괄호, 예상 밖의 문자 등을) 표시합니다.

    사용자 표현식을 코멘트로 문서화

    복잡 표현식을 사용할 때, 사용자가 기억하기 쉽도록 텍스트를 여러 줄 또는 인라인(inline) 코멘트 가운데 하나로 추가하는 편이 좋습니다.

    /*
    Labels each region with its highest (in altitude) airport(s)
    and altitude, eg 'AMBLER : 264m' for the 'Northwest Artic' region
    */
    with_variable(
      'airport_alti', -- stores the highest altitude of the region
      aggregate(
        'airports',
        'max',
        "ELEV", -- the field containing the altitude
        -- and limit the airports to the region they are within
        filter := within( $geometry, geometry( @parent ) )
      ),
        aggregate( -- finds airports at the same altitude in the region
          'airports',
          'concatenate',
          "NAME",
          filter := within( $geometry, geometry( @parent ) )
            and "ELEV" = @airport_alti
        )
        || ' : ' || @airport_alti || 'm'
        -- using || allows regions without airports to be skipped
    )
    
  • 표현식 편집기의 Output preview 에 레이어의 첫번째 피처를 대상으로 표현식을 평가한 결과를 표시합니다. 오류가 났을 경우, 오류를 표시해서 사용자가 제공된 하이퍼링크를 통해 자세한 내용을 볼 수 있게 해줍니다.

  • 함수 선택키는 그룹으로 정리된 함수, 변수, 필드 등등의 목록을 표시합니다. 목록을 필터링하는 검색란을 통해 특정 함수 또는 필드를 빨리 찾을 수 있습니다. 항목을 더블클릭하면 표현식 편집기에 해당 항목을 추가합니다.

  • 도움말 패널이 함수 선택기에서 선택한 함수 별로 도움말을 표시합니다.

    표현식에 있는 함수명을 Ctrl+Click 하면 자동적으로 대화창에 도움말을 표시합니다.

    함수 선택기에서 필드를 선택하면 필드값 위젯이 나타납니다. 이 위젯에서 피처 속성을 가져올 수 있습니다. 값을 더블클릭하면 표현식 편집기에 추가됩니다.

    대화창에서 함수 도움말이나 필드값을 표시하는 오른쪽 패널을 접을 수 (보이지 않게 할 수) 있습니다. 이 패널을 다시 펼치려면 Show Values 또는 Show Help 버튼을 클릭하세요.

../../../_images/function_list.png

그림 14.65 표현식 탭

14.2.2.1. 집계 함수

이 그룹은 레이어 및 필드에 있는 값들을 집계하는 함수를 담고 있습니다.

함수

설명

aggregate

다른 레이어의 피처를 이용해서 계산한 집계값을 반환

array_agg

필드 또는 표현식에서 나온 집계값의 배열을 반환

collect

표현식에서 나온 집계 도형들의 다중부분 도형을 반환

concatenate

필드 또는 표현식에서 나오는 집계 문자열을 전부 구분자로 결합해서 반환

concatenate_unique

필드 또는 표현식에서 나오는 유일한 집계 문자열을 전부 구분자로 결합해서 반환

count

일치하는 피처의 개수를 반환

count_distinct

개별(distinct) 값의 개수를 반환

count_missing

빠진 값(NULL)의 개수를 반환

iqr

필드 또는 표현식에서 계산된 내부 사분위수(quartile) 범위를 반환

majority

필드 또는 표현식에서 집계 다수 값(가장 흔하게 나타나는 값)을 반환

max_length

필드 또는 표현식에서 나오는 문자열의 최장 길이를 반환

maximum

필드 또는 표현식에서 나오는 집계 최대값을 반환

mean

필드 또는 표현식에서 나오는 집계 평균값을 반환

median

필드 또는 표현식에서 나오는 집계 중앙값을 반환

min_length

필드 또는 표현식에서 나오는 문자열의 최단 길이를 반환

minimum

필드 또는 표현식에서 나오는 집계 최소값을 반환

minority

필드 또는 표현식에서 집계 소수 값(가장 뜸하게 나타나는 값)을 반환

q1

필드 또는 표현식에서 계산된 첫 번째 사분위수를 반환

q3

필드 또는 표현식에서 계산된 세 번째 사분위수를 반환

range

필드 또는 표현식에서 나오는 값들의 (최대 ~ 최소) 집계 범위를 반환

relation_aggregate

레이어 관계에서 나오는 파생 피처들 가운데 일치하는 모든 피처를 이용해서 계산한 집계값을 반환

stdev

필드 또는 표현식에서 집계 표준 편차값을 반환

sum

필드 또는 표현식에서 집계 적산값을 반환

다음은 몇몇 예시입니다:

  • 《station_class》 필드로 그룹화된 레이어에 있는 피처에서 《passengers》 필드의 최대값을 반환합니다:

    maximum("passengers", group_by:="station_class")
    
  • 현재 지도 피처 안에 있는 역에 대해 총 승객 명수를 계산합니다:

    aggregate('rail_stations','sum',"passengers",
      intersects(@atlas_geometry, $geometry))
    
  • 레이어에서 〈my_relation〉 관계를 사용해서 일치하는 모든 파생 피처에 대해 《field_from_related_table》 필드의 평균값을 반환합니다:

    relation_aggregate('my_relation', 'mean', "field_from_related_table")
    

    또는 이렇게 작성할 수도 있습니다:

    relation_aggregate(relation:='my_relation', aggregate := 'mean',
      expression := "field_from_related_table")
    

14.2.2.2. 배열 함수

이 함수 그룹은 (목록 데이터 구조라고도 하는) 배열을 생성하고 처리하는 함수들을 담고 있습니다. 배열 내부의 값의 순서가 중요합니다. 키-값 쌍이 중요하지 않고 값을 값의 키로 식별하는 〈맵〉 데이터 구조 와는 다릅니다.

함수

설명

array

파라미터로써 전달된 모든 값들을 담고 있는 배열을 반환

array_all

배열이 지정한 배열의 모든 값을 담고 있는 경우 참을 반환

array_append

지정한 값을 맨 끝에 추가한 배열을 반환

array_cat

지정한 배열들을 모두 이어붙여 담고 있는 배열을 반환

array_contains

배열이 지정한 값을 담고 있는 경우 참을 반환

array_distinct

지정한 배열의 개별(distinct) 값들을 담고 있는 배열을 반환

array_filter

표현식이 참이라고 평가한 항목만 보유한 배열을 반환

array_find

배열 내부의 값의 (0에서 시작하는) 인덱스를 반환. 값을 찾을 수 없을 경우 -1을 반환합니다.

array_first

배열의 첫번때 값을 반환

array_foreach

지정한 표현식으로 각 항목을 평가한 배열을 반환

array_get

배열의 (첫번째가 0) N번째 값을 반환

array_insert

지정한 위치에 지정한 값을 삽입한 배열을 반환

array_intersect

array_1의 요소가 하나라도 array_2에 있을 경우 참을 반환

array_last

배열의 마지막 요소를 반환

array_length

배열의 요소 개수를 반환

array_prepend

지정한 값을 맨 앞에 추가한 배열을 반환

array_remove_all

모든 항목에서 지정한 값을 제거한 배열을 반환

array_remove_at

지정한 인덱스를 제거한 배열을 반환

array_reverse

지정한 배열의 값들의 순서를 역전시킨 배열을 반환

array_slice

start_pos 인수부터 end_pos 인수까지 포함하는 배열의 값들을 반환

array_sort

지정한 배열의 요소들을 정렬시킨 배열을 반환

array_to_string

배열 요소들을 구분자로 구분하고 빈 값은 선택적인 문자열로 대체한 문자열로 결합

generate_series

이어지는 일련의 숫자를 담고 있는 배열을 반환

regexp_matches

그룹을 캡처해서 캡처된 모든 문자열의 배열을, 문자열을 대상으로 지정한 정규 표현식에 그룹 자체가 나타나는 순서대로 반환합니다.

string_to_array

문자열을 지정한 구분자와 빈 값을 위한 선택적인 문자열을 사용해서 배열로 분해

14.2.2.3. 색상 함수

이 그룹은 색상을 처리하기 위한 함수를 담고 있습니다.

함수

설명

color_cmyk

색상의 시안색, 마젠타색, 노랑색, 검정색 요소를 기반으로 색상의 문자열 표현을 반환

color_cmyka

색상의 시안색, 마젠타색, 노랑색, 검정색 그리고 알파(투명도) 요소를 기반으로 색상의 문자열 표현을 반환

color_grayscale_average

회색조 필터를 적용하고 지정한 색상에서 나온 문자열 표현을 반환

color_hsl

색상의 색상, 채도, 명도 속성을 기반으로 색상의 문자열 표현을 반환

color_hsla

색상의 색상, 채도, 명도 그리고 알파(투명도) 속성을 기반으로 색상의 문자열 표현을 반환

color_hsv

색상의 색상, 채도, 명도 속성을 기반으로 색상의 문자열 표현을 반환

color_hsva

색상의 색상, 채도, 명도 그리고 알파(투명도) 속성을 기반으로 색상의 문자열 표현을 반환

color_mix_rgb

지정한 두 색상의 빨강색, 초록색, 파랑색 그리고 알파(투명도) 값을 지정한 비율로 혼합한 색상을 표현하는 문자열을 반환

color_part

색상 문자열에서 빨강색 요소 또는 알파 요소 등 특정 요소를 반환

color_rgb

색상의 빨강색, 초록색, 파랑색 요소를 기반으로 색상의 문자열 표현을 반환

color_rgba

색상의 빨강색, 초록색, 파랑색 그리고 알파(투명도) 요소를 기반으로 색상의 문자열 표현을 반환

create_ramp

색상 문자열 및 단계의 맵에서 나온 그레이디언트 색상표를 반환

darker

더 어두운 (또는 더 밝은) 색상 문자열을 반환

lighter

더 밝은 (또는 더 어두운) 색상 문자열을 반환

project_color

프로젝트의 색상 스키마에서 색상을 반환

ramp_color

색상표에서 색상을 표현하는 문자열을 반환

set_color_part

색상 문자열에 빨강색 요소 또는 알파 요소 등 특정 색상 요소를 설정

14.2.2.4. 조건 함수

이 그룹은 표현식에서 조건 검사를 처리하는 함수를 담고 있습니다.

함수

설명

CASE WHEN … THEN … END

표현식을 평가해서 참인 경우 결과를 반환합니다. 여러 조건을 동시에 검증할 수 있습니다.

CASE WHEN … THEN … ELSE … END

표현식을 평가해서 참인 경우 또는 거짓인 경우 서로 다른 결과를 반환합니다. 여러 조건을 동시에 검증할 수 있습니다.

coalesce

표현식 목록에서 NULL이 아닌 첫 번째 값을 반환

if

조건을 검증해서 조건 검사에 따라 서로 다른 결과를 반환

nullif(value1, value2)

value1이 value2와 동일한 경우 NULL값을 반환하고, 그 외의 경우 value1을 반환. 값을 조건부로 NULL로 대체하는 데 사용할 수 있습니다.

try

표현식을 테스트해서 오류가 없을 경우 그 값을 반환하고, 오류가 발생할 경우 (지정했다면) 대체 값을, 아니라면 NULL값을 반환

다음은 예시입니다:

  • 첫 번째 조건이 참인 경우 값을 회신하고, 아닌 경우 다른 값을 회신합니다:

    CASE WHEN "software" LIKE '%QGIS%' THEN 'QGIS' ELSE 'Other' END
    

14.2.2.5. 변환 함수

이 그룹은 어떤 데이터 유형을 다른 데이터 유형으로 변환하는 함수를 담고 있습니다. (예: 문자열을 정수형으로, 정수형을 문자열로)

함수

설명

to_date

문자열을 날짜 객체로 변환

to_datetime

문자열을 날짜&시간 객체로 변환

to_dm

좌표를 도, 분으로 전환

to_dms

좌표를 도, 분, 초로 전환

to_int

문자열을 정수형 숫자로 변환

to_interval

문자열을 간격 유형으로 변환 (날짜 유형의 월, 일, 시 등을 추출하는 데 사용할 수 있습니다)

to_real

문자열을 실수형 숫자로 변환

to_string

숫자를 문자형으로 변환

to_time

문자열을 시간 객체로 변환

14.2.2.6. 사용자 지정 함수

이 그룹은 사용자가 생성한 함수를 담고 있습니다. 자세한 내용은 함수 편집기 를 참조하세요.

14.2.2.7. 날짜 및 시간 함수

이 그룹은 날짜 및 시간 데이터를 처리하기 위한 함수를 담고 있습니다.

함수

설명

age

두 날짜 또는 두 날짜&시간 사이의 차이를 간격 유형으로 반환

day

날짜 또는 날짜&시간에서 일(日)을 추출, 또는 간격 유형에서 일의 개수를 추출

day_of_week

지정한 날짜 또는 날짜&시간에 대해 요일에 대응하는 숫자를 반환

epoch

유닉스 시간과 지정한 날짜값의 사이의 간격을 밀리초로 반환

hour

날짜&시간 또는 시간에서 시(時)를 추출, 또는 간격 유형에서 시의 개수를 추출

minute

날짜&시간 또는 시간에서 분(分)을 추출, 또는 간격 유형에서 분의 개수를 추출

month

날짜 또는 날짜&시간에서 월(月)을 추출, 또는 간격 유형에서 월의 개수를 추출

now

현재 날짜 및 시간을 반환

second

날짜&시간 또는 시간에서 초(秒)를 추출, 또는 간격 유형에서 초의 개수를 추출

week

날짜 또는 날짜&시간에서 주(週) 번호를 추출, 또는 간격 유형에서 주의 개수를 추출

year

날짜 또는 날짜&시간에서 연도 부분을 추출, 또는 간격 유형에서 연도의 개수를 추출

이 그룹은 변환 함수 그룹과 몇몇 함수를( to_date, to_time, to_datetime, to_interval) 그리고 ref:string_functions 그룹과도 함수를(format_date) 공유하고 있습니다.

다음은 몇몇 예시입니다:

  • 《month_number/year》 서식으로 오늘의 월 및 연도를 얻으려면:

    format_date(now(),'MM/yyyy')
    -- Returns '03/2017'
    

이런 함수들 외에도, - (빼기) 연산자를 통해 날짜, 날짜&시간 또는 시간 유형을 뺄셈하면 간격 유형을 반환할 것입니다.

+ (더하기) 또는 - (빼기) 연산자를 이용해서 날짜, 날짜&시간 또는 시간 유형에 간격 유형을 더하거나 빼면 날짜&시간 유형을 반환합니다.

  • QGIS 3.0 배포일까지 며칠 남았는지 알아보려면:

    to_date('2017-09-29') - to_date(now())
    -- Returns <interval: 203 days>
    
  • 같은 내용을 시간 유형으로:

    to_datetime('2017-09-29 12:00:00') - to_datetime(now())
    -- Returns <interval: 202.49 days>
    
  • 현재부터 100일 후의 날짜&시간을 얻으려면:

    now() + to_interval('100 days')
    -- Returns <datetime: 2017-06-18 01:00:00>
    

참고

날짜, 날짜&시간, 간격 유형을 필드에 저장하기

데이터소스 제공자에 따라 날짜, 시간, 날짜&시간 값을 필드에 직접 저장할 수도 못 할 수도 있습니다. (예를 들어 Shapefile은 날짜 유형은 받아들이지만 날짜&시간 또는 시간 유형은 받아들이지 못 합니다.) 다음은 이 제약 사항을 넘어서기 위한 몇 가지 제안입니다.

  • 날짜, 날짜&시간, 시간to_format() 함수로 처리한 다음 텍스트 유형 필드에 저장할 수 있습니다.

  • 간격 을 날짜 추출 함수 중 하나로 처리한 다음 (예: day() 함수는 날짜로 표현된 간격을 반환합니다) 정수 또는 실수 유형 필드에 저장할 수 있습니다.

14.2.2.8. 필드 및 값

이 그룹은 레이어에 있는 필드의 목록을 담고 있습니다.

사용자 표현식에 필드명을 추가하려면 필드명을 더블클릭하십시오. 필드명을 (가급적 큰따옴표 안에) 입력하거나, 또는 필드의 별명 을 입력해도 됩니다.

표현식에 사용할 필드값을 가져오려면, 적절한 필드를 선택한 다음 나타나는 위젯에서 10 SamplesAll Unique 가운데 하나를 선택하십시오. 요청한 값들이 표시되는 목록 맨 위에 있는 Search 란을 통해 결과를 필터링할 수 있습니다. 필드를 오른쪽 클릭해서도 표본 값에 접근할 수 있습니다.

작성 중인 표현식에 값을 추가하려면, 목록에 있는 값을 더블클릭하십시오. 해당 값이 문자열 유형인 경우 작은따옴표를 추가해야 합니다. 그 외 유형은 따옴표가 필요하지 않습니다.

14.2.2.9. 파일 및 경로 함수

이 그룹은 파일 및 경로 명칭을 처리하는 함수를 담고 있습니다.

함수

설명

base_file_name

디렉터리 또는 파일 확장자 없이 파일의 기본 명칭(base name)만 반환

file_exists

파일 경로가 실재하는 경우 참을 반환

file_name

디렉터리 없이 (파일 확장자를 포함하는) 파일명을 반환

file_path

파일명 없이 파일 경로의 디렉터리 요소만 반환

file_size

파일의 (바이트 단위) 용량을 반환

file_suffix

파일 경로에서 파일 확장자만 반환

is_directory

경로가 디렉터리에 대응하는 경우 참을 반환

is_file

경로가 파일에 대응하는 경우 참을 반환

14.2.2.10. 퍼지 매칭 함수

이 그룹은 값들을 퍼지 비교하기 위한 함수를 담고 있습니다.

함수

설명

hamming_distance

문자들이 서로 다른 입력 문자열들 안에서 대응하는 위치에 있는 문자의 개수를 반환

levensheim

어떤 문자열을 다른 문자열로 변경하는 데 필요한 문자 편집(삽입, 삭제 또는 치환)의 최소 횟수를 반환합니다. 두 문자열 사이의 유사성을 측정하는 함수입니다.

longest_common_substring

두 문자열에서 가장 긴 공통 하위 문자열을 반환

soundex

문자열의 Soundex 표현을 반환

14.2.2.11. 일반 함수

이 그룹은 일반으로 분류된 함수를 담고 있습니다.

함수

설명

env

환경 변수를 받아 그 내용을 문자열로 반환. 변수를 찾을 수 없는 경우 NULL 을 반환할 것입니다.

eval

문자열로 전달된 표현식을 평가. 맥락 변수(context variable) 또는 필드로 전달되는 동적 파라미터를 확장하는 데 유용합니다.

is_layer_visible

지정한 레이어가 가시화 상태인 경우 참을 반환

layer_property

레이어의 속성 또는 레이어 메타데이터의 값(레이어명, 좌표계, 도형 유형, 피처 개수 등등 가운데 하나)을 반환

var

지정한 변수 내부에 저장된 값을 반환 (변수 참조)

with_variable

제3의 인수로 제공될 모든 표현식 코드를 위한 변수를 생성 및 설정. 동일한 값을 한 번 이상 사용해야 하는 경우 표현식에서 값을 반복해서 사용하는 일을 피하는 데 유용합니다.

14.2.2.12. 도형 함수

이 그룹은 도형 객체를 대상으로 하는 (예: buffer, transform, $area 등) 함수를 담고 있습니다.

함수

설명

$area

현재 피처의 면적 크기를 반환

$geometry

현재 피처의 도형을 반환 (다른 함수들과 함께 공간 처리 가능)

$length

현재 라인 피처의 길이를 반환

$perimeter

현재 폴리곤 피처의 둘레를 반환

$x

현재 피처의 X 좌표를 반환

$x_at(n)

현재 피처 도형의 N번째 노드의 X 좌표를 반환

$y

현재 피처의 Y 좌표를 반환

$y_at(n)

현재 피처 도형의 N번째 노드의 Y 좌표를 반환

angle_at_vertex

라인스트링 도형 상에 지정한 꼭짓점에서 도형에 대한 이등분선 각도(평균 각도)를 반환합니다. 여기서 각도는 진북에서 시계 방향으로 측정한 도 단위입니다.

area

도형 폴리곤 피처의 면적을 반환합니다. 해당 도형의 공간 참조 시스템 상에서 면적을 계산합니다.

azimuth

포인트 a의 수직선에서 포인트 b로 시계 방향으로 측정한 진북 기준 방위각을 라디안 단위 각도로 반환

boundary

도형의 닫힌 조합 경계선(combinatorial boundary)을 반환 (예: 도형의 위상 경계 ─ 경계 도 참조하세요)

bounds

입력 도형의 경계 상자(bounding box)를 표현하는 도형을 반환합니다. 해당 도형의 공간 참조 시스템 상에서 경계 상자를 계산합니다. (경계 상자 도 참조하세요)

bounds_height

도형의 경계 상자의 높이를 표현하는 도형을 반환합니다. 해당 도형의 공간 참조 시스템 상에서 경계 상자를 계산합니다.

bounds_width

도형의 경계 상자의 너비를 표현하는 도형을 반환합니다. 해당 도형의 공간 참조 시스템 상에서 경계 상자를 계산합니다.

buffer

도형으로부터의 거리가 지정한 거리 이하인 모든 포인트들을 표현하는 도형을 반환합니다. 해당 도형의 공간 참조 시스템 상에서 거리를 계산합니다. (버퍼 도 참조하세요)

buffer_by_m

버퍼의 지름이 라인 꼭짓점의 M값에 따라 달라지는 라인 도형을 따라 버퍼를 생성 (변동 너비 버퍼 (M 값으로) 도 참조하세요)

centroid

도형의 기하학적 중심을 반환 (중심 도 참조하세요)

closest_point

첫 번째 도형의 포인트들 가운데 두 번째 도형에 가장 가까운 포인트를 반환

collect_geometries

도형 집합을 다중부분 도형 객체로 수집 (도형 모으기 도 참조하세요)

combine

두 도형의 조합을 반환

contains(a,b)

도형 b의 포인트 가운데 도형 a 외부에 있는 포인트가 하나도 없고, 도형 b 내부의 포인트 가운데 최소한 포인트 1개가 도형 a 내부에 있는 경우에만 1(참)을 반환

convex_hull

도형의 볼록 껍질(convex hull)을 반환 (볼록 껍질이란 도형 집합에 있는 모든 도형을 감싸는 최소 볼록 도형을 말합니다. 볼록 껍질 도 참조하세요)

crosses

입력 도형들이 내부 포인트들 가운데 일부를 ─ 모두가 아니라 ─ 공유하는 경우 1(참)을 반환

difference(a,b)

도형 b와 교차하지 않는 도형 a의 부분을 표현하는 도형을 반환 (차감하기(Difference) 도 참조하세요)

disjoint

도형들이 어떤 공간도 함께 공유하지 않는 경우 1(참)을 반환

distance

두 도형 사이의 (공간 참조 시스템 기반) 최단 거리를 투영체 단위로 반환

distance_to_vertex

도형을 따라 지정한 꼭짓점까지의 거리를 반환

end_point

도형에서 마지막 노드를 반환 (특정 꼭짓점 추출하기 도 참조하세요)

extend

거리를 지정해서 라인스트링 도형의 시작과 끝을 연장 (라인 연장하기 도 참조하세요)

exterior_ring

폴리곤 도형의 외곽 고리를 표현하는 라인스트링을 반환 (도형이 폴리곤이 아닌 경우 NULL을 반환)

extrude(geom,x,y)

입력 [멀티]곡선 또는 [멀티]라인스트링 도형을 지정한 X 및 Y 좌표로 연장한 압출(extruded) 버전을 반환

flip_coordinates

도형의 X 및 Y 좌표를 서로 바꾼 복사본을 반환 (X좌표와 Y좌표 바꾸기 도 참조하세요)

force_rhr

도형이 오른손 법칙을 따르도록 강제 (오른손 법칙 강제하기 도 참조하세요)

geom_from_gml

도형의 GML 표현으로부터 생성된 도형을 반환

geom_from_wkt

WKT(well-known text) 표현으로부터 생성된 도형을 반환

geom_to_wkt

SRID 메타데이터를 제외한 도형의 WKT(well-known text) 표현을 반환

geometry

피처의 도형을 반환

geometry_n

도형 집합에서 N번째 도형을 반환 (도형이 집합이 아닌 경우 NULL을 반환)

hausdorff_distance

기본적으로 두 도형이 얼마나 닮았는지 또는 닮지 않았는지를 측정해서 반환. 거리가 짧을수록 도형들이 더 닮았다는 의미입니다.

inclination

포인트 a에서 포인트 b로 가는 경사를 천정(zenith, 0)부터 천저(nadir, 180) 범위에서 측정해서 반환

interior_ring_n

폴리곤 도형에서 N번째 내곽 고리를 표현하는 도형을 반환 (도형이 폴리곤이 아닌 경우 NULL을 반환)

intersection

두 도형이 공유하는 부분을 표현하는 도형을 반환 (교차(Intersection) 도 참조하세요)

intersects

도형들이 서로 교차하는지 검증합니다. 도형들이 공간적으로 교차하는 경우 (공간의 어떤 부분이라도 공유하는 경우) 1(참)을 반환하고 교차하지 않는 경우 0을 반환합니다.

intersects_bbox

도형의 경계 상자가 다른 도형의 경계 상자와 교차하는지 검증합니다. 도형들의 경계 상자가 공간적으로 교차하는 경우 (공간의 어떤 부분이라도 공유하는 경우) 1(참)을 반환하고 교차하지 않는 경우 0을 반환합니다.

is_closed

라인스트링이 닫힌 (시작점과 종단점이 일치하는) 경우 참을, 라인스트링이 닫히지 않은 경우 거짓을, 도형이 라인스트링이 아닌 경우 NULL을 반환

length

라인 도형 객체의 길이를 (또는 문자열의 길이를) 반환

line_interpolate_angle

라인스트링 도형을 따라 지정한 거리에서 도형과 평행한 각도를 반환합니다. 여기서 각도는 진북에서 시계 방향으로 측정한 도 단위입니다.

line_interpolate_point

라인스트링 도형을 따라 지정한 거리로 보간한 포인트를 반환 (라인에 포인트를 보간하기 도 참조하세요)

line_locate_point

라인스트링을 따라 라인스트링이 지정한 포인트 도형에 가장 가까워지는 위치에 상응하는 거리를 반환

line_merge

입력 도형에 있는 연결된 라인스트링들이 단일 라인스트링으로 합쳐진 [멀티]라인스트링 도형을 반환

line_substring

지정한 시작점과 종단점 거리 사이에 떨어지는 라인 또는 곡선 도형의 부분을 반환 (라인의 시작에서부터 측정합니다. 라인 부스트링 생성하기 도 참조하세요.)

m

포인트 도형의 M 값을 반환

make_circle

중심 포인트와 반경을 기반으로 원형 도형을 생성

make_ellipse

중심 포인트, 축, 그리고 방위각을 기반으로 타원형 도형을 생성

make_line

일련의 포인트 도형들 또는 포인트 도형들의 배열로부터 라인 도형을 생성

make_point(x,y,z,m)

X 및 Y (그리고 부가적인 Z 또는 M) 값으로부터 포인트 도형을 반환

make_point_m(x,y,m)

X 및 Y 좌표 그리고 M값으로부터 포인트 도형을 반환

make_polygon

외곽 고리 그리고 부가적인 일련의 내곽 고리 도형으로부터 폴리곤 도형을 생성

make_rectangle_3points

포인트 3개로부터 직사각형을 생성

make_regular_polygon

정규 폴리곤을 생성

make_square

대각선으로부터 정사각형을 생성

make_triangle

삼각형 폴리곤을 생성

minimal_circle

입력 도형들을 에워싸는 최소 원을 반환 (최소 외함 원 도 참조하세요)

nodes_to_points

입력 도형에 있는 모든 노드로 이루어진 멀티포인트 도형을 반환 (꼭짓점 추출하기 도 참조하세요)

num_geometries

도형 집합에 있는 도형의 개수를 반환 (도형이 집합이 아닌 경우 NULL을 반환)

num_interior_rings

폴리곤 또는 도형 집합에 있는 내곽 고리의 개수를 반환 (도형이 폴리곤 또는 집합이 아닌 경우 NULL을 반환)

num_points

도형에 있는 꼭짓점의 개수를 반환

num_rings

폴리곤 또는 도형 집합에 있는 (외곽 고리를 포함한) 고리의 개수를 반환 (도형이 폴리곤 또는 집합이 아닌 경우 NULL을 반환)

offset_curve

라인스트링 도형을 옆으로 오프셋시켜서 형성된 도형을 반환. 해당 도형의 공간 참조 시스템 상에서 오프셋 거리를 계산합니다. (라인 오프셋시키기 도 참조하세요)

order_parts

지정한 기준으로 멀티 도형의 부분들을 정렬

oriented_bbox

입력 도형의 지향된(oriented) 최소 경계 상자를 표현하는 도형을 반환 (기울어진 최소 경계 상자 도 참조하세요)

overlaps

도형이 다른 도형과 중첩하는지 검증합니다. 도형들이 동일한 차원이며 공간을 공유하지만 서로를 완전히 담고 있지 않은 경우 1(참)을 반환합니다.

perimeter

폴리곤 도형 객체의 둘레를 반환합니다. 해당 도형의 공간 참조 시스템 상에서 둘레를 계산합니다.

point_n

도형에서 지정한 노드를 반환 (특정 꼭짓점 추출하기 도 참조하세요)

point_on_surface

도형의 표면 상에 있다고 보장된 포인트를 반환 (표면에 포인트 생성하기 도 참조하세요)

pole_of_inaccessibility

표면을 대상으로 도달불능극(pole of inaccessibility)의 근사치를 계산. 도달불능극이란 표면의 경계선에서 가장 멀리 있는 내부 포인트를 말합니다. (도달불능극 도 참조하세요)

project

거리, 라디안 단위의 방향(방위각) 및 표고를 이용해서 시작점에서부터 투영된 포인트를 반환 (포인트 투영하기 (데카르트) 도 참조하세요)

relate

두 도형 간의 관계의 DE-9IM(Dimensional Extended 9 Intersection Model) 표현을 검증 또는 반환

reverse

라인스트링의 꼭짓점 순서를 역전시켜 라인스트링의 방향을 반전 (라인 방향 반전시키기 도 참조하세요)

segments_to_lines

입력 도형에 있는 모든 선분을 표현하는 라인으로 이루어진 멀티라인 도형을 반환 (라인 조각내기 도 참조하세요)

shortest_line

두 도형을 연결하는 최단 라인을 반환합니다. 산출된 라인은 도형 a에서 시작돼 도형 b에서 끝납니다.

simplify

거리 기반 역치(threshold)를 기반으로 노드를 제거해서 도형을 단순화 (단순화 도 참조하세요)

simplify_vw

면적 기반 역치를 기반으로 노드를 제거해서 도형을 단순화 (단순화 도 참조하세요)

single_sided_buffer

라인스트링 도형 한쪽으로만 버퍼를 적용해서 형성된 도형을 반환. 해당 도형의 공간 참조 시스템 상에서 거리를 계산합니다. (한쪽 버퍼 생성하기 도 참조하세요)

smooth

도형의 모서리를 다듬는 추가적인 노드를 추가해서 도형을 평탄화 (평탄화 도 참조하세요)

start_point

도형에서 첫 번째 노드를 반환 (특정 꼭짓점 추출하기 도 참조하세요)

sym_difference

두 도형이 교차하지 않는 부분들을 표현하는 도형을 반환 (대칭 차감 도 참조하세요)

tapered_buffer

버퍼의 지름이 라인의 길이에 걸쳐 균등하게 달라지는 라인 도형을 따라 버퍼를 생성 (줄어드는 버퍼 생성하기 도 참조하세요)

touches

도형이 다른 도형과 접하는지 검증. 도형들이 최소한 포인트 1개를 공유하지만 각 도형의 내부가 교차하지 않는 경우 1(참)을 반환합니다.

transform

원본 좌표계에서 대상 좌표계로 변형된 도형을 반환 (레이어 재투영하기 도 참조하세요)

translate

도형의 해석(translated) 버전을 반환. 해당 도형의 공간 참조 시스템 상에서 계산합니다. (이동시키기(Translate) 도 참조하세요)

union

도형의 모든 포인트를 통합한 집합을 표현하는 도형을 반환

wedge_buffer

지정한 각도와 반경을 기반으로 포인트 도형에서 유래한 쐐기 형태 버퍼를 반환 (쐐기 버퍼 생성하기 도 참조하세요)

within (a,b)

도형이 다른 도형 내부에 있는지 검증. 도형 a가 도형 b 내부에 완전히 들어가 있는 경우 1(참)을 반환합니다.

x

포인트 도형의 X 좌표를, 또는 포인트가 아닌 도형의 경우 중심(centroid)의 X 좌표를 반환

x_max

도형의 최대 X 좌표를 반환. 해당 도형의 공간 참조 시스템 상에서 좌표를 계산합니다.

x_min

도형의 최소 X 좌표를 반환. 해당 도형의 공간 참조 시스템 상에서 좌표를 계산합니다.

y

포인트 도형의 Y 좌표를, 또는 포인트가 아닌 도형의 경우 중심(centroid)의 Y 좌표를 반환

y_max

도형의 최대 Y 좌표를 반환. 해당 도형의 공간 참조 시스템 상에서 좌표를 계산합니다.

y_min

도형의 최소 Y 좌표를 반환. 해당 도형의 공간 참조 시스템 상에서 좌표를 계산합니다.

z

포인트 도형의 Z 좌표를 반환

다음은 몇몇 예시입니다:

  • 현재 도형의 중심의 X 좌표를 반환합니다:

    x( $geometry )
    
  • 피처의 면적에 따라 값을 회신합니다:

    CASE WHEN $area > 10 000 THEN 'Larger' ELSE 'Smaller' END
    
  • 버퍼를 생성하거나 도형 표면 상의 포인트를 얻을 수 있는 변수 $geometry 를 사용해서 현재 도형을 처리할 수 있습니다:

    buffer( $geometry, 10 )
    point_on_surface( $geometry )
    
  • 포인트 피처를 지정, 포인트 도형 주위에 닫힌 라인을 (make_line 을 이용해서) 생성합니다:

    make_line(
      -- using an array of points placed around the original
      array_foreach(
        -- list of angles for placing the projected points (every 90°)
        array:=generate_series( 0, 360, 90 ),
        -- translate the point 20 units in the given direction (angle)
        expression:=project( $geometry, distance:=20, azimuth:=radians( @element ) )
      )
    )
    

14.2.2.13. 조판 함수

이 그룹은 인쇄 조판기 항목 속성을 처리하는 함수를 담고 있습니다.

함수

설명

item_variables

해당 인쇄 조판기 내부에 있는 조판기 항목에서 나온 변수들의 맵을 반환

다음은 예시입니다:

  • 현재 인쇄 조판기의 〈Map 0〉 의 축척을 가져옵니다:

    map_get( item_variables('Map 0'), 'map_scale')
    

14.2.2.14. 맵 레이어

이 그룹은 현재 프로젝트에서 사용할 수 있는 레이어 목록을 담고 있습니다. 이 함수 그룹을 사용하면 여러 레이어를 참조하는, 예를 들면 집계, 속성 또는 공간 쿼리를 수행하는 표현식을 쉽게 작성할 수 있습니다.

또 레이어를 처리하기 위한 몇몇 편리한 함수들도 제공합니다.

함수

설명

decode_uri

레이어를 받아서 기저 데이터 제공자의 URI를 디코딩합니다. 데이터 제공자 유형에 따라 사용할 수 있는 정보가 달라집니다.

14.2.2.15. 맵 함수

이 그룹은 (딕셔너리 객체, 키-값 쌍, 또는 연관 배열(associative array)이라고도 하는) 맵 데이터 구조의 키와 값을 생성하고 처리하는 함수들을 담고 있습니다. 값들의 순서가 중요한 목록 데이터 구조 와는 달리, 맵 객체에 있는 키-값 쌍은 중요하지 않고 값을 값의 키로 식별합니다.

함수

설명

from_json

JSON 서식 문자열을 불러옵니다.

hstore_to_map

HStore 서식 문자열로부터 맵을 생성

json_to_map

JSON 서식 문자열로부터 맵을 생성

map

파라미터 쌍으로써 전달된 모든 키와 값을 담고 있는 맵을 반환

map_akeys

맵의 모든 키를 배열로 반환

map_avals

맵의 모든 값을 배열로 반환

map_concat

지정한 맵의 모든 항목들을 담고 있는 맵을 반환. 두 맵이 동일한 키를 담고 있는 경우, 두번째 맵의 값을 취합니다.

map_delete

지정한 키와 그에 대응하는 값을 삭제한 맵을 반환

map_exist

지정한 키가 맵에 실재하는 경우 참을 반환

map_get

값이 키인 경우 맵의 값을 반환

map_insert

추가한 키/값을 보유한 맵을 반환

map_to_hstore

맵 요소들을 HStore 서식 문자열로 병합

map_to_json

맵 요소들을 JSON 서식 문자열로 병합

to_json

맵, 배열, 또는 다른 값으로부터 JSON 서식 문자열을 생성

14.2.2.16. 수학 함수

이 그룹은 제곱근, 삼각함수 등의 수학 함수를 담고 있습니다.

함수

설명

abs

숫자의 절댓값을 반환

acos

값의 시컨트(역 코사인)를 라디안 단위로 반환

asin

값의 코시컨트(역 사인)를 라디안 단위로 반환

atan

값의 역 탄젠트를 라디안 단위로 반환

atan2(y,x)

결과물의 사분면을 결정하는 두 인수의 부호(sign)를 이용해서 Y/X의 역 탄젠트를 반환

azimuth(a,b)

포인트 a의 수직선에서 포인트 b로 시계 방향으로 측정한 진북 기준 방위각을 라디안 단위 각도로 반환

ceil

올림

clamp

입력값을 지정한 범위로 제한

cos

값의 코사인을 라디안 단위로 반환

degrees

라디안 단위를 도 단위로 변환

exp

값의 거듭제곱 지수를 반환

floor

내림

inclination

포인트 a에서 포인트 b로 가는 경사를 천정(zenith, 0)부터 천저(nadir, 180) 범위에서 측정해서 반환

ln

전달된 표현식의 자연로그 를 반환

log

전달된 값 및 밑(base) 인자의 로그 값을 반환

log10

전달된 표현식의 상용로그 값을 반환

max

값의 집합에서 NULL이 아닌 가장 큰 값을 반환

min

값의 집합에서 NULL이 아닌 가장 작은 값을 반환

pi

계산을 위한 파이(π) 값을 반환

radians

도 단위를 라디안 단위로 변환

rand

최소(이상) 및 최대(이하) 인자가 지정하는 범위 안에서 랜덤한 정수를 반환

randf

최소(이상) 및 최대(이하) 인자가 지정하는 범위 안에서 랜덤한 실수를 반환

round

반올림

scale_exp

지정한 값을 지수 곡선(exponential curve)을 이용해서 입력 범위에서 출력 범위로 변형

scale_linear

지정한 값을 선형 보간(linear interpolation)을 이용해서 입력 범위에서 출력 범위로 변형

sin

각도의 사인을 라디안 단위로 반환

sqrt

값의 제곱근을 반환

tan

각도의 탄젠트을 라디안 단위로 반환

14.2.2.17. 연산자

이 그룹은 +, -, * 같은 연산자를 담고 있습니다. 다음에 설명하는 수학 함수들 대부분이, 입력 값 가운데 하나가 NULL인 경우 NULL을 반환한다는 점을 유념하십시오.

함수

설명

a + b

두 값의 덧셈 (a 더하기 b)

a - b

두 값의 뺄셈 (a 빼기 b)

a * b

두 값의 곱셈 (a 곱하기 b)

a / b

두 값의 나눗셈 (a를 b로 나누기)

a % b

a를 b로 나눈 나머지 (예: 7%2=1, 또는 7을 2로 나누면 3과 나머지 1)

a ^ b

두 값의 거듭제곱 (예: 2^2=4 또는 2^3=8)

a < b

두 값을 비교해서 왼쪽 값이 오른쪽 값보다 작은 경우 1로 평가 (a가 b 미만)

a <= b

두 값을 비교해서 왼쪽 값이 오른쪽 값보다 작거나 같은 경우 1 로 평가 (a가 b 이하)

a <> b

두 값을 비교해서 두 값이 같지 않은 경우 1로 평가

a = b

두 값을 비교해서 두 값이 같은 경우 1로 평가

a != b

a와 b는 같지 않음

a > b

두 값을 비교해서 왼쪽 값이 오른쪽 값보다 큰 경우 1로 평가 (a가 b 초과)

a >= b

두 값을 비교해서 왼쪽 값이 오른쪽 값보다 크거나 같은 경우 1로 평가 (a가 b 이상)

a ~ b

a와 정규 표현식 b가 일치

||

두 값을 문자열로 결합합니다. 한 쪽 값이 NULL인 경우 NULL을 반환합니다.

〈\n〉

문자열에 줄바꿈 삽입

LIKE

첫 번째 파라미터가 지정한 패턴과 일치하는 경우 1을 반환

ILIKE

첫 번째 파라미터가 대소문자를 구분하는 지정 패턴과 일치하는 경우 1을 반환 (대소문자 상태까지 일치하는지 확인하려 할 때 LIKE 대신 ILIKE를 쓸 수 있습니다)

a IS b

두 값이 동일한지 검증해서 a와 b가 동일한 경우 1을 반환

a OR b

조건 a 또는 조건 b가 참인 경우 1을 반환

a AND b

조건 a와 조건 b가 참인 경우 1을 반환

NOT

조건 무효화

《Column_name》

Column_name 필드의 값으로, 다음 작은따옴표와 혼동하지 않도록 조심하십시오.

〈string〉

문자열 값으로, 이전 큰따옴표와 혼동하지 않도록 조심하십시오.

NULL

NULL 값

a IS NULL

a가 값을 가지고 있지 않음

a IS NOT NULL

a가 값을 가지고 있음

a IN (value[,value])

a가 값 목록에 있음

a NOT IN (value[,value])

a가 값 목록에 있지 않음

다음은 몇몇 예시입니다:

  • 문자열과 열 명칭의 값을 연결합니다:

    'My feature''s id is: ' || "gid"
    
  • 《description》 속성 필드의 값이 〈Hello〉 문자열로 시작하는지 검증합니다(% 문자의 위치를 주목하세요):

    "description" LIKE 'Hello%'
    

14.2.2.18. 공간 처리 함수

이 그룹은 공간 처리 알고리즘을 대상으로 실행되는 함수를 담고 있습니다.

함수

설명

parameter

공간 처리 알고리즘의 입력 파라미터의 값을 반환

14.2.2.19. 래스터 함수

이 그룹은 래스터 레이어를 대상으로 실행되는 함수를 담고 있습니다.

함수

설명

raster_statistic

래스터 레이어의 통계를 반환

raster_value

지정한 포인트 위치의 래스터 밴드 값을 반환

14.2.2.20. 레코드 및 속성 함수

이 그룹은 레코드 식별자를 대상으로 하는 함수를 담고 있습니다.

함수

설명

$currentfeature

평가 중인 현재 피처를 반환합니다. 현재 피처에서 속성값을 평가하는 attribute 함수와 함께 사용할 수 있습니다.

$id

현재 행의 피처 ID를 반환

attribute

피처에서 지정한 속성의 값을 반환

attributes

피처의 모든 속성의 을, 필드명을 맵 키로 삼아 반환

get_feature

레이어에서 지정한 속성값과 일치하는 첫 번째 피처를 반환

get_feature_by_id

지정한 피처 ID와 일치하는 레이어의 피처를 반환

is_selected

피처가 선택된 경우 참을 반환

num_selected

지정한 레이어에서 선택된 피처의 개수를 반환

represent_value

필드값에 대해 설정된 표현값(representation value)을 반환 (일부 위젯 유형 사용시 편리합니다)

sql_fetch_and_increment

SQLite 데이터베이스에서 자동으로 증가하는 값을 관리

uuid

각 행에 대해 UUID(Universally Unique Identifier)를 생성합니다. 각 UUID는 문자 38개 길이입니다.

다음은 몇몇 예시입니다:

  • 《LayerA》 레이어에서 《id》 필드가 현재 피처의 《name》 필드와 동일한 값을 지닌 첫 번째 피처를 반환합니다(필드 결합의 일종입니다):

    get_feature( 'layerA', 'id', attribute( $currentfeature, 'name') )
    
  • 이전 예시에서 결합된 피처의 면적을 계산합니다:

    area( geometry( get_feature( 'layerA', 'id', attribute( $currentfeature, 'name') ) ) )
    

14.2.2.21. 문자열 함수

이 그룹은 문자열을 대상으로 하는 (예: 치환, 대문자 변환 등) 함수를 담고 있습니다.

함수

설명

char

유니코드 코드와 관련된 문자를 반환

concat

여러 문자열을 하나로 연결

format

지정한 인자를 이용해서 문자열 서식을 변경

format_date

날짜 또는 문자열 유형을 사용자 지정 문자열 서식으로 변경

format_number

현지의 천 단위 자릿수 표시 기호로 서식을 변경한 숫자를 반환 (또 숫자를 지정한 자릿수로 잘라냅니다)

left(string, n)

문자열 가장 왼쪽에 있는 N개의 문자를 담은 하위 문자열을 반환

length

문자열의 길이를 (또는 라인 도형 객체의 길이를) 반환

lower

문자열을 소문자로 변환

lpad

채우기 용 문자를 지정한 너비의 왼쪽부터 메워 넣은 문자열을 반환

regexp_match

문자열 내부에서 정규 표현식과 첫번째로 일치하는 위치를 반환, 또는 하위 문자열을 찾지 못했을 경우 0을 반환

regexp_replace

지정한 정규 표현식을 치환한 문자열을 반환

regexp_substr

문자열에서 지정한 정규 표현식과 일치하는 부분을 반환

replace

지정한 문자열, 배열, 또는 문자열 맵을 문자열, 문자열의 배열, 또는 값 쌍으로 치환한 문자열을 반환

right(string, n)

문자열 가장 오른쪽에 있는 N개의 문자를 담은 하위 문자열을 반환

rpad

채우기 용 문자를 지정한 너비의 오른쪽부터 메워 넣은 문자열을 반환

strpos

또다른 문자열 내부의 하위 문자열과 첫번째로 일치하는 위치를 반환, 또는 하위 문자열을 찾지 못했을 경우 0을 반환

substr

문자열의 부분을 반환

title

문자열의 모든 단어를 제목 서식 으로 변환 (모든 단어의 첫 문자가 대문자, 나머지 문자는 소문자)

trim

문자열에서 맨 앞과 맨 뒤의 모든 빈 자리(공백, 탭 등)를 제거

upper

문자열을 대문자로 변환

wordwrap

최대/최소 문자 개수로 행갈이한 문자열을 반환

필드 연결에 대해

|| 또는 + 가운데 하나를 사용해서 문자열을 연결할 수 있습니다. 또는 특수한 몇몇 특성을 가진 concat 함수로도 연결할 수 있습니다:

  • + 연산자는 덧셈 표현식이기도 합니다. 따라서 정수형(필드 또는 숫자값) 피연산자가 있을 경우 오류를 낼 가능성이 있으므로 || 연산자 또는 concat 함수를 사용하는 편이 좋습니다:

    'My feature''s id is: ' + "gid" => triggers an error as gid is an integer
    
  • NULL값인 인수가 하나라도 있을 경우, || 또는 + 둘 다 NULL값을 반환할 것입니다. NULL값에 상관없이 다른 인수를 반환하게 하려면, concat 함수를 사용해야 할 수도 있습니다:

    "country_name" || NULL => NULL
    concat('My feature''s id is: ', NULL) => My feature's id is
    concat("firstname", "nickname", "lastname") => Chuck Norris (if empty nickname)
    "firstname" + "nickname" + "lastname" => NULL (if one field is empty)
    
  • 그 외의 경우는 편한대로 작업하십시오:

    'My country is ' + "country_name" + ' (' + "country_code" + ')'
    'My country is ' || "country_name" || ' (' || "country_code" || ')'
    concat('My country is ', "country_name", ' (', "country_code", ')')
    # All the above return: My country is France (FR)
    

14.2.2.22. 변수

이 그룹은 응용 프로그램, 프로젝트 파일 및 기타 설정과 관련된 동적 변수를 담고 있습니다. 즉 다음 맥락에 따라 일부 변수를 사용하지 못 할 수도 있다는 뜻입니다:

  • expressionSelect Select by expression 대화창에서

  • calculateField Field calculator 대화창에서

  • 레이어 속성 대화창에서

  • 인쇄 조판기에서

표현식에 다음 변수들을 사용하려면, 앞에 @ 문자를 (예: @row_number) 붙여야 합니다:

함수

설명

algorithm_id

알고리즘의 유일 ID

atlas_feature

현재 지도 피처 (피처 객체로써)

atlas_featureid

현재 지도 피처 ID

atlas_featurenumber

현재 조판기에 있는 지도 피처의 번호

atlas_filename

현재 지도 파일명

atlas_geometry

현재 지도 피처 도형

atlas_layerid

현재 지도 커버리지 레이어 ID

atlas_layername

현재 지도 커버리지 레이어명

atlas_pagename

현재 지도 페이지 명칭

atlas_totalfeatures

지도에 있는 피처의 총 개수

canvas_cursor_point

캔버스 상에서의 프로젝트의 지리 좌표로 된 마지막 커서 위치

cluster_color

군집 내부 심볼의 색상, 또는 심볼이 혼합 색상인 경우 NULL값

cluster_size

군집 내부에 담겨 있는 심볼의 개수

current_feature

현재 속성 양식 또는 테이블 행에서 편집 중인 피처

current_geometry

현재 양식 또는 테이블 행에서 편집 중인 피처의 도형

fullextent_maxx

(모든 레이어를 포함하는) 전체 캔버스 범위의 최대 X값

fullextent_maxy

(모든 레이어를 포함하는) 전체 캔버스 범위의 최대 Y값

fullextent_minx

(모든 레이어를 포함하는) 전체 캔버스 범위의 최소 X값

fullextent_miny

(모든 레이어를 포함하는) 전체 캔버스 범위의 최소 Y값

geometry_part_count

렌더링된 피처의 도형에 있는 부분의 개수

geometry_part_num

렌더링 중인 피처의 현재 도형 부분의 번호

geometry_point_count

렌더링된 도형의 부분에 있는 포인트의 개수

geometry_point_num

현재 렌더링된 도형의 부분에 있는 포인트의 번호

grid_axis

현재 그리드 주석 축 (예: 경도는 ‘x’, 위도는 ‘y’)

grid_number

현재 그리드 주석 값

item_id

조판기 항목 사용자 ID (유일해야 하는 것은 아닙니다)

item_uuid

조판기 항목 유일 ID

layer

현재 레이어

layer_id

현재 레이어의 ID

layer_name

현재 레이어의 명칭

layout_dpi

조판 해상도(DPI)

layout_name

조판 명칭

layout_numpages

조판한 페이지 수

layout_page

조판기에 있는 현재 항목의 페이지 번호

layout_pageheight

조판기에서 활성화된 페이지의 높이 (밀리미터 단위)

layout_pagewidth

조판기에서 활성화된 페이지의 너비 (밀리미터 단위)

legend_column_count

범례에 있는 열의 개수

legend_filter_by_map

맵이 범례 내용을 필터링했는지 여부를 표시

legend_filter_out_atlas

범례에서 지도를 필터링했는지 여부를 표시

legend_split_layers

범례에서 레이어를 나눌 수 있는지 여부를 표시

legend_title

범례의 제목

legend_wrap_string

범례 텍스트 행갈이에 쓰이는 문자(들)

map_crs

현재 맵의 좌표계

map_crs_acronym

현재 맵 좌표계의 약어

map_crs_definition

현재 맵 좌표계의 완전한 정의

map_crs_description

현재 맵 좌표계의 명칭

map_crs_ellipsoid

현재 맵 좌표계 타원체의 약어

map_crs_proj4

현재 맵 좌표계의 PROJ4 정의

map_crs_wkt

현재 맵 좌표계의 WKT 정의

map_extent

맵의 현재 범위를 표현하는 도형

map_extent_center

맵의 중앙에 있는 포인트 피처

map_extent_height

맵의 현재 높이

map_extent_width

맵의 현재 너비

map_id

현재 맵의 대상(destination) ID. 캔버스 렌더링인 경우 〈canvas〉, 조판기 맵 렌더링인 경우 해당 항목의 ID가 됩니다.

map_layer_ids

맵에 가시화된 맵 레이어의 ID 목록

map_layers

맵에 가시화된 맵 레이어의 목록

map_rotation

맵의 현재 기울기

map_scale

맵의 현재 축척

map_units

맵 측정 단위

notification_message

제공자가 전송하는 알림 메시지의 내용 (제공자 알림이 촉발하는 액션에 대해서만 사용할 수 있습니다.)

parent

부모 레이어에 있는 현재 피처를 참조. 집계 함수를 필터링하는 경우 해당 피처의 속성 및 도형에 접근할 수 있습니다.

project_abstract

프로젝트 요약. 프로젝트 메타데이터에서 가져옵니다.

project_area_units

현재 프로젝트에서 쓰이는 면적 단위. 도형 면적 계산 시 사용됩니다.

project_author

프로젝트 저자. 프로젝트 메타데이터에서 가져옵니다.

project_basename

현재 프로젝트 파일명의 (경로 및 확장자를 제외한) 기본 명칭

project_creation_date

프로젝트 생성 날짜. 프로젝트 메타데이터에서 가져옵니다.

project_crs

프로젝트 좌표계

project_crs_arconym

프로젝트 좌표계의 약어

project_crs_definition

프로젝트 좌표계의 완전한 정의

project_crs_description

프로젝트 좌표계의 설명

project_crs_ellipsoid

프로젝트 좌표계의 타원체

project_crs_proj4

프로젝트 좌표계의 PROJ4 표현

project_crs_wkt

프로젝트 좌표계의 WKT 표현

project_distance_units

현재 프로젝트에서 쓰이는 거리 단위. 도형 및 거리의 길이 계산 시 사용됩니다.

project_ellipsoid

현재 프로젝트의 타원체 명칭. 측지(geodetic) 면적 또는 도형 길이 계산 시 사용됩니다.

project_filename

현재 프로젝트의 파일명

project_folder

현재 프로젝트가 있는 폴더

project_home

현재 프로젝트의 홈 경로

project_identifier

프로젝트 식별자. 프로젝트 메타데이터에서 가져옵니다.

project_keywords

프로젝트 키워드. 프로젝트 메타데이터에서 가져옵니다.

project_last_saved

프로젝트를 마지막으로 저장한 날짜&시간

project_path

현재 프로젝트의 (파일명을 포함한) 전체 경로

project_title

현재 프로젝트의 제목

project_units

프로젝트 좌표계의 단위

qgis_locale

QGIS의 현재 언어

qgis_os_name

현재 운영체제의 명칭을 반환 (예: 〈windows〉, 〈linux〉 또는 〈osx〉)

qgis_platform

QGIS의 플랫폼 (예: 〈desktop〉 또는 〈server〉)

qgis_release_name

현재 QGIS 의 배포명

qgis_short_version

현재 QGIS의 버전 문자열 (ShortString 유형)

qgis_version

현재 QGIS의 버전 문자열

qgis_version_no

현재 QGIS의 버전 숫자

row_number

현재 행의 번호를 저장

snapping_results

피처 디지타이즈 작업 도중 스냅 작업 결과물에 접근 가능 (피처 추가 시에만 사용할 수 있습니다.)

scale_value

현재 축척 막대 거리 값

symbol_angle

피처를 렌더링하는 데 쓰이는 심볼의 각도 (마커 심볼의 경우에만 유효합니다.)

symbol_color

피처를 렌더링하는 데 쓰이는 심볼의 색상

symbol_count

(조판기 범례에 표시되는) 심볼이 표현하는 피처의 개수

symbol_id

(조판기 범례에 표시되는) 심볼의 내부 ID

symbol_label

(사용자가 정의한 라벨 또는 기본 자동 생성된 라벨 가운데 하나로, 조판기 범례에 표시되는) 심볼 용 라벨

user_account_name

현재 사용자의 운영체제 계정명

user_full_name

현재 사용자의 운영체제 사용자명

value

현재 값

with_variable

표현식 내부에서 활용하기 위한 변수를 설정할 수 있고, 동일한 값을 반복해서 재계산하는 일을 피할 수 있습니다.

다음은 몇몇 예시입니다:

  • 조판기 중심에 있는 맵 항목의 X 좌표를 반환합니다:

    x( map_get( item_variables( 'map1'), 'map_extent_center' ) )
    
  • 현재 레이어에 있는 각 피처 별로, 피처와 중첩하는 공항 피처의 개수를 반환합니다:

    aggregate( layer:='airport', aggregate:='count', expression:="code",
                   filter:=intersects( $geometry, geometry( @parent ) ) )
    
  • 라인에서 첫번째로 스냅하는 포인트의 object_id를 가져옵니다:

    with_variable(
      'first_snapped_point',
      array_first( @snapping_results ),
      attribute(
        get_feature_by_id(
          map_get( @first_snapped_point, 'layer' ),
          map_get( @first_snapped_point, 'feature_id' )
        ),
        'object_id'
      )
    )
    

14.2.2.23. 최근 함수

이 그룹은 최근 사용한 함수를 담고 있습니다. 그 맥락에 따라 (피처 선택, 필드 계산기, 일반) 최근 적용된 표현식이 대응하는 목록에 (10개까지) 추가되며, 가장 최근에 사용한 함수가 맨 앞으로 오도록 정렬합니다. 이 목록을 통해 이전에 사용했던 표현식을 빠르게 찾아서 다시 적용할 수 있습니다.

14.2.3. 함수 편집기

Function Editor 탭에서 사용자 고유의 함수를 파이썬 언어로 작성할 수 있습니다. 이 탭은 미리 정의된 함수로는 커버할 수 없는 특별한 요구 사항을 쉽고 편하게 처리할 수 있는 방법을 제공합니다.

../../../_images/function_editor.png

그림 14.66 함수 편집기 탭

새 함수를 생성하려면:

  1. signPlus New File 버튼을 누르십시오.

  2. 팝업 양식에 사용할 명칭을 입력하고 OK 를 누르십시오.

    사용자가 지정한 명칭을 가진 새 항목이 Function Editor 탭의 왼쪽 패널에 추가됩니다. 이 항목은 QGIS 템플릿 파일 기반 파이썬 .py 파일로, 활성화된 사용자 프로파일 디렉터리 아래 있는 /python/expressions 폴더에 저장됩니다.

  3. 파일의 내용 ─ 파이썬 스크립트 템플릿 ─ 은 오른쪽 패널에 표시됩니다. 사용자의 필요에 따라 코드 및 도움말을 업데이트하십시오.

  4. start Save and Load Functions 버튼을 누르십시오. Expression 탭의 함수 트리에 사용자가 작성한 함수를 추가합니다. 기본적으로 Custom 그룹 아래 추가될 것입니다.

  5. 사용자의 새 함수를 즐겨보세요.

  6. 함수를 향상시켜야 할 경우, Function Editor 탭을 선택해서 수정한 다음 start Save and Load Functions 을 다시 누르면 파일에서 수정 사항을 사용할 수 있게 됩니다. 즉 어떤 표현식 탭에서도 사용할 수 있게 됩니다.

사용자 지정 파이썬 함수는 사용자 프로파일 디렉터리 아래 저장됩니다. 즉 QGIS를 시작할 때마다, 현재 사용자 프로파일에서 정의된 모든 함수를 자동적으로 불러올 것입니다. /python/expressions 폴더에만 새 함수를 저장하고 프로젝트 파일에는 저장하지 않는다는 사실을 알아두십시오. 사용자 지정 함수를 이용하는 프로젝트를 공유하는 경우, /python/expressions 폴더에 있는 .py 파일도 함께 공유해야 합니다.

다음은 사용자 고유의 함수를 생성하는 방법에 대한 간단한 예시입니다:

from qgis.core import *
from qgis.gui import *

@qgsfunction(args='auto', group='Custom')
def my_sum(value1, value2, feature, parent):
    """
    Calculates the sum of the two parameters value1 and value2.
    <h2>Example usage:</h2>
    <ul>
      <li>my_sum(5, 8) -> 13</li>
      <li>my_sum("field1", "field2") -> 42</li>
    </ul>
    """
    return value1 + value2

이 간단한 예시는 값 2개를 사용하는 my_sum 함수를 생성합니다. args='auto' 함수 인수를 사용하는 경우 필요한 함수 인수의 개수는 파이썬으로 정의된 함수의 인수 개수로 계산될 것입니다. (2를 ─ featureparent ─ 뺍니다.)

이제 이 함수를 표현식 탭에서 사용할 수 있습니다:

../../../_images/customFunction.png

그림 14.67 표현식 탭에 추가된 사용자 지정 함수

PyQGIS 개발자 쿡북 에서 파이썬 코드 생성 관련 심화 정보를 찾아볼 수 있습니다.