` `
Based on layer data and prebuilt or user defined functions, Expressions offer a powerful way to manipulate attribute value, geometry and variables in order to dynamically change the geometry style, the content or position of the label, the value for diagram, the height of a composer item, select some features, create virtual field ...
Expression string builder 는 표현식을 생성하기 위한 주 대화창으로, QGIS의 여러 부분에서 이용할 수 있는데 특히 다음과 같은 경우에 접근할 수 있습니다:
Select By Expression... 도구로 피처를 선택 하는 경우
Field calculator 도구 등으로 속성을 편집 하는 경우
도형 생성기 심볼 레이어를 생성하는 경우
지리 정보를 처리 하는 경우
표현식 작성기 대화창에서 다음 탭들을 선택할 수 있습니다:
몇몇 표현식 용례
필드 계산기에서 기존 “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
평균 집값이 제곱미터 당 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) 처럼 위치를 바꿀 수 있습니다. 명명 파라미터를 이용하면 표현식 함수의 인자들이 어떤 의미인지 명확해집니다. 시간이 지난 뒤에 표현식을 해석하려 할 때 유용하겠죠!
The Expression tab provides the main interface to write expressions using functions, layer’s fields and values. It contains widgets to:
이 그룹은 +, -, * 같은 연산자를 담고 있습니다. 다음에 설명하는 수학 함수들 대부분이, 입력 값 가운데 하나가 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가 값 목록에 있지 않음 |
주석
필드 연결에 대해
|| 또는 + 가운데 하나를 사용해서 문자열을 연결할 수 있습니다. + 기호는 덧셈 표현식이기도 합니다. 따라서 정수형(필드 또는 숫자값)이 있을 경우 오류를 낼 가능성이 있으므로, || 을 사용해야 합니다. 문자열 값 2개를 연결하는 경우엔 둘 다 사용해도 됩니다.
다음은 몇몇 예시입니다:
문자열과 열 명칭의 값을 연결합니다:
'My feature''s id is: ' || "gid"
'My feature''s id is: ' + "gid" => triggers an error as gid is an integer
"country_name" + '(' + "country_code" + ')'
"country_name" || '(' || "country_code" || ')'
“description” 속성 필드의 값이 ‘Hello’ 문자열로 시작하는지 검증합니다(% 문자의 위치를 주목하세요):
"description" LIKE 'Hello%'
이 그룹은 표현식에서 조건 검사를 처리하는 함수를 담고 있습니다.
함수 |
설명 |
---|---|
CASE WHEN ... THEN ... END | 표현식을 평가해서 참인 경우 결과를 반환합니다. 여러 조건을 동시에 검증할 수 있습니다. |
CASE WHEN ... THEN ... ELSE ... END | 표현식을 평가해서 참인 경우 또는 거짓인 경우 서로 다른 결과를 반환합니다. 여러 조건을 동시에 검증할 수 있습니다. |
coalesce | 표현식 목록에서 NULL이 아닌 첫 번째 값을 반환 |
if | 조건을 검증해서 조건 검사에 따라 서로 다른 결과를 반환 |
regexp_match | Returns true if any part of a string matches the supplied regular expression |
다음은 예시입니다:
첫 번째 조건이 참인 경우 값을 회신하고, 아닌 경우 다른 값을 회신합니다:
CASE WHEN "software" LIKE '%QGIS%' THEN 'QGIS' ELSE 'Other' END
이 그룹은 제곱근, 삼각함수 등의 수학 함수를 담고 있습니다.
함수 |
설명 |
---|---|
abs | 숫자의 절댓값을 반환 |
acos | 값의 시컨트(역 코사인)를 라디안 단위로 반환 |
asin | 값의 코시컨트(역 사인)를 라디안 단위로 반환 |
atan | Returns the inverse tangent of a value in radians |
atan2(y,x) | Returns the inverse tangent of y/x by using the signs of the two arguments to determine the quadrant of the result |
azimuth(a,b) | 포인트 a의 수직선에서 포인트 b로 시계 방향으로 측정한 진북 기준 방위각을 라디안 단위 각도로 반환 |
ceil | 올림 |
clamp | 입력값을 지정한 범위로 제한 |
cos | 값의 코사인을 라디안 단위로 반환 |
degrees | 라디안 단위를 도 단위로 변환 |
exp | 값의 거듭제곱 지수를 반환 |
floor | 내림 |
ln | 표현식 인자의 자연로그 를 반환 |
log | 값 및 밑(base) 인자의 로그 값을 반환 |
log10 | 표현식 인자의 상용로그 값을 반환 |
max | Returns the largest value in a set of values |
min | Returns the smallest value in a set of values |
pi | 계산을 위한 파이(π) 값을 반환 |
radians | 도 단위를 라디안 단위로 변환 |
rand | 최소(이상) 및 최대(이하) 인자가 지정하는 범위 안에서 랜덤한 정수를 반환 |
randf | 최소(이상) 및 최대(이하) 인자가 지정하는 범위 안에서 랜덤한 실수를 반환 |
round | 반올림 |
scale_exp | 지정한 값을 지수 곡선(exponential curve)을 이용해서 입력 범위에서 출력 범위로 변형 |
scale_linear | 지정한 값을 선형 보간(linear interpolation)을 이용해서 입력 범위에서 출력 범위로 변형 |
sin | 각도의 사인을 반환 |
sqrt | 값의 제곱근을 반환 |
tan | 각도의 탄젠트를 반환 |
이 그룹은 레이어 및 필드에 있는 값들을 집계하는 함수를 담고 있습니다.
함수 |
설명 |
---|---|
aggregate | 다른 레이어의 피처를 이용해서 계산한 합계값을 반환 |
concatenate | 필드 또는 표현식에서 나오는 문자열을 전부 구분자로 결합해서 반환 |
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” 필드의 평균값을 반환합니다:
aggregate_relation('my_relation', 'mean', "field_from_related_table")
또는 이렇게 작성할 수도 있습니다:
aggregate_relation(relation:='my_relation', calculation := 'mean',
expression := "field_from_related_table")
이 그룹은 색상을 처리하기 위한 함수를 담고 있습니다.
함수 |
설명 |
---|---|
color_cmyk | 색상의 시안색, 마젠타색, 노랑색, 검정색 요소를 기반으로 색상의 문자열 표현을 반환 |
color_cmyka | 색상의 시안색, 마젠타색, 노랑색, 검정색 그리고 알파(투명도) 요소를 기반으로 색상의 문자열 표현을 반환 |
color_hsl | 색상의 색상, 채도, 명도 속성을 기반으로 색상의 문자열 표현을 반환 |
color_hsla | 색상의 색상, 채도, 명도 그리고 알파(투명도) 속성을 기반으로 색상의 문자열 표현을 반환 |
color_hsv | 색상의 색상, 채도, 명도 속성을 기반으로 색상의 문자열 표현을 반환 |
color_hsva | 색상의 색상, 채도, 명도 그리고 알파(투명도) 속성을 기반으로 색상의 문자열 표현을 반환 |
color_part | 색상 문자열에서 빨강색 요소 또는 알파 요소 등 특정 요소를 반환 |
color_rgb | 색상의 빨강색, 초록색, 파랑색 요소를 기반으로 색상의 문자열 표현을 반환 |
color_rgba | 색상의 빨강색, 초록색, 파랑색 그리고 알파(투명도) 요소를 기반으로 색상의 문자열 표현을 반환 |
darker | 더 어두운 (또는 더 밝은) 색상 문자열을 반환 |
lighter | 더 밝은 (또는 더 어두운) 색상 문자열을 반환 |
project_color | 프로젝트의 색상 스키마에서 색상을 반환 |
ramp_color | 색상표에서 색상을 표현하는 문자열을 반환 |
set_color_part | 색상 문자열에 빨강색 요소 또는 알파 요소 등 특정 색상 요소를 설정 |
이 그룹은 어느 데이터 유형을 다른 데이터 유형으로 변환하는 함수를 담고 있습니다. (예: 문자열을 정수형으로, 정수형을 문자열로)
함수 |
설명 |
---|---|
to_date | 문자열을 날짜 객체로 변환 |
to_datetime | 문자열을 날짜&시간 객체로 변환 |
to_int | 문자열을 정수형 숫자로 변환 |
to_interval | 문자열을 간격 유형으로 변환 (날짜 유형의 월, 일, 시 등을 추출하는 데 사용할 수 있습니다) |
to_real | 문자열을 실수형 숫자로 변환 |
to_string | 숫자를 문자형으로 변환 |
to_time | 문자열을 시간 객체로 변환 |
이 그룹은 날짜 및 시간 데이터를 처리하기 위한 함수를 담고 있습니다.
함수 |
설명 |
---|---|
age | 두 날짜 또는 두 날짜&시간 사이의 차이를 간격 유형으로 반환 |
day | 날짜 또는 날짜&시간에서 일(日)을 추출, 또는 간격 유형에서 일의 개수를 추출 |
day_of_week | 지정한 날짜 또는 날짜&시간에 대해 요일에 대응하는 숫자를 반환 |
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>
주석
날짜, 날짜&시간, 간격 유형을 필드에 저장하기
The ability to store date, time and datetime values directly on fields may depend on the data source’s provider (e.g., shapefiles accept date format, but not datetime or time format). The following are some suggestions to overcame this limitation.
날짜, 날짜&시간, 시간 을 to_format() 함수로 처리한 다음 텍스트 유형 필드에 저장할 수 있습니다.
간격 을 날짜 추출 함수 중 하나로 처리한 다음 (예: day() 함수는 날짜로 표현된 간격을 반환합니다) 정수 또는 실수 유형 필드에 저장할 수 있습니다.
이 그룹은 레이어에 있는 필드의 목록을 담고 있습니다.
Generally, you can use the various fields, values and functions to construct the calculation expression, or you can just type it into the box.
To display the values of a field, you just click on the appropriate field and choose between Load top 10 unique values and Load all unique values. On the right side, the Field Values list opens with the unique values. At the top of the list, a search box helps filtering the values. To add a value to the expression you are writing, double click its name in the list.
Sample values can also be accessed via right-click. Select the field name from the list, then right-click to access a context menu with options to load sample values from the selected field.
Fields name should be double-quoted in the expression. Values or string should be simple-quoted.
이 그룹은 값들을 퍼지 비교하기 위한 함수를 담고 있습니다.
함수 |
설명 |
---|---|
hamming_distance | 문자들이 서로 다른 입력 문자열들 안에서 대응하는 위치에 있는 문자의 개수를 반환 |
levensheim | 어떤 문자열을 다른 문자열로 변경하는 데 필요한 문자 편집(삽입, 삭제 또는 치환)의 최소 횟수를 반환합니다. 두 문자열 사이의 유사성을 측정하는 함수입니다. |
longest_common_substring | 두 문자열에서 가장 긴 공통 하위 문자열을 반환 |
soundex | 문자열의 Soundex 표현을 반환 |
이 그룹은 일반으로 분류된 함수를 담고 있습니다.
함수 |
설명 |
---|---|
eval | 문자열로 전달된 표현식을 평가합니다. 맥락 상 변수 또는 필드로 전달되는 동적 파라미터를 확장하는 데 유용합니다. |
layer_property | 레이어의 속성 또는 레이어 메타데이터의 값(레이어명, 좌표계, 도형 유형, 피처 개수 등등 가운데 하나)을 반환 |
var | 지정한 변수 내부에 저장된 값을 반환 (변수 함수 참조) |
이 그룹은 도형 객체를 대상으로 하는 (예: 길이, 면적 등) 함수를 담고 있습니다.
함수 |
설명 |
---|---|
$area | 현재 피처의 면적 크기를 반환 |
$geometry | 현재 피처의 도형을 반환 (다른 함수들과 함께 공간 처리 가능) |
$length | 현재 라인 피처의 길이를 반환 |
$perimeter | 현재 폴리곤 피처의 둘레를 반환 |
$x | Returns the x coordinate of the current feature |
$x_at(n) | Returns the x coordinate of the nth node of the current feature’s geometry |
$y | Returns the y coordinate of the current feature |
$y_at(n) | Returns the y coordinate of the nth node of the current feature’s geometry |
angle_at_vertex | 라인스트링 도형 상에 지정한 꼭짓점에서 도형에 대한 이등분선 각도(평균 각도)를 반환합니다. 여기서 각도는 진북에서 시계 방향으로 측정한 도 단위입니다. |
area | 도형 폴리곤 피처의 면적을 반환합니다. 해당 도형의 공간 참조 시스템 상에서 면적을 계산합니다. |
azimuth | 포인트 a의 수직선에서 포인트 b로 시계 방향으로 측정한 진북 기준 방위각을 라디안 단위 각도로 반환 |
boundary | Returns the closure of the combinatorial boundary of the geometry (ie the topological boundary of the geometry). |
bounds | Returns a geometry which represents the bounding box of an input geometry. Calculations are in the Spatial Reference System of this geometry |
bounds_height | 도형의 경계 상자의 높이를 표현하는 도형을 반환합니다. 해당 도형의 공간 참조 시스템 상에서 경계 상자를 계산합니다. |
bounds_width | 도형의 경계 상자의 너비를 표현하는 도형을 반환합니다. 해당 도형의 공간 참조 시스템 상에서 경계 상자를 계산합니다. |
buffer | Returns a geometry that represents all points whose distance from this geometry is less than or equal to distance. Calculations are in the Spatial Reference System of this geometry |
centroid | Returns the geometric center of a geometry |
closest_point | 첫 번째 도형의 포인트들 가운데 두 번째 도형에 가장 가까운 포인트를 반환 |
combine | 두 도형의 조합을 반환 |
contains(a,b) | 도형 b의 포인트 가운데 도형 a 외부에 있는 포인트가 하나도 없고, 도형 b 내부의 포인트 가운데 최소한 포인트 1개가 도형 a 내부에 있는 경우에만 1(참)을 반환 |
convex_hull | Returns the convex hull of a geometry (this represents the minimum convex geometry that encloses all geometries within the set) |
crosses | 입력 도형들이 내부 포인트들 가운데 일부를 – 모두가 아니라 – 공유하는 경우 1(참)을 반환 |
difference(a,b) | Returns a geometry that represents that part of geometry a that does not intersect with geometry b |
disjoint | 도형들이 어떤 공간도 함께 공유하지 않는 경우 1(참)을 반환 |
distance | 두 도형 사이의 (공간 참조 시스템 기반) 최단 거리를 투영체 단위로 반환 |
distance_to_vertex | 도형을 따라 지정한 꼭짓점까지의 거리를 반환 |
end_point | Returns the last node from a geometry |
exterior_ring | 폴리곤 도형의 외곽 고리를 표현하는 라인스트링을 반환 (도형이 폴리곤이 아닌 경우 NULL을 반환) |
extrude(geom,x,y) | Returns an extruded version of the input (Multi-) Curve or (Multi-)Linestring geometry with an extension specified by x and y |
geom_from_gml | 도형의 GML 표현으로부터 생성된 도형을 반환 |
geom_from_wkt | 도형의 WKT(well-known text) 표현으로부터 생성된 도형을 반환 |
geom_to_wkt | SRID 메타데이터를 제외한 도형의 WKT(well-known text) 표현을 반환 |
geometry | 피처의 도형을 반환 |
geometry_n | 도형 집합에서 N번째 도형을 반환 (도형이 집합이 아닌 경우 NULL을 반환) |
interior_ring_n | 폴리곤 도형에서 N번째 내곽 고리를 표현하는 도형을 반환 (도형이 폴리곤이 아닌 경우 NULL을 반환) |
intersection | Returns a geometry that represents the shared portion of two geometries |
intersects | 도형들이 서로 교차하는지 검증합니다. 도형들이 공간적으로 교차하는 경우 (공간의 어떤 부분이라도 공유하는 경우) 1(참)을 반환하고 교차하지 않는 경우 0을 반환합니다. |
intersects_bbox | 도형의 경계 상자가 다른 도형의 경계 상자와 교차하는지 검증합니다. 도형들의 경계 상자가 공간적으로 교차하는 경우 (공간의 어떤 부분이라도 공유하는 경우) 1(참)을 반환하고 교차하지 않는 경우 0을 반환합니다. |
is_closed | 라인스트링이 닫힌 (시작점과 종단점이 일치하는) 경우 참을, 라인스트링이 닫히지 않은 경우 거짓을, 도형이 라인스트링이 아닌 경우 NULL을 반환 |
length | 라인 도형 객체의 길이를 (또는 문자열의 길이를) 반환 |
line_interpolate_angle | 라인스트링 도형을 따라 지정한 거리에서 도형과 평행한 각도를 반환합니다. 여기서 각도는 진북에서 시계 방향으로 측정한 도 단위입니다. |
line_interpolate_point | Returns the point interpolated by a specified distance along a linestring geometry. |
line_locate_point | 라인스트링을 따라 라인스트링이 지정한 포인트 도형에 가장 가까워지는 위치에 상응하는 거리를 반환 |
line_merge | 입력 도형에 있는 연결된 라인스트링들이 단일 라인스트링으로 합쳐진 [멀티]라인스트링 도형을 반환 |
m | Returns the m value of a point geometry |
make_line | 일련의 포인트 도형들로부터 라인을 생성 |
make_point(x,y,z,m) | Returns a point geometry from x and y (and optional z or m) values |
make_point_m(x,y,m) | Returns a point geometry from x and y coordinates and m values |
make_polygon | 외곽 고리 그리고 부가적인 일련의 내곽 고리 도형으로부터 폴리곤 도형을 생성 |
nodes_to_points | Returns a multipoint geometry consisting of every node in the input geometry |
num_geometries | 도형 집합에 있는 도형의 개수를 반환 (도형이 집합이 아닌 경우 NULL을 반환) |
num_interior_rings | 폴리곤 또는 도형 집합에 있는 내곽 고리의 개수를 반환 (도형이 폴리곤 또는 집합이 아닌 경우 NULL을 반환) |
num_points | 도형에 있는 꼭짓점의 개수를 반환 |
num_rings | 폴리곤 또는 도형 집합에 있는 (외곽 고리를 포함한) 고리의 개수를 반환 (도형이 폴리곤 또는 집합이 아닌 경우 NULL을 반환) |
order_parts | 지정한 기준으로 멀티 도형의 부분들을 정렬 |
overlaps | 도형이 다른 도형과 중첩하는지 검증합니다. 도형들이 동일한 차원이며 공간을 공유하지만 서로를 완전히 담고 있지 않은 경우 1(참)을 반환합니다. |
perimeter | 폴리곤 도형 객체의 둘레를 반환합니다. 해당 도형의 공간 참조 시스템 상에서 둘레를 계산합니다. |
point_n | Returns a specific node from a geometry |
point_on_surface | Returns a point guaranteed to lie on the surface of a geometry |
project | Returns a point projected from a start point using a distance and bearing (azimuth) in radians |
relate | 두 도형 간의 관계의 DE-9IM(Dimensional Extended 9 Intersection Model) 표현을 검증 또는 반환 |
reverse | Reverses the direction of a line string by reversing the order of its vertices |
segments_to_lines | Returns a multi line geometry consisting of a line for every segment in the input geometry |
shortest_line | 두 도형을 연결하는 최단 라인을 반환합니다. 산출된 라인은 도형 a에서 시작돼 도형 b에서 끝납니다. |
start_point | Returns the first node from a geometry |
sym_difference | Returns a geometry that represents the portions of two geometries that do not intersect |
touches | 도형이 다른 도형과 접하는지 검증합니다. 도형들이 최소한 포인트 1개를 공유하지만 각 도형의 내부가 교차하지 않는 경우 1(참)을 반환합니다. |
transform | Returns the geometry transformed from the source CRS to the destination CRS |
translate | Returns a translated version of a geometry. Calculations are in the Spatial Reference System of this geometry |
union | 도형의 모든 포인트를 통합한 집합을 표현하는 도형을 반환 |
within (a,b) | 도형이 다른 도형 내부에 있는지 검증합니다. 도형 a가 도형 b 내부에 완전히 들어가 있는 경우 1(참)을 반환합니다. |
x | Returns the x coordinate of a point geometry, or the x coordinate of the centroid for a non-point geometry |
x_min | Returns the minimum x coordinate of a geometry. Calculations are in the Spatial Reference System of this geometry |
x_max | Returns the maximum x coordinate of a geometry. Calculations are in the Spatial Reference System of this geometry |
y | Returns the y coordinate of a point geometry, or the y coordinate of the centroid for a non-point geometry |
y_min | Returns the minimum y coordinate of a geometry. Calculations are in the Spatial Reference System of this geometry |
y_max | Returns the maximum y coordinate of a geometry. Calculations are in the Spatial Reference System of this geometry |
z | Returns the z coordinate of a point geometry |
다음은 몇몇 예시입니다:
$geometry 변수로 현재 도형에 버퍼를 생성하거나 표면 상에 있는 포인트를 얻을 수 있습니다:
buffer( $geometry, 10 )
point_on_surface( $geometry )
Return the x coordinate of the current feature’s centroid:
x( $geometry )
피처의 면적에 따라 값을 회신합니다:
CASE WHEN $area > 10 000 THEN 'Larger' ELSE 'Smaller' END
이 그룹은 레코드 식별자를 대상으로 하는 함수를 담고 있습니다.
함수 |
설명 |
---|---|
$currentfeature | 평가 중인 현재 피처를 반환합니다. 현재 피처에서 속성값을 평가하는 attribute 함수와 함께 사용할 수 있습니다. |
$id | 현재 행의 피처 ID를 반환 |
$map | Returns the id of the current map item if the map is being drawn in a composition, or “canvas” if the map is being drawn within the main QGIS window |
$rownum | Returns the number of the current row |
$scale | Returns the current scale of the map canvas |
attribute | 피처에서 지정한 속성의 값을 반환 |
get_feature | 레이어에서 지정한 속성값과 일치하는 첫 번째 피처를 반환 |
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') ) ) )
이 그룹은 문자열을 대상으로 하는 (예: 치환, 대문자 변환 등) 함수를 담고 있습니다.
함수 |
설명 |
---|---|
char | 유니코드 코드와 관련된 문자를 반환 |
concat | 여러 문자열을 하나로 연결 |
format | 지정한 인자를 이용해서 문자열 서식을 변경 |
format_date | 날짜 또는 문자열 유형을 사용자 지정 문자열 서식으로 변경 |
format_number | 현지의 천 단위 자릿수 표시 기호로 서식을 변경한 숫자를 반환 (또 숫자를 지정한 자릿수로 잘라냅니다) |
left(string, n) | 문자열 가장 왼쪽에 있는 N개의 문자를 담은 하위 문자열을 반환 |
length | 문자열의 길이를 (또는 라인 도형 객체의 길이를) 반환 |
lower | 문자열을 소문자로 변환 |
lpad | Returns a string with supplied width padded using the fill character |
regexp_replace | 지정한 정규 표현식을 치환한 문자열을 반환 |
regexp_substr | 문자열에서 지정한 정규 표현식과 일치하는 부분을 반환 |
replace | Returns a string with the supplied string replaced |
right(string, n) | 문자열 가장 오른쪽에 있는 N개의 문자를 담은 하위 문자열을 반환 |
rpad | Returns a string with supplied width padded using the fill character |
strpos | Returns the index of a regular expression in a string |
substr | 문자열의 부분을 반환 |
title | 문자열의 모든 단어를 제목 서식 으로 변환 (모든 단어의 첫 문자가 대문자, 나머지 문자는 소문자) |
trim | 문자열에서 맨 앞과 맨 뒤의 모든 빈 자리(공백, 탭 등)를 제거 |
upper | 문자열을 대문자로 변환 |
wordwrap | 최대/최소 문자 개수로 행갈이한 문자열을 반환 |
This group contains recently used functions. Any expression used in the Expression dialog is added to the list, sorted from the more recent to the less one. This helps to quickly retrieve any previous expression.
이 그룹은 응용 프로그램, 프로젝트 파일 및 기타 설정과 관련된 동적 변수를 담고 있습니다. 즉 다음 맥락에 따라 일부 함수를 사용하지 못 할 수도 있다는 뜻입니다:
표현식에 다음 함수들을 사용하려면, 앞에 @ 문자를 (예: @row_number) 붙여야 합니다:
함수 |
설명 |
---|---|
atlas_feature | 현재 지도 피처를 (피처 객체로) 반환 |
atlas_featureid | 현재 지도 피처 ID를 반환 |
atlas_featurenumber | Returns the number of pages in composition |
atlas_filename | 현재 지도 파일명을 반환 |
atlas_geometry | 현재 지도 피처 도형을 반환 |
atlas_pagename | 현재 지도 페이지 명칭을 반환 |
atlas_totalfeatures | 지도에 있는 피처의 총 개수를 반환 |
grid_axis | 현재 그리드 주석 축을 반환 (예: 경도는 ‘x’, 위도는 ‘y’) |
grid_number | 현재 그리드 주석 값을 반환 |
item_id | Returns the composer item user ID (not necessarily unique) |
item_uuid | Returns the composer item unique ID |
layer_id | 현재 레이어의 ID를 반환 |
layer_name | 현재 레이어의 명칭을 반환 |
layout_dpi | 조판 해상도(DPI)를 반환 |
layout_numpages | Returns the number of pages in the composition |
layout_pageheight | Returns the composition height in mm |
layout_pagewidth | Returns the composition width in mm |
map_extent_center | 맵의 중앙에 있는 포인트 피처를 반환 |
map_extent_height | 맵의 현재 높이를 반환 |
map_extent_width | 맵의 현재 너비를 반환 |
map_id | Returns the ID of current map destination. This will be ‘canvas’ for canvas renders, and the item ID for composer map renders |
map_rotation | 맵의 현재 기울기를 반환 |
map_scale | 맵의 현재 축척을 반환 |
project_filename | Returns the filename of current project |
project_folder | Returns the folder for current project |
project_path | Returns the full path (including file name) of current project |
project_title | 현재 프로젝트의 제목을 반환 |
qgis_os_name | 현재 운영체제의 명칭을 반환 (예: ‘windows’, ‘linux’ 또는 ‘osx’) |
qgis_platform | QGIS의 플랫폼을 반환 (예: ‘desktop’ 또는 ‘server’) |
qgis_release_name | 현재 QGIS의 배포명을 반환 |
qgis_version | 현재 QGIS의 버전 문자열을 반환 |
qgis_version_no | 현재 QGIS의 버전 숫자를 반환 |
symbol_angle | 피처를 렌더링하는 데 쓰인 심볼의 각도를 반환 (마커 심볼 전용) |
symbol_color | 피처를 렌더링하는 데 쓰인 심볼의 색상을 반환 |
user_account_name | 현재 사용자의 운영체제 계정명을 반환 |
user_full_name | 현재 사용자의 운영체제 사용자명을 반환 |
row_number | 현재 행의 번호를 저장 |
value | 현재 값을 반환 |
With the Function Editor, you are able to define your own Python custom functions in a comfortable way.
The function editor will create new Python files in .qgis2\python\expressions folder and will auto load all functions defined when starting QGIS. Be aware that new functions are only saved in the expressions folder and not in the project file. If you have a project that uses one of your custom functions you will need to also share the .py file in the expressions folder.
다음은 사용자 고유의 함수를 생성하는 방법에 대한 간단한 예시입니다:
@qgsfunction(args="auto", group='Custom')
def myfunc(value1, value2, feature, parent):
pass
The short example creates a function myfunc that will give you a function with two values. When using the args='auto' function argument the number of function arguments required will be calculated by the number of arguments the function has been defined with in Python (minus 2 - feature, and parent).
This function then can be used with the following expression:
myfunc('test1', 'test2')
Your function will be implemented in the Custom functions group of the Expression tab after using the Run Script button.
PyQGIS 개발자 쿡북 에서 파이썬 코드 생성 관련 심화 정보를 찾아볼 수 있습니다.
The function editor is not only limited to working with the field calculator, it can be found whenever you work with expressions.