14.2. 표현식¶
레이어 데이터 및 사전 생성된 또는 사용자가 정의한 함수를 기반으로, 표현식 은 도형 스타일, 라벨의 내용 또는 위치, 도표의 값, 조판기 항목의 높이 등을 동적으로 변경하고, 피처를 선택하고, 가상 필드 등을 생성하기 위해 속성값, 도형 및 변수를 처리할 수 있는 강력한 방법을 제공합니다.
14.2.1. 표현식 문자열 작성기¶
Expression string builder 는 표현식을 생성하기 위한 주 대화창으로, QGIS의 여러 부분에서 이용할 수 있는데 특히 다음과 같은 경우에 접근할 수 있습니다:
Select By Expression… 도구로 피처를 선택 하는 경우
Field calculator 도구 등으로 속성을 편집 하는 경우
Data defined override 도구로 심볼, 라벨 또는 조판기 항목 파라미터를 처리하는 경우 (데이터 정의 무시 설정 참조)
도형 생성기 심볼 레이어를 생성하는 경우
지리 정보를 처리 하는 경우
표현식 작성기 대화창에서 다음 탭들을 선택할 수 있습니다:
몇몇 표현식 용례
필드 계산기에서 기존 《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 탭은 함수, 레이어의 필드 및 값을 이용해서 표현식을 작성할 수 있는 주 인터페이스를 제공합니다. 이 탭에 다음 작업을 할 수 있는 위젯들이 있습니다:
표현식을 입력하거나 붙여넣을 수 있는 표현식 편집기 영역이 있습니다. 표현식 작성 속도를 향상시키기 위해 자동완성 기능을 사용할 수 있습니다:
입력 텍스트에 대응하는 변수, 함수명 및 필드명을 아래쪽에 표시합니다. Up 및 Down 화살표를 사용해서 항목을 탐색한 다음 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 버튼을 클릭하세요.
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 Samples 와 All 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 |
환경 변수를 받아 그 내용을 문자열로 반환. 변수를 찾을 수 없는 경우 |
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 |
평가 중인 현재 피처를 반환합니다. 현재 피처에서 속성값을 평가하는 |
$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. 변수¶
이 그룹은 응용 프로그램, 프로젝트 파일 및 기타 설정과 관련된 동적 변수를 담고 있습니다. 즉 다음 맥락에 따라 일부 변수를 사용하지 못 할 수도 있다는 뜻입니다:
표현식에 다음 변수들을 사용하려면, 앞에 @
문자를 (예: @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 탭에서 사용자 고유의 함수를 파이썬 언어로 작성할 수 있습니다. 이 탭은 미리 정의된 함수로는 커버할 수 없는 특별한 요구 사항을 쉽고 편하게 처리할 수 있는 방법을 제공합니다.
새 함수를 생성하려면:
팝업 양식에 사용할 명칭을 입력하고 OK 를 누르십시오.
사용자가 지정한 명칭을 가진 새 항목이 Function Editor 탭의 왼쪽 패널에 추가됩니다. 이 항목은 QGIS 템플릿 파일 기반 파이썬
.py
파일로, 활성화된 사용자 프로파일 디렉터리 아래 있는/python/expressions
폴더에 저장됩니다.파일의 내용 ─ 파이썬 스크립트 템플릿 ─ 은 오른쪽 패널에 표시됩니다. 사용자의 필요에 따라 코드 및 도움말을 업데이트하십시오.
Save and Load Functions 버튼을 누르십시오. Expression 탭의 함수 트리에 사용자가 작성한 함수를 추가합니다. 기본적으로
Custom
그룹 아래 추가될 것입니다.사용자의 새 함수를 즐겨보세요.
함수를 향상시켜야 할 경우, Function Editor 탭을 선택해서 수정한 다음 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를 ─ feature
와 parent
─ 뺍니다.)
이제 이 함수를 표현식 탭에서 사용할 수 있습니다:
PyQGIS 개발자 쿡북 에서 파이썬 코드 생성 관련 심화 정보를 찾아볼 수 있습니다.