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 layout item, select some features, create virtual field …

式文字列ビルダー

式を作成するには、メインダイアログ、 式文字列ビルダー は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
    
  • それらの平均住宅価格は平方メートル当たり10000€より小さいか大きいかに応じて、すべての地物に分類したスタイルを適用します:

    "price_m2" > 10000
    
  • 「式で選択…」を使用してツール、「高人口密度」の領域を表すすべての地物を選択し、その平均住宅価格平方メートルあたり10000€よりも高くなる:

    "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 following widgets:

  • An expression editor area to type or paste expressions. Autocompletion is available to speed expression writing:

    • Corresponding variables, function names and field names to the input text are shown below: use the Up and Down arrows to browse the items and press Tab to insert in the expression or simply click on the wished item.
    • Function parameters are shown while filling them.

    QGIS also checks the expression rightness and highlights all the errors using:

    • Underline: for unknown functions, wrong or invalid arguments;
    • Marker: for every other error (eg, missing parenthesis, unexpected character) at a single location.

    ちなみに

    Document your expression with comments

    When using complex expression, it is good practice to add text either as a multiline comment or inline comments to help you remember.

    /*
    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
    )
    
  • Under the expression editor, an Output preview displays the result of the expression evaluated on the first feature of the layer. In case of error, it indicates it and you can access details with the provided hyperlink.

  • A function selector displays the list of functions, variables, fields… organized in groups. A search box is available to filter the list and quickly find a particular function or field. Double-clicking an item adds it to the expression editor.

  • A help panel displays help for each selected item in the function selector.

    ちなみに

    Press Ctrl+Click when hovering a function name in an expression to automatically display its help in the dialog.

  • A field’s values widget shown when a field is selected in the function selector helps to fetch features attributes. Double-clicking a value adds it to the expression editor.

ちなみに

The right panel, showing functions help or field values, can be collapsed (invisible) in the dialog. Press the Show Values or Show Help button to get it back.

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

[式]タブ

集計関数

このグループには、レイヤーやフィールドの値を集約する関数が含まれています。

関数 説明
集計 別のレイヤーの地物を使用して計算された集計値を返します
array_agg Returns an array of aggregated values from a field or expression
collect Returns the multipart geometry of aggregated geometries from an expression
concatenate フィールドまたは式の全ての値が区切り文字で結合された文字列を返します
count マッチする地物の数を返します
count_distinct 重複しない値の数を返します
count_missing 欠損(null)値の数を返します
iqr フィールドまたは式から計算された四分位範囲を返します
majority フィールドまたは式から最頻値(最も多く出現する値)を返します
max_length フィールドまたは式から文字列の最大長を返します
maximum フィールドまたは式から最大値を返します
mean フィールドまたは式から平均値を返します
median フィールドまたは式から中央値を返します
min_length フィールドまたは式から文字列の最小長を返します
minimum フィールドまたは式から最小値を返します
minority フィールドまたは式から最少頻値(最も少なく出現する値)を返します
q1 フィールドまたは式から計算された第1四分位数を返します
q3 フィールドまたは式から計算された第3四分位数を返します
range フィールドまたは式から値の範囲(最大値-最小値)を返します
relation_aggregate レイヤー関係からマッチする子地物を使用して計算された集計値を返します
stdev フィールドまたは式から標準偏差の値を返します
sum フィールドまたは式から合計値を返します

例:

  • 「station_class」フィールドでグループ化されたレイヤー中の地物から「乗客」フィールドの最大値を返します:

    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")
    

Array Functions

This group contains functions to create and manipulate arrays (also known as list data structures). The order of values within the array matters, unlike the 『map』 data structure, where the order of key-value pairs is irrelevant and values are identified by their keys.

関数 説明
array Returns an array containing all the values passed as parameter
array_append Returns an array with the given value added at the end
array_cat Returns an array containing all the given arrays concatenated
array_contains Returns true if an array contains the given value
array_distinct Returns an array containing distinct values of the given array
array_filter Returns an array with only the items for which an expression evaluates to true
array_find Returns the index (0 for the first one) of a value within an array. Returns -1 if the value is not found.
array_first Returns the first value of an array
array_foreach Returns an array with the given expression evaluated on each item
array_get Returns the Nth value (0 for the first one) of an array
array_insert Returns an array with the given value added at the given position
array_intersect Returns true if any element of array_1 exists in array_2
array_last Returns the last element of an array
array_length Returns the number of elements of an array
array_prepend Returns an array with the given value added at the beginning
array_remove_all Returns an array with all the entries of the given value removed
array_remove_at Returns an array with the given index removed
array_reverse Returns the given array with array values in reversed order
array_slice Returns the values of the array from the start_pos argument up to and including the end_pos argument
array_to_string Concatenates array elements into a string separated by a delimiter and using optional string for empty values
generate_series Creates an array containing a sequence of numbers
regexp_matches Returns an array of all strings captured by capturing groups, in the order the groups themselves appear in the supplied regular expression against a string
string_to_array Splits string into an array using supplied delimiter and optional string for empty values

色関数

このグループには、色を操作するための関数が含まれています。

関数 説明
color_cmyk そのシアン、マゼンタ、イエロー、ブラックの成分に基づいて色の文字列表現を返します
color_cmyka そのシアン、マゼンタ、イエロー、ブラック及びアルファ(透明度)成分に基づいて色の文字列表現を返します
color_grayscale_average Applies a grayscale filter and returns a string representation from a provided color
color_hsl その色相、彩度、明度属性に基づく色の文字列表現を返します
color_hsla その色相、彩度、明度及びアルファ(透明度)属性に基づいて色の文字列表現を返します
color_hsv その色相、彩度、および値属性に基づいて色の文字列表現を返します
color_hsva その色相、彩度、値およびアルファ(透明度)の属性に基づいて、色の文字列表現を返します
color_mix_rgb Returns a string representing a color mixing the red, green, blue, and alpha values of two provided colors based on a given ratio
color_part 赤色成分またはアルファ成分例えば、色文字列から特定の成分を返します
color_rgb その赤、緑、青の成分に基づいて色の文字列表現を返します
color_rgba その赤、緑、青、及びアルファ(透明度)成分に基づいて色の文字列表現を返します
create_ramp Returns a gradient ramp from a map of color strings and steps
darker より暗い(または明るい)色文字列を返します
lighter より明るい(または暗い)色文字列を返します
project_color プロジェクトの色スキーマから色を返します
ramp_color 色ランプから色を表す文字列を返します
set_color_part 赤色成分またはアルファ成分、例えば、色文字列の特定の色成分を設定します

Conditional Functions

このグループには式の中で条件を扱う関数を含まれます.

関数 説明
CASE … THEN … END 式を評価し、真の場合は結果を返します。複数の条件をテストできます
CASE WHEN … THEN … ELSE … END 式を評価し、それが真か偽かどうかで異なる結果を返します。複数の条件をテストできます
coalesce 式リストから最初の非NULL値を返します
if 条件をテストし、条件付きのチェックに応じて、異なる結果を返します

いくつかの例:

  • 最初の条件がtrueである場合は値を戻し、そうでない場合は別の値を:

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

変換関数

このグループは、別の(整数にする例えば、文字列、文字列の整数)に1つのデータ型を変換する関数が含まれています。

関数 説明
to_date 日付オブジェクトに文字列を変換します
to_datetime DateTimeオブジェクトに文字列を変換します
to_dm Converts a coordinate to degree, minute
to_dms Converts coordinate to degree, minute, second
to_int 数を文字列を整数に変換します
to_interval 間隔型に文字列を変換します(日付の日、時間、月、などを取るために使用できます)
to_real 実際の文字列を数値に変換します
to_string 数値を文字列に変換します
to_time 時間オブジェクトに文字列を変換します

カスタム関数

このグループは、ユーザーが作成した関数が含まれています。詳細については 関数エディタ を参照。

日付と時刻の関数

このグループには日付や時刻データを扱う関数が含まれます.

関数 説明
age 2つの日付または日付時刻の間の差を時間間隔として返します
day 日付または日時、または間隔からの日数から日を抽出します
day_of_week 指定した日付または日時の曜日に対応する番号を返します
epoch Returns the interval in milliseconds between the unix epoch and a given date value
hour 日時または時刻からの時間、または間隔から時間数を抽出します
minute 日時または時刻から分を、または間隔から分数を抽出します
month 間隔から数ヶ月の日付または日時、または数字から月の部分を抽出します
now 現在の日付と時刻を返します
second 日時または時刻から秒を、または間隔からの秒数を抽出します
week 日付または日時から週数を、または間隔から週数を抽出します
year 日付または日時から年の部分を、または間隔から年数を抽出します

このグループはまた、 変換関数 (TO_DATE、TO_TIME、to_datetime、to_interval)と 文字列関数 (format_date)グループといくつかの関数を共有します。

いくつかの例:

  • 「month_number /年」の形式で、今日の月と年を取得します。

    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., Shapefile accepts date format, but not datetime or time format). The following are some suggestions to overcome this limitation:

  • 日付日時時間to_format() 関数を使用した後、テキスト形式のフィールドに記憶できます。
  • 間隔 は日付抽出関数のいずれかを使用した後に整数または小数タイプフィールドに記憶できます(例えば、日数で表される時間間隔を取得する day()

フィールドと値

レイヤーからのフィールドのリストが含まれています。

Double-click a field name to have it added to your expression. You can also type the field name (preferably inside double quotes) or its alias.

To retrieve fields values to use in an expression, select the appropriate field and, in the shown widget, choose between 10 Samples and All Unique. Requested values are then displayed and you can use the Search box at the top of the list to filter the result. Sample values can also be accessed via right-clicking on a field.

To add a value to the expression you are writing, double-click on it in the list. If the value is of a string type, it should be simple quoted, otherwise no quote is needed.

ファジー・マッチング関数

このグループには、値間でファジィ比較をするための関数が含まれています。

関数 説明
hamming_distance 入力文字列内で対応する位置にあり、文字が異なっている文字の数を返します
levenshtein 別の文字列を変更するために必要な文字の編集(挿入、削除または置換)の最小数を返します。二つの文字列間の類似性を測定します
longest_common_substring 二つの文字列間の最長共通部分文字列を返します
soundex 文字列のSoundexの表現を返します

一般関数

このグループは、一般的な各種の関数が含まれています。

関数 説明
env Gets an environment variable and returns its content as a string. If the variable is not found, NULL will be returned.
eval 文字列で渡された式を評価します。コンテキスト変数またはフィールドとして渡された動的パラメーターを拡張するのに便利
is_layer_visible Returns true if a specified layer is visible
layer_property レイヤーまたはそのメタデータの値のプロパティを返します。これは、レイヤー名、CRS、ジオメトリタイプ、地物数…が可能です
var 指定された変数内に格納された値を返します。下の変数関数を参照
with_variable Creates and sets a variable for any expression code that will be provided as a third argument. Useful to avoid repetition in expressions where the same value needs to be used more than once.

ジオメトリ関数

このグループは、ジオメトリオブジェクト(例えば、長さ、面積)を操作する関数が含まれています。

関数 説明
$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 北を基準して時計回りに測定されたpoint_aからpoint_bへの方位をラジアン単位の角度で返します.
boundary Returns the closure of the combinatorial boundary of the geometry (ie the topological boundary of the geometry - see also Boundary).
bounds Returns a geometry which represents the bounding box of an input geometry. Calculations are in the Spatial Reference System of this geometry (see also Bounding boxes)
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 (see also Buffer)
buffer_by_m Creates a buffer along a line geometry where the buffer diameter varies according to the M values at the line vertices (see also Variable width buffer (by M value))
centroid Returns the geometric center of a geometry (see also 重心)
closest_point 第二のジオメトリに最も近いジオメトリ上の点を返します
combine 2つのジオメトリの組み合わせを返します
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) (see also Convex hull)
crosses 与えられたジオメトリが、いくつかの、全てではない、内部点を共通して持っている場合、値1(真)を返します
difference(a,b) Returns a geometry that represents that part of geometry a that does not intersect with geometry b (see also Difference)
disjoint ジオメトリが一緒に任意の空間を共有していない場合は1(true)を返します
distance 投影単位での2つのジオメトリ間の(空間参照系に基づく)最小距離を返します
distance_to_vertex 指定された頂点までのジオメトリに沿った距離を返します
end_point Returns the last node from a geometry (see also Extract specific vertices)
extend Extends the start and end of a linestring geometry by a specified amount (see also Extend lines)
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
flip_coordinates Returns a copy of the geometry with the X and Y coordinates swapped (see also Swap X and Y coordinates)
geom_from_gml ジオメトリのGML表現から作成されたジオメトリを返します
geom_from_wkt well-knownテキスト(WKT)表現から作成されたジオメトリを返します
geom_to_wkt SRIDメタデータなしでジオメトリのwell-knownテキスト(WKT)表現を返します
geometry 地物のジオメトリを返します
geometry_n ジオメトリコレクションからn番目のジオメトリを、入力ジオメトリがコレクションでない場合はnullを返します
hausdorff_distance Returns basically a measure of how similar or dissimilar 2 geometries are, with a lower distance indicating more similar geometries
inclination Returns the inclination measured from the zenith (0) to the nadir (180) on point_a to point_b
interior_ring_n ポリゴンジオメトリからn番目の内部リングの形状を、ジオメトリがポリゴンでない場合はnullを返します
intersection Returns a geometry that represents the shared portion of two geometries (see also Intersection)
intersects ジオメトリが別と交差するかどうかをテストします。ジオメトリが空間的に交差する(スペースの任意の部分を共有する)場合 1(真)を、それらがしない場合0を返します
intersects_bbox ジオメトリのバウンディングボックスが別のジオメトリのバウンディングボックスに重なるかどうかをテストします。ジオメトリのバウンディングボックスが空間的に交差する場合はtrueを、そうでない場合はfalseを返します
is_closed ラインストリングが閉じている(開始点と終了点が一致している)場合はtrue、ラインストリングが閉じていない場合はfalse、ジオメトリがラインストリングでない場合はnullを返します
length ラインジオメトリ地物(または文字列の長さ)の長さを返します
line_interpolate_angle ラインストリングジオメトリに沿って指定された距離でジオメトリに平行な角度を返します。角度は度で北から時計回りです。
line_interpolate_point Returns the point interpolated by a specified distance along a linestring geometry. (see also Interpolate point on line)
line_locate_point ラインストリングは、指定されたポイントジオメトリに来る最も近い位置に対応したラインストリングに沿った距離を返します。
line_substring Returns the portion of a line or curve geometry falling betweeen specified start and end distances (measured from the beginning of the line) (see also Line substring)
line_merge 入力ジオメトリから任意の接続ラインストリングは、単一の折れ線にマージされている(マルチ)ラインストリングジオメトリを返します。
m Returns the M value of a point geometry
make_circle Creates a circular geometry based on center point and radius
make_ellipse Creates an elliptical geometry based on center point, axes and azimuth
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 外リングおよび任意一連の内リングのジオメトリからポリゴンのジオメトリを作成します
make_regular_polygon Creates a regular polygon
make_triangle Creates a triangle polygon
minimal_circle Returns the minimal enclosing circle of an input geometry (see also Minimum enclosing circles)
nodes_to_points Returns a multipoint geometry consisting of every node in the input geometry (see also Extract vertices)
num_geometries 入力ジオメトリがコレクションでない場合はジオメトリコレクションにジオメトリの数を返し、またはnull
num_interior_rings 入力ジオメトリがポリゴンまたはコレクションでない場合は、多角形またはジオメトリコレクション内の内部リングの数、またはnullを返します
num_points ジオメトリの頂点の数を返します
num_rings 入力ジオメトリがポリゴンまたはコレクションでない場合は、多角形またはジオメトリコレクション内の(外部リングを含む)リングの数、またはnullを返します
offset_curve Returns a geometry formed by offsetting a linestring geometry to the side. Distances are in the Spatial Reference System of this geometry. (see also Offset lines)
order_parts 与えられた基準によってマルチジオメトリの部分を並べ替えます
oriented_bbox Returns a geometry representing the minimal oriented bounding box of an input geometry (see also Oriented minimum bounding box)
overlaps ジオメトリが別と重なるかどうかをテストします。ジオメトリが空間を共有し、同じ寸法のものであるが、互いに完全に含まれていない場合、値1(真)を返します
perimeter ジオメトリポリゴン地物の周囲を返します。計算はこのジオメトリの空間参照系であります
point_n Returns a specific node from a geometry (see also Extract specific vertices)
point_on_surface Returns a point guaranteed to lie on the surface of a geometry (see also Point on Surface)
pole_of_inaccessibility Calculates the approximate pole of inaccessibility for a surface, which is the most distant internal point from the boundary of the surface (see also Pole of inaccessibility)
project Returns a point projected from a start point using a distance and bearing (azimuth) in radians (see also Project points (Cartesian))
relate 二つのジオメトリ間の関係の次元拡張9交差モデル(DE-9IM)表現を試験または返します
reverse Reverses the direction of a line string by reversing the order of its vertices (see also Reverse line direction)
segments_to_lines Returns a multi line geometry consisting of a line for every segment in the input geometry (see also Explode lines)
shortest_line 2つのジオメトリを結ぶ最短ラインを返します。結果として得られるラインは、ジオメトリ1で開始し、ジオメトリ2で終了します
simplify Simplifies a geometry by removing nodes using a distance based threshold (see also Simplify)
simplify_vw Simplifies a geometry by removing nodes using an area based threshold (see also Simplify)
single_sided_buffer Returns a geometry formed by buffering out just one side of a linestring geometry. Distances are in the Spatial Reference System of this geometry (see also Single sided buffer)
smooth Smooths a geometry by adding extra nodes which round off corners in the geometry (see also Smooth)
start_point Returns the first node from a geometry (see also Extract specific vertices)
sym_difference Returns a geometry that represents the portions of two geometries that do not intersect (see also 対称差)
tapered_buffer Creates a buffer along a line geometry where the buffer diameter varies evenly over the length of the line (see also Tapered buffers)
touches ジオメトリが別のジオメトリに触れるかどうかをテストします。それらのジオメトリが少なくとも1つの共通点を持っているがその内部が交差していない場合、値1(真)を返します
transform Returns the geometry transformed from the source CRS to the destination CRS (see also Reproject layer)
translate Returns a translated version of a geometry. Calculations are in the Spatial Reference System of the geometry (see also Translate)
union ジオメトリの点集合を表現するジオメトリを返します
wedge_buffer Returns a wedge shaped buffer originating from a point geometry given an angle and radii (see also Create wedge buffers)
within (a,b) ジオメトリが別のジオメトリ内にあるかどうかをテストします。ジオメトリaが完全にジオメトリbの内部にある場合に1(true)を返します
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
    

Layout Functions

This group contains functions to manipulate print layout items properties.

関数 説明
item_variables Returns a map of variables from a layout item inside this print layout

いくつかの例:

  • Get the scale of the 『Map 0』 in the current print layout:

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

Map Layers

This group contains a list of the available layers in the current project. This offers a convenient way to write expressions referring to multiple layers, such as when performing aggregates, attribute or spatial queries.

Maps Functions

This group contains functions to create or manipulate keys and values of map data structures (also known as dictionary objects, key-value pairs, or associative arrays). Unlike the list data structure where values order matters, the order of the key-value pairs in the map object is not relevant and values are identified by their keys.

関数 説明
hstore_to_map Creates a map from a hstore-formatted string
json_to_map Creates a map from a json-formatted string
map Returns a map containing all the keys and values passed as pair of parameters
map_akeys Returns all the keys of a map as an array
map_avals Returns all the values of a map as an array
map_concat Returns a map containing all the entries of the given maps. If two maps contain the same key, the value of the second map is taken.
map_delete Returns a map with the given key and its corresponding value deleted
map_exist Returns true if the given key exists in the map
map_get Returns the value of a map, given it’s key
map_insert Returns a map with an added key/value
map_to_hstore Merges map elements into a hstore-formatted string
map_to_json Merges map elements into a json-formatted string

数学関数

このグループは、数学関数(例えば、平方根、sinとcos)が含まれています。

関数 説明
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 数を下向きに丸めます
inclination Returns the inclination measured from the zenith (0) to the nadir (180) on point_a to point_b.
ln 渡された式の自然対数を返します
log 渡された値とベースでの対数の値を返します
log10 渡された式の10を底とする対数の値を返します
max Returns the largest not null value in a set of values
min Returns the smallest not null value in a set of values
pi 計算のためのパイの値を返します
radians 度からラジアンに変換します
rand 最小値と最大値の引数で指定された範囲内(最小最大を含む)のランダムな整数を返します
randf 最小値と最大値の引数で指定された範囲内(最小最大を含む)のランダムな浮動小数点数を返します
round 小数点以下の桁数に丸めます
scale_exp 指数曲線を使用して、出力範囲への入力領域から所定の値を変換します
scale_linear 線形補間を使用して、出力範囲への入力領域から所定の値を変換します
sin 角度の正弦を返します
sqrt 値の平方根を返します
tan 角度の正接を返します

演算子

このグループには演算子が含まれています(例えば、+、 - 、*)。以下の数学関数のほとんどについて、入力の一つがNULLである場合は結果はNULLであることに注意してください。

関数 説明
a + b 二つの値の加算(a足すb)
a - b 二つの値の減算(a引くb)。
a * b 2つの値の乗算(a掛けるb)
a / b 2つの値の除算(a割るb)
a % b bで割った余り(例えば、7%2 = 1、または2は7から3回とれて残りが1)
a ^ b 二つの値(例えば、2 ^ 2 = 4または8 = 2 ^ 3)
a < b 2つの値を比較し、左の値が右の値未満である場合は1と評価します(aはbよりも小さいです)
a <= b 2つの値を比較し、左の値が右の値以下である場合は1と評価します
a <> b 2つの値を比較し、それらが等しくない場合は1と評価します
a = b 2つの値を比較し、それらが等しい場合は1と評価します
a != b aとbは等しくありません
a > b (aがbよりも大きい)2つの値を比較し、左の値が右の値よりも大きい場合に1と評価
a >= b 2つの値を比較し、左の値が右の値以上である場合は1と評価
a ~ b aは正規表現bと一致します
|| 2つの値を1つの文字列へと結合します。値のいずれかがNULLの場合、結果はNULLになります
『\n』 文字列に改行を挿入します
LIKE 最初のパラメーターは、供給されたパターンと一致した場合に1を返します
ILIKE 第1のパラメーターは、大文字と小文字を区別しない供給されるパターンと一致する場合に返す(ILIKEが一致大文字と小文字を区別しないを作る代わりに等を使用できます)
a IS b 二つの値が同一であるかどうかをテストします。aがbと同じである場合は1を返します
a OR b 条件aまたはbが真である場合に1を返します
a AND b 条件aとbが該当する場合に1を返します
NOT 条件を否定
column name 「列名」 フィールドの列名の値は、以下を参照してください、単純引用符と混同しないように注意してください
『string』 文字列の値、二重引用符と混同しないように注意してください。上記を参照してください。
NULL null値
a IS NULL aは値なし
a IS NOT NULL aは値を持っています
a IN (値[,値]) aはリストされた値を下回っています
a NOT IN (値[,値]) 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" LIKE 'Hello%'
    

Rasters Functions

This group contains functions to operate on raster layer.

関数 説明
raster_statistic Returns statistics from a raster layer
raster_value Returns the raster band value at the provided point

Record and Attributes Functions

このグループにはレコードを特定するような関数が含まれます.

関数 説明
$currentfeature 現在の地物が評価されて返します。これは、現在の地物から属性値を評価するために、「属性」関数を使用できます。
$id 現在の行の地物IDを返します。
attribute 地物から指定された属性の値を返します
get_feature 指定された属性値に一致するレイヤーの最初の地物を返します
get_feature_by_id Returns the feature of a layer matching the given feature ID
is_selected Returns if a feature is selected
num_selected Returns the number of selected features on a given layer
represent_value Returns the configured representation value for a field value (convenient with some widget types)
uuid 各行の汎用一意識別子(UUID)を生成します。各UUIDは38文字です。

いくつかの例:

  • フィールド「ID」が現在の地物のフィールド「名前」と同じ値を有するレイヤー「LayerA」の最初の地物を返します(jointureの一種):

    get_feature( 'layerA', 'id', attribute( $currentfeature, 'name') )
    
  • 前の例から結合された地物の面積を計算します:

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

文字列関数

このグループには文字列を操作する関数が含まれています(置き換え、大文字に変換、など)。

関数 説明
char Unicodeのコードに関連付けられた文字を返します
concat 複数の文字列を1つに連結します
format 指定された引数を使用して文字列をフォーマットします
format_date カスタム文字列形式に日付型や文字列をフォーマットします
format_number 千の桁区切りでフォーマットされた数を返します(また、供給された桁数に数値を切り捨て)
left(string, n) 文字列のn個の左端の文字が含まれている部分文字列を返します
length 戻り値文字列の長さ(またはライン形状地物の長さ)
lower 小文字に文字列を変換します
lpad Returns a string padded on the left to the specified width, using the fill character
regexp_match Returns the first matching position matching a regular expression within a string, or 0 if the substring is not found
regexp_replace 置き換え付属の正規表現で文字列を返します
regexp_substr 付属の正規表現にマッチする文字列の一部を返します
replace Returns a string with the supplied string, array, or map of strings replaced by a string, an array of strings or paired values
right(string, n) 文字列のn個の右端の文字を含む文字列を返します
rpad Returns a string padded on the right to the specified width, using the fill character
strpos Returns the first matching position of a substring within another string, or 0 if the substring is not found
substr 文字列の一部を返します
title 文字列のすべての単語をタイトルケース(先頭大文字ですべての単語の小文字)に変換します
trim 文字列からすべての先頭と末尾の空白(スペース、タブなど)を削除します
upper 文字列aを大文字に変換します
wordwrap 文字の最大/最小数に包まれた文字列を返します

変数関数

このグループには、アプリケーション、プロジェクトファイルやその他の設定に関連した動的変数が含まれています。これは、一部の関数は文脈に応じて使用できない場合があることを意味します。

  • expressionSelect 式で選択 ダイアログから
  • calculateField フィールド計算機 ダイアログから
  • レイヤーのプロパティダイアログから
  • from the print layout

式の中でこれらの関数を使用するには、それらの前に@文字を付けなければなりません(例えば、@row_number)。懸念しています:

関数 説明
algorithm_id Returns the unique ID of an algorithm
atlas_feature (地物オブジェクトとして)現在の地図帳地物を返します
atlas_featureid 現在の地図帳の地物IDを返します
atlas_featurenumber Returns the current atlas feature number in the layout
atlas_filename 現在の地図帳のファイル名を返します
atlas_geometry 現在の地図帳地物ジオメトリを返します
atlas_layerid Returns the current atlas coverage layer ID
atlas_layername Returns the current atlas coverage layer name
atlas_pagename 現在の地図帳のページ名を返します
atlas_totalfeatures 地図帳中の地物の総数を返します
canvas_cursor_point Returns the last cursor position on the canvas in the project’s geographical coordinates
cluster_color Returns the color of symbols within a cluster, or NULL if symbols have mixed colors
cluster_size Returns the number of symbols contained within a cluster
current_feature Returns the feature currently being edited in the attribute form or table row
current_geometry Returns the geometry of the feature currently being edited in the form or the table row
geometry_part_count Returns the number of parts in rendered feature’s geometry
geometry_part_num Returns the current geometry part number for feature being rendered
geometry_point_count Returns the number of points in the rendered geometry’s part
geometry_point_num Returns the current point number in the rendered geometry’s part
grid_axis 現在のグリッド注釈軸を返します(例えば、経度に「X」、緯度に「Y」)
grid_number 現在のグリッドの注釈値を返します
item_id Returns the layout item user ID (not necessarily unique)
item_uuid Returns the layout item unique ID
layer Returns the current layer
layer_id 現在のレイヤーのIDを返します
layer_name 現在のレイヤーの名前を返します
layout_dpi 構図の解像度を返します(DPI)
layout_name Returns the layout name
layout_numpages Returns the number of pages in the layout
layout_page Returns the page number of the current item in the layout
layout_pageheight Returns the active page height in the layout (in mm)
layout_pagewidth Returns the active page width in the layout (in mm)
map_crs Returns the Coordinate reference system of the current map
map_crs_definition Returns the full definition of the Coordinate reference system of the current map
map_extent Returns the geometry representing the current extent of the map
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 layout map renders
map_layer_ids Returns the list of map layer IDs visible in the map
map_layers Returns the list of map layers visible in the map
map_rotation 地図の現在の回転を返します
map_scale 地図の現在の縮尺を返します
map_units Returns the units of map measurements
notification_message Content of the notification message sent by the provider (available only for actions triggered by provider notifications).
parent Refers to the current feature in the parent layer, providing access to its attributes and geometry when filtering an aggregate function
project_abstract Returns the project abstract, taken from project metadata
project_author Returns the project author, taken from project metadata
project_basename Returns the basename of current project’s filename (without path and extension)
project_creation_date Returns the project creation date, taken from project metadata
project_crs Returns the Coordinate reference system of the project
project_crs_definition Returns the full definition of the Coordinate reference system of the project
project_filename Returns the filename of the current project
project_folder Returns the folder of the current project
project_home Returns the home path of the current project
project_identifier Returns the project identifier, taken from the project’s metadata
project_keywords Returns the project keywords, taken from the project’s metadata
project_path Returns the full path (including file name) of the current project
project_title 現在のプロジェクトのタイトルを返します
qgis_locale Returns the current language of QGIS
qgis_os_name 現在のオペレーティングシステム名を返します、例えば「Windows」、「Linux」または「OSX」
qgis_platform QGISプラットフォームを返します、例えば「デスクトップ」または「サーバー」
qgis_release_name 現在のQGISのリリース名を返します
qgis_short_version Returns current QGIS version short string
qgis_version 現在のQGISのバージョン文字列を返します
qgis_version_no 現在のQGISのバージョン番号を返します
snapping_results Gives access to snapping results while digitizing a feature (only available in add feature)
symbol_angle (マーカーシンボルの場合のみ有効)地物をレンダリングするために使用されるシンボルの角度を返します
symbol_color 地物を描画するために使用されるシンボルの色を返します
user_account_name 現在のユーザのオペレーティング・システム・アカウント名を返します
user_full_name 現在のユーザのオペレーティング・システム・ユーザー名を返します
row_number 現在の行の番号を格納します
value 現在の値を返します
with_variable Allows setting a variable for usage within an expression and avoid recalculating the same value repeatedly

いくつかの例:

  • Return the X coordinate of a map item center to insert into a label in layout:

    x( map_get( item_variables( 'map1'), 'map_extent_center' ) )
    
  • Return for each feature in the current layer the number of overlapping airports features:

    aggregate( layer:='airport', aggregate:='count', expression:="code",
                   filter:=intersects( $geometry, geometry( @parent ) ) )
    
  • Get the object_id of the first snapped point of a line:

    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'
      )
    )
    

最近の関数

This group contains recently used functions. Depending on the context of its usage (feature selection, field calculator, generic), any applied expression is added to the corresponding list (up to ten expressions), sorted from the more recent to the less one. This helps to quickly retrieve and reapply any previously used expression.

関数エディタ

With the Function Editor tab, you are able to write your own functions in Python language. This provides a handy and comfortable way to address particular needs that would not be covered by the predefined functions.

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

関数エディタ]タブ

To create a new function:

  1. Press the signPlus New File button.

  2. Enter a name to use in the form that pops up and press OK.

    A new item of the name you provide is added in the left panel of the Function Editor tab; this is a Python .py file based on QGIS template file and stored in the /python/expressions folder under the active user profile directory.

  3. The right panel displays the content of the file: a python script template. Update the code and its help according to your needs.

  4. Press the start Save and Load Functions button. The function you wrote is added to the functions tree in the Expression tab, by default under the Custom group.

  5. Enjoy your new function.

  6. If the function requires improvements, enable the Function Editor tab, do the changes and press again the start Save and Load Functions button to make them available in the file, hence in any expression tab.

Custom Python functions are stored under the user profile directory, meaning that at each QGIS startup, it will auto load all the functions defined with the current user profile. Be aware that new functions are only saved in the /python/expressions folder and not in the project file. If you share a project that uses one of your custom functions you will need to also share the .py file in the /python/expressions folder.

ここでは、独自の関数を作成する方法の簡単な例です:

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

The short example creates a function my_sum 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 can then be used in expressions:

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

Custom Function added to the Expression tab

Pythonコードの作成に関する詳しい情報は PyQGIS開発者料理本 で見つけることができます。