` `
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 ...
式を作成するには、メインダイアログ、 式文字列ビルダー は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 widgets to:
このグループには演算子が含まれています(例えば、+、 - 、*)。以下の数学関数のほとんどについて、入力の一つが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%'
このグループには式の中で条件を扱う関数を含まれます.
関数 |
説明 |
---|---|
CASE ... 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 |
いくつかの例:
最初の条件がtrueである場合は値を戻し、そうでない場合は別の値を:
CASE WHEN "software" LIKE '%QGIS%' THEN 'QGIS' ELSE 'Other' END
このグループは、数学関数(例えば、平方根、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 | 数を下向きに丸めます |
ln | 渡された式の自然対数を返します |
log | 渡された値とベースでの対数の値を返します |
log10 | 渡された式の10を底とする対数の値を返します |
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 | 指数曲線を使用して、出力範囲への入力領域から所定の値を変換します |
scale_linear | 線形補間を使用して、出力範囲への入力領域から所定の値を変換します |
sin | 角度の正弦を返します |
sqrt | 値の平方根を返します |
tan | 角度の正接を返します |
このグループには、レイヤーやフィールドの値を集約する関数が含まれています。
関数 |
説明 |
---|---|
集計 |
別のレイヤーの地物を使用して計算された集計値を返します |
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」フィールドの平均値を返します:
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 | 赤色成分またはアルファ成分、例えば、色文字列の特定の色成分を設定します |
このグループは、別の(整数にする例えば、文字列、文字列の整数)に1つのデータ型を変換する関数が含まれています。
関数 |
説明 |
---|---|
to_date | 日付オブジェクトに文字列を変換します |
to_datetime | DateTimeオブジェクトに文字列を変換します |
to_int | 数を文字列を整数に変換します |
to_interval | 間隔型に文字列を変換します(日付の日、時間、月、などを取るために使用できます) |
to_real | 実際の文字列を数値に変換します |
to_string | 数値を文字列に変換します |
to_time | 時間オブジェクトに文字列を変換します |
このグループには日付や時刻データを扱う関数が含まれます.
関数 |
説明 |
---|---|
age | 2つの日付または日付時刻の間の差を時間間隔として返します |
day | 日付または日時、または間隔からの日数から日を抽出します |
day_of_week | 指定した日付または日時の曜日に対応する番号を返します |
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., 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 | 入力文字列内で対応する位置にあり、文字が異なっている文字の数を返します |
levenshtein |
別の文字列を変更するために必要な文字の編集(挿入、削除または置換)の最小数を返します。二つの文字列間の類似性を測定します |
longest_common_substring | 二つの文字列間の最長共通部分文字列を返します |
soundex | 文字列のSoundexの表現を返します |
このグループは、一般的な各種の関数が含まれています。
関数 |
説明 |
---|---|
eval | 文字列で渡された式を評価します。コンテキスト変数またはフィールドとして渡された動的パラメーターを拡張するのに便利 |
layer_property | レイヤーまたはそのメタデータの値のプロパティを返します。これは、レイヤー名、CRS、ジオメトリタイプ、地物数...が可能です |
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 | 北を基準して時計回りに測定されたpoint_aからpoint_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 | 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) |
crosses | 与えられたジオメトリが、いくつかの、全てではない、内部点を共通して持っている場合、値1(真)を返します |
difference(a,b) | Returns a geometry that represents that part of geometry a that does not intersect with geometry b |
disjoint | ジオメトリが一緒に任意の空間を共有していない場合は1(true)を返します |
distance | 投影単位での2つのジオメトリ間の(空間参照系に基づく)最小距離を返します |
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 | well-knownテキスト(WKT)表現から作成されたジオメトリを返します |
geom_to_wkt | SRIDメタデータなしでジオメトリのwell-knownテキスト(WKT)表現を返します |
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 | ジオメトリのバウンディングボックスが別のジオメトリのバウンディングボックスに重なるかどうかをテストします。ジオメトリのバウンディングボックスが空間的に交差する場合は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. |
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 | 二つのジオメトリ間の関係の次元拡張9交差モデル(DE-9IM)表現を試験または返します |
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 | 2つのジオメトリを結ぶ最短ラインを返します。結果として得られるラインは、ジオメトリ1で開始し、ジオメトリ2で終了します |
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(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
このグループにはレコードを特定するような関数が含まれます.
関数 |
説明 |
---|---|
$currentfeature | 現在の地物が評価されて返します。これは、現在の地物から属性値を評価するために、「属性」関数を使用できます。 |
$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)を生成します。各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 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 | 文字列aを大文字に変換します |
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プラットフォームを返します、例えば「デスクトップ」または「サーバー」 |
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.
Pythonコードの作成に関する詳しい情報は PyQGIS開発者料理本 で見つけることができます。
The function editor is not only limited to working with the field calculator, it can be found whenever you work with expressions.