13.2. 関数のリスト

QGISで利用可能な関数、演算子、変数をカテゴリ別でまとめて以下に示します。

13.2.1. 集計関数

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

13.2.1.1. aggregate

別のレイヤの地物を使って計算された値の集計値を返します。

構文

aggregate(layer, aggregate, expression, [filter], [concatenator=''], [order_by])

記号[]は、オプションの引数を意味します。

引数

  • layer - レイヤ名かレイヤIDのどちらかを表す文字列

  • aggregate - 計算する集計値に対応する文字列。有効なオプションは次のとおり:

    • count

    • count_distinct

    • count_missing

    • min

    • max

    • sum

    • mean

    • median

    • stdev

    • stdevsample

    • range

    • minority

    • majority

    • q1: 第1四分位数

    • q3: 第3四分位数

    • iqr: 四分位範囲

    • min_length: 文字列長の最小値

    • max_length: 文字列長の最大値

    • concatenate: 文字列を連結文字で連結

    • concatenate_unique: ユニークな文字列のみを連結文字で連結

    • collect: マルチパートジオメトリに集約したものを生成

    • array_agg: 集約値の配列を生成

  • expression - 集約の対象とするサブ式またはフィールド名

  • filter - (オプション)集約の計算に使用する地物を制限するフィルタ式。フィールドとジオメトリは結合されるレイヤの地物からのものです。ソースの地物には変数 @parent でアクセスできます。

  • concatenator - `concatenate' および 'concatenate_unique' 集約の値を結合するために使用するオプションの文字列です。

  • order_by - (オプション)集約値の計算に使用される地物を並べ替えるためのフィルタ式。フィールドとジオメトリは結合されるレイヤの地物からのものです。デフォルトでは、返される地物の順序は決まっていません。

  • aggregate(layer:='rail_stations',aggregate:='sum',expression:="passengers") → rail_stations レイヤの passengers フィールドの値の合計

  • aggregate('rail_stations','sum', "passengers"/7) → "passengers" フィールドを合計する前に7で割って、 "passengers" の日平均を計算する

  • aggregate(layer:='rail_stations',aggregate:='sum',expression:="passengers",filter:="class">3) → "class" 属性が 3 より大きい地物だけ、 "passengers" フィールドの値を合計する

  • aggregate(layer:='rail_stations',aggregate:='concatenate', expression:="name", concatenator:=',') → rail_stations レイヤの全地物の name フィールドをコンマ区切りで連結する

  • aggregate(layer:='countries', aggregate:='max', expression:="code", filter:=intersects( $geometry, geometry(@parent) ) ) → 'countries' レイヤ上で交差している国の国コード

  • aggregate(layer:='rail_stations',aggregate:='sum',expression:="passengers",filter:=contains( @atlas_geometry, $geometry ) ) → 現在の地図帳地物内にある rail_stations レイヤの passengers フィールドの値の合計

  • aggregate(layer:='rail_stations', aggregate:='collect', expression:=centroid($geometry), filter:="region_name" = attribute(@parent,'name') ) → 同じ地域の rail_stations のジオメトリ重心を集約する

13.2.1.2. array_agg

属性値を集約し、配列として返します。

構文

array_agg(expression, [group_by], [filter], [order_by])

記号[]は、オプションの引数を意味します。

引数

  • expression - 集計する属性(サブ式)

  • group_by - (オプション)集約計算のグループ化に使う式

  • filter - (オプション)集約計算の地物フィルタに用いる式

  • order_by - (オプション)集約計算の地物を並べ替えるための式。デフォルトでは、返される地物の順序は決まっていません。

  • array_agg("name",group_by:="state") → state フィールドでグループ化された、name フィールドの値のリスト

13.2.1.3. collect

式で集約されたジオメトリをマルチパートジオメトリとして返します。

構文

collect(expression, [group_by], [filter])

記号[]は、オプションの引数を意味します。

引数

  • expression - 集約するジオメトリ式

  • group_by - (オプション)集約計算のグループ化に使う式

  • filter - (オプション)集約計算の地物フィルタに用いる式

  • collect( $geometry ) → 集約されたジオメトリのマルチパートジオメトリ

  • collect( centroid($geometry), group_by:="region", filter:= "use" = 'civilian' ) → region の値に基づいて civilian の地物の重心を集約する

13.2.1.4. concatenate

フィールドまたは式の値を区切り文字(デリミタ)で連結した文字列を返します。

構文

concatenate(expression, [group_by], [filter], [concatenator], [order_by])

記号[]は、オプションの引数を意味します。

引数

  • expression - 集計する属性(サブ式)

  • group_by - (オプション)集約計算のグループ化に使う式

  • filter - (オプション)集約計算の地物フィルタに用いる式

  • concatenator - (オプション)区切り文字列。デフォルトは空

  • order_by - (オプション)集約計算の地物を並べ替えるための式。デフォルトでは、返される地物の順序は決まっていません。

  • concatenate("town_name",group_by:="state",concatenator:=',') → state フィールドでグループ化された、 town_name のコンマ区切りのリスト

13.2.1.5. concatenate_unique

フィールドまたは式による文字列を重複を除外して区切り文字(デリミタ)で連結した文字列を返します。

構文

concatenate_unique(expression, [group_by], [filter], [concatenator], [order_by])

記号[]は、オプションの引数を意味します。

引数

  • expression - 集計する属性(サブ式)

  • group_by - (オプション)集約計算のグループ化に使う式

  • filter - (オプション)集約計算の地物フィルタに用いる式

  • concatenator - (オプション)区切り文字列。デフォルトは空

  • order_by - (オプション)集約計算の地物を並べ替えるための式。デフォルトでは、返される地物の順序は決まっていません。

  • concatenate_unique("town_name",group_by:="state",concatenator:=',') → state フィールドでグループ化された、重複のない town_name のコンマ区切りのリスト

13.2.1.6. count

マッチする地物の数を返します。

構文

count(expression, [group_by], [filter])

記号[]は、オプションの引数を意味します。

引数

  • expression - 集計する属性(サブ式)

  • group_by - (オプション)集約計算のグループ化に使う式

  • filter - (オプション)集約計算の地物フィルタに用いる式

  • count("stations",group_by:="state") → state フィールドでグループ化された stations の数

13.2.1.7. count_distinct

重複を除いた(distinctな)値の数を返します。

構文

count_distinct(expression, [group_by], [filter])

記号[]は、オプションの引数を意味します。

引数

  • expression - 集計する属性(サブ式)

  • group_by - (オプション)集約計算のグループ化に使う式

  • filter - (オプション)集約計算の地物フィルタに用いる式

  • count_distinct("stations",group_by:="state") → state フィールドでグループ化された、重複のない stations の値の数

13.2.1.8. count_missing

欠損値(NULL)の数を返します

構文

count_missing(expression, [group_by], [filter])

記号[]は、オプションの引数を意味します。

引数

  • expression - 集計する属性(サブ式)

  • group_by - (オプション)集約計算のグループ化に使う式

  • filter - (オプション)集約計算の地物フィルタに用いる式

  • count_missing("stations",group_by:="state") → state フィールドでグループ化された、stations の欠損値(NULL)の数

13.2.1.9. iqr

フィールドまたは式の値の四分位範囲(IQR)を返します。

構文

iqr(expression, [group_by], [filter])

記号[]は、オプションの引数を意味します。

引数

  • expression - 集計する属性(サブ式)

  • group_by - (オプション)集約計算のグループ化に使う式

  • filter - (オプション)集約計算の地物フィルタに用いる式

  • iqr("population",group_by:="state") → state フィールドでグループ化された、population の値の四分位範囲

13.2.1.10. majority

フィールドまたは式の最頻値(最もよく出現する値)を返します。

構文

majority(expression, [group_by], [filter])

記号[]は、オプションの引数を意味します。

引数

  • expression - 集計する属性(サブ式)

  • group_by - (オプション)集約計算のグループ化に使う式

  • filter - (オプション)集約計算の地物フィルタに用いる式

  • majority("class",group_by:="state") → state フィールドでグループ化された、最も頻繁に出現する class の値

13.2.1.11. max_length

フィールドまたは式の文字列の最大長を返します。

構文

max_length(expression, [group_by], [filter])

記号[]は、オプションの引数を意味します。

引数

  • expression - 集計する属性(サブ式)

  • group_by - (オプション)集約計算のグループ化に使う式

  • filter - (オプション)集約計算の地物フィルタに用いる式

  • max_length("town_name",group_by:="state") → state フィールドでグループ化された town_name 文字列の最大長

13.2.1.12. maximum

フィールドまたは式の最大値を返します。

構文

maximum(expression, [group_by], [filter])

記号[]は、オプションの引数を意味します。

引数

  • expression - 集計する属性(サブ式)

  • group_by - (オプション)集約計算のグループ化に使う式

  • filter - (オプション)集約計算の地物フィルタに用いる式

  • maximum("population",group_by:="state") → state フィールドでグループ化された、population の最大値

13.2.1.13. mean

フィールドまたは式の平均値を返します。

構文

mean(expression, [group_by], [filter])

記号[]は、オプションの引数を意味します。

引数

  • expression - 集計する属性(サブ式)

  • group_by - (オプション)集約計算のグループ化に使う式

  • filter - (オプション)集約計算の地物フィルタに用いる式

  • mean("population",group_by:="state") → state フィールドでグループ化された、population の平均値

13.2.1.14. median

フィールドまたは式の中央値を返します。

構文

median(expression, [group_by], [filter])

記号[]は、オプションの引数を意味します。

引数

  • expression - 集計する属性(サブ式)

  • group_by - (オプション)集約計算のグループ化に使う式

  • filter - (オプション)集約計算の地物フィルタに用いる式

  • median("population",group_by:="state") → state フィールドでグループ化された、 population の中央値

13.2.1.15. min_length

フィールドまたは式の文字列の最短長を返します。

構文

min_length(expression, [group_by], [filter])

記号[]は、オプションの引数を意味します。

引数

  • expression - 集計する属性(サブ式)

  • group_by - (オプション)集約計算のグループ化に使う式

  • filter - (オプション)集約計算の地物フィルタに用いる式

  • min_length("town_name",group_by:="state") → state フィールドでグループ化されたtown_name の文字列の最短長

13.2.1.16. minimum

フィールドまたは式の最小値を返します。

構文

minimum(expression, [group_by], [filter])

記号[]は、オプションの引数を意味します。

引数

  • expression - 集計する属性(サブ式)

  • group_by - (オプション)集約計算のグループ化に使う式

  • filter - (オプション)集約計算の地物フィルタに用いる式

  • minimum("population",group_by:="state") → state フィールドでグループ化された、population の最小値

13.2.1.17. minority

フィールドまたは式の最少出現値(出現が最も少ない値)を返します。

構文

minority(expression, [group_by], [filter])

記号[]は、オプションの引数を意味します。

引数

  • expression - 集計する属性(サブ式)

  • group_by - (オプション)集約計算のグループ化に使う式

  • filter - (オプション)集約計算の地物フィルタに用いる式

  • minority("class",group_by:="state") → state フィールドでグループ化された、出現が最も稀な class の値

13.2.1.18. q1

フィールドまたは式の値の第1四分位数を返します。

構文

q1(expression, [group_by], [filter])

記号[]は、オプションの引数を意味します。

引数

  • expression - 集計する属性(サブ式)

  • group_by - (オプション)集約計算のグループ化に使う式

  • filter - (オプション)集約計算の地物フィルタに用いる式

  • q1("population",group_by:="state") → state フィールドでグループ化された、population の値の第1四分位数

13.2.1.19. q3

フィールドまたは式の値の第3四分位数を返します。

構文

q3(expression, [group_by], [filter])

記号[]は、オプションの引数を意味します。

引数

  • expression - 集計する属性(サブ式)

  • group_by - (オプション)集約計算のグループ化に使う式

  • filter - (オプション)集約計算の地物フィルタに用いる式

  • q3("population",group_by:="state") → state フィールドでグループ化された、population の値の第3四分位数

13.2.1.20. range

フィールドまたは式の値の範囲(最大値 - 最小値)を返します。

構文

range(expression, [group_by], [filter])

記号[]は、オプションの引数を意味します。

引数

  • expression - 集計する属性(サブ式)

  • group_by - (オプション)集約計算のグループ化に使う式

  • filter - (オプション)集約計算の地物フィルタに用いる式

  • range("population",group_by:="state") → state フィールドでグループ化された、population の値の範囲

13.2.1.21. relation_aggregate

レイヤのリレーションからマッチする子地物を使用して計算された集計値を返します。

構文

relation_aggregate(relation, aggregate, expression, [concatenator=''], [order_by])

記号[]は、オプションの引数を意味します。

引数

  • relation - リレーションIDを表す文字列

  • aggregate - 計算する集計値に対応する文字列。有効なオプションは次のとおり:

    • count

    • count_distinct

    • count_missing

    • min

    • max

    • sum

    • mean

    • median

    • stdev

    • stdevsample

    • range

    • minority

    • majority

    • q1: 第1四分位数

    • q3: 第3四分位数

    • iqr: 四分位範囲

    • min_length: 文字列長の最小値

    • max_length: 文字列長の最大値

    • concatenate: 文字列を連結文字で連結

    • concatenate_unique: ユニークな文字列のみを連結文字で連結

    • collect: マルチパートジオメトリに集約したものを生成

    • array_agg: 集約値の配列を生成

  • expression - 集約の対象とするサブ式またはフィールド名

  • concatenator - (オプション) 'concatenate' 集約で値の結合に使用される文字

  • order_by - (オプション)集約値の計算に使用される地物を並べ替えるための式。フィールドとジオメトリは結合されるレイヤの地物からのものです。デフォルトでは、返される地物の順序は決まっていません。

  • relation_aggregate(relation:='my_relation',aggregate:='mean',expression:="passengers") → 'my_relation' リレーションを使用してマッチする子地物の passengers の値の平均値

  • relation_aggregate('my_relation','sum', "passengers"/7) → 'my_relation' リレーションを使用してマッチする子地物の passengers フィールドを7で割った値の合計

  • relation_aggregate('my_relation','concatenate', "towns", concatenator:=',') → 'my_relation' リレーションを使用してマッチする子地物の towns フィールドをコンマ区切りで連結したリスト

  • relation_aggregate('my_relation','array_agg', "id") → 'my_relation' リレーションを使用してマッチする子地物の id フィールドの配列

関連する項目: 1対多または多対多のリレーションの作成

13.2.1.22. stdev

フィールドまたは式の標準偏差を返します。

構文

stdev(expression, [group_by], [filter])

記号[]は、オプションの引数を意味します。

引数

  • expression - 集計する属性(サブ式)

  • group_by - (オプション)集約計算のグループ化に使う式

  • filter - (オプション)集約計算の地物フィルタに用いる式

  • stdev("population",group_by:="state") → state フィールドでグループ化された、population の値の標準偏差

13.2.1.23. sum

フィールドまたは式の合計値を返します。

構文

sum(expression, [group_by], [filter])

記号[]は、オプションの引数を意味します。

引数

  • expression - 集計する属性(サブ式)

  • group_by - (オプション)集約計算のグループ化に使う式

  • filter - (オプション)集約計算の地物フィルタに用いる式

  • sum("population",group_by:="state") → state フィールドでグループ化された、population の合計値

13.2.2. 配列関数

このグループには、配列(リストデータ構造とも呼ばれます)の作成と操作のための関数が含まれています。配列では、値の順序こそが重要です。これは、キーと値のペアの順序は関係なく、値はキーによって識別される 「マップ型」のデータ構造 とは異なっています。

13.2.2.1. array

パラメータとして渡されたすべての値を含む配列を返します。

構文

array(value1, value2, ...)

引数

  • value - 値

  • array(2,10) → [ 2, 10 ]

  • array(2,10)[0] → 2

13.2.2.2. array_all

配列が与えられた配列のすべての値を含む場合に TRUE を返します。

構文

array_all(array_a, array_b)

引数

  • array_a - 配列

  • array_b - 値を検索する配列

  • array_all(array(1,2,3),array(2,3)) → TRUE

  • array_all(array(1,2,3),array(1,2,4)) → FALSE

13.2.2.3. array_append

与えられた値が最後に追加された配列を返します。

構文

array_append(array, value)

引数

  • array - 配列

  • value - 追加する値

  • array_append(array(1,2,3),4) → [ 1, 2, 3, 4 ]

13.2.2.4. array_cat

与えられたすべての配列を連結して、一つの配列として返します。

構文

array_cat(array1, array2, ...)

引数

  • array - 配列

  • array_cat(array(1,2),array(2,3)) → [ 1, 2, 2, 3 ]

13.2.2.5. array_contains

配列が与えられた値を含む場合に TRUE を返します。

構文

array_contains(array, value)

引数

  • array - 配列

  • value - 検索する値

  • array_contains(array(1,2,3),2) → TRUE

13.2.2.6. array_count

与えられた値が配列内に存在する数をカウントします。

構文

array_count(array, value)

引数

  • array - 配列

  • value - カウントする値

  • array_count(array('a', 'b', 'c', 'b'), 'b') → 2

13.2.2.7. array_distinct

与えられた配列の値から、相異なる値を含む配列を返します。

構文

array_distinct(array)

引数

  • array - 配列

  • array_distinct(array(1,2,3,2,1)) → [ 1, 2, 3 ]

13.2.2.8. array_filter

式がtrueと判定した要素だけを含む配列を返します。

構文

array_filter(array, expression, [limit=0])

記号[]は、オプションの引数を意味します。

引数

  • array - 配列

  • expression - それぞれの要素に対して評価する式。変数 @element が各要素を表します。

  • limit - 戻り値の要素の最大数。0の場合はすべてを返します。

  • array_filter(array(1,2,3),@element < 3) → [ 1, 2 ]

  • array_filter(array(1,2,3),@element < 3, 1) → [ 1 ]

13.2.2.9. array_find

ある値の配列内における最小インデックス(最初は0から数える)を返します。値が配列内で見つからない場合には -1 を返します。

構文

array_find(array, value)

引数

  • array - 配列

  • value - 検索する値

  • array_find(array('a', 'b', 'c'), 'b') → 1

  • array_find(array('a', 'b', 'c', 'b'), 'b') → 1

13.2.2.10. array_first

配列の最初の値を返します。

構文

array_first(array)

引数

  • array - 配列

  • array_first(array('a','b','c')) → 'a'

13.2.2.11. array_foreach

配列の各要素を与えられた式で評価した結果を配列として返します。

構文

array_foreach(array, expression)

引数

  • array - 配列

  • expression - それぞれの要素に対して評価する式。変数 @element が各要素を表します。

  • array_foreach(array('a','b','c'),upper(@element)) → [ 'A', 'B', 'C' ]

  • array_foreach(array(1,2,3),@element + 10) → [ 11, 12, 13 ]

13.2.2.12. array_get

配列のN番目の値(最初は0から数える)、または最後から -N番目の値(最後は-1 から数える)を返します。

構文

array_get(array, pos)

引数

  • array - 配列

  • pos - 取り出すインデックス(最初は0)

  • array_get(array('a','b','c'),1) → 'b'

  • array_get(array('a','b','c'),-1) → 'c'

ヒント

配列から値を取得するには インデックス演算子 ([]) も使用できます。

13.2.2.13. array_insert

配列の指定された位置に値が挿入された配列を返します。

構文

array_insert(array, pos, value)

引数

  • array - 配列

  • pos - 挿入する位置(最初は0)

  • value - 追加する値

  • array_insert(array(1,2,3),1,100) → [ 1, 100, 2, 3 ]

13.2.2.14. array_intersect

array1 の要素が array2 に少なくとも 1 つ存在する場合に TRUE を返します。

構文

array_intersect(array1, array2)

引数

  • array1 - 配列

  • array2 - 別の配列

  • array_intersect(array(1,2,3,4),array(4,0,2,5)) → TRUE

13.2.2.15. array_last

配列の最後の値を返します。

構文

array_last(array)

引数

  • array - 配列

  • array_last(array('a','b','c')) → 'c'

13.2.2.16. array_length

配列の要素の数を返します。

構文

array_length(array)

引数

  • array - 配列

  • array_length(array(1,2,3)) → 3

13.2.2.17. array_majority

配列内で最も頻出する値を返します。

構文

array_majority(array, [option='all'])

記号[]は、オプションの引数を意味します。

引数

  • array - 配列

  • option='all' - 戻り値の処理を指定する文字列。有効なオプションは次のとおり:

    • all: デフォルトの設定で、最頻値すべてを配列形式で返します。

    • any: 最頻値の一つを返します。

    • median: 最頻値の中央値を返します。非数値は無視されます。

    • real_majority: 配列サイズの半数よりも多い値を返します。

  • array_majority(array(0,1,42,42,43), 'all') → [ 42 ]

  • array_majority(array(0,1,42,42,43,1), 'all') → [ 42, 1 ]

  • array_majority(array(0,1,42,42,43,1), 'any') → 1 か 42

  • array_majority(array(0,1,1,2,2), 'median') → 1.5

  • array_majority(array(0,1,42,42,43), 'real_majority') → NULL

  • array_majority(array(0,1,42,42,43,42), 'real_majority') → NULL

  • array_majority(array(0,1,42,42,43,42,42), 'real_majority') → 42

13.2.2.18. array_max

配列の最大値を返します。

構文

array_max(array)

引数

  • array - 配列

  • array_max(array(0,42,4,2)) → 42

13.2.2.19. array_mean

配列の算術平均値を返します。配列内の非数値は無視されます。

構文

array_mean(array)

引数

  • array - 配列

  • array_mean(array(0,1,7,66.6,135.4)) → 42

  • array_mean(array(0,84,'a','b','c')) → 42

13.2.2.20. array_median

配列の中央値を返します。配列内の非数値は無視されます。

構文

array_median(array)

引数

  • array - 配列

  • array_median(array(0,1,42,42,43)) → 42

  • array_median(array(0,1,2,42,'a','b')) → 1.5

13.2.2.21. array_min

配列の最小値を返します。

構文

array_min(array)

引数

  • array - 配列

  • array_min(array(43,42,54)) → 42

13.2.2.22. array_minority

配列内で最も稀な値を返します。

構文

array_minority(array, [option='all'])

記号[]は、オプションの引数を意味します。

引数

  • array - 配列

  • option='all' - 戻り値の処理を指定する文字列。有効なオプションは次のとおり:

    • all: デフォルトの設定で、最稀値すべてを配列形式で返します。

    • any: 最稀値の一つを返します。

    • median: 最稀値の中央値を返します。非数値は無視されます。

    • real_minority: 配列サイズの半数以下の値を返します。

  • array_minority(array(0,42,42), 'all') → [ 0 ]

  • array_minority(array(0,1,42,42), 'all') → [ 0, 1 ]

  • array_minority(array(0,1,42,42,43,1), 'any') → 0 か 43

  • array_minority(array(1,2,3,3), 'median') → 1.5

  • array_minority(array(0,1,42,42,43), 'real_minority') → [ 42, 43, 0, 1 ]

  • array_minority(array(0,1,42,42,43,42), 'real_minority') → [ 42, 43, 0, 1 ]

  • array_minority(array(0,1,42,42,43,42,42), 'real_minority') → [ 43, 0, 1 ]

13.2.2.23. array_prepend

与えられた値が先頭に追加された配列を返します。

構文

array_prepend(array, value)

引数

  • array - 配列

  • value - 追加する値

  • array_prepend(array(1,2,3),0) → [ 0, 1, 2, 3 ]

13.2.2.24. array_prioritize

ある配列を別の配列で指定された順序でソートしたものを返します。第1引数の配列にはあり、第2引数の配列には無い値は、結果の配列の末尾に追加されます。

構文

array_prioritize(array, array_prioritize)

引数

  • array - 配列

  • array_prioritize - 値の優先順で並べられた配列

  • array_prioritize(array(1, 8, 2, 5), array(5, 4, 2, 1, 3, 8)) → [ 5, 2, 1, 8 ]

  • array_prioritize(array(5, 4, 2, 1, 3, 8), array(1, 8, 6, 5)) → [ 1, 8, 5, 4, 2, 3 ]

13.2.2.25. array_remove_all

配列から指定された値がすべて削除された配列を返します。

構文

array_remove_all(array, value)

引数

  • array - 配列

  • value - 削除する値

  • array_remove_all(array('a','b','c','b'),'b') → [ 'a', 'c' ]

13.2.2.26. array_remove_at

与えられたインデックスの項目を取り除いた配列を返します。正のインデックス(最初の要素は0)および負のインデックス(最後の-N番目の値、最後の要素は-1)をサポートします。

構文

array_remove_at(array, pos)

引数

  • array - 配列

  • pos - 削除する位置(最初は0)

  • array_remove_at(array(1, 2, 3), 1) → [1, 3 ]

  • array_remove_at(array(1, 2, 3), -1) → [1, 2 ]

13.2.2.27. array_replace

配列を指定した別の値、配列またはマップ型オブジェクトで置換した配列を返します。

値・配列バージョン

指定された値または値の配列を、別の値または値の配列で置換した配列を返します。

構文

array_replace(array, before, after)

引数

  • array - 入力配列

  • before - 置換される値または配列

  • after - 置き換えに使用する値または配列

  • array_replace(array('QGIS','SHOULD','ROCK'),'SHOULD','DOES') → [ 'QGIS', 'DOES', 'ROCK' ]

  • array_replace(array(3,2,1),array(1,2,3),array(7,8,9)) → [ 9, 8, 7 ]

  • array_replace(array('Q','G','I','S'),array('Q','S'),'-') → [ '-', 'G', 'I', '-' ]

マップ型バージョン

指定されたマップ型のキーを対応する値で置き換えた配列を返します。

構文

array_replace(array, map)

引数

  • array - 入力配列

  • map - キーと値のペアを含むマップ型オブジェクト

  • array_replace(array('APP', 'SHOULD', 'ROCK'),map('APP','QGIS','SHOULD','DOES')) → [ 'QGIS', 'DOES', 'ROCK' ]

13.2.2.28. array_reverse

逆順にした配列を返します。

構文

array_reverse(array)

引数

  • array - 配列

  • array_reverse(array(2,4,0,10)) → [ 10, 0, 4, 2 ]

13.2.2.29. array_slice

配列の一部を返します。スライスは、start_posとend_posの引数で定義されます。

構文

array_slice(array, start_pos, end_pos)

引数

  • array - 配列

  • start_pos - スライスの開始位置のインデックス(最初は0)。start_posインデックスの値はスライス内に含まれます。start_pos を負の値とした場合、インデックスをリストの最後から数えます(最後の要素は-1)。

  • end_pos - スライスの終了位置のインデックス(最初は0)。end_posインデックスの値はスライス内に含まれます。end_pos を負の値とした場合、インデックスをリストの最後から数えます(最後の要素は-1)。

  • array_slice(array(1,2,3,4,5),0,3) → [ 1, 2, 3, 4 ]

  • array_slice(array(1,2,3,4,5),0,-1) → [ 1, 2, 3, 4, 5 ]

  • array_slice(array(1,2,3,4,5),-5,-1) → [ 1, 2, 3, 4, 5 ]

  • array_slice(array(1,2,3,4,5),0,0) → [ 1 ]

  • array_slice(array(1,2,3,4,5),-2,-1) → [ 4, 5 ]

  • array_slice(array(1,2,3,4,5),-1,-1) → [ 5 ]

  • array_slice(array('Dufour','Valmiera','Chugiak','Brighton'),1,2) → [ 'Valmiera', 'Chugiak' ]

  • array_slice(array('Dufour','Valmiera','Chugiak','Brighton'),-2,-1) → [ 'Chugiak', 'Brighton' ]

13.2.2.30. array_sort

指定された配列の要素をソートして返します。

構文

array_sort(array, [ascending=true])

記号[]は、オプションの引数を意味します。

引数

  • array - 配列

  • ascending - このパラメータをfalseとすると、配列を降順でソートする

  • array_sort(array(3,2,1)) → [ 1, 2, 3 ]

13.2.2.31. array_sum

配列の合計値を返します。配列内の非数値は無視されます。

構文

array_sum(array)

引数

  • array - 配列

  • array_sum(array(0,1,39.4,1.6,'a')) → 42.0

13.2.2.32. array_to_string

配列の要素を区切り文字で連結した文字列を返します。空の値を置き換える文字列を指定できます。

構文

array_to_string(array, [delimiter=','], [empty_value=''])

記号[]は、オプションの引数を意味します。

引数

  • array - 入力配列

  • delimiter - 連結する配列要素を区切るために使用する区切り文字

  • empty_value - (オプション)空のマッチ(長さゼロ)の代わりに使用する文字列

  • array_to_string(array('1','2','3')) → '1,2,3'

  • array_to_string(array(1,2,3),'-') → '1-2-3'

  • array_to_string(array('1','','3'),',','0') → '1,0,3'

13.2.2.33. generate_series

連続した数字からなる配列を作ります。

構文

generate_series(start, stop, [step=1])

記号[]は、オプションの引数を意味します。

引数

  • start - シーケンスの最初の値

  • stop - シーケンスの最後の値

  • step - 増分値

  • generate_series(1,5) → [ 1, 2, 3, 4, 5 ]

  • generate_series(5,1,-1) → [ 5, 4, 3, 2, 1 ]

13.2.2.34. geometries_to_array

ジオメトリをより単純なジオメトリに分割し、配列にします。

構文

geometries_to_array(geometry)

引数

  • geometry - 入力ジオメトリ

  • geometries_to_array(geom_from_wkt('GeometryCollection (Polygon ((5 8, 4 1, 3 2, 5 8)),LineString (3 2, 4 2))')) → ポリゴンとラインジオメトリの配列

  • geom_to_wkt(geometries_to_array(geom_from_wkt('GeometryCollection (Polygon ((5 8, 4 1, 3 2, 5 8)),LineString (3 2, 4 2))'))[0]) → 'Polygon ((5 8, 4 1, 3 2, 5 8))'

  • geometries_to_array(geom_from_wkt('MULTIPOLYGON(((5 5,0 0,0 10,5 5)),((5 5,10 10,10 0,5 5))')) → 二つのポリゴンジオメトリの配列

13.2.2.35. regexp_matches

文字列に対する正規表現でグループが現れた順に、キャプチャグループによってキャプチャされた文字列すべての配列を返します。

構文

regexp_matches(string, regex, [empty_value=''])

記号[]は、オプションの引数を意味します。

引数

  • string - 正規表現でグループをキャプチャする対象の文字列

  • regex - グループをキャプチャするために使用する正規表現

  • empty_value - (オプション)空のマッチ(長さゼロ)の代わりに使用する文字列

  • regexp_matches('QGIS=>rocks','(.*)=>(.*)') → [ 'QGIS', 'rocks' ]

  • regexp_matches('key=>','(.*)=>(.*)','empty value') → [ 'key', 'empty value' ]

13.2.2.36. string_to_array

文字列を指定された区切り文字で配列に分割します。空の値の代わりの文字列を指定するオプションがあります。

構文

string_to_array(string, [delimiter=','], [empty_value=''])

記号[]は、オプションの引数を意味します。

引数

  • string - 入力文字列

  • delimiter - 入力文字列を分割するための区切り文字

  • empty_value - (オプション)空のマッチ(長さゼロ)の代わりに使用する文字列

  • string_to_array('1,2,3',',') → [ '1', '2', '3' ]

  • string_to_array('1,,3',',','0') → [ '1', '0', '3' ]

13.2.3. 色関数

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

13.2.3.1. color_cmyk

シアン、マゼンタ、イエロー、ブラック成分に基づいて、色を表す文字列を返します。

構文

color_cmyk(cyan, magenta, yellow, black)

引数

  • cyan - 色のシアン成分。0から100までのパーセンテージの整数値

  • magenta - 色のマゼンタ成分。0から100までのパーセンテージの整数値

  • yellow - 色のイエロー成分。0から100までのパーセンテージの整数値

  • black - 色のブラック成分。0から100までのパーセンテージの整数値

  • color_cmyk(100,50,0,10) → '0,115,230'

13.2.3.2. color_cmyka

シアン、マゼンタ、イエロー、ブラックおよびアルファ(透明度)成分に基づいて、色を表す文字列を返します。

構文

color_cmyka(cyan, magenta, yellow, black, alpha)

引数

  • cyan - 色のシアン成分。0から100までのパーセンテージの整数値

  • magenta - 色のマゼンタ成分。0から100までのパーセンテージの整数値

  • yellow - 色のイエロー成分。0から100までのパーセンテージの整数値

  • black - 色のブラック成分。0から100までのパーセンテージの整数値

  • alpha - 色のアルファ成分。0(完全に透明)から255(不透明)までの整数値

  • color_cmyka(100,50,0,10,200) → '0,115,230,200'

13.2.3.3. color_grayscale_average

指定された色にグレースケールフィルタを適用した色を表す文字列を返します。

構文

color_grayscale_average(color)

引数

  • color - 色を表す文字列

  • color_grayscale_average('255,100,50') → '135,135,135,255'

13.2.3.4. color_hsl

色相、彩度、輝度属性に基づいて、色を表す文字列を返します。

構文

color_hsl(hue, saturation, lightness)

引数

  • hue - 色相。0から360までの整数値

  • saturation - 彩度。0から100までのパーセンテージの整数値

  • lightness - 輝度。0から100までのパーセンテージの整数値

  • color_hsl(100,50,70) → '166,217,140'

13.2.3.5. color_hsla

色相、彩度、輝度およびアルファ(透明度)属性に基づいて、色を表す文字列を返します。

構文

color_hsla(hue, saturation, lightness, alpha)

引数

  • hue - 色相。0から360までの整数値

  • saturation - 彩度。0から100までのパーセンテージの整数値

  • lightness - 輝度。0から100までのパーセンテージの整数値

  • alpha - 色のアルファ成分。0(完全に透明)から255(不透明)までの整数値

  • color_hsla(100,50,70,200) → '166,217,140,200'

13.2.3.6. color_hsv

色相、彩度、明度属性に基づいて、色を表す文字列を返します。

構文

color_hsv(hue, saturation, value)

引数

  • hue - 色相。0から360までの整数値

  • saturation - 彩度。0から100までのパーセンテージの整数値

  • value - 明度。0から100までのパーセンテージの整数値

  • color_hsv(40,100,100) → '255,170,0'

13.2.3.7. color_hsva

色相、彩度、明度およびアルファ(透明度)属性に基づいて、色を表す文字列を返します。

構文

color_hsva(hue, saturation, value, alpha)

引数

  • hue - 色相。0から360までの整数値

  • saturation - 彩度。0から100までのパーセンテージの整数値

  • value - 明度。0から100までのパーセンテージの整数値

  • alpha - 色のアルファ成分。0(完全に透明)から255(不透明)までの整数値

  • color_hsva(40,100,100,200) → '255,170,0,200'

13.2.3.8. color_mix_rgb

2つの指定された色の赤、緑、青、アルファ値を、与えられた比率に基づいて混合させた色を表す文字列を返します。

構文

color_mix_rgb(color1, color2, ratio)

引数

  • color1 - 色を表す文字列

  • color2 - 色を表す文字列

  • ratio - 混合比率

  • color_mix_rgb('0,0,0','255,255,255',0.5) → '127,127,127,255'

13.2.3.9. color_part

色を表す文字列から、赤色成分やアルファ成分など特定の成分を返します。

構文

color_part(color, component)

引数

  • color - 色を表す文字列

  • component - 戻り値となる、色の成分に対応する文字列。有効なオプションは次のとおり:

    • red: RGB の赤色成分(0-255)

    • green: RGB の緑色成分(0-255)

    • blue: RGB の青色成分(0-255)

    • alpha: アルファ(透明度)値(0-255)

    • hue: HSV の色相(0-360)

    • saturation: HSV の彩度(0-100)

    • value: HSV の明度(0-100)

    • hsl_hue: HSL の色相(0-360)

    • hsl_saturation: HSL の彩度(0-100)

    • lightness: HSL の輝度(0-100)

    • cyan: CMYK のシアン成分(0-100)

    • magenta: CMYK のマゼンタ成分(0-100)

    • yellow: CMYK のイエロー成分(0-100)

    • black: CMYK のブラック成分(0-100)

  • color_part('200,10,30','green') → 10

13.2.3.10. color_rgb

赤、緑、青成分に基づいて、色を表す文字列を返します。

構文

color_rgb(red, green, blue)

引数

  • red - 赤色成分。0から255までの整数値

  • green - 緑色成分。0から255までの整数値

  • blue - 青色成分。0から255までの整数値

  • color_rgb(255,127,0) → '255,127,0'

13.2.3.11. color_rgba

赤、緑、青およびアルファ(透明度)成分に基づいて、色を表す文字列を返します。

構文

color_rgba(red, green, blue, alpha)

引数

  • red - 赤色成分。0から255までの整数値

  • green - 緑色成分。0から255までの整数値

  • blue - 青色成分。0から255までの整数値

  • alpha - 色のアルファ成分。0(完全に透明)から255(不透明)までの整数値

  • color_rgba(255,127,0,200) → '255,127,0,200'

13.2.3.12. create_ramp

色文字列とステップのマップ型オブジェクトで定義された、グラデーションランプを返します。

構文

create_ramp(map, [discrete=false])

記号[]は、オプションの引数を意味します。

引数

  • map - 色文字列とステップのマップ型オブジェクト

  • discrete - 離散的なカラーマップを作る場合、このパラメータをtrueに設定する

  • ramp_color(create_ramp(map(0,'0,0,0',1,'255,0,0')),1) → '255,0,0,255'

13.2.3.13. darker

指定した色を基準に、より暗い(または明るい)色の色文字列を返します。

構文

darker(color, factor)

引数

  • color - 色を表す文字列

  • factor - 暗化係数に相当する整数

    • 係数が100よりも大きい場合には、この関数はより暗い色を返します(例えば、係数を200とすると、輝度が半分の色が返されます)。

    • 係数が100よりも小さい場合には、戻り値の色はより明るくなります。ただし、この目的では lighter() 関数を使用することを推奨します。

    • 係数が0または負の値の場合には、戻り値は未定義です。

  • darker('200,10,30', 200) → '100,5,15,255'

参考: lighter

13.2.3.14. lighter

指定した色を基準に、より明るい(または暗い)色の色文字列を返します。

構文

lighter(color, factor)

引数

  • color - 色を表す文字列

  • factor - 明化係数に相当する整数

    • 係数が100よりも大きい場合には、この関数はより明るい色を返します(例えば、係数を150とすると、50%明るい色が返されます)。

    • 係数が100よりも小さい場合には、戻り値の色はより暗くなります。ただし、この目的では darker() 関数を使用することを推奨します。

    • 係数が0または負の値の場合には、戻り値は未定義です。

  • lighter('200,10,30', 200) → '255,158,168,255'

参考: darker

13.2.3.15. project_color

プロジェクトのカラースキーマから色を返します。

構文

project_color(name)

引数

  • name - 色の名前

  • project_color('Logo color') → '20,140,50'

参考: プロジェクトの色の設定

13.2.3.16. ramp_color

カラーランプから、色を表す文字列を返します。

保存済みカラーランプバージョン

保存済みカラーランプから、色を表す文字列を返します。

構文

ramp_color(ramp_name, value)

引数

  • ramp_name - カラーランプの名前の文字列。例: 'Spectral'

  • value - ランプ上で色を取得する位置。0と1の間の実数値

  • ramp_color('Spectral',0.3) → '253,190,115,255'

注釈

利用可能なカラーランプはQGISのインストール環境によって異なります。異なるインストール環境にQGISプロジェクトを移動した場合、この関数は期待した結果が得られない場合があります。

式によって定義されたカラーランプバージョン

式によって定義されたカラーランプから、色を表す文字列を返します。

構文

ramp_color(ramp, value)

引数

  • ramp - カラーランプ

  • value - ランプ上で色を取得する位置。0と1の間の実数値

  • ramp_color(create_ramp(map(0,'0,0,0',1,'255,0,0')),1) → '255,0,0,255'

参考: カラーランプの設定カラーランプのドロップダウンショートカット

13.2.3.17. set_color_part

色を表す文字列に対して、赤色成分やアルファ成分など特定の色成分を設定します。

構文

set_color_part(color, component, value)

引数

  • color - 色を表す文字列

  • component - 設定する色の成分に対応する文字列。有効なオプションは次のとおり:

    • red: RGB の赤色成分(0-255)

    • green: RGB の緑色成分(0-255)

    • blue: RGB の青色成分(0-255)

    • alpha: アルファ(透明度)値(0-255)

    • hue: HSV の色相(0-360)

    • saturation: HSV の彩度(0-100)

    • value: HSV の明度(0-100)

    • hsl_hue: HSL の色相(0-360)

    • hsl_saturation: HSL の彩度(0-100)

    • lightness: HSL の輝度(0-100)

    • cyan: CMYK のシアン成分(0-100)

    • magenta: CMYK のマゼンタ成分(0-100)

    • yellow: CMYK のイエロー成分(0-100)

    • black: CMYK のブラック成分(0-100)

  • value - 色成分の新しい値。上記の値の範囲に従う

  • set_color_part('200,10,30','green',50) → '200,50,30,255'

13.2.4. 条件関数

このグループには、式の中で条件分けに使う関数があります。

13.2.4.1. CASE

CASEは、一連の条件を評価し、条件が最初に満たされる結果を返します。条件は上から順に評価され、ある条件がtrueであれば評価を停止し、対応する結果が返されます。どの条件もtrueでない場合は、ELSE節の値が返されます。ELSE節が無く、いずれの条件も満たさない場合には、NULLが返されます。

CASE

WHEN condition THEN result

[ …n ]

[ ELSE result ]

END

記号[]は、オプションの引数を意味します。

引数

  • WHEN condition - 評価される条件式

  • THEN result - condition 式がtrue の場合、 result 式が評価され、返されます。

  • ELSE result - 上にある条件式がどれもtrueと評価されない場合には、 result 式が評価され、返されます。

  • CASE WHEN "name" IS NULL THEN 'None' END → "name" フィールドが NULL の場合には、文字列 'None' を返す

  • CASE WHEN $area > 10000 THEN 'Big property' WHEN $area > 5000 THEN 'Medium property' ELSE 'Small property' END → 面積が10000よりも大きい場合には文字列 'Big property' を、面積が5000から10000の場合には文字列 'Medium property' を、それ以外の場合には文字列 'Small property' を返す

13.2.4.2. coalesce

式リストから最初の非NULL値を返します。

この関数は、任意の数の引数をとることができます。

構文

coalesce(expression1, expression2, ...)

引数

  • expression - 型に関わらず、有効な式または値。

  • coalesce(NULL, 2) → 2

  • coalesce(NULL, 2, 3) → 2

  • coalesce(7, NULL, 3*2) → 7

  • coalesce("fieldA", "fallbackField", 'ERROR') → fieldA が非NULLの場合には fieldA の値。fieldA がNULLの場合は fallbackField の値。両方ともNULLの場合には、文字列 'ERROR'

13.2.4.3. if

条件をテストし、それに応じて異なる結果を返します。

構文

if(condition, result_when_true, result_when_false)

引数

  • condition - チェックする条件

  • result_when_true - 条件がtrueか、あるいはfalseに変換できない値である場合に返される結果

  • result_when_false - 条件がfalseであるか、0や長さゼロの文字列 ''といったfalseに変換される値である場合に返される結果。NULLもfalseに変換されます。

  • if( 1+1=2, 'Yes', 'No' ) → 'Yes'

  • if( 1+1=3, 'Yes', 'No' ) → 'No'

  • if( 5 > 3, 1, 0) → 1

  • if( '', 'It is true (not empty)', 'It is false (empty)' ) → 'It is false (empty)'

  • if( ' ', 'It is true (not empty)', 'It is false (empty)' ) → 'It is true (not empty)'

  • if( 0, 'One', 'Zero' ) → 'Zero'

  • if( 10, 'One', 'Zero' ) → 'One'

13.2.4.4. nullif

value1がvalue2と等しい場合にはNULLを返し、そうでない場合にはvalue1を返します。この関数は、条件によって値をNULLに置き換える場合に便利です。

構文

nullif(value1, value2)

引数

  • value1 - そのまま使われるか、NULLに置き換えられる値

  • value2 - NULL置換の基準になる値

  • nullif('(none)', '(none)') → NULL

  • nullif('text', '(none)') → 'text'

  • nullif("name", '') → nameが空文字列(またはNULL)の場合はNULL、そうでない場合はname

13.2.4.5. regexp_match

unicode文字列内で正規表現にマッチする最初の位置を返します。部分文字列が見つからない場合、0を返します。

構文

regexp_match(input_string, regex)

引数

  • input_string - 正規表現に対してテストする文字列

  • regex - テストする正規表現。バックスラッシュは二重にエスケープする必要があります(たとえば、空白文字に一致させる場合は "\\s" 、単語の境界に一致させる場合は "\\b" )

  • regexp_match('QGIS ROCKS','\\sROCKS') → 5

  • regexp_match('Budač','udač\\b') → 2

13.2.4.6. try

式の評価を試し、エラーがなければその値を返します。式がエラーとなる場合には、指定された代替値を返します。指定値がない場合はNULLを返します。

構文

try(expression, [alternative])

記号[]は、オプションの引数を意味します。

引数

  • expression - 評価したい式

  • alternative - 式がエラーを返す場合に返したい値

  • try( to_int( '1' ), 0 ) → 1

  • try( to_int( 'a' ), 0 ) → 0

  • try( to_date( 'invalid_date' ) ) → NULL

13.2.5. 変換関数

このグループには、あるデータ型を他の型に変換する関数が含まれます(例えば文字列型と整数型の変換、文字列型とバイナリ型の変換、文字列から日付への変換など)。

13.2.5.1. from_base64

Base64エンコードの文字列をバイナリ値にデコードします。

構文

from_base64(string)

引数

  • string - デコードする文字列

  • from_base64('UUdJUw==') → 'QGIS'

13.2.5.2. hash

指定された方法で文字列からハッシュを作ります。1バイト(8ビット)は16進数2文字で表されるので、 'md4' (16 bytes)では 16 * 2 = 32 文字に、 'keccak_512' (64 bytes)では 64 * 2 = 128 文字になります。

構文

hash(string, method)

引数

  • string - ハッシュ化する文字列

  • method - ハッシュ化方法: 'md4', 'md5', 'sha1', 'sha224', 'sha384', 'sha512', 'sha3_224', 'sha3_256', 'sha3_384', 'sha3_512', 'keccak_224', 'keccak_256', 'keccak_384', 'keccak_512'

  • hash('QGIS', 'md4') → 'c0fc71c241cdebb6e888cbac0e2b68eb'

  • hash('QGIS', 'md5') → '57470aaa9e22adaefac7f5f342f1c6da'

  • hash('QGIS', 'sha1') → 'f87cfb2b74cdd5867db913237024e7001e62b114'

  • hash('QGIS', 'sha224') → '4093a619ada631c770f44bc643ead18fb393b93d6a6af1861fcfece0'

  • hash('QGIS', 'sha256') → 'eb045cba7a797aaa06ac58830846e40c8e8c780bc0676d3393605fae50c05309'

  • hash('QGIS', 'sha384') → '91c1de038cc3d09fdd512e99f9dd9922efadc39ed21d3922e69a4305cc25506033aee388e554b78714c8734f9cd7e610'

  • hash('QGIS', 'sha512') → 'c2c092f2ab743bf8edbeb6d028a745f30fc720408465ed369421f0a4e20fa5e27f0c90ad72d3f1d836eaa5d25cd39897d4cf77e19984668ef58da6e3159f18ac'

  • hash('QGIS', 'sha3_224') → '467f49a5039e7280d5d42fd433e80d203439e338eaabd701f0d6c17d'

  • hash('QGIS', 'sha3_256') → '540f7354b6b8a6e735f2845250f15f4f3ba4f666c55574d9e9354575de0e980f'

  • hash('QGIS', 'sha3_384') → '96052da1e77679e9a65f60d7ead961b287977823144786386eb43647b0901fd8516fa6f1b9d243fb3f28775e6dde6107'

  • hash('QGIS', 'sha3_512') → '900d079dc69761da113980253aa8ac0414a8bd6d09879a916228f8743707c4758051c98445d6b8945ec854ff90655005e02aceb0a2ffc6a0ebf818745d665349'

  • hash('QGIS', 'keccak_224') → '5b0ce6acef8b0a121d4ac4f3eaa8503c799ad4e26a3392d1fb201478'

  • hash('QGIS', 'keccak_256') → '991c520aa6815392de24087f61b2ae0fd56abbfeee4a8ca019c1011d327c577e'

  • hash('QGIS', 'keccak_384') → 'c57a3aed9d856fa04e5eeee9b62b6e027cca81ba574116d3cc1f0d48a1ef9e5886ff463ea8d0fac772ee473bf92f810d'

13.2.5.3. md5

文字列からmd5ハッシュを作ります。

構文

md5(string)

引数

  • string - ハッシュ化する文字列

  • md5('QGIS') → '57470aaa9e22adaefac7f5f342f1c6da'

13.2.5.4. sha256

文字列からsha256ハッシュを作ります。

構文

sha256(string)

引数

  • string - ハッシュ化する文字列

  • sha256('QGIS') → 'eb045cba7a797aaa06ac58830846e40c8e8c780bc0676d3393605fae50c05309'

13.2.5.5. to_base64

バイナリ値をBase64エンコードを使用して文字列にエンコードします。

構文

to_base64(value)

引数

  • value - エンコードするバイナリ値

  • to_base64('QGIS') → 'UUdJUw=='

13.2.5.6. to_date

文字列を日付型オブジェクトに変換します。オプションとして、文字列をパースするためのフォーマット文字列を指定できます。フォーマットに関するドキュメントは、 QDate::fromString または format_date 関数のドキュメントを参照してください。デフォルトでは現在のQGISユーザーのロケールを使用します。

構文

to_date(string, [format], [language])

記号[]は、オプションの引数を意味します。

引数

  • string - 日付を表す文字列

  • format - 文字列を日付型に変換するために使用するフォーマット

  • language - 日付型に変換する文字列の言語(2文字または3文字の小文字、 ISO 639 言語名コード)。デフォルトでは現在のQGISユーザーのロケールを使用します

  • to_date('2012-05-04') → 2012-05-04

  • to_date('June 29, 2019','MMMM d, yyyy') → 2019-06-29 (現在のロケールが6番目の月名に 'June' を使用する言語の場合の結果。そうでない場合はエラーが発生します)

  • to_date('29 juin, 2019','d MMMM, yyyy','fr') → 2019-06-29

13.2.5.7. to_datetime

文字列を日付時刻型オブジェクトに変換します。オプションとして、文字列をパースするためのフォーマット文字列を指定できます。フォーマットに関するドキュメントは、 QDate::fromStringQTime::fromString または format_date 関数のドキュメントを参照してください。デフォルトでは現在のQGISユーザーのロケールを使用します。

構文

to_datetime(string, [format], [language])

記号[]は、オプションの引数を意味します。

引数

  • string - 日付時刻を表す文字列

  • format - 文字列を日付時刻型に変換するために使用するフォーマット

  • language - 日付時刻型に変換する文字列の言語(2文字または3文字の小文字、 ISO 639 言語名コード)。デフォルトでは現在のQGISユーザーのロケールを使用します

  • to_datetime('2012-05-04 12:50:00') → 2012-05-04T12:50:00

  • to_datetime('June 29, 2019 @ 12:34','MMMM d, yyyy @ HH:mm') → 2019-06-29T12:34(現在のロケールが6番目の月名に 'June' を使用する言語の場合の結果。そうでない場合はエラーが発生します)

  • to_datetime('29 juin, 2019 @ 12:34','d MMMM, yyyy @ HH:mm','fr') → 2019-06-29T12:34

13.2.5.8. to_decimal

度分秒の座標を十進数に変換します。

構文

to_decimal(value)

引数

  • value - 度分秒の文字列

  • to_decimal('6°21\'16.445') → 6.3545680555

13.2.5.9. to_dm

座標を度、分単位に変換します。

構文

to_dm(coordinate, axis, precision, [formatting=])

記号[]は、オプションの引数を意味します。

引数

  • coordinate - 緯度または経度の値

  • axis - 座標軸。 'x' または 'y'

  • precision - 小数点以下の桁数

  • formatting - フォーマット型を指定する。NULL(デフォルト値)、 'aligned' または 'suffix'

  • to_dm(6.1545681, 'x', 3) → 6°9.274′

  • to_dm(6.1545681, 'y', 4, 'aligned') → 6°09.2741′N

  • to_dm(6.1545681, 'y', 4, 'suffix') → 6°9.2741′N

13.2.5.10. to_dms

座標を度、分、秒形式に変換します。

構文

to_dms(coordinate, axis, precision, [formatting=])

記号[]は、オプションの引数を意味します。

引数

  • coordinate - 緯度または経度の値

  • axis - 座標軸。 'x' または 'y'

  • precision - 小数点以下の桁数

  • formatting - フォーマット型を指定する。NULL(デフォルト値)、 'aligned' または 'suffix'

  • to_dms(6.1545681, 'x', 3) → 6°9′16.445″

  • to_dms(6.1545681, 'y', 4, 'aligned') → 6°09′16.4452″N

  • to_dms(6.1545681, 'y', 4, 'suffix') → 6°9′16.4452″N

13.2.5.11. to_int

文字列を整数値に変換します。整数値に変換できない場合は何も返されません(例えば '123asd' は無効な文字列です)。

構文

to_int(string)

引数

  • string - 整数値に変換する文字列

  • to_int('123') → 123

13.2.5.12. to_interval

文字列をインターバル型に変換します。日付に日、時間、月などを加減することに利用できます。

構文

to_interval(string)

引数

  • string - インターバルを表す文字列。有効なフォーマットには、 {n} days 、 {n} hours 、 {n} months などが含まれます。

  • to_interval('1 day 2 hours') → 間隔: 1.08333 日

  • to_interval( '0.5 hours' ) → 間隔: 30 分

  • to_datetime('2012-05-05 12:00:00') - to_interval('1 day 2 hours') → 2012-05-04T10:00:00

13.2.5.13. to_real

文字列を実数値に変換します。値が実数に変換できない場合は何も返されません(例えば '123.56asd' は無効な文字列です)。フィールドの精度が変換結果の精度より小さい場合には、保存時に数値が丸められます。

構文

to_real(string)

引数

  • string - 実数値に変換する文字列

  • to_real('123.45') → 123.45

13.2.5.14. to_string

数値を文字列に変換します。

構文

to_string(number)

引数

  • number - 整数または実数値。文字列に変換する数値

  • to_string(123) → '123'

13.2.5.15. to_time

文字列を時間型オブジェクトに変換します。オプションとして、文字列をパースするためのフォーマット文字列を指定できます。フォーマットに関するドキュメントは、 QTime::fromString を参照してください。

構文

to_time(string, [format], [language])

記号[]は、オプションの引数を意味します。

引数

  • string - 時刻を表す文字列

  • format - 文字列を時間型に変換するために使用するフォーマット

  • language - 時間型に変換する文字列の言語(2文字または3文字の小文字、 ISO 639 言語名コード)

  • to_time('12:30:01') → 12:30:01

  • to_time('12:34','HH:mm') → 12:34:00

  • to_time('12:34','HH:mm','fr') → 12:34:00

13.2.6. カスタム関数

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

13.2.7. 日付と時刻の関数

このグループには、日付や時刻のデータを扱う関数が含まれています。このグループは、 変換関数 (to_date, to_time, to_datetime, to_interval)や 文字列関数 (format_date)グループといくつかの関数を共有しています。

注釈

フィールドに日付、日付時刻、インターバルを格納する

日付時間日付時刻 の値をフィールドに直接格納できるかは、データソースプロバイダに依存しています(例えば、シェープファイルは 日付 の形式は可能ですが、 日付時刻時間 の形式は不可です)。以下は、このような制限がある場合に制限を克服するための案です:

  • 日付日付時刻時間 の値は format_date() 関数を使用して変換し、テキスト型のフィールドに格納できます。

  • インターバル は、日付抽出関数のどれか(例:日単位で表現されたインターバルを取得するには day() )を使用した後、整数型または実数型のフィールドに格納できます。

13.2.7.1. age

2つの日付または日付時刻の差を返します。

差は インターバル型 として返されるため、有用な情報を抽出するためには以下のいずれかの関数と一緒に使用する必要があります。

  • year

  • month

  • week

  • day

  • hour

  • minute

  • second

構文

age(datetime1, datetime2)

引数

  • datetime1 - 時間的に後の日付を表す文字列、日付型または日付時刻型

  • datetime2 - 時間的に前の日付を表す文字列、日付型または日付時刻型

  • day(age('2012-05-12','2012-05-02')) → 10

  • hour(age('2012-05-12','2012-05-02')) → 240

13.2.7.2. datetime_from_epoch

協定世界時(Qt.UTC) 1970-01-01T00:00:00.000 から msecs ミリ秒数経過した日付時刻を Qt.LocalTime に変換した日付時刻型を返します。

構文

datetime_from_epoch(int)

引数

  • int - 数値(ミリ秒)

  • datetime_from_epoch(1483225200000) → 2017-01-01T00:00:00

13.2.7.3. day

日付型から日を取り出します。インターバル型からは日数を取り出します。

日付型バージョン

日付型または日付時刻型から、日を取り出します。

構文

day(date)

引数

  • date - 日付型または日付時刻型の値

  • day('2012-05-12') → 12

インターバル型バージョン

インターバル型の長さを日単位で計算します。

構文

day(interval)

引数

  • interval - 日数を取得するインターバルの値

  • day(to_interval('3 days')) → 3

  • day(to_interval('3 weeks 2 days')) → 23

  • day(age('2012-01-01','2010-01-01')) → 730

13.2.7.4. day_of_week

指定した日付または日付時刻の曜日を返します。返される値は0から6の範囲で、0が日曜日、6が土曜日に対応します。

構文

day_of_week(date)

引数

  • date - 日付型または日付時刻型の値

  • day_of_week(to_date('2015-09-21')) → 1

13.2.7.5. epoch

Unixエポックと指定された日付値の間の間隔をミリ秒で返します。

構文

epoch(date)

引数

  • date - 日付型または日付時刻型の値

  • epoch(to_date('2017-01-01')) → 1483203600000

13.2.7.6. format_date

日付型または文字列をカスタム書式文字列でフォーマットします。Qtの date/time フォーマット文字列を使用します。詳細は QDateTime::toString を参照してください。

構文

format_date(datetime, format, [language])

記号[]は、オプションの引数を意味します。

引数

  • datetime - 日付型、時間型または日付時刻型の値

  • format - 文字列の書式設定に使用する文字列テンプレート

    出力

    d

    十の位のゼロがない日付(1から31)

    dd

    十の位にゼロのある日付(01から31)

    ddd

    短縮形のローカル曜日名(例:'月' から '日')

    dddd

    長いローカル曜日名(例:'月曜日' から '日曜日')

    M

    十の位のゼロがない月(1から12)

    MM

    十の位にゼロのある月(01から12)

    MMM

    短縮形のローカル月名(例:'1月' から '12月')

    MMMM

    長いローカル月名(例:'1月' から '12月')

    yy

    2桁の年(00から99)

    yyyy

    4桁の年

    以下の式は、書式文字列の時間部分に使用します。

    出力

    h

    十の位のゼロなしの時(0から23、AM/PM表示の場合は1から12)

    hh

    十の位のゼロありの時(00から23、AM/PM表示の場合は01から12)

    H

    十の位のゼロなしの時(0から23、AM/PM表示の場合も同様)

    HH

    十の位のゼロありの時(00から23、AM/PM表示の場合も同様)

    m

    十の位のゼロなしの分(0から59)

    mm

    十の位のゼロありの分(00から59)

    s

    十の位のゼロなしの秒(0から59)

    ss

    十の位のゼロありの秒(00から59)

    z

    数字の後に付くゼロなしのミリ秒(0 から 999)

    zzz

    数字の後に付くゼロありのミリ秒(000 から 999)

    AP or A

    AM/PM 時間として解釈します。 AP は 'AM' または 'PM' のいずれかです。

    ap or a

    AM/PM 時間として解釈します。 ap は 'am' または 'pm' のいずれかです。

  • language - 日付をカスタム文字列にフォーマットする際に使用する言語(2文字または3文字の小文字、 ISO 639 言語名コード )。デフォルトでは現在のQGISユーザーのロケールを使用します

  • format_date('2012-05-15','dd.MM.yyyy') → '15.05.2012'

  • format_date('2012-05-15','d MMMM yyyy','fr') → '15 mai 2012'

  • format_date('2012-05-15','dddd') → 'Tuesday' (現在のロケールが English 版の場合の結果)

  • format_date('2012-05-15 13:54:20','dd.MM.yy') → '15.05.12'

  • format_date('13:54:20','hh:mm AP') → '01:54 午後'

13.2.7.7. hour

時間型または日付時刻型から時の部分を取り出します。インターバル型からは時間数を取り出します。

時間型バージョン

時間型または日付時刻型から時の部分を取り出します。

構文

hour(datetime)

引数

  • datetime - 時間型または日付時刻型の値

  • hour( to_datetime('2012-07-22 13:24:57') ) → 13

インターバル型バージョン

インターバル型の長さを時間単位で計算します。

構文

hour(interval)

引数

  • interval - 時間数を取得するインターバルの値

  • hour(to_interval('3 hours')) → 3

  • hour(age('2012-07-22T13:00:00','2012-07-22T10:00:00')) → 3

  • hour(age('2012-01-01','2010-01-01')) → 17520

13.2.7.8. make_date

年、月、日の数字から日付型の値を作ります。

構文

make_date(year, month, day)

引数

  • year - 年の数字。1から99はそのままの値として解釈される。0年は無効な値

  • month - 月の数字

  • day - 日の数字。1から始まる

  • make_date(2020,5,4) → date value 2020-05-04

13.2.7.9. make_datetime

年、月、日、時、分、秒の数字から日付時刻型の値を作ります。

構文

make_datetime(year, month, day, hour, minute, second)

引数

  • year - 年の数字。1から99はそのままの値として解釈される。0年は無効な値

  • month - 月の数字

  • day - 日の数字。1から始まる

  • hour - 時間の数字

  • minute - 分の数字

  • second - 秒の数字(小数点以下の数字はミリ秒)

  • make_datetime(2020,5,4,13,45,30.5) → datetime value 2020-05-04 13:45:30.500

13.2.7.10. make_interval

年、月、日、時、分、秒の数字からインターバル型の値を作ります。

構文

make_interval([years=0], [months=0], [weeks=0], [days=0], [hours=0], [minutes=0], [seconds=0])

記号[]は、オプションの引数を意味します。

引数

  • years - 年の数(1年の長さを 365.25 日とする)

  • months - 月の数(1月の長さを 30 日とする)

  • weeks - 週の数

  • days - 日の数

  • hours - 時間の数

  • minutes - 分の数

  • seconds - 秒の数

  • make_interval(hours:=3) → 間隔: 3時間

  • make_interval(days:=2, hours:=3) → 間隔: 2.125 日

  • make_interval(minutes:=0.5, seconds:=5) → 間隔: 35 秒

13.2.7.11. make_time

時、分、秒の数字から時間型の値を作ります。

構文

make_time(hour, minute, second)

引数

  • hour - 時間の数字

  • minute - 分の数字

  • second - 秒の数字(小数点以下の数字はミリ秒)

  • make_time(13,45,30.5) → time value 13:45:30.500

13.2.7.12. minute

日付時刻型または時間型から分の部分を取り出します。インターバル型からは分数を取り出します。

時間型バージョン

時間型または日付時刻型から分の部分を取り出します。

構文

minute(datetime)

引数

  • datetime - 時間型または日付時刻型の値

  • minute( to_datetime('2012-07-22 13:24:57') ) → 24

インターバル型バージョン

インターバル型の長さを分単位で計算します。

構文

minute(interval)

引数

  • interval - 分数を取得するインターバルの値

  • minute(to_interval('3 minutes')) → 3

  • minute(age('2012-07-22T00:20:00','2012-07-22T00:00:00')) → 20

  • minute(age('2012-01-01','2010-01-01')) → 1051200

13.2.7.13. month

日付型から月を取り出します。インターバル型からは月数を取り出します。

日付型バージョン

日付型または日付時刻型から月の部分を取り出します。

構文

month(date)

引数

  • date - 日付型または日付時刻型の値

  • month('2012-05-12') → 05

インターバル型バージョン

インターバル型の長さを月単位で計算します。

構文

month(interval)

引数

  • interval - 月数を取得するインターバルの値

  • month(to_interval('3 months')) → 3

  • month(age('2012-01-01','2010-01-01')) → 4.03333

13.2.7.14. now

現在の日付と時刻を返します。この関数は静的で、評価の最中は一貫した結果を返します。返される時刻は、この式が準備されたときの時刻です。

構文

now()

  • now() → 2012-07-22T13:24:57

13.2.7.15. second

時間型または日付時刻型から秒の部分を取り出します。インターバル型からは秒数を取り出します。

時間型バージョン

時間型または日付時刻型から秒の部分を取り出します。

構文

second(datetime)

引数

  • datetime - 時間型または日付時刻型の値

  • second( to_datetime('2012-07-22 13:24:57') ) → 57

インターバル型バージョン

インターバル型の長さを秒単位で計算します。

構文

second(interval)

引数

  • interval - 秒数を取得するインターバルの値

  • second(to_interval('3 minutes')) → 180

  • second(age('2012-07-22T00:20:00','2012-07-22T00:00:00')) → 1200

  • second(age('2012-01-01','2010-01-01')) → 63072000

13.2.7.16. to_date

文字列を日付型オブジェクトに変換します。オプションとして、文字列をパースするためのフォーマット文字列を指定できます。フォーマットに関するドキュメントは、 QDate::fromString または format_date 関数のドキュメントを参照してください。デフォルトでは現在のQGISユーザーのロケールを使用します。

構文

to_date(string, [format], [language])

記号[]は、オプションの引数を意味します。

引数

  • string - 日付を表す文字列

  • format - 文字列を日付型に変換するために使用するフォーマット

  • language - 日付型に変換する文字列の言語(2文字または3文字の小文字、 ISO 639 言語名コード)。デフォルトでは現在のQGISユーザーのロケールを使用します

  • to_date('2012-05-04') → 2012-05-04

  • to_date('June 29, 2019','MMMM d, yyyy') → 2019-06-29 (現在のロケールが6番目の月名に 'June' を使用する言語の場合の結果。そうでない場合はエラーが発生します)

  • to_date('29 juin, 2019','d MMMM, yyyy','fr') → 2019-06-29

13.2.7.17. to_datetime

文字列を日付時刻型オブジェクトに変換します。オプションとして、文字列をパースするためのフォーマット文字列を指定できます。フォーマットに関するドキュメントは、 QDate::fromStringQTime::fromString または format_date 関数のドキュメントを参照してください。デフォルトでは現在のQGISユーザーのロケールを使用します。

構文

to_datetime(string, [format], [language])

記号[]は、オプションの引数を意味します。

引数

  • string - 日付時刻を表す文字列

  • format - 文字列を日付時刻型に変換するために使用するフォーマット

  • language - 日付時刻型に変換する文字列の言語(2文字または3文字の小文字、 ISO 639 言語名コード)。デフォルトでは現在のQGISユーザーのロケールを使用します

  • to_datetime('2012-05-04 12:50:00') → 2012-05-04T12:50:00

  • to_datetime('June 29, 2019 @ 12:34','MMMM d, yyyy @ HH:mm') → 2019-06-29T12:34(現在のロケールが6番目の月名に 'June' を使用する言語の場合の結果。そうでない場合はエラーが発生します)

  • to_datetime('29 juin, 2019 @ 12:34','d MMMM, yyyy @ HH:mm','fr') → 2019-06-29T12:34

13.2.7.18. to_interval

文字列をインターバル型に変換します。日付に日、時間、月などを加減することに利用できます。

構文

to_interval(string)

引数

  • string - インターバルを表す文字列。有効なフォーマットには、 {n} days 、 {n} hours 、 {n} months などが含まれます。

  • to_interval('1 day 2 hours') → 間隔: 1.08333 日

  • to_interval( '0.5 hours' ) → 間隔: 30 分

  • to_datetime('2012-05-05 12:00:00') - to_interval('1 day 2 hours') → 2012-05-04T10:00:00

13.2.7.19. to_time

文字列を時間型オブジェクトに変換します。オプションとして、文字列をパースするためのフォーマット文字列を指定できます。フォーマットに関するドキュメントは、 QTime::fromString を参照してください。

構文

to_time(string, [format], [language])

記号[]は、オプションの引数を意味します。

引数

  • string - 時刻を表す文字列

  • format - 文字列を時間型に変換するために使用するフォーマット

  • language - 時間型に変換する文字列の言語(2文字または3文字の小文字、 ISO 639 言語名コード)

  • to_time('12:30:01') → 12:30:01

  • to_time('12:34','HH:mm') → 12:34:00

  • to_time('12:34','HH:mm','fr') → 12:34:00

13.2.7.20. week

日付型から週番号を取り出します。インターバル型からは週単位の長さを取り出します。

日付型バージョン

日付型または日付時刻型から週番号を取り出します。

構文

week(date)

引数

  • date - 日付型または日付時刻型の値

  • week('2012-05-12') → 19

インターバル型バージョン

インターバル型の長さを週単位で計算します。

構文

week(interval)

引数

  • interval - 月数を取得するインターバルの値

  • week(to_interval('3 weeks')) → 3

  • week(age('2012-01-01','2010-01-01')) → 104.285

13.2.7.21. year

日付型から年を取り出します。インターバル型からは年数を取り出します。

日付型バージョン

日付型または日付時刻型から年の部分を取り出します。

構文

year(date)

引数

  • date - 日付型または日付時刻型の値

  • year('2012-05-12') → 2012

インターバル型バージョン

インターバル型の長さを年単位で計算します。

構文

year(interval)

引数

  • interval - 年数を取得するインターバルの値

  • year(to_interval('3 years')) → 3

  • year(age('2012-01-01','2010-01-01')) → 1.9986

これらの関数に加えて、 - (マイナス)演算子を使用して日付型や日付時刻型または時刻型どうしの減算を行うと、インターバル型のデータを返します。

+ (プラス)演算子や - (マイナス)演算子を使用して、日付型や日付時刻型、時間型のデータにインターバル型のデータを加算または減算すると、日時時刻型のデータを返します。

  • QGIS 3.0リリースまでの日数を取得します。

    to_date('2017-09-29') - to_date(now())
    -- Returns <interval: 203 days>
    
  • リリース時刻も含めて計算します:

    to_datetime('2017-09-29 12:00:00') - now()
    -- Returns <interval: 202.49 days>
    
  • 今から100日の日時を取得します。

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

13.2.8. フィールドと値

アクティブレイヤのフィールドのリストと、特別な値を格納します。フィールドのリストには、データセットに格納されているもの、 virtualauxiliary のもの、 joins のものが含まれます。

フィールド名をダブルクリックすると、そのフィールドが式に追加されます。式への追加は、フィールド名(ダブルクォート囲みを推奨)またはその 別名 を直接入力することでも可能です。

式で使用したいフィールドの値を取得するには、適切なフィールドを選択し、表示されたウィジェットで 10個のサンプル または 全ユニーク のどちらかのボタンを押します。すると、フィールドの値が表示され、リストの上部にある 検索 ボックスを使用して結果をフィルタリングできます。サンプル値取得は、フィールド名の上で右クリックしてもアクセスできます。

式に値を追加するには、フィールド値リスト内の値をダブルクリックします。値が文字列型の場合はシングルクォートで囲まれますが、それ以外はクォートで囲みません。

13.2.8.1. NULL

NULL に等しい値です。

構文

NULL

  • NULL → NULL値

注釈

NULL値かどうかをテストする場合には、 IS NULL 式または IS NOT NULL 式を使用してください。

13.2.9. ファイルとパスの関数

このグループには、ファイルとパス名を操作する関数が含まれます。

13.2.9.1. base_file_name

ディレクトリや拡張子を取り除いた、ファイルのベース名を返します。

構文

base_file_name(path)

引数

  • path - ファイルパス又はマップレイヤの値。マップレイヤの値が指定された場合は、そのレイヤのファイル元が使われる。

  • base_file_name('/home/qgis/data/country_boundaries.shp') → 'country_boundaries'

13.2.9.2. exif

画像ファイルからexifタグの値を取得します。

構文

exif(path, [tag])

記号[]は、オプションの引数を意味します。

引数

  • path - 画像ファイルのパスまたはマップレイヤの値。マップレイヤの値が指定された場合、そのレイヤーのファイルソースが使用されます。

  • tag - 取得したいタグ。指定しない場合には、全てのexifタグの値がマップ型で返ります

  • exif('/my/photo.jpg','Exif.Image.Orientation') → 0

13.2.9.3. file_exists

ファイルパスが存在する場合はTRUEを返します。

構文

file_exists(path)

引数

  • path - ファイルパス又はマップレイヤの値。マップレイヤの値が指定された場合は、そのレイヤのファイル元が使われる。

  • file_exists('/home/qgis/data/country_boundaries.shp') → TRUE

13.2.9.4. file_name

(拡張子付きの)ファイル名を返します。ディレクトリは含みません。

構文

file_name(path)

引数

  • path - ファイルパス又はマップレイヤの値。マップレイヤの値が指定された場合は、そのレイヤのファイル元が使われる。

  • file_name('/home/qgis/data/country_boundaries.shp') → 'country_boundaries.shp'

13.2.9.5. file_path

ファイルパスのディレクトリ部分を返します。戻り値にはファイル名は含まれません。

構文

file_path(path)

引数

  • path - ファイルパス又はマップレイヤの値。マップレイヤの値が指定された場合は、そのレイヤのファイル元が使われる。

  • file_path('/home/qgis/data/country_boundaries.shp') → '/home/qgis/data'

13.2.9.6. file_size

ファイルのサイズを(バイト単位で)返します。

構文

file_size(path)

引数

  • path - ファイルパス又はマップレイヤの値。マップレイヤの値が指定された場合は、そのレイヤのファイル元が使われる。

  • file_size('/home/qgis/data/country_boundaries.geojson') → 5674

13.2.9.7. file_suffix

ファイルパスから拡張子(末尾部分)を返します。

構文

file_suffix(path)

引数

  • path - ファイルパス又はマップレイヤの値。マップレイヤの値が指定された場合は、そのレイヤのファイル元が使われる。

  • file_suffix('/home/qgis/data/country_boundaries.shp') → 'shp'

13.2.9.8. is_directory

パスがディレクトリに対応する場合、TRUEを返します。

構文

is_directory(path)

引数

  • path - ファイルパス又はマップレイヤの値。マップレイヤの値が指定された場合は、そのレイヤのファイル元が使われる。

  • is_directory('/home/qgis/data/country_boundaries.shp') → FALSE

  • is_directory('/home/qgis/data/') → TRUE

13.2.9.9. is_file

パスがファイルに対応する場合、TRUEを返します。

構文

is_file(path)

引数

  • path - ファイルパス又はマップレイヤの値。マップレイヤの値が指定された場合は、そのレイヤのファイル元が使われる。

  • is_file('/home/qgis/data/country_boundaries.shp') → TRUE

  • is_file('/home/qgis/data/') → FALSE

13.2.10. フォーム関数

このグループには、属性フォームに関連した式ダイアログのみで利用できる関数が含まれます。例えば、 フィールドのウィジェット の設定などで利用できます。

13.2.10.1. current_parent_value

この関数は埋め込みフォームでのみ使用可能で、現在編集中の親フォームの未保存の属性値を返します。これは、親レイヤで編集中または親レイヤに追加前の親地物の実際の値とは異なります。「値のリレーション」ウィジェットのフィルタ式で使用する場合には、フォームが埋め込みフォーム状態で使われない場合にもレイヤから実際の親地物の値を取得できるよう、 'coalesce()' 関数でラップする必要があります。

構文

current_parent_value(field_name)

引数

  • field_name - 現在の親フォームのフィールド名

  • current_parent_value( 'FIELD_NAME' ) → 親フォームの 'FIELD_NAME' フィールドの現在の値

13.2.10.2. current_value

現在編集中のフォームまたはテーブル行で、現在のフィールドの未保存の値を返します。これは、現在編集中の地物またはまだレイヤに追加されていない地物の実際の属性値とは異なります。

構文

current_value(field_name)

引数

  • field_name - 現在のフォームまたはテーブル行のフィールド名

  • current_value( 'FIELD_NAME' ) → 'FIELD_NAME' フィールドの現在の値

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

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

13.2.11.1. hamming_distance

2つの文字列間のハミング距離を返します。この距離は、入力文字列の対応する位置にある異なった文字の数です。入力文字列は同じ長さでなければならず、大文字と小文字を区別して比較されます。

構文

hamming_distance(string1, string2)

引数

  • string1 - 文字列

  • string2 - 文字列

  • hamming_distance('abc','xec') → 2

  • hamming_distance('abc','ABc') → 2

  • hamming_distance(upper('abc'),upper('ABC')) → 0

  • hamming_distance('abc','abcd') → NULL

13.2.11.2. levenshtein

2つの文字列間のレーベンシュタイン編集距離を返します。これは、ある文字列を別の文字列に変更するために必要な文字編集(挿入、削除または置換)の最小数に相当します。

レーベンシュタイン距離は、2つの文字列間の類似性の尺度です。距離が小さいほど文字列はより似ており、距離が長いほど文字列が異なっていることを示します。距離は大文字と小文字を区別します。

構文

levenshtein(string1, string2)

引数

  • string1 - 文字列

  • string2 - 文字列

  • levenshtein('kittens','mitten') → 2

  • levenshtein('Kitten','kitten') → 1

  • levenshtein(upper('Kitten'),upper('kitten')) → 0

13.2.11.3. longest_common_substring

2つの文字列間の最も長い共通部分を返します。例えば、 "ABABC" と "BABCA" の最も長い共通部分は "BABC" です。部分文字列は大文字と小文字を区別します。

構文

longest_common_substring(string1, string2)

引数

  • string1 - 文字列

  • string2 - 文字列

  • longest_common_substring('ABABC','BABCA') → 'BABC'

  • longest_common_substring('abcDeF','abcdef') → 'abc'

  • longest_common_substring(upper('abcDeF'),upper('abcdex')) → 'ABCDE'

13.2.11.4. soundex

文字列のSoundex表現を返します。Soundexは音声マッチングアルゴリズムで、類似した音の文字列は同じSoundexコードで表現されます。

構文

soundex(string)

引数

  • string - 文字列

  • soundex('robert') → 'R163'

  • soundex('rupert') → 'R163'

  • soundex('rubin') → 'R150'

13.2.12. 一般関数

このグループには、さまざまな汎用関数が含まれます。

13.2.12.1. env

環境変数を取得し、その内容を文字列として返します。変数が見つからない場合、NULLを返します。この関数は、ドライブ文字やパスプレフィックスなどのシステム固有の設定を取得するために有用です。環境変数の定義はオペレーティングシステムによって異なりますので、システム管理者に確認するかオペレーティングシステムのマニュアルを参照して、環境変数の設定方法を確認してください。

構文

env(name)

引数

  • name - 値を取得したい環境変数の名前

  • env( 'LANG' ) → 'en_US.UTF-8'

  • env( 'MY_OWN_PREFIX_VAR' ) → 'Z:'

  • env( 'I_DO_NOT_EXIST' ) → NULL

13.2.12.2. eval

文字列で渡された式を評価します。これを使えば、コンテキスト変数またはフィールドとして渡されたパラメータを動的に展開できます。

構文

eval(expression)

引数

  • expression - 式を表す文字列

  • eval('\'nice\'') → 'nice'

  • eval(@expression_var) → [@expression_var を評価した結果]

13.2.12.3. eval_template

文字列で渡されたテンプレートを評価します。これを使えば、コンテキスト変数またはフィールドとして渡されたパラメータを動的に展開できます。

構文

eval_template(template)

引数

  • template - テンプレート文字列

  • eval_template('QGIS [% upper(\'rocks\') %]') → QGIS ROCKS

13.2.12.4. is_layer_visible

指定されたレイヤが表示されているならTRUEを返します。

構文

is_layer_visible(layer)

引数

  • layer - レイヤ名かレイヤIDのどちらかを表す文字列

  • is_layer_visible('baseraster') → TRUE

13.2.12.5. mime_type

バイナリデータのMIMEタイプを返します。

構文

mime_type(bytes)

引数

  • bytes - バイナリデータ

  • mime_type('<html><body></body></html>') → text/html

  • mime_type(from_base64('R0lGODlhAQABAAAAACH5BAEKAAEALAAAAAABAAEAAAIAOw==')) → image/gif

13.2.12.6. var

指定された変数に格納された値を返します。

構文

var(name)

引数

  • name - 変数名

  • var('qgis_version') → '2.12'

参考:デフォルトの 変数 のリスト

13.2.12.7. with_variable

この関数は、第3引数の式で使われる変数を設定します。同じ計算結果を別の場所で繰り返し使用する必要があるような、複雑な式を構成する際に使われます。

構文

with_variable(name, value, expression)

引数

  • name - 設定する変数の名前

  • value - 設定する値

  • expression - 変数が使用できる式

  • with_variable('my_sum', 1 + 2 + 3, @my_sum * 2 + @my_sum * 5) → 42

13.2.13. ジオメトリ関数

このグループは、ジオメトリオブジェクトを操作する関数(例えば buffer、 transform、 $area など)が含まれます。

13.2.13.1. affine_transform

アフィン変換後のジオメトリを返します。計算はこのジオメトリの空間参照系で行われます。変換操作は、スケーリング、回転、平行移動の順で行われます。Z座標やM値のオフセットが指定されているものの、ジオメトリの座標がZ座標やM値を持たない場合には、これらがジオメトリ座標に追加されます。

構文

affine_transform(geometry, delta_x, delta_y, rotation_z, scale_x, scale_y, [delta_z=0], [delta_m=0], [scale_z=1], [scale_m=1])

記号[]は、オプションの引数を意味します。

引数

  • geometry - ジオメトリ

  • delta_x - x軸方向移動量

  • delta_y - y軸方向移動量

  • rotation_z - z軸まわりの回転量(度単位、反時計回り)

  • scale_x - x軸方向スケーリング係数

  • scale_y - y軸方向スケーリング係数

  • delta_z - z軸方向移動量

  • delta_m - m値の増分

  • scale_z - z軸方向スケーリング係数

  • scale_m - m値のスケーリング係数

  • geom_to_wkt(affine_transform(geom_from_wkt('LINESTRING(1 1, 2 2)'), 2, 2, 0, 1, 1)) → 'LineString (3 3, 4 4)'

  • geom_to_wkt(affine_transform(geom_from_wkt('POLYGON((0 0, 0 3, 2 2, 0 0))'), 0, 0, -90, 1, 2)) → 'Polygon ((0 0, 6 0, 4 -2, 0 0))'

  • geom_to_wkt(affine_transform(geom_from_wkt('POINT(3 1)'), 0, 0, 0, 1, 1, 5, 0)) → 'PointZ (3 1 5)'

13.2.13.2. angle_at_vertex

ラインストリングジオメトリ上の指定された頂点について、ジオメトリの二分角(平均角度)を返します。角度は度単位で、北から時計回りで測ります。

構文

angle_at_vertex(geometry, vertex)

引数

  • geometry - ラインストリングジオメトリ

  • vertex - 頂点のインデックスで、最初の点は0から数える。負の値の場合には、全体の頂点数からその絶対値を引いたインデックスの頂点が選択される

  • angle_at_vertex(geometry:=geom_from_wkt('LineString(0 0, 10 0, 10 10)'),vertex:=1) → 45.0

13.2.13.3. apply_dash_pattern

ジオメトリにダッシュパターンを適用し、入力ジオメトリを指定されたパターンで各線/リングに沿ってストロークさせた MultiLineString ジオメトリを返します。

構文

apply_dash_pattern(geometry, pattern, [start_rule=no_rule], [end_rule=no_rule], [adjustment=both], [pattern_offset=0])

記号[]は、オプションの引数を意味します。

引数

  • geometry - ジオメトリ( (multi)linestrings 又は (multi)polygons を受け付けます)。

  • pattern - ダッシュパターン。ダッシュとギャップの長さを表す数値の配列です。偶数個の要素を含む必要があります。

  • start_rule - パターンの開始を制約するためのオプションのルールです。有効な値は 'no_rule', 'full_dash', 'half_dash', 'full_gap', 'half_gap' です。

  • end_rule - パターンの終わりを制約するためのオプションのルールです。有効な値は 'no_rule', 'full_dash', 'half_dash', 'full_gap', 'half_gap' です。

  • adjustment - 求めるパターンルールに合わせるために、パターンのどの部分を調整するかを指定するオプションのルールです。有効な値は 'both'、'dash'、'gap' です。

  • pattern_offset - パターンに沿った特定の距離で開始することを指定するオプションの距離です。

  • geom_to_wkt(apply_dash_pattern(geom_from_wkt('LINESTRING(1 1, 10 1)'), array(3, 1))) → MultiLineString ((1 1, 4 1),(5 1, 8 1),(9 1, 10 1, 10 1))

  • geom_to_wkt(apply_dash_pattern(geom_from_wkt('LINESTRING(1 1, 10 1)'), array(3, 1), start_rule:='half_dash')) → MultiLineString ((1 1, 2.5 1),(3.5 1, 6.5 1),(7.5 1, 10 1, 10 1))

13.2.13.4. $area

地物の面積を返します。この関数で計算される面積には、現在のプロジェクトの楕円体設定と面積単位設定の両方が反映されます。例えば、プロジェクトに回転楕円体が設定されている場合、楕円体面積になり、設定されていない場合、平面上の面積になります。

構文

$area

  • $area → 42

13.2.13.5. area

ポリゴンオブジェクトのジオメトリの面積を返します。面積はこのジオメトリの空間参照系(SRS)で常に平面的に計算され、面積の単位は空間参照系の単位と一致します。この面積は、プロジェクトの楕円体と面積単位設定にもとづいた楕円体計算が行われる $area 関数による面積とは異なります。

構文

area(geometry)

引数

  • geometry - ポリゴンジオメトリオブジェクト

  • area(geom_from_wkt('POLYGON((0 0, 4 0, 4 2, 0 2, 0 0))')) → 8.0

13.2.13.6. azimuth

北を基準して時計回りに測定された point_a から point_b への方位角をラジアン単位で返します。

構文

azimuth(point_a, point_b)

引数

  • point_a - ポイントジオメトリ

  • point_b - ポイントジオメトリ

  • degrees( azimuth( make_point(25, 45), make_point(75, 100) ) ) → 42.273689

  • degrees( azimuth( make_point(75, 100), make_point(25,45) ) ) → 222.273689

13.2.13.7. boundary

ジオメトリの組み合わせ的境界のクロージャ(すなわちジオメトリの位相的境界)を返します。例えば、ポリゴンジオメトリには、ポリゴンの各リングのラインストリングからなる境界があります。ポイントやジオメトリコレクションのように、定義された境界を持たないジオメトリについては、NULLが返されます。

構文

boundary(geometry)

引数

  • geometry - ジオメトリ

  • geom_to_wkt(boundary(geom_from_wkt('Polygon((1 1, 0 0, -1 1, 1 1))'))) → 'LineString(1 1,0 0,-1 1,1 1)'

  • geom_to_wkt(boundary(geom_from_wkt('LineString(1 1,0 0,-1 1)'))) → 'MultiPoint ((1 1),(-1 1))'

参考: トポロジカル境界 アルゴリズム

13.2.13.8. bounds

入力ジオメトリのバウンディングボックスを表すジオメトリを返します。計算はこのジオメトリの空間参照系で行われます。

構文

bounds(geometry)

引数

  • geometry - ジオメトリ

  • bounds($geometry) → 現在の地物のジオメトリのバウンディングボックス

  • geom_to_wkt(bounds(geom_from_wkt('Polygon((1 1, 0 0, -1 1, 1 1))'))) → 'Polygon ((-1 0, 1 0, 1 1, -1 1, -1 0))'

../../../_images/bounding_box.png

図 13.4 黒色のラインは各ポリゴン地物のバウンディングボックスを表す

参考: BBoxの出力 アルゴリズム

13.2.13.9. bounds_height

ジオメトリのバウンディングボックスの高さを返します。計算はこのジオメトリの空間参照系で行われます。

構文

bounds_height(geometry)

引数

  • geometry - ジオメトリ

  • bounds_height($geometry) → 現在の地物のジオメトリのバウンディングボックスの高さ

  • bounds_height(geom_from_wkt('Polygon((1 1, 0 0, -1 1, 1 1))')) → 1

13.2.13.10. bounds_width

ジオメトリのバウンディングボックスの幅を返します。計算はこのジオメトリの空間参照系で行われます。

構文

bounds_width(geometry)

引数

  • geometry - ジオメトリ

  • bounds_width($geometry) → 現在の地物のジオメトリのバウンディングボックスの幅

  • bounds_width(geom_from_wkt('Polygon((1 1, 0 0, -1 1, 1 1))')) → 2

13.2.13.11. buffer

ジオメトリからの距離がある距離以下のすべてのポイントを表すジオメトリを返します。計算はこのジオメトリの空間参照系で行なわれます。

構文

buffer(geometry, distance, [segments=8], [cap='round'], [join='round'], [miter_limit=2])

記号[]は、オプションの引数を意味します。

引数

  • geometry - ジオメトリ

  • distance - レイヤの単位で表したバッファ距離

  • segments - 継ぎ目スタイルにroundを使用する場合に、円の四分の一を表現するのに使用するセグメントの数。数値が大きいほど、より多数のノードからなる、滑らかなバッファが生成されます。

  • cap - バッファの終端スタイル。有効な値は 'round'、 'flat' または 'square' です

  • join - バッファの結合スタイル。有効な値は 'round'、 'bevel' または 'miter' です

  • miter_limit - miter距離の上限値(結合スタイルに 'miter' を設定した場合に使用)

  • buffer($geometry, 10.5) → 現在の地物ジオメトリから 10.5 単位でバッファリングされたポリゴン

../../../_images/buffer1.png

図 13.5 バッファ(黄色)。正のバッファを持ったポイント、ライン、ポリゴン及び負のバッファを持ったポリゴン

参考: バッファ(buffer) アルゴリズム

13.2.13.12. buffer_by_m

ラインジオメトリに沿ってバッファを作成します。バッファの直径は、ラインの頂点のm値に従って変化します。

構文

buffer_by_m(geometry, [segments=8])

記号[]は、オプションの引数を意味します。

引数

  • geometry - 入力ジオメトリ。m値を持った(マルチ)ラインジオメトリである必要があります。

  • segments - バッファの四分円を近似するセグメント数

  • buffer_by_m(geometry:=geom_from_wkt('LINESTRINGM(1 2 0.5, 4 2 0.2)'),segments:=8) → ラインストリングジオメトリに沿って、直径が0.5から0.2に変化する可変幅バッファ

../../../_images/variable_buffer_m.png

図 13.6 頂点上のm値を使用したライン地物のバッファ

参考: 可変幅バッファ(M値使用) アルゴリズム

13.2.13.13. centroid

ジオメトリの重心を返します。

構文

centroid(geometry)

引数

  • geometry - ジオメトリ

  • centroid($geometry) → ポイントジオメトリ

参考: 重心 アルゴリズム

13.2.13.14. close_line

入力されたラインストリングが閉じていない場合には、最初の点を行末に追加して、閉じたラインストリングを返します。ジオメトリがラインストリングまたはマルチラインストリングでない場合、結果は NULL になります。

構文

close_line(geometry)

引数

  • geometry - ラインストリングジオメトリ

  • geom_to_wkt(close_line(geom_from_wkt('LINESTRING(0 0, 1 0, 1 1)'))) → 'LineString (0 0, 1 0, 1 1, 0 0)'

  • geom_to_wkt(close_line(geom_from_wkt('LINESTRING(0 0, 1 0, 1 1, 0 0)'))) → 'LineString (0 0, 1 0, 1 1, 0 0)'

13.2.13.15. closest_point

geometry2 に最も近い、geometry1 上の点を返します。

構文

closest_point(geometry1, geometry2)

引数

  • geometry1 - 検索対象のジオメトリ

  • geometry2 - 基準となるジオメトリ

  • geom_to_wkt(closest_point(geom_from_wkt('LINESTRING (20 80, 98 190, 110 180, 50 75 )'),geom_from_wkt('POINT(100 100)'))) → 'Point(73.0769 115.384)'

13.2.13.16. collect_geometries

ジオメトリを集約したマルチパートのジオメトリを返します。

引数バージョン

ジオメトリのパーツは、関数の引数として個別に指定します。

構文

collect_geometries(geometry1, geometry2, ...)

引数

  • geometry - ジオメトリ

  • geom_to_wkt(collect_geometries(make_point(1,2), make_point(3,4), make_point(5,6))) → 'MultiPoint ((1 2),(3 4),(5 6))'

配列バージョン

ジオメトリのパーツは、ジオメトリパーツの配列として指定します。

構文

collect_geometries(array)

引数

  • array - ジオメトリオブジェクトの配列

  • geom_to_wkt(collect_geometries(array(make_point(1,2), make_point(3,4), make_point(5,6)))) → 'MultiPoint ((1 2),(3 4),(5 6))'

参考: シングルパートをマルチパートに集約 アルゴリズム

13.2.13.17. combine

2つのジオメトリの結合を返します。

構文

combine(geometry1, geometry2)

引数

  • geometry1 - ジオメトリ

  • geometry2 - ジオメトリ

  • geom_to_wkt( combine( geom_from_wkt( 'LINESTRING(3 3, 4 4, 5 5)' ), geom_from_wkt( 'LINESTRING(3 3, 4 4, 2 1)' ) ) ) → 'MULTILINESTRING((4 4, 2 1), (3 3, 4 4), (4 4, 5 5))'

  • geom_to_wkt( combine( geom_from_wkt( 'LINESTRING(3 3, 4 4)' ), geom_from_wkt( 'LINESTRING(3 3, 6 6, 2 1)' ) ) ) → 'LINESTRING(3 3, 4 4, 6 6, 2 1)'

13.2.13.18. concave_hull

ジオメトリのすべてのポイントを含む、凹型のポリゴンを返します

構文

concave_hull(geometry, target_percent, [allow_holes=False])

記号[]は、オプションの引数を意味します。

引数

  • geometry - ジオメトリ

  • target_percent - 解が凸包に近づこうとする面積の割合。target_percent が 1 の場合、凸包と同じ結果になります。target_percent を 0 から 0.99 の間に設定すると、凸包よりも面積が小さくなる結果が得られます。

  • allow_holes - 出力ジオメトリに穴を許すかどうかを指定するオプションの引数です。デフォルトはFALSEで、出力ジオメトリに穴を含めないようにするにはTRUEに設定します。

  • geom_to_wkt(concave_hull(geom_from_wkt('MULTILINESTRING((106 164,30 112,74 70,82 112,130 94,130 62,122 40,156 32,162 76,172 88),(132 178,134 148,128 136,96 128,132 108,150 130,170 142,174 110,156 96,158 90,158 88),(22 64,66 28,94 38,94 68,114 76,112 30,132 10,168 18,178 34,186 52,184 74,190 100,190 122,182 148,178 170,176 184,156 164,146 178,132 186,92 182,56 158,36 150,62 150,76 128,88 118))'), 0.99)) → 'Polygon ((30 112, 36 150, 92 182, 132 186, 176 184, 190 122, 190 100, 186 52, 178 34, 168 18, 132 10, 112 30, 66 28, 22 64, 30 112))'

参考: convex_hull

13.2.13.19. contains

あるジオメトリが他のものを含むかどうかを判定します。ジオメトリ1の外側にジオメトリ2の点がなく、かつジオメトリ2の内側の少なくとも1点がジオメトリ1の内側にある場合にのみ、TRUEを返します。

構文

contains(geometry1, geometry2)

引数

  • geometry1 - ジオメトリ

  • geometry2 - ジオメトリ

  • contains( geom_from_wkt( 'POLYGON((0 0, 0 1, 1 1, 1 0, 0 0))' ), geom_from_wkt( 'POINT(0.5 0.5 )' ) ) → TRUE

  • contains( geom_from_wkt( 'POLYGON((0 0, 0 1, 1 1, 1 0, 0 0))' ), geom_from_wkt( 'LINESTRING(3 3, 4 4, 5 5)' ) ) → FALSE

参考: overlay_contains

13.2.13.20. convex_hull

ジオメトリの凸包を返します。これは、セット内のすべてのジオメトリを囲む、最小の凸多角形のジオメトリです。

構文

convex_hull(geometry)

引数

  • geometry - ジオメトリ

  • geom_to_wkt( convex_hull( geom_from_wkt( 'LINESTRING(3 3, 4 4, 4 10)' ) ) ) → 'POLYGON((3 3, 4 10, 4 4, 3 3))'

参考: concave_hull, 凸包(convex hull) アルゴリズム

13.2.13.21. crosses

あるジオメトリが他のジオメトリと交差しているかどうかを判定します。与えられたジオメトリが、すべてではないが、内側の点をいくつか共有している場合、TRUEを返します。

構文

crosses(geometry1, geometry2)

引数

  • geometry1 - ジオメトリ

  • geometry2 - ジオメトリ

  • crosses( geom_from_wkt( 'LINESTRING(3 5, 4 4, 5 3)' ), geom_from_wkt( 'LINESTRING(3 3, 4 4, 5 5)' ) ) → TRUE

  • crosses( geom_from_wkt( 'POINT(4 5)' ), geom_from_wkt( 'LINESTRING(3 3, 4 4, 5 5)' ) ) → FALSE

参考: overlay_crosses

13.2.13.22. densify_by_count

ポリゴンまたはラインレイヤのジオメトリを受け取り、元のジオメトリよりも頂点数が多いジオメトリを新たに生成します。

構文

densify_by_count(geometry, vertices)

引数

  • geometry - ジオメトリ( (multi)linestrings 又は (multi)polygons を受け付けます)。

  • vertices - (セグメント毎に)追加する頂点の数

  • geom_to_wkt(densify_by_count(geom_from_wkt('LINESTRING(1 1, 10 1)'), 3)) → LineString (1 1, 3.25 1, 5.5 1, 7.75 1, 10 1)

参考: 頂点の高密度化(個数ベース) アルゴリズム

13.2.13.23. densify_by_distance

ポリゴン又はラインレイヤのジオメトリを受け取り、指定された間隔を最大距離とするように辺に頂点を追加することにより、ジオメトリを高密度化した新しいものを生成します。

構文

densify_by_distance(geometry, distance)

引数

  • geometry - ジオメトリ( (multi)linestrings 又は (multi)polygons を受け付けます)。

  • distance - 出力ジオメトリの頂点間の最大間隔

  • geom_to_wkt(densify_by_distance(geom_from_wkt('LINESTRING(1 1, 10 1)'), 4)) → LineString (1 1, 4 1, 7 1, 10 1)

参考: 間隔による高密度化 アルゴリズム

13.2.13.24. difference

geometry1のうち、geometry2と交差(intersect)しない部分を表すジオメトリを返します。

構文

difference(geometry1, geometry2)

引数

  • geometry1 - ジオメトリ

  • geometry2 - ジオメトリ

  • geom_to_wkt( difference( geom_from_wkt( 'LINESTRING(3 3, 4 4, 5 5)' ), geom_from_wkt( 'LINESTRING(3 3, 4 4)' ) ) ) → 'LINESTRING(4 4, 5 5)'

参考: 差分 algorithm

13.2.13.25. disjoint

ジオメトリが空間的に交差しないかどうかを判定します。ジオメトリが空間を共有していない場合はTRUEを返します。

構文

disjoint(geometry1, geometry2)

引数

  • geometry1 - ジオメトリ

  • geometry2 - ジオメトリ

  • disjoint( geom_from_wkt( 'POLYGON((0 0, 0 1, 1 1, 1 0, 0 0 ))' ), geom_from_wkt( 'LINESTRING(3 3, 4 4, 5 5)' ) ) → TRUE

  • disjoint( geom_from_wkt( 'LINESTRING(3 3, 4 4, 5 5)' ), geom_from_wkt( 'POINT(4 4)' )) → FALSE

参考: overlay_disjoint

13.2.13.26. distance

2つのジオメトリ間の最小距離(空間参照に基づく)を投影法の単位で返します。

構文

distance(geometry1, geometry2)

引数

  • geometry1 - ジオメトリ

  • geometry2 - ジオメトリ

  • distance( geom_from_wkt( 'POINT(4 4)' ), geom_from_wkt( 'POINT(4 8)' ) ) → 4

13.2.13.27. distance_to_vertex

インデックスで指定した点までの、ジオメトリに沿った距離を返します。

構文

distance_to_vertex(geometry, vertex)

引数

  • geometry - ラインストリングジオメトリ

  • vertex - 頂点のインデックスで、最初の点は0から数える。負の値の場合には、全体の頂点数からその絶対値を引いたインデックスの頂点が選択される

  • distance_to_vertex(geometry:=geom_from_wkt('LineString(0 0, 10 0, 10 10)'),vertex:=1) → 10.0

13.2.13.28. end_point

ジオメトリの最後のノードを返します。

構文

end_point(geometry)

引数

  • geometry - ジオメトリオブジェクト

  • geom_to_wkt(end_point(geom_from_wkt('LINESTRING(4 0, 4 2, 0 2)'))) → 'Point (0 2)'

参考: 特定の点を抽出 アルゴリズム

13.2.13.29. exif_geotag

画像ファイルの exif ジオタグからポイントジオメトリを作成します。

構文

exif_geotag(path)

引数

  • path - 画像ファイルのパスまたはマップレイヤの値。マップレイヤの値が指定された場合、そのレイヤーのファイルソースが使用されます。

  • geom_to_wkt(exif_geotag('/my/photo.jpg')) → 'Point (2 4)'

13.2.13.30. extend

ラインストリングジオメトリの始点と終点を指定量だけ延長します。最初と最後のセグメントを、その方向を使用して延長します。距離の単位はこのジオメトリの空間参照系を使います。

構文

extend(geometry, start_distance, end_distance)

引数

  • geometry - (マルチ)ラインストリングジオメトリ

  • start_distance - 始点の延長距離

  • end_distance - 終点の延長距離

  • geom_to_wkt(extend(geom_from_wkt('LineString(0 0, 1 0, 1 1)'),1,2)) → 'LineString (-1 0, 1 0, 1 3)'

  • geom_to_wkt(extend(geom_from_wkt('MultiLineString((0 0, 1 0, 1 1), (2 2, 0 2, 0 5))'),1,2)) → 'MultiLineString ((-1 0, 1 0, 1 3),(3 2, 0 2, 0 7))'

参考: 線の延長 アルゴリズム

13.2.13.31. exterior_ring

ポリゴンジオメトリの外側のリングを表すラインストリングを返します。ジオメトリがポリゴンではない場合には、結果はNULLになります。

構文

exterior_ring(geometry)

引数

  • geometry - ポリゴンジオメトリ

  • geom_to_wkt(exterior_ring(geom_from_wkt('POLYGON((-1 -1, 4 0, 4 2, 0 2, -1 -1),( 0.1 0.1, 0.1 0.2, 0.2 0.2, 0.2, 0.1, 0.1 0.1))'))) → 'LineString (-1 -1, 4 0, 4 2, 0 2, -1 -1)'

13.2.13.32. extrude

(マルチ)カーブまたは(マルチ)ラインストリングジオメトリを、xとyで指定した押し出し量だけ並行移動させてできるポリゴンを返します。

構文

extrude(geometry, x, y)

引数

  • geometry - カーブジオメトリまたはラインストリングジオメトリ

  • x - x 方向の押し出し量の数値

  • y - y 方向の押し出し量の数値

  • geom_to_wkt(extrude(geom_from_wkt('LineString(1 2, 3 2, 4 3)'), 1, 2)) → 'Polygon ((1 2, 3 2, 4 3, 5 5, 4 4, 2 4, 1 2))'

  • geom_to_wkt(extrude(geom_from_wkt('MultiLineString((1 2, 3 2), (4 3, 8 3))'), 1, 2)) → 'MultiPolygon (((1 2, 3 2, 4 4, 2 4, 1 2)),((4 3, 8 3, 9 5, 5 5, 4 3)))'

13.2.13.33. flip_coordinates

X座標とY座標を入れ替えたジオメトリのコピーを返します。緯度と経度を逆にしてしまったジオメトリを修復する際に便利です。

構文

flip_coordinates(geometry)

引数

  • geometry - ジオメトリ

  • geom_to_wkt(flip_coordinates(make_point(1, 2))) → 'Point (2 1)'

  • geom_to_wkt(flip_coordinates(geom_from_wkt('LineString(0 2, 1 0, 1 6)'))) → 'LineString (2 0, 0 1, 6 1)'

参考: 座標のXY入れ替え アルゴリズム

13.2.13.34. force_polygon_ccw

外側のリングは反時計回り、内側のリングは時計回りになるようにジオメトリを強制的に設定します。

構文

force_polygon_ccw(geometry)

引数

  • geometry - ジオメトリ。ポリゴンではないジオメトリはそのまま返します。

  • geom_to_wkt(force_polygon_ccw(geometry:=geom_from_wkt('Polygon ((-1 -1, 0 2, 4 2, 4 0, -1 -1))'))) → 'Polygon ((-1 -1, 4 0, 4 2, 0 2, -1 -1))'

参考: force_polygon_cw, force_rhr

13.2.13.35. force_polygon_cw

外側のリングは時計回り、内側のリングは反時計回りになるようにジオメトリを強制的に設定します。

構文

force_polygon_cw(geometry)

引数

  • geometry - ジオメトリ。ポリゴンではないジオメトリはそのまま返します。

  • geom_to_wkt(force_polygon_cw(geometry:=geom_from_wkt('POLYGON((-1 -1, 4 0, 4 2, 0 2, -1 -1))'))) → 'Polygon ((-1 -1, 0 2, 4 2, 4 0, -1 -1))'

参考: force_polygon_ccw, force_rhr

13.2.13.36. force_rhr

ポリゴンで囲まれる区域が境界の右側にある、「右手ルール」を尊重するようにジオメトリを強制的に設定します。特に、外側のリングは時計回りに、内側のリングは反時計回りに向きを変えます。右手ルールの定義は文脈によって不一致があるため、代わりに明白なforce_polygon_cw関数を使用することが推奨されます。

構文

force_rhr(geometry)

引数

  • geometry - ジオメトリ。ポリゴンではないジオメトリはそのまま返します。

  • geom_to_wkt(force_rhr(geometry:=geom_from_wkt('POLYGON((-1 -1, 4 0, 4 2, 0 2, -1 -1))'))) → 'Polygon ((-1 -1, 0 2, 4 2, 4 0, -1 -1))'

参考: 右手ルールを強制 アルゴリズム、 force_polygon_ccw, force_polygon_cw

13.2.13.37. geom_from_gml

ジオメトリのGML表現文字列からジオメトリを返します。

構文

geom_from_gml(gml)

引数

  • gml - ジオメトリのGML表現の文字列

  • geom_from_gml('<gml:LineString srsName="EPSG:4326"><gml:coordinates>4,4 5,5 6,6</gml:coordinates></gml:LineString>') → ラインジオメトリオブジェクト

13.2.13.38. geom_from_wkb

Well-Known Binary(WKB)表現から作成されたジオメトリを返します。

構文

geom_from_wkb(binary)

引数

  • binary - ジオメトリのWell-Known Binary(WKB)表現(バイナリのblob)

  • geom_from_wkb( geom_to_wkb( make_point(4,5) ) ) → ポイントジオメトリオブジェクト

13.2.13.39. geom_from_wkt

Well-Known Text(WKT)表現から作成されたジオメトリを返します。

構文

geom_from_wkt(text)

引数

  • text - ジオメトリのWell-Known Text(WKT)表現

  • geom_from_wkt( 'POINT(4 5)' ) → ジオメトリオブジェクト

13.2.13.40. geom_to_wkb

ジオメトリの Well-Known Binary(WKB)表現を返します。

構文

geom_to_wkb(geometry)

引数

  • geometry - ジオメトリ

  • geom_to_wkb( $geometry ) → ジオメトリオブジェクトを含むバイナリblob

13.2.13.41. geom_to_wkt

ジオメトリのWell-known text(WKT)表現をSRIDメタデータなしで返します。

構文

geom_to_wkt(geometry, [precision=8])

記号[]は、オプションの引数を意味します。

引数

  • geometry - ジオメトリ

  • precision - 数値精度

  • geom_to_wkt( make_point(6, 50) ) → 'POINT(6 50)'

  • geom_to_wkt(centroid(geom_from_wkt('Polygon((1 1, 0 0, -1 1, 1 1))'))) → 'POINT(0 0.66666667)'

  • geom_to_wkt(centroid(geom_from_wkt('Polygon((1 1, 0 0, -1 1, 1 1))')), 2) → 'POINT(0 0.67)'

13.2.13.42. $geometry

現在の地物のジオメトリを返します。他の関数での処理に使用することができます。警告:この関数は非推奨です。代わりに@geometry変数を使用することをお勧めします。

構文

$geometry

  • geom_to_wkt( $geometry ) → 'POINT(6 50)'

13.2.13.43. geometry

地物のジオメトリを返します。

構文

geometry(feature)

引数

  • feature - 地物オブジェクト

  • geometry( $currentfeature ) → 現在の地物のジオメトリ。 $geometry の使用が推奨される

  • geom_to_wkt( geometry( get_feature_by_id( 'streets', 1 ) ) ) → "streets" レイヤ内でid が1の地物のジオメトリのWKT表現。例えば 'POINT(6 50)'

  • intersects( $geometry, geometry( get_feature( 'streets', 'name', 'Main St.' ) ) ) → 現在の地物が "streets" レイヤの 'Main St.' という名前の地物と空間的に交差している場合はTRUE

13.2.13.44. geometry_n

ジオメトリコレクションから特定のジオメトリを返し、入力ジオメトリがコレクションでない場合はNULLを返します。また、マルチパートジオメトリから部分を返します。

構文

geometry_n(geometry, index)

引数

  • geometry - ジオメトリコレクション

  • index - 戻り値となるジオメトリのインデックス。コレクションの最初のジオメトリは1

  • geom_to_wkt(geometry_n(geom_from_wkt('GEOMETRYCOLLECTION(POINT(0 1), POINT(0 0), POINT(1 0), POINT(1 1))'),3)) → 'Point (1 0)'

13.2.13.45. geometry_type

ジオメトリの種類を表す文字列値(Point、Line または Polygon)を返します。

構文

geometry_type(geometry)

引数

  • geometry - ジオメトリ

  • geometry_type( geom_from_wkt( 'LINESTRING(2 5, 3 6, 4 8)') ) → 'Line'

  • geometry_type( geom_from_wkt( 'MULTILINESTRING((2 5, 3 6, 4 8), (1 1, 0 0))') ) → 'Line'

  • geometry_type( geom_from_wkt( 'POINT(2 5)') ) → 'Point'

  • geometry_type( geom_from_wkt( 'POLYGON((-1 -1, 4 0, 4 2, 0 2, -1 -1))') ) → 'Polygon'

13.2.13.46. hausdorff_distance

2つのジオメトリ間のハウスドルフ距離を返します。これは基本的に、2つのジオメトリがどれほど類似しているか、類似していないかを測る指標であり、距離が小さいほど類似したジオメトリであることを示します。

この関数はオプションとして、稠密化比率を引数で与えて実行できます。これが指定されていない場合は、標準的なハウスドルフ距離の近似値が使用されます。この近似は有用なケースの大部分では正確か、十分に近いものです。例えば、

  • ほぼ互いに平行でほぼ同じ長さのラインストリング間の類似性を計算する場合。これは線形ネットワークのマッチングで使用します。

  • ジオメトリの類似性をテストする場合。

この関数のデフォルトの近似値では不十分な場合、オプションで稠密化比率を引数に指定します。この引数を指定すると、離散ハウスドルフ距離を計算する前にセグメントの稠密化が実行されます。このパラメータは、各セグメントを緻密化する比率を設定します。各セグメントはこの比率で等しい長さのサブセグメントに分割されます。稠密化比率のパラメータを小さくすれば、返される距離は真のハウスドルフ距離に近づきます。

構文

hausdorff_distance(geometry1, geometry2, [densify_fraction])

記号[]は、オプションの引数を意味します。

引数

  • geometry1 - ジオメトリ

  • geometry2 - ジオメトリ

  • densify_fraction - 稠密化比率

  • hausdorff_distance( geometry1:= geom_from_wkt('LINESTRING (0 0, 2 1)'),geometry2:=geom_from_wkt('LINESTRING (0 0, 2 0)')) → 2

  • hausdorff_distance( geom_from_wkt('LINESTRING (130 0, 0 0, 0 150)'),geom_from_wkt('LINESTRING (10 10, 10 150, 130 10)')) → 14.142135623

  • hausdorff_distance( geom_from_wkt('LINESTRING (130 0, 0 0, 0 150)'),geom_from_wkt('LINESTRING (10 10, 10 150, 130 10)'),0.5) → 70.0

13.2.13.47. inclination

point_a に対する point_b の傾斜角を、天頂(0度)から天底(180度)までの角度で返します。

構文

inclination(point_a, point_b)

引数

  • point_a - ポイントジオメトリ

  • point_b - ポイントジオメトリ

  • inclination( make_point( 5, 10, 0 ), make_point( 5, 10, 5 ) ) → 0.0

  • inclination( make_point( 5, 10, 0 ), make_point( 5, 10, 0 ) ) → 90.0

  • inclination( make_point( 5, 10, 0 ), make_point( 50, 100, 0 ) ) → 90.0

  • inclination( make_point( 5, 10, 0 ), make_point( 5, 10, -5 ) ) → 180.0

13.2.13.48. interior_ring_n

ポリゴンジオメトリから指定した内側のリングを返します。ジオメトリがポリゴンではない場合、NULLを返します。

構文

interior_ring_n(geometry, index)

引数

  • geometry - ポリゴンジオメトリ

  • index - 戻り値となる内側のリングのインデックス。最初の内側リングが1

  • geom_to_wkt(interior_ring_n(geom_from_wkt('POLYGON((-1 -1, 4 0, 4 2, 0 2, -1 -1),(-0.1 -0.1, 0.4 0, 0.4 0.2, 0 0.2, -0.1 -0.1),(-1 -1, 4 0, 4 2, 0 2, -1 -1))'),1)) → 'LineString (-0.1 -0.1, 0.4 0, 0.4 0.2, 0 0.2, -0.1 -0.1))'

13.2.13.49. intersection

2つのジオメトリの共有部分を表すジオメトリを返します。

構文

intersection(geometry1, geometry2)

引数

  • geometry1 - ジオメトリ

  • geometry2 - ジオメトリ

  • geom_to_wkt( intersection( geom_from_wkt( 'LINESTRING(3 3, 4 4, 5 5)' ), geom_from_wkt( 'LINESTRING(3 3, 4 4)' ) ) ) → 'LINESTRING(3 3, 4 4)'

  • geom_to_wkt( intersection( geom_from_wkt( 'LINESTRING(3 3, 4 4, 5 5)' ), geom_from_wkt( 'MULTIPOINT(3.5 3.5, 4 5)' ) ) ) → 'POINT(3.5 3.5)'

参考: 交差 アルゴリズム

13.2.13.50. intersects

あるジオメトリが他のジオメトリと交差しているかどうかを判定します。ジオメトリが空間的に交差している(空間の任意の部分を共有している)場合はTRUE、交差していない場合はFALSEを返します。

構文

intersects(geometry1, geometry2)

引数

  • geometry1 - ジオメトリ

  • geometry2 - ジオメトリ

  • intersects( geom_from_wkt( 'POINT(4 4)' ), geom_from_wkt( 'LINESTRING(3 3, 4 4, 5 5)' ) ) → TRUE

  • intersects( geom_from_wkt( 'POINT(4 5)' ), geom_from_wkt( 'POINT(5 5)' ) ) → FALSE

参考: overlay_intersects

13.2.13.51. intersects_bbox

ジオメトリのバウンディングボックスが他のジオメトリのバウンディングボックスに重なるかどうかをテストします。ジオメトリが定義されたバウンディングボックスと空間的に交差している場合はTRUE、交差していない場合はFALSEを返します。

構文

intersects_bbox(geometry1, geometry2)

引数

  • geometry1 - ジオメトリ

  • geometry2 - ジオメトリ

  • intersects_bbox( geom_from_wkt( 'POINT(4 5)' ), geom_from_wkt( 'LINESTRING(3 3, 4 4, 5 5)' ) ) → TRUE

  • intersects_bbox( geom_from_wkt( 'POINT(6 5)' ), geom_from_wkt( 'POLYGON((3 3, 4 4, 5 5, 3 3))' ) ) → FALSE

13.2.13.52. is_closed

ラインストリングが閉じている(始点と終点が一致している)場合はTRUE、閉じていない場合はFALSEを返します。ジオメトリがラインストリングでない場合、結果はNULLとなります。

構文

is_closed(geometry)

引数

  • geometry - ラインストリングジオメトリ

  • is_closed(geom_from_wkt('LINESTRING(0 0, 1 1, 2 2)')) → FALSE

  • is_closed(geom_from_wkt('LINESTRING(0 0, 1 1, 2 2, 0 0)')) → TRUE

13.2.13.53. is_empty

ジオメトリが空(座標なし)の場合は TRUE、ジオメトリが空でない場合は false、ジオメトリが存在しない場合は NULL を返します。is_empty_or_null も参照してください。

構文

is_empty(geometry)

引数

  • geometry - ジオメトリ

  • is_empty(geom_from_wkt('LINESTRING(0 0, 1 1, 2 2)')) → FALSE

  • is_empty(geom_from_wkt('LINESTRING EMPTY')) → TRUE

  • is_empty(geom_from_wkt('POINT(7 4)')) → FALSE

  • is_empty(geom_from_wkt('POINT EMPTY')) → TRUE

参考: is_empty_or_null

13.2.13.54. is_empty_or_null

ジオメトリがNULLか空(座標値を持たない)の場合はTRUE、それ以外ならfalseを返します。この関数は、式 '$geometry IS NULL or is_empty($geometry)' と同様です

構文

is_empty_or_null(geometry)

引数

  • geometry - ジオメトリ

  • is_empty_or_null(NULL) → TRUE

  • is_empty_or_null(geom_from_wkt('LINESTRING(0 0, 1 1, 2 2)')) → FALSE

  • is_empty_or_null(geom_from_wkt('LINESTRING EMPTY')) → TRUE

  • is_empty_or_null(geom_from_wkt('POINT(7 4)')) → FALSE

  • is_empty_or_null(geom_from_wkt('POINT EMPTY')) → TRUE

参考: is_empty, NULL

13.2.13.55. is_multipart

マルチタイプのジオメトリならばTRUEを返します。

構文

is_multipart(geometry)

引数

  • geometry - ジオメトリ

  • is_multipart(geom_from_wkt('MULTIPOINT ((0 0),(1 1),(2 2))')) → TRUE

  • is_multipart(geom_from_wkt('POINT (0 0)')) → FALSE

13.2.13.56. is_valid

ジオメトリが有効な場合、つまりOGCの規約に従って正しく作成された2Dジオメトリである場合にはTRUEを返します。

構文

is_valid(geometry)

引数

  • geometry - ジオメトリ

  • is_valid(geom_from_wkt('LINESTRING(0 0, 1 1, 2 2, 0 0)')) → TRUE

  • is_valid(geom_from_wkt('LINESTRING(0 0)')) → FALSE

参考: make_valid, 有効性チェック algorithm

13.2.13.57. $length

ラインストリングの長さを返します。ポリゴンの境界の長さを求める場合には、代わりに $perimeter を使用してください。この関数で計算される長さは、現在のプロジェクトの楕円体の設定と距離単位の設定の両方が影響します。例えば、プロジェクトに楕円体が設定されている場合、長さは楕円体長になり、楕円体が設定されていない場合は、長さは平面的に計算されます。

構文

$length

  • $length → 42.4711

13.2.13.58. length

文字列の文字数、またはラインストリングジオメトリの長さを返します。

文字列バージョン

文字列の文字数を返します。

構文

length(string)

引数

  • string - 文字数を数える文字列

  • length('hello') → 5

ジオメトリバージョン

ラインジオメトリオブジェクトの長さを返します。計算は常にこのジオメトリの空間参照系(SRS)で平面的に計算され、長さの単位はSRSの単位と一致します。これは、プロジェクトの楕円体と距離単位設定にもとづいた楕円体計算が行われる $length 関数とは異なります。

構文

length(geometry)

引数

  • geometry - ラインジオメトリオブジェクト

  • length(geom_from_wkt('LINESTRING(0 0, 4 0)')) → 4.0

参考: straight_distance_2d

13.2.13.59. length3D

ラインオブジェクトのジオメトリの3次元的な長さを返します。ジオメトリが3次元ラインオブジェクトでない場合は、2次元的な長さを返します。この計算は、常にこのジオメトリの空間参照系(SRS)で平面的に計算され、長さの単位はSRSの単位と一致します。この値は、プロジェクトの楕円体と距離単位設定にもとづいた楕円体計算が行われる $length 関数とは異なります。

構文

length3D(geometry)

引数

  • geometry - ラインジオメトリオブジェクト

  • length3D(geom_from_wkt('LINESTRINGZ(0 0 0, 3 0 4)')) → 5.0

13.2.13.60. line_interpolate_angle

ラインストリングジオメトリに沿って指定された距離にある点における、ジオメトリに平行な角度を返します。角度は度単位で、北から時計回りで測ります。

構文

line_interpolate_angle(geometry, distance)

引数

  • geometry - ラインストリングジオメトリ

  • distance - 角度を内挿したい地点の、線に沿った距離

  • line_interpolate_angle(geometry:=geom_from_wkt('LineString(0 0, 10 0)'),distance:=5) → 90.0

13.2.13.61. line_interpolate_point

ラインストリングジオメトリに沿って指定された距離にある点を返します。

構文

line_interpolate_point(geometry, distance)

引数

  • geometry - ラインストリングジオメトリ

  • distance - 位置を内挿したい地点の、線に沿った距離

  • geom_to_wkt(line_interpolate_point(geometry:=geom_from_wkt('LineString(0 0, 8 0)'), distance:=5)) → 'Point (5 0)'

  • geom_to_wkt(line_interpolate_point(geometry:=geom_from_wkt('LineString(0 0, 1 1, 2 0)'), distance:=2.1)) → 'Point (1.48492424 0.51507576)'

  • geom_to_wkt(line_interpolate_point(geometry:=geom_from_wkt('LineString(0 0, 1 0)'), distance:=2)) → NULL

参考: 線上の等間隔点 アルゴリズム

13.2.13.62. line_locate_point

指定されたポイントジオメトリに最も近い位置に対応するラインストリング上の地点の、ラインストリングに沿った距離を返します。

構文

line_locate_point(geometry, point)

引数

  • geometry - ラインストリングジオメトリ

  • point - ラインストリング上の最も近い点を探すポイントジオメトリ

  • line_locate_point(geometry:=geom_from_wkt('LineString(0 0, 10 0)'),point:=geom_from_wkt('Point(5 0)')) → 5.0

13.2.13.63. line_merge

入力されたジオメトリのうち、接続されているラインストリングをすべて単一のラインストリングにマージしたラインストリングまたはマルチラインストリングジオメトリを返します。引数にラインストリングやマルチラインストリング以外のジオメトリが渡された場合、この関数はNULLを返します。

構文

line_merge(geometry)

引数

  • geometry - ラインストリング/マルチラインストリングジオメトリ

  • geom_to_wkt(line_merge(geom_from_wkt('MULTILINESTRING((0 0, 1 1),(1 1, 2 2))'))) → 'LineString(0 0,1 1,2 2)'

  • geom_to_wkt(line_merge(geom_from_wkt('MULTILINESTRING((0 0, 1 1),(11 1, 21 2))'))) → 'MultiLineString((0 0, 1 1),(11 1, 21 2)'

13.2.13.64. line_substring

(ラインの始点から測った)指定された開始距離と終了距離の間にあるライン(またはカーブ)ジオメトリの部分を返します。Z値とM値は既存の値から線形内挿されます。

構文

line_substring(geometry, start_distance, end_distance)

引数

  • geometry - ラインストリングまたはカーブジオメトリ

  • start_distance - 切り出しの開始距離

  • end_distance - 切り出しの終了距離

  • geom_to_wkt(line_substring(geometry:=geom_from_wkt('LineString(0 0, 10 0)'),start_distance:=2,end_distance:=6)) → 'LineString (2 0,6 0)'

参考: ラインの一部の切り出し アルゴリズム

13.2.13.65. m

ポイントジオメトリのm値 (measure) を返します。

構文

m(geometry)

引数

  • geometry - ポイントジオメトリ

  • m( geom_from_wkt( 'POINTM(2 5 4)' ) ) → 4

13.2.13.66. m_max

ジオメトリのm値(measure)の最大値を返します。

構文

m_max(geometry)

引数

  • geometry - m値を持つジオメトリ

  • m_max( make_point_m( 0,0,1 ) ) → 1

  • m_max(make_line( make_point_m( 0,0,1 ), make_point_m( -1,-1,2 ), make_point_m( -2,-2,0 ) ) ) → 2

13.2.13.67. m_min

ジオメトリのm値(measure)の最小値を返します。

構文

m_min(geometry)

引数

  • geometry - m値を持つジオメトリ

  • m_min( make_point_m( 0,0,1 ) ) → 1

  • m_min(make_line( make_point_m( 0,0,1 ), make_point_m( -1,-1,2 ), make_point_m( -2,-2,0 ) ) ) → 0

13.2.13.68. main_angle

ジオメトリを完全にカバーする最小の回転長方形の長軸の角度(北を0度として時計回り)を返します。

構文

main_angle(geometry)

引数

  • geometry - ジオメトリ

  • main_angle(geom_from_wkt('Polygon ((321577 129614, 321581 129618, 321585 129615, 321581 129610, 321577 129614))')) → 38.66

13.2.13.69. make_circle

円形のポリゴンを作成します。

構文

make_circle(center, radius, [segments=36])

記号[]は、オプションの引数を意味します。

引数

  • center - 円の中心点

  • radius - 円の半径

  • segments - ポリゴンのセグメント数に関するオプション引数。デフォルト値は36

  • geom_to_wkt(make_circle(make_point(10,10), 5, 4)) → 'Polygon ((10 15, 15 10, 10 5, 5 10, 10 15))'

  • geom_to_wkt(make_circle(make_point(10,10,5), 5, 4)) → 'PolygonZ ((10 15 5, 15 10 5, 10 5 5, 5 10 5, 10 15 5))'

  • geom_to_wkt(make_circle(make_point(10,10,5,30), 5, 4)) → 'PolygonZM ((10 15 5 30, 15 10 5 30, 10 5 5 30, 5 10 5 30, 10 15 5 30))'

13.2.13.70. make_ellipse

楕円形のポリゴンを作成します。

構文

make_ellipse(center, semi_major_axis, semi_minor_axis, azimuth, [segments=36])

記号[]は、オプションの引数を意味します。

引数

  • center - 楕円の中心点

  • semi_major_axis - 楕円の半長軸

  • semi_minor_axis - 楕円の半短軸

  • azimuth - 楕円の向き

  • segments - ポリゴンのセグメント数に関するオプション引数。デフォルト値は36

  • geom_to_wkt(make_ellipse(make_point(10,10), 5, 2, 90, 4)) → 'Polygon ((15 10, 10 8, 5 10, 10 12, 15 10))'

  • geom_to_wkt(make_ellipse(make_point(10,10,5), 5, 2, 90, 4)) → 'PolygonZ ((15 10 5, 10 8 5, 5 10 5, 10 12 5, 15 10 5))'

  • geom_to_wkt(make_ellipse(make_point(10,10,5,30), 5, 2, 90, 4)) → 'PolygonZM ((15 10 5 30, 10 8 5 30, 5 10 5 30, 10 12 5 30, 15 10 5 30))'

13.2.13.71. make_line

一連のポイントジオメトリからラインジオメトリを作成します。

引数バージョン

ラインの頂点は、関数の引数として個別に指定します。

構文

make_line(point1, point2, ...)

引数

  • point - ポイントジオメトリ(またはポイントの配列)

  • geom_to_wkt(make_line(make_point(2,4),make_point(3,5))) → 'LineString (2 4, 3 5)'

  • geom_to_wkt(make_line(make_point(2,4),make_point(3,5),make_point(9,7))) → 'LineString (2 4, 3 5, 9 7)'

配列バージョン

線の頂点は、ポイントの配列として指定します。

構文

make_line(array)

引数

  • array - ポイントの配列

  • geom_to_wkt(make_line(array(make_point(2,4),make_point(3,5),make_point(9,7)))) → 'LineString (2 4, 3 5, 9 7)'

13.2.13.72. make_point

xとyの値(とオプションでz値とm値)を指定して、ポイントジオメトリを作成します。

構文

make_point(x, y, [z], [m])

記号[]は、オプションの引数を意味します。

引数

  • x - ポイントのx座標

  • y - ポイントのy座標

  • z - (オプション)ポイントのz座標

  • m - (オプション)ポイントのm値

  • geom_to_wkt(make_point(2,4)) → 'Point (2 4)'

  • geom_to_wkt(make_point(2,4,6)) → 'PointZ (2 4 6)'

  • geom_to_wkt(make_point(2,4,6,8)) → 'PointZM (2 4 6 8)'

13.2.13.73. make_point_m

x, y座標およびm値からポイントジオメトリを作成します。

構文

make_point_m(x, y, m)

引数

  • x - ポイントのx座標

  • y - ポイントのy座標

  • m - ポイントのm値

  • geom_to_wkt(make_point_m(2,4,6)) → 'PointM (2 4 6)'

13.2.13.74. make_polygon

外側のリングジオメトリおよび一連の内側リングジオメトリ(オプション)から、ポリゴンジオメトリを作成します。

構文

make_polygon(outerRing, [innerRing1], [innerRing2], ...)

記号[]は、オプションの引数を意味します。

引数

  • outerRing - ポリゴンの外側リングとなる閉じたラインジオメトリ

  • innerRing - (オプション)内側リングとなる閉じたラインジオメトリ

  • geom_to_wkt(make_polygon(geom_from_wkt('LINESTRING( 0 0, 0 1, 1 1, 1 0, 0 0 )'))) → 'Polygon ((0 0, 0 1, 1 1, 1 0, 0 0))'

  • geom_to_wkt(make_polygon(geom_from_wkt('LINESTRING( 0 0, 0 1, 1 1, 1 0, 0 0 )'),geom_from_wkt('LINESTRING( 0.1 0.1, 0.1 0.2, 0.2 0.2, 0.2 0.1, 0.1 0.1 )'),geom_from_wkt('LINESTRING( 0.8 0.8, 0.8 0.9, 0.9 0.9, 0.9 0.8, 0.8 0.8 )'))) → 'Polygon ((0 0, 0 1, 1 1, 1 0, 0 0),(0.1 0.1, 0.1 0.2, 0.2 0.2, 0.2 0.1, 0.1 0.1),(0.8 0.8, 0.8 0.9, 0.9 0.9, 0.9 0.8, 0.8 0.8))'

13.2.13.75. make_rectangle_3points

3点を指定して長方形を作成します。

構文

make_rectangle_3points(point1, point2, point3, [option=0])

記号[]は、オプションの引数を意味します。

引数

  • point1 - 第1点

  • point2 - 第2点

  • point3 - 第3点

  • option - 長方形を作成するためのオプション引数。デフォルト値は0。値は 0(距離モード)か1(投影モード)をとる。距離モードの場合、第二距離は第2点と第3点の距離に等しくなります。投影モードの場合、第二距離は第3点をセグメントまたはその延長線上に垂直投影した距離に等しくなります。

  • geom_to_wkt(make_rectangle_3points(make_point(0, 0), make_point(0,5), make_point(5, 5), 0)) → 'Polygon ((0 0, 0 5, 5 5, 5 0, 0 0))'

  • geom_to_wkt(make_rectangle_3points(make_point(0, 0), make_point(0,5), make_point(5, 3), 1)) → 'Polygon ((0 0, 0 5, 5 5, 5 0, 0 0))'

13.2.13.76. make_regular_polygon

正多角形を作成します。

構文

make_regular_polygon(center, radius, number_sides, [circle=0])

記号[]は、オプションの引数を意味します。

引数

  • center - 正多角形の中心点

  • radius - 2番目の点。内接モードの場合は、最初の頂点です。外接モードの場合は、最初の辺の中間点です。

  • number_sides - 正多角形の辺/エッジの数

  • circle - (オプション)正多角形を作成するモードに関する引数。デフォルトは0。値は0 (内接モード)または1(外接モード)をとる

  • geom_to_wkt(make_regular_polygon(make_point(0,0), make_point(0,5), 5)) → 'Polygon ((0 5, 4.76 1.55, 2.94 -4.05, -2.94 -4.05, -4.76 1.55, 0 5))'

  • geom_to_wkt(make_regular_polygon(make_point(0,0), project(make_point(0,0), 4.0451, radians(36)), 5)) → 'Polygon ((0 5, 4.76 1.55, 2.94 -4.05, -2.94 -4.05, -4.76 1.55, 0 5))'

13.2.13.77. make_square

対角線を指定して正方形を作成します。

構文

make_square(point1, point2)

引数

  • point1 - 対角線の第1点

  • point2 - 対角線の第2点

  • geom_to_wkt(make_square( make_point(0,0), make_point(5,5))) → 'Polygon ((0 0, -0 5, 5 5, 5 0, 0 0))'

  • geom_to_wkt(make_square( make_point(5,0), make_point(5,5))) → 'Polygon ((5 0, 2.5 2.5, 5 5, 7.5 2.5, 5 0))'

13.2.13.78. make_triangle

三角形のポリゴンを作成します。

構文

make_triangle(point1, point2, point3)

引数

  • point1 - 三角形の第1点

  • point2 - 三角形の第2点

  • point3 - 三角形の第3点

  • geom_to_wkt(make_triangle(make_point(0,0), make_point(5,5), make_point(0,10))) → 'Triangle ((0 0, 5 5, 0 10, 0 0))'

  • geom_to_wkt(boundary(make_triangle(make_point(0,0), make_point(5,5), make_point(0,10)))) → 'LineString (0 0, 5 5, 0 10, 0 0)'

13.2.13.79. make_valid

有効なジオメトリ、またはジオメトリを有効にできない場合は空のジオメトリを返します。

構文

make_valid(geometry, [method=structure], [keep_collapsed=false])

記号[]は、オプションの引数を意味します。

引数

  • geometry - ジオメトリ

  • method - 修復アルゴリズム。「structure」または「linework」のいずれかを指定します。「linework」オプションは、すべてのリングをノード化されたラインのセットに結合し、そのラインワークから有効なポリゴンを抽出します。「structure」メソッドでは、まずすべてのリングを有効なものにし、次にシェルをマージし、シェルからホールを引いて有効な結果を生成します。ホールとシェルが正しく分類されていることを前提とします。

  • keep_collapsed - trueに設定すると、低い次元に折りたたまれた要素が保持されます。例えば、リングが折りたたまれて線になったり、線が折りたたまれて点になったりするような場合です。

  • geom_to_wkt(make_valid(geom_from_wkt('POLYGON((3 2, 4 1, 5 8, 3 2, 4 2))'))) → 'Polygon ((3 2, 5 8, 4 1, 3 2))'

  • geom_to_wkt(make_valid(geom_from_wkt('POLYGON((3 2, 4 1, 5 8, 3 2, 4 2))'), 'linework')) → 'GeometryCollection (Polygon ((5 8, 4 1, 3 2, 5 8)),LineString (3 2, 4 2))'

  • geom_to_wkt(make_valid(geom_from_wkt('POLYGON((3 2, 4 1, 5 8))'), method:='linework')) → 'Polygon ((3 2, 4 1, 5 8, 3 2))'

  • make_valid(geom_from_wkt('LINESTRING(0 0)')) → 空のジオメトリ

参考: is_valid, ジオメトリを修復 アルゴリズム

13.2.13.80. minimal_circle

ジオメトリの最小包囲円を返します。すべてのジオメトリを包み込む最小の円を表します。

構文

minimal_circle(geometry, [segments=36])

記号[]は、オプションの引数を意味します。

引数

  • geometry - ジオメトリ

  • segments - ポリゴンのセグメント数に関するオプション引数。デフォルト値は36

  • geom_to_wkt( minimal_circle( geom_from_wkt( 'LINESTRING(0 5, 0 -5, 2 1)' ), 4 ) ) → 'Polygon ((0 5, 5 -0, -0 -5, -5 0, 0 5))'

  • geom_to_wkt( minimal_circle( geom_from_wkt( 'MULTIPOINT(1 2, 3 4, 3 2)' ), 4 ) ) → 'Polygon ((3 4, 3 2, 1 2, 1 4, 3 4))'

参考: 最小包含円 アルゴリズム

13.2.13.81. nodes_to_points

入力ジオメトリのすべてのノードからなるマルチポイントジオメトリを返します。

構文

nodes_to_points(geometry, [ignore_closing_nodes=false])

記号[]は、オプションの引数を意味します。

引数

  • geometry - ジオメトリオブジェクト

  • ignore_closing_nodes - (オプション)ラインやポリゴンのリングを閉じる重複ノードを戻り値に含めないかどうかを指定します。デフォルトはfalseです。アウトプットのコレクションに重複ノードを含めないようにするには、trueを指定します。

  • geom_to_wkt(nodes_to_points(geom_from_wkt('LINESTRING(0 0, 1 1, 2 2)'))) → 'MultiPoint ((0 0),(1 1),(2 2))'

  • geom_to_wkt(nodes_to_points(geom_from_wkt('POLYGON((-1 -1, 4 0, 4 2, 0 2, -1 -1))'),true)) → 'MultiPoint ((-1 -1),(4 0),(4 2),(0 2))'

参考: 頂点を抽出 アルゴリズム

13.2.13.82. num_geometries

ジオメトリコレクションに含まれるジオメトリの数、またはマルチパーツジオメトリに含まれるパーツの数を返します。入力ジオメトリがコレクションでない場合、この関数はNULLを返します。

構文

num_geometries(geometry)

引数

  • geometry - ジオメトリコレクションまたはマルチパートジオメトリ

  • num_geometries(geom_from_wkt('GEOMETRYCOLLECTION(POINT(0 1), POINT(0 0), POINT(1 0), POINT(1 1))')) → 4

  • num_geometries(geom_from_wkt('MULTIPOINT((0 1), (0 0), (1 0))')) → 3

13.2.13.83. num_interior_rings

ポリゴンまたはジオメトリコレクション中の内側のリングの数を返します。ポリゴンでもジオメトリコレクションでもない場合、NULLを返します。

構文

num_interior_rings(geometry)

引数

  • geometry - 入力ジオメトリ

  • num_interior_rings(geom_from_wkt('POLYGON((-1 -1, 4 0, 4 2, 0 2, -1 -1),(-0.1 -0.1, 0.4 0, 0.4 0.2, 0 0.2, -0.1 -0.1))')) → 1

13.2.13.84. num_points

ジオメトリの頂点数を返します。

構文

num_points(geometry)

引数

  • geometry - ジオメトリ

  • num_points($geometry) → 現在の地物のジオメトリの頂点数

13.2.13.85. num_rings

ポリゴンまたはジオメトリコレクション中のリング(外側のリングを含む)の数を返します。ポリゴンでもジオメトリコレクションでもない場合、NULLを返します。

構文

num_rings(geometry)

引数

  • geometry - 入力ジオメトリ

  • num_rings(geom_from_wkt('POLYGON((-1 -1, 4 0, 4 2, 0 2, -1 -1),(-0.1 -0.1, 0.4 0, 0.4 0.2, 0 0.2, -0.1 -0.1))')) → 2

13.2.13.86. offset_curve

ラインストリングジオメトリを側面方向にオフセットさせたジオメトリを返します。距離はこのジオメトリの空間参照系の単位です。

構文

offset_curve(geometry, distance, [segments=8], [join=1], [miter_limit=2.0])

記号[]は、オプションの引数を意味します。

引数

  • geometry - (マルチ)ラインストリングジオメトリ

  • distance - オフセット距離。正の値はラインの左側にバッファされ、負の値は右にバッファされます

  • segments - 継ぎ目スタイルにroundを使用する場合に、円の四分の一を表現するのに使用するセグメントの数。数値が大きいほど、より多数のノードからなる、滑らかなラインが生成されます。

  • join - 角の継ぎ目スタイル。1 は round、2 は miter 、3 は bevel

  • miter_limit - 非常に鋭い角に使用されるmiter比の制限(miter継ぎ目の場合のみ)

  • offset_curve($geometry, 10.5) → 左に10.5単位オフセットしたライン

  • offset_curve($geometry, -10.5) → 右に10.5単位オフセットしたライン

  • offset_curve($geometry, 10.5, segments:=16, join:=1) → 左に10.5単位オフセットしたラインで、より多数のセグメントを使用した滑らかなカーブ

  • offset_curve($geometry, 10.5, join:=3) → 左に10.5単位オフセットしたラインで、bebel 継ぎ目を使用

参考: オフセット線 アルゴリズム

13.2.13.87. order_parts

与えられた基準によってマルチジオメトリのパートを並べ替えます。

構文

order_parts(geometry, orderby, [ascending=true])

記号[]は、オプションの引数を意味します。

引数

  • geometry - マルチタイプのジオメトリ

  • orderby - 順序の基準を定義する式

  • ascending - ブール値。True ならば昇順で、Falseならば降順で並べる

  • geom_to_wkt(order_parts(geom_from_wkt('MultiPolygon (((1 1, 5 1, 5 5, 1 5, 1 1)),((1 1, 9 1, 9 9, 1 9, 1 1)))'), 'area($geometry)', False)) → 'MultiPolygon (((1 1, 9 1, 9 9, 1 9, 1 1)),((1 1, 5 1, 5 5, 1 5, 1 1)))'

  • geom_to_wkt(order_parts(geom_from_wkt('LineString(1 2, 3 2, 4 3)'), '1', True)) → 'LineString(1 2, 3 2, 4 3)'

13.2.13.88. oriented_bbox

入力ジオメトリに対して最小となる回転バウンディングボックスのジオメトリを返します。

構文

oriented_bbox(geometry)

引数

  • geometry - ジオメトリ

  • geom_to_wkt( oriented_bbox( geom_from_wkt( 'MULTIPOINT(1 2, 3 4, 3 2)' ) ) ) → 'Polygon ((3 2, 3 4, 1 4, 1 2, 3 2))'

参考: 最小の回転長方形 アルゴリズム

13.2.13.89. overlaps

あるジオメトリがもう一つのジオメトリにオーバーラップするかどうかをテストします。ジオメトリが空間を共有していて、同じ次元であり、かつ、互いが完全に含まれない場合にTRUEを返します。

構文

overlaps(geometry1, geometry2)

引数

  • geometry1 - ジオメトリ

  • geometry2 - ジオメトリ

  • overlaps( geom_from_wkt( 'LINESTRING(3 5, 4 4, 5 5, 5 3)' ), geom_from_wkt( 'LINESTRING(3 3, 4 4, 5 5)' ) ) → TRUE

  • overlaps( geom_from_wkt( 'LINESTRING(0 0, 1 1)' ), geom_from_wkt( 'LINESTRING(3 3, 4 4, 5 5)' ) ) → FALSE

13.2.13.90. overlay_contains

現在の地物が対象レイヤの少なくとも1つの地物を空間的に含んでいるかどうか、または、現在の地物に含まれる対象レイヤの地物に関するQGIS式の結果の配列を返します。

この関数の基礎となるGEOSの "Contains" 述語については、PostGISの ST_Contains 関数の説明を参照してください。

構文

overlay_contains(layer, [expression], [filter], [limit], [cache=false])

記号[]は、オプションの引数を意味します。

引数

  • layer - オーバーレイがチェックされるレイヤ

  • expression - (オプション)対象レイヤの地物を評価する式。設定されていない場合には、この関数は一つ以上のマッチがあるかどうかを示すブール値を返します。

  • filter - (オプション)チェック対象地物をフィルタリングするための式。設定されていない場合、全ての地物をチェックします。

  • limit - (オプション)マッチする地物の上限数。設定されていない場合、マッチする全ての地物を返します。

  • cache - この引数をtrueに設定すると、ローカルな空間インデックスを作成します(特に遅いデータプロバイダで作業していない限りは、ほとんどの場合でこれは不要です)

  • overlay_contains('regions') → 現在の地物がregions の地物を空間的に含む場合にTRUE

  • overlay_contains('regions', filter:= population > 10000) → 現在の地物がpopulation が10000より大きいregions の地物を空間的に含む場合にTRUE

  • overlay_contains('regions', name) → 現在の地物に含まれるregions の地物の名前の配列

  • array_to_string(overlay_contains('regions', name)) → 現在の地物に含まれるregions の地物の名前をコンマ区切りで並べた文字列

  • array_sort(overlay_contains(layer:='regions', expression:="name", filter:= population > 10000)) → 現在の地物に含まれる、population が10000よりも大きな値を持つregions の地物の名前をソートした配列

  • overlay_contains(layer:='regions', expression:= geom_to_wkt($geometry), limit:=2) → 現在の地物に含まれるregions の地物のジオメトリ(WKT形式、上限2個)の配列

参考: contains配列関数場所による選択 アルゴリズム

13.2.13.91. overlay_crosses

現在の地物が対象レイヤの少なくとも1つの地物と空間的にクロスしているかどうか、または、現在の地物とクロスする対象レイヤの地物に関するQGIS式の結果の配列を返します。

この関数の基礎となるGEOSの "Crosses" 述語については、PostGISの ST_Crosses 関数の説明を参照してください。

構文

overlay_crosses(layer, [expression], [filter], [limit], [cache=false])

記号[]は、オプションの引数を意味します。

引数

  • layer - オーバーレイがチェックされるレイヤ

  • expression - (オプション)対象レイヤの地物を評価する式。設定されていない場合には、この関数は一つ以上のマッチがあるかどうかを示すブール値を返します。

  • filter - (オプション)チェック対象地物をフィルタリングするための式。設定されていない場合、全ての地物をチェックします。

  • limit - (オプション)マッチする地物の上限数。設定されていない場合、マッチする全ての地物を返します。

  • cache - この引数をtrueに設定すると、ローカルな空間インデックスを作成します(特に遅いデータプロバイダで作業していない限りは、ほとんどの場合でこれは不要です)

  • overlay_crosses('regions') → 現在の地物がregionと空間的にクロスする場合にTRUE

  • overlay_crosses('regions', filter:= population > 10000) → 現在の地物がpopulationが10000を超えるregionと空間的にクロスする場合にTRUE

  • overlay_crosses('regions', name) → 現在の地物とクロスするregions の地物の名前の配列

  • array_to_string(overlay_crosses('regions', name)) → 現在の地物とクロスするregions の地物の名前をコンマ区切りで並べた文字列

  • array_sort(overlay_crosses(layer:='regions', expression:="name", filter:= population > 10000)) → 現在の地物とクロスする、population が10000よりも大きな値を持つregions の地物の名前をソートした配列

  • overlay_crosses(layer:='regions', expression:= geom_to_wkt($geometry), limit:=2) → 現在の地物とクロスするregions の地物のジオメトリ(WKT形式、上限2個)の配列

参考: crosses配列関数場所による選択 アルゴリズム

13.2.13.92. overlay_disjoint

現在の地物が対象レイヤのすべての地物と空間的に非接続であるかどうか、または、現在の地物と非接続な対象レイヤの地物に関するQGIS式の結果の配列を返します。

この関数の基礎となるGEOSの "Disjoint" 述語については、PostGISの ST_Disjoint 関数の説明を参照してください。

構文

overlay_disjoint(layer, [expression], [filter], [limit], [cache=false])

記号[]は、オプションの引数を意味します。

引数

  • layer - オーバーレイがチェックされるレイヤ

  • expression - (オプション)対象レイヤの地物を評価する式。設定されていない場合には、この関数は一つ以上のマッチがあるかどうかを示すブール値を返します。

  • filter - (オプション)チェック対象地物をフィルタリングするための式。設定されていない場合、全ての地物をチェックします。

  • limit - (オプション)マッチする地物の上限数。設定されていない場合、マッチする全ての地物を返します。

  • cache - この引数をtrueに設定すると、ローカルな空間インデックスを作成します(特に遅いデータプロバイダで作業していない限りは、ほとんどの場合でこれは不要です)

  • overlay_disjoint('regions') → 現在の地物がregions のすべての地物と空間的に非接続である場合にTRUE

  • overlay_disjoint('regions', filter:= population > 10000) → 現在の地物がpopulation が10000より大きいregions の地物すべてと空間的に非接続である場合にTRUE

  • overlay_disjoint('regions', name) → 現在の地物と空間的に非接続なregions の地物の名前の配列

  • array_to_string(overlay_disjoint('regions', name)) → 現在の地物と空間的に非接続なregions の地物の名前をコンマ区切りで並べた文字列

  • array_sort(overlay_disjoint(layer:='regions', expression:="name", filter:= population > 10000)) → 現在の地物と空間的に非接続な、population が10000よりも大きな値を持つregions の地物の名前をソートした配列

  • overlay_disjoint(layer:='regions', expression:= geom_to_wkt($geometry), limit:=2) → 現在の地物と空間的に非接続なregions の地物のジオメトリ(WKT形式、上限2個)の配列

参考: disjoint配列関数場所による選択 アルゴリズム

13.2.13.93. overlay_equals

現在の地物が対象レイヤの少なくとも1つの地物と空間的に同じかどうか、または、現在の地物と空間的に同じ対象レイヤの地物に関するQGIS式の結果の配列を返します。

この関数の基礎となるGEOSの "Equals" 述語については、PostGISの ST_Equals 関数の説明を参照してください。

構文

overlay_equals(layer, [expression], [filter], [limit], [cache=false])

記号[]は、オプションの引数を意味します。

引数

  • layer - オーバーレイがチェックされるレイヤ

  • expression - (オプション)対象レイヤの地物を評価する式。設定されていない場合には、この関数は一つ以上のマッチがあるかどうかを示すブール値を返します。

  • filter - (オプション)チェック対象地物をフィルタリングするための式。設定されていない場合、全ての地物をチェックします。

  • limit - (オプション)マッチする地物の上限数。設定されていない場合、マッチする全ての地物を返します。

  • cache - この引数をtrueに設定すると、ローカルな空間インデックスを作成します(特に遅いデータプロバイダで作業していない限りは、ほとんどの場合でこれは不要です)

  • overlay_equals('regions') → 現在の地物がregions と空間的に等しい場合にTRUE

  • overlay_equals('regions', filter:= population > 10000) → 現在の地物がpopulation が10000より大きいregions の地物と空間的に同じ場合にTRUE

  • overlay_equals('regions', name) → 現在の地物と空間的に同じregions の地物の名前の配列

  • array_to_string(overlay_equals('regions', name)) → 現在の地物と空間的に同じregions の地物の名前をコンマ区切りで並べた文字列

  • array_sort(overlay_equals(layer:='regions', expression:="name", filter:= population > 10000)) → 現在の地物と空間的に同じ、population が10000よりも大きな値を持つregions の地物の名前をソートした配列

  • overlay_equals(layer:='regions', expression:= geom_to_wkt($geometry), limit:=2) → 現在の地物と空間的に同じregions の地物のジオメトリ(WKT形式、上限2個)の配列

参考: 配列関数場所による選択 アルゴリズム

13.2.13.94. overlay_intersects

現在の地物が対象レイヤの少なくとも1つの地物と空間的に交差しているかどうか、または、現在の地物と交差する対象レイヤの地物に関するQGIS式の結果の配列を返します。

この関数の基礎となるGEOSの "Intersects" 述語については、PostGISの ST_Intersects 関数の説明を参照してください。

構文

overlay_intersects(layer, [expression], [filter], [limit], [cache=false], [min_overlap], [min_inscribed_circle_radius], [return_details], [sort_by_intersection_size])

記号[]は、オプションの引数を意味します。

引数

  • layer - オーバーレイがチェックされるレイヤ

  • expression - (オプション)対象レイヤの地物を評価する式。設定されていない場合には、この関数は一つ以上のマッチがあるかどうかを示すブール値を返します。

  • filter - (オプション)チェック対象地物をフィルタリングするための式。設定されていない場合、全ての地物をチェックします。

  • limit - (オプション)マッチする地物の上限数。設定されていない場合、マッチする全ての地物を返します。

  • cache - この引数をtrueに設定すると、ローカルな空間インデックスを作成します(特に遅いデータプロバイダで作業していない限りは、ほとんどの場合でこれは不要です)

  • min_overlap - (オプション)除外フィルタを定義します:

    • ポリゴンの場合は、現在の地物の平方単位による交差の最小面積。交差が複数のポリゴンで構成されている場合、そのうち少なくとも1つのポリゴンの面積がこの値以上であれば、交差が返されます。

    • ラインの場合、現在の地物の単位による最小の長さ。交差が複数のラインになる場合、そのうち少なくとも1つのラインの長さがこの値以上であれば、交差が返されます。

  • min_inscribed_circle_radius - オプションの除外フィルター(ポリゴンのみ)を定義します:現在の地物の単位による交差の最大内接円の最小半径。交差が複数のポリゴンからなる場合、ポリゴンの少なくとも1つが最大内接円の半径がこの値以上であれば、交差が返されます。

    この関数の基礎となるGEOSの述語については、PostGIS ST_MaximumInscribedCircle 関数の説明を参照してください。

    この引数はGEOS >= 3.9を必要とします。

  • return_details - trueに設定すると、地物'id'、式の'result'、'overlap'の値を含むマップのリストを返します(キー名は引用符で囲む)。また、対象レイヤーがポリゴンの場合、最大内接円の'radius'も返されます。expressionパラメータと併用した場合のみ有効

  • sort_by_intersection_size - 式と一緒に使用した場合のみ有効です。この値を 'des' に設定すると、オーバーラップ値で降順に、 'asc' に設定すると昇順に結果を返します。

  • overlay_intersects('regions') → 現在の地物がregions の地物と空間的に交差する場合にTRUE

  • overlay_intersects('regions', filter:= population > 10000) → 現在の地物がpopulation が10000より大きいregions の地物と空間的に交差する場合にTRUE

  • overlay_intersects('regions', name) → 現在の地物と交差するregions の地物の名前の配列

  • array_to_string(overlay_intersects('regions', name)) → 現在の地物と交差するregions の地物の名前をコンマ区切りで並べた文字列

  • array_sort(overlay_intersects(layer:='regions', expression:="name", filter:= population > 10000)) → 現在の地物と交差する、population が10000よりも大きな値を持つregions の地物の名前をソートした配列

  • overlay_intersects(layer:='regions', expression:= geom_to_wkt($geometry), limit:=2) → 現在の地物と交差するregions の地物のジオメトリ(WKT形式、上限2個)の配列

  • overlay_intersects(layer:='regions', min_overlap:=0.54) → 現在の地物がregionと空間的に交差し、その(マルチポリゴンの場合は少なくとも1つの部分の)交差する面積が0.54以上であればTRUE。

  • overlay_intersects(layer:='regions', min_inscribed_circle_radius:=0.54) → 現在の地物が空間的にregionと交差し、交差する区域の最大内接円の半径(マルチパートの場合、少なくとも1つのパートの半径)が 0.54 以上の場合に TRUE

  • overlay_intersects(layer:='regions', expression:= geom_to_wkt($geometry), return_details:=true) → 'id', 'result', 'overlap' と 'radius' を含むマップの配列。

  • overlay_intersects(layer:='regions', expression:= geom_to_wkt($geometry), sort_by_intersection_size:='des') → オーバーラップ値の降順で並べられた(WKTによる)ジオメトリの配列

参考: intersects配列関数場所による選択 アルゴリズム

13.2.13.95. overlay_nearest

現在の地物が対象レイヤの地物と指定された距離以内にあるかどうか、または、現在の地物から指定された距離以内にある対象レイヤの地物に関するQGIS式の結果の配列を返します。

注意: この関数は、巨大なレイヤに対しては遅く、大量のメモリを消費することがあります。

構文

overlay_nearest(layer, [expression], [filter], [limit=1], [max_distance], [cache=false])

記号[]は、オプションの引数を意味します。

引数

  • layer - 対象レイヤ

  • expression - (オプション)対象レイヤの地物を評価する式。設定されていない場合には、この関数は一つ以上のマッチがあるかどうかを示すブール値を返します。

  • filter - (オプション)チェック対象地物をフィルタリングするための式。設定されていない場合、 対象レイヤの全ての地物をチェックします。

  • limit - (オプション)マッチする地物の上限数。設定されていない場合、最近傍の地物のみを返します。-1を設定した場合、マッチする全ての地物を返します。

  • max_distance - (オプション)マッチする地物の検索を制限するための距離。設定されていない場合、対象レイヤの全ての地物を検索に使用します。

  • cache - この引数をtrueに設定すると、ローカルな空間インデックスを作成します(特に遅いデータプロバイダで作業していない限りは、ほとんどの場合でこれは不要です)

  • overlay_nearest('airports') → "airports" レイヤに少なくとも1つ地物がある場合にTRUE

  • overlay_nearest('airports', max_distance:= 5000) → 現在の地物から距離5000地図単位以内に airportsの地物がある場合にTRUE

  • overlay_nearest('airports', name) → 現在の地物から最も近いairports の地物の名前の配列

  • array_to_string(overlay_nearest('airports', name)) → 現在の地物から最も近いairports の地物の名前の文字列

  • overlay_nearest(layer:='airports', expression:= name, max_distance:= 5000) → 現在の地物から距離5000地図単位以内にある airports の地物のうち、最も近いものの名前の配列

  • overlay_nearest(layer:='airports', expression:="name", filter:= "Use"='Civilian', limit:=3) → 現在の地物から最も近い最大3つの民間空港の名前を距離でソートした配列

  • overlay_nearest(layer:='airports', expression:="name", limit:= -1, max_distance:= 5000) → 現在の地物から距離5000地図単位以内にあるすべての airports の地物の名前を距離順でソートした配列

参考: 配列関数属性の最近傍結合 アルゴリズム

13.2.13.96. overlay_touches

現在の地物が対象レイヤの少なくとも1つの地物と空間的に接触しているかどうか、または、現在の地物と接触する対象レイヤの地物に関するQGIS式の結果の配列を返します。

この関数の基礎となるGEOSの "Touches" 述語については、PostGISの ST_Touches 関数の説明を参照してください。

構文

overlay_touches(layer, [expression], [filter], [limit], [cache=false])

記号[]は、オプションの引数を意味します。

引数

  • layer - オーバーレイがチェックされるレイヤ

  • expression - (オプション)対象レイヤの地物を評価する式。設定されていない場合には、この関数は一つ以上のマッチがあるかどうかを示すブール値を返します。

  • filter - (オプション)チェック対象地物をフィルタリングするための式。設定されていない場合、全ての地物をチェックします。

  • limit - (オプション)マッチする地物の上限数。設定されていない場合、マッチする全ての地物を返します。

  • cache - この引数をtrueに設定すると、ローカルな空間インデックスを作成します(特に遅いデータプロバイダで作業していない限りは、ほとんどの場合でこれは不要です)

  • overlay_touches('regions') → 現在の地物がregions の地物と空間的に接触する場合にTRUE

  • overlay_touches('regions', filter:= population > 10000) → 現在の地物がpopulation が10000より大きいregions の地物と空間的に接触する場合にTRUE

  • overlay_touches('regions', name) → 現在の地物と接触するregions の地物の名前の配列

  • array_to_string(overlay_touches('regions', name)) → 現在の地物と接触するregions の地物の名前をコンマ区切りで並べた文字列

  • array_sort(overlay_touches(layer:='regions', expression:="name", filter:= population > 10000)) → 現在の地物と接触する、population が10000よりも大きな値を持つregions の地物の名前をソートした配列

  • overlay_touches(layer:='regions', expression:= geom_to_wkt($geometry), limit:=2) → 現在の地物と接触するregions の地物のジオメトリ(WKT形式、上限2個)の配列

参考: touches配列関数場所による選択 アルゴリズム

13.2.13.97. overlay_within

現在の地物が対象レイヤの少なくとも1つの地物に空間的に含まれているかどうか、または、現在の地物を含んでいる対象レイヤの地物に関するQGIS式の結果の配列を返します。

この関数の基礎となるGEOSの "Within" 述語については、PostGISの ST_Within 関数の説明を参照してください。

構文

overlay_within(layer, [expression], [filter], [limit], [cache=false])

記号[]は、オプションの引数を意味します。

引数

  • layer - オーバーレイがチェックされるレイヤ

  • expression - (オプション)対象レイヤの地物を評価する式。設定されていない場合には、この関数は一つ以上のマッチがあるかどうかを示すブール値を返します。

  • filter - (オプション)チェック対象地物をフィルタリングするための式。設定されていない場合、全ての地物をチェックします。

  • limit - (オプション)マッチする地物の上限数。設定されていない場合、マッチする全ての地物を返します。

  • cache - この引数をtrueに設定すると、ローカルな空間インデックスを作成します(特に遅いデータプロバイダで作業していない限りは、ほとんどの場合でこれは不要です)

  • overlay_within('regions') → 現在の地物がregions の地物によって空間的に含まれる場合にTRUE

  • overlay_within('regions', filter:= population > 10000) → 現在の地物がpopulation が10000より大きいregions の地物によって空間的に含まれる場合にTRUE

  • overlay_within('regions', name) → 現在の地物を含むregions の地物の名前の配列

  • array_to_string(overlay_within('regions', name)) → 現在の地物を含むregions の地物の名前をコンマ区切りで並べた文字列

  • array_sort(overlay_within(layer:='regions', expression:="name", filter:= population > 10000)) → 現在の地物を含む、population が10000よりも大きな値を持つregions の地物の名前をソートした配列

  • overlay_within(layer:='regions', expression:= geom_to_wkt($geometry), limit:=2) → 現在の地物を含むregions の地物のジオメトリ(WKT形式、上限2個)の配列

参考: within配列関数場所による選択 アルゴリズム

13.2.13.98. $perimeter

現在の地物の周長を返します。この関数で計算される周長は、現在のプロジェクトの楕円体の設定と距離単位の設定の両方が反映されます。例えば、プロジェクトに回転楕円体が設定されている場合は、計算された周長は楕円体長となり、楕円が設定されていない場合には、計算された周長は平面上の長さになります。

構文

$perimeter

  • $perimeter → 42

13.2.13.99. perimeter

ポリゴンオブジェクトのジオメトリの周長を返します。周長はこのジオメトリの空間参照系(SRS)で常に平面的に計算され、周長の単位は空間参照系の単位と一致します。この周長は、プロジェクトの楕円体と距離単位設定にもとづいた楕円体計算が行われる $perimeter 関数による面積とは異なります。

構文

perimeter(geometry)

引数

  • geometry - ポリゴンジオメトリオブジェクト

  • perimeter(geom_from_wkt('POLYGON((0 0, 4 0, 4 2, 0 2, 0 0))')) → 12.0

13.2.13.100. point_n

ジオメトリの特定のノードを返します。

構文

point_n(geometry, index)

引数

  • geometry - ジオメトリオブジェクト

  • index - ノードのインデックス。1は最初のノードです。値が負の場合には、全体の頂点数からその絶対値を引いたインデックスの頂点が選択される

  • geom_to_wkt(point_n(geom_from_wkt('POLYGON((0 0, 4 0, 4 2, 0 2, 0 0))'),2)) → 'Point (4 0)'

参考: 特定の点を抽出 アルゴリズム

13.2.13.101. point_on_surface

ジオメトリの表面上に存在することが保証される点を返します。

構文

point_on_surface(geometry)

引数

  • geometry - ジオメトリ

  • point_on_surface($geometry) → ポイントジオメトリ

参考: 内部保証点(point on surface) アルゴリズム

13.2.13.102. pole_of_inaccessibility

ポリゴンの境界から最も離れた内部点である、ポリゴンの近似的な到達不能極を計算します。この関数は、指定された許容範囲内で真の到達不能極をみつけることが保証されている反復的手法である 'polylabel' アルゴリズム(Vladimir Agafonkin, 2016)を使用します。許容範囲を厳しくすると、より多くの反復計算が必要となり、計算時間がかかります。

構文

pole_of_inaccessibility(geometry, tolerance)

引数

  • geometry - ジオメトリ

  • tolerance - 真の極位置と関数戻り値のポイントの間に許容する最大距離

  • geom_to_wkt(pole_of_inaccessibility( geom_from_wkt('POLYGON((0 1, 0 9, 3 10, 3 3, 10 3, 10 1, 0 1))'), 0.1)) → 'Point(1.546875 2.546875)'

参考: 到達不能極(PIA) アルゴリズム

13.2.13.103. project

距離と、方向(方位角)および仰角をラジアン単位で指定して、始点から投影された点を返します。

構文

project(point, distance, azimuth, [elevation])

記号[]は、オプションの引数を意味します。

引数

  • point - 起点

  • distance - 投影距離

  • azimuth - 北を0として時計回りで測ったラジアン単位の方位角

  • elevation - ラジアン単位の傾斜角

  • geom_to_wkt(project(make_point(1, 2), 3, radians(270))) → 'Point(-2, 2)'

参考: 投影点(デカルト座標) アルゴリズム

13.2.13.104. relate

2つのジオメトリ間の関係の Dimensional Extended 9 Intersection Model(DE-9IM)表現を返します。

リレーションバージョン

2つのジオメトリ間の関係の Dimensional Extended 9 Intersection Model(DE-9IM)表現を返します。

構文

relate(geometry, geometry)

引数

  • geometry - ジオメトリ

  • geometry - ジオメトリ

  • relate( geom_from_wkt( 'LINESTRING(40 40,120 120)' ), geom_from_wkt( 'LINESTRING(40 40,60 120)' ) ) → 'FF1F00102'

パターンマッチバージョン

2つのジオメトリ間のDE-9IM関係が、指定パターンに一致するかどうかをテストします。

構文

relate(geometry, geometry, pattern)

引数

  • geometry - ジオメトリ

  • geometry - ジオメトリ

  • pattern - マッチさせるDE-9IMパターン

  • relate( geom_from_wkt( 'LINESTRING(40 40,120 120)' ), geom_from_wkt( 'LINESTRING(40 40,60 120)' ), '**1F001**' ) → TRUE

13.2.13.105. reverse

頂点の順序を逆にすることによってラインストリングの方向を反転させます。

構文

reverse(geometry)

引数

  • geometry - ジオメトリ

  • geom_to_wkt(reverse(geom_from_wkt('LINESTRING(0 0, 1 1, 2 2)'))) → 'LINESTRING(2 2, 1 1, 0 0)'

参考: 線の向きの反転 アルゴリズム

13.2.13.106. rotate

回転したジオメトリを返します。計算はジオメトリの空間参照系で行われます。

構文

rotate(geometry, rotation, [center=NULL], [per_part=false])

記号[]は、オプションの引数を意味します。

引数

  • geometry - ジオメトリ

  • rotation - 時計回りの度単位の回転量

  • center - 回転の中心。指定しない場合はバウンディングボックスの中心を使用します

  • per_part - パーツごとに回転を適用します。trueを指定すると、入力ジオメトリがマルチパートで、明示的な回転中心点が指定されていない場合、各パーツのバウンディングボックスの中心を中心に回転が適用されます。

  • rotate($geometry, 45, make_point(4, 5)) → 点(4, 5)を中心に時計回りに45度回転させたジオメトリ

  • rotate($geometry, 45) → バウンディングボックスの中央を中心に時計回りに45度回転させたジオメトリ

../../../_images/rotate.gif

図 13.7 地物の回転

13.2.13.107. roundness

ポリゴン形状が円にどれだけ近いかを計算します。この関数は、ポリゴン形状が完全な円である場合に TRUE を、完全に平坦である場合に 0 を返します。

構文

roundness(geometry)

引数

  • geometry - ポリゴン

  • round(roundness(geom_from_wkt('POLYGON(( 0 0, 0 1, 1 1, 1 0, 0 0))')), 3) → 0.785

  • round(roundness(geom_from_wkt('POLYGON(( 0 0, 0 0.1, 1 0.1, 1 0, 0 0))')), 3) → 0.260

Further reading: 丸み係数 アルゴリズム

13.2.13.108. scale

拡大縮小したジオメトリを返します。計算はジオメトリの空間参照系で行われます。

構文

scale(geometry, x_scale, y_scale, [center])

記号[]は、オプションの引数を意味します。

引数

  • geometry - ジオメトリ

  • scale_x - x軸方向スケーリング係数

  • scale_y - y軸方向スケーリング係数

  • center - 拡大縮小の中心。指定しない場合はジオメトリのバウンディングボックスの中心を使用します

  • scale($geometry, 2, 0.5, make_point(4, 5)) → (4, 5) の点を中心に、水平方向に2倍、垂直方向に半分にスケールされたジオメトリ

  • scale($geometry, 2, 0.5) → そのバウンディングボックスの中央を中心にジオメトリを水平方向に2倍、垂直方向に半分にする

13.2.13.109. segments_to_lines

入力ジオメトリのすべてのセグメントからなるマルチラインジオメトリを返します。

構文

segments_to_lines(geometry)

引数

  • geometry - ジオメトリオブジェクト

  • geom_to_wkt(segments_to_lines(geom_from_wkt('LINESTRING(0 0, 1 1, 2 2)'))) → 'MultiLineString ((0 0, 1 1),(1 1, 2 2))'

参考: 線をセグメントに分解 アルゴリズム

13.2.13.110. shared_paths

2つの入力ジオメトリが共有するパスを含むコレクションを返します。同じ方向に進むものはコレクションの最初の要素に、反対方向に進むものは2番目の要素にあります。パスそのものは、最初のジオメトリの方向で与えられます。

構文

shared_paths(geometry1, geometry2)

引数

  • geometry1 - ラインストリング/マルチラインストリングジオメトリ

  • geometry2 - ラインストリング/マルチラインストリングジオメトリ

  • geom_to_wkt(shared_paths(geom_from_wkt('MULTILINESTRING((26 125,26 200,126 200,126 125,26 125),(51 150,101 150,76 175,51 150)))'),geom_from_wkt('LINESTRING(151 100,126 156.25,126 125,90 161, 76 175)'))) → 'GeometryCollection (MultiLineString ((126 156.25, 126 125),(101 150, 90 161),(90 161, 76 175)),MultiLineString EMPTY)'

  • geom_to_wkt(shared_paths(geom_from_wkt('LINESTRING(76 175,90 161,126 125,126 156.25,151 100)'),geom_from_wkt('MULTILINESTRING((26 125,26 200,126 200,126 125,26 125),(51 150,101 150,76 175,51 150))'))) → 'GeometryCollection (MultiLineString EMPTY,MultiLineString ((76 175, 90 161),(90 161, 101 150),(126 125, 126 156.25)))'

13.2.13.111. shortest_line

geometry1とgeometry2を結合する最短のラインを返します。向きは、geometry1を始点とし、geometry2を終点とします。

構文

shortest_line(geometry1, geometry2)

引数

  • geometry1 - 始点側のジオメトリ

  • geometry2 - 終点側のジオメトリ

  • geom_to_wkt(shortest_line(geom_from_wkt('LINESTRING (20 80, 98 190, 110 180, 50 75 )'),geom_from_wkt('POINT(100 100)'))) → 'LineString(73.0769 115.384, 100 100)'

13.2.13.112. simplify

距離の閾値を使用してノードを削除し、ジオメトリを単純化します(Douglas Peuckerアルゴリズム)。このアルゴリズムは、ジオメトリの大きな変動は維持し、ほぼ直線のセグメント上にある頂点を減らします。

構文

simplify(geometry, tolerance)

引数

  • geometry - ジオメトリ

  • tolerance - 除去される点を決定するための、直線セグメントからの最大偏差

  • geom_to_wkt(simplify(geometry:=geom_from_wkt('LineString(0 0, 5 0.1, 10 0)'),tolerance:=5)) → 'LineString(0 0, 10 0)'

参考: ジオメトリの簡素化 アルゴリズム

13.2.13.113. simplify_vw

面積の閾値を使ってノードを削除し、ジオメトリを単純化します(Visvalingam-Whyattアルゴリズム)。このアルゴリズムは、細長いスパイクやほぼ直線上にあるセグメントなど、非常に小さな面積を生み出す頂点を削除します。

構文

simplify_vw(geometry, tolerance)

引数

  • geometry - ジオメトリ

  • tolerance -除去されるノードを決定するための、ノードによって形成される面積の最小値

  • geom_to_wkt(simplify_vw(geometry:=geom_from_wkt('LineString(0 0, 5 0, 5.01 10, 5.02 0, 10 0)'),tolerance:=5)) → 'LineString(0 0, 10 0)'

参考: ジオメトリの簡素化 アルゴリズム

13.2.13.114. single_sided_buffer

ラインストリングの片側だけにバッファを作ったジオメトリを返します。距離単位はこのジオメトリの空間参照系の単位です。

構文

single_sided_buffer(geometry, distance, [segments=8], [join=1], [miter_limit=2.0])

記号[]は、オプションの引数を意味します。

引数

  • geometry - (マルチ)ラインストリングジオメトリ

  • distance - バッファ距離。正の値はラインの左側に、負の値はラインの右側にバッファを作成します

  • segments - 継ぎ目スタイルにroundを使用する場合に、円の四分の一を表現するのに使用するセグメントの数。数値が大きいほど、より多数のノードからなる、滑らかなバッファが生成されます。

  • join - 角の継ぎ目スタイル。1 は round、2 は miter 、3 は bevel

  • miter_limit - 非常に鋭い角に使用されるmiter比の制限(miter継ぎ目の場合のみ)

  • single_sided_buffer($geometry, 10.5) → ラインから左に10.5 単位のバッファ

  • single_sided_buffer($geometry, -10.5) → ラインから右に10.5 単位のバッファ

  • single_sided_buffer($geometry, 10.5, segments:=16, join:=1) → ラインから左に10.5単位のバッファで、より多数のセグメントを使用した滑らかなバッファ

  • single_sided_buffer($geometry, 10.5, join:=3) → ラインから左に10.5単位のバッファで、bebel 継ぎ目を使用

参考: 片側バッファ アルゴリズム

13.2.13.115. sinuosity

曲線の湾曲率、すなわち曲線の両端の(平面的な)直線距離に対する曲線長さの比率を返します。

構文

sinuosity(geometry)

引数

  • geometry - 入力の曲線(円形ストリング、ラインストリング)

  • round(sinuosity(geom_from_wkt('LINESTRING(2 0, 2 2, 3 2, 3 3)')), 3) → 1.265

  • sinuosity(geom_from_wkt('LINESTRING( 3 1, 5 1)')) → 1.0

13.2.13.116. smooth

ノードを追加して角を丸め、ジオメトリを滑らかにしたものを返します。入力ジオメトリにZ値またはM値が含まれている場合には、これらの値も同様に平滑化され、出力ジオメトリは入力ジオメトリと同じ次元を保ちます。

構文

smooth(geometry, [iterations=1], [offset=0.25], [min_length=-1], [max_angle=180])

記号[]は、オプションの引数を意味します。

引数

  • geometry - ジオメトリ

  • iterations - 適用するスムージングの反復回数。数値が大きいほど、より滑らかになりますが、ジオメトリは複雑になります。

  • offset - 0から0.5までの値で、滑らかにしたジオメトリが元のジオメトリにどれくらい従っているかを制御します。値を小さくすると元ジオメトリによりきつく追従したスムージングとなり、値を大きくすると追従の緩いスムージングとなります。

  • min_length - スムージングを適用するセグメントの長さの下限。このパラメータは、ジオメトリの短いセグメントに余分なノードを追加することを避けるために使用されます。

  • max_angle - 平滑化を適用するノードの最大角度(0〜180)。最大角度を小さくすると、鋭角を維持することができます。例えば、80度とすると、ジオメトリの直角部分は維持されます。

  • geom_to_wkt(smooth(geometry:=geom_from_wkt('LineString(0 0, 5 0, 5 5)'),iterations:=1,offset:=0.2,min_length:=-1,max_angle:=180)) → 'LineString (0 0, 4 0, 5 1, 5 5)'

参考: スムージング アルゴリズム

13.2.13.117. square_wave

ジオメトリの境界に沿って方形波/矩形波を構築します。

構文

square_wave(geometry, wavelength, amplitude, [strict=False])

記号[]は、オプションの引数を意味します。

引数

  • geometry - ジオメトリ

  • wavelength - 方形波の波長

  • amplitude - 矩形波の振幅

  • strict - デフォルトでは、波長の引数は「最大波長」として扱われ、実際の波長はジオメトリの境界に沿って正確な数の矩形波が作成されるように動的に調整されます。strict引数をtrueに設定すると、波長が正確に使用され、最終的な波形に不完全なパターンが使用される可能性があります。

  • square_wave(geom_from_wkt('LineString(0 0, 10 0)'), 3, 1) → ラインストリングに沿った波長3、振幅1の方形波

13.2.13.118. square_wave_randomized

ジオメトリの境界に沿ってランダムな方形波/矩形波を構築します。

構文

square_wave_randomized(geometry, min_wavelength, max_wavelength, min_amplitude, max_amplitude, [seed=0])

記号[]は、オプションの引数を意味します。

引数

  • geometry - ジオメトリ

  • min_wavelength - 最小の波長

  • max_wavelength - 最大の波長

  • min_amplitude - 最小の振幅

  • max_amplitude - 最大の振幅

  • **seed**は、波を生成するための乱数の根を指定します。seedを0にすると、完全にランダムな波のセットが生成されます。

  • square_wave_randomized(geom_from_wkt('LineString(0 0 0, 10 0)'), 2, 3, 0.1, 0.2) → ラインストリングに沿った、波長が2~3、振幅が0.1~0.2のランダムなサイズの方形波

13.2.13.119. start_point

ジオメトリの最初のノードを返します。

構文

start_point(geometry)

引数

  • geometry - ジオメトリオブジェクト

  • geom_to_wkt(start_point(geom_from_wkt('LINESTRING(4 0, 4 2, 0 2)'))) → 'Point (4 0)'

参考: 特定の点を抽出 アルゴリズム

13.2.13.120. straight_distance_2d

ジオメトリの始点と終点の間の直線距離(ユークリッド距離)を返します。ジオメトリは曲線(円形ストリングまたはラインストリング)でなければなりません。

構文

straight_distance_2d(geometry)

引数

  • geometry - ジオメトリ

  • straight_distance_2d(geom_from_wkt('LINESTRING(1 0, 1 1)')) → 1

  • round(straight_distance_2d(geom_from_wkt('LINESTRING(1 4, 3 5, 5 0)')), 3) → 5.657

参考: length

13.2.13.121. sym_difference

2つのジオメトリの、交差しない部分を表すジオメトリを返します。

構文

sym_difference(geometry1, geometry2)

引数

  • geometry1 - ジオメトリ

  • geometry2 - ジオメトリ

  • geom_to_wkt( sym_difference( geom_from_wkt( 'LINESTRING(3 3, 4 4, 5 5)' ), geom_from_wkt( 'LINESTRING(3 3, 8 8)' ) ) ) → 'LINESTRING(5 5, 8 8)'

参考: 対称差 アルゴリズム

13.2.13.122. tapered_buffer

ラインジオメトリに沿って、バッファの直径が均等に変化していくバッファを作成します。

構文

tapered_buffer(geometry, start_width, end_width, [segments=8])

記号[]は、オプションの引数を意味します。

引数

  • geometry - 入力ジオメトリ。(マルチ)ラインジオメトリである必要があります。

  • start_width - 始点のバッファ幅

  • end_width - 終点のバッファ幅

  • segments - バッファの四分円を近似するセグメント数

  • tapered_buffer(geometry:=geom_from_wkt('LINESTRING(1 2, 4 2)'),start_width:=1,end_width:=2,segments:=8) → ラインストリングジオメトリに沿って、直径1で始まり、直径2で終わるテーパードバッファ

../../../_images/tapered_buffer.png

図 13.8 ライン地物に対するテーパードバッファ

参考: テイパードバッファ アルゴリズム

13.2.13.123. touches

あるジオメトリがもう一つのジオメトリに接するかどうかをテストします。ジオメトリが共通の点を持ち、かつ内部が交差しない場合、TRUEを返します。

構文

touches(geometry1, geometry2)

引数

  • geometry1 - ジオメトリ

  • geometry2 - ジオメトリ

  • touches( geom_from_wkt( 'LINESTRING(5 3, 4 4)' ), geom_from_wkt( 'LINESTRING(3 3, 4 4, 5 5)' ) ) → TRUE

  • touches( geom_from_wkt( 'POINT(4 4)' ), geom_from_wkt( 'POINT(5 5)' ) ) → FALSE

参考: overlay_touches

13.2.13.124. transform

変換元CRSから変換先CRSに変換されたジオメトリを返します。

構文

transform(geometry, source_auth_id, dest_auth_id)

引数

  • geometry - ジオメトリ

  • source_auth_id - 変換元のCRSのID

  • dest_auth_id - 変換先のCRSのID

  • geom_to_wkt( transform( make_point(488995.53240249, 7104473.38600835), 'EPSG:2154', 'EPSG:4326' ) ) → 'POINT(0 51)'

参考: レイヤの再投影 アルゴリズム

13.2.13.125. translate

平行移動させたジオメトリを返します。計算はジオメトリの空間参照系で行われます。

構文

translate(geometry, dx, dy)

引数

  • geometry - ジオメトリ

  • dx - x方向の移動量

  • dy - y方向の移動量

  • translate($geometry, 5, 10) → 入力ジオメトリと同じタイプのジオメトリ

../../../_images/translate_geometry.png

図 13.9 地物の平行移動

参考: 平行移動(translate) アルゴリズム

13.2.13.126. triangular_wave

ジオメトリの境界に沿って三角波を構築します。

構文

triangular_wave(geometry, wavelength, amplitude, [strict=False])

記号[]は、オプションの引数を意味します。

引数

  • geometry - ジオメトリ

  • wavelength - 三角波の波長

  • amplitude - 三角波の振幅

  • strict - デフォルトでは、波長の引数は「最大波長」として扱われ、実際の波長はジオメトリの境界に沿って正確な数の三角波が作成されるように動的に調整されます。strict引数をtrueに設定すると、波長が正確に使用され、最終的な波形に不完全なパターンが使用される可能性があります。

  • triangular_wave(geom_from_wkt('LineString(0 0, 10 0)'), 3, 1) → ラインストリングに沿った波長3、振幅1の三角波

13.2.13.127. triangular_wave_randomized

ジオメトリの境界に沿ってランダムな三角波を構築します。

構文

triangular_wave_randomized(geometry, min_wavelength, max_wavelength, min_amplitude, max_amplitude, [seed=0])

記号[]は、オプションの引数を意味します。

引数

  • geometry - ジオメトリ

  • min_wavelength - 最小の波長

  • max_wavelength - 最大の波長

  • min_amplitude - 最小の振幅

  • max_amplitude - 最大の振幅

  • **seed**は、波を生成するための乱数の根を指定します。seedを0にすると、完全にランダムな波のセットが生成されます。

  • triangular_wave_randomized(geom_from_wkt('LineString(0 0, 10 0)'), 2, 3, 0.1, 0.2) → ラインストリングに沿った、波長が2~3、振幅が0.1~0.2のランダムなサイズの三角波

13.2.13.128. union

ジオメトリのポイントの和集合を表すジオメトリを返します。

構文

union(geometry1, geometry2)

引数

  • geometry1 - ジオメトリ

  • geometry2 - ジオメトリ

  • geom_to_wkt( union( make_point(4, 4), make_point(5, 5) ) ) → 'MULTIPOINT(4 4, 5 5)'

13.2.13.129. wave

ジオメトリの境界に沿って丸みを帯びた(正弦のような)波を構築します。

構文

wave(geometry, wavelength, amplitude, [strict=False])

記号[]は、オプションの引数を意味します。

引数

  • geometry - ジオメトリ

  • wavelength - 正弦のような波の波長

  • amplitude - 正弦のような波の振幅

  • strict - デフォルトでは、波長の引数は「最大波長」として扱われ、実際の波長はジオメトリの境界に沿って正確な数の波が作成されるように動的に調整されます。strict引数をtrueに設定すると、波長が正確に使用され、最終的な波形に不完全なパターンが使用される可能性があります。

  • wave(geom_from_wkt('LineString(0 0, 10 0)'), 3, 1) → ラインストリングに沿った、波長3、振幅1の正弦のような波

13.2.13.130. wave_randomized

ジオメトリの境界に沿ってランダムな曲線(正弦のような)波を構築します。

構文

wave_randomized(geometry, min_wavelength, max_wavelength, min_amplitude, max_amplitude, [seed=0])

記号[]は、オプションの引数を意味します。

引数

  • geometry - ジオメトリ

  • min_wavelength - 最小の波長

  • max_wavelength - 最大の波長

  • min_amplitude - 最小の振幅

  • max_amplitude - 最大の振幅

  • **seed**は、波を生成するための乱数の根を指定します。seedを0にすると、完全にランダムな波のセットが生成されます。

  • wave_randomized(geom_from_wkt('LineString(0 0, 10 0)'), 2, 3, 0.1, 0.2) → ラインストリングに沿った、波長が2~3、振幅が0.1~0.2のランダムなサイズの丸まった波

13.2.13.131. wedge_buffer

ポイントジオメトリを起点とするくさび形のバッファを返します。

構文

wedge_buffer(center, azimuth, width, outer_radius, [inner_radius=0.0])

記号[]は、オプションの引数を意味します。

引数

  • center - バッファの中心点(起点)。ポイントジオメトリでなければなりません。

  • azimuth - くさび形の中央を指す角度(単位は度)

  • width - バッファ幅(度)。くさび形は、方位角の方向にバッファ幅の半分の大きさで両側に伸びることに注意してください。

  • outer_radius - バッファの外側半径

  • inner_radius - (オプション)バッファの内側半径

  • wedge_buffer(center:=geom_from_wkt('POINT(1 2)'),azimuth:=90,width:=180,outer_radius:=1) → 向きは東向き、角度の幅は180度、外側半径は1の、点(1,2)を中心とするくさび形バッファ

参考: ウェッジバッファを作成 アルゴリズム

13.2.13.132. within

ジオメトリが別のジオメトリの内部にあるかどうかをテストします。geometry1が完全にgeoemtry2の内部にある場合、TRUEを返します。

構文

within(geometry1, geometry2)

引数

  • geometry1 - ジオメトリ

  • geometry2 - ジオメトリ

  • within( geom_from_wkt( 'POINT( 0.5 0.5)' ), geom_from_wkt( 'POLYGON((0 0, 0 1, 1 1, 1 0, 0 0))' ) ) → TRUE

  • within( geom_from_wkt( 'POINT( 5 5 )' ), geom_from_wkt( 'POLYGON((0 0, 0 1, 1 1, 1 0, 0 0 ))' ) ) → FALSE

参考: overlay_within

13.2.13.133. $x

現在のポイント地物のx座標を返します。マルチポイント地物の場合は、最初のポイントのx座標を返します。

構文

$x

  • $x → 42

13.2.13.134. x

ポイントジオメトリのx座標を返します。ポイントジオメトリではない場合には、重心のx座標を返します。

構文

x(geometry)

引数

  • geometry - ジオメトリ

  • x( geom_from_wkt( 'POINT(2 5)' ) ) → 2

  • x( $geometry ) → 現在の地物の重心のx座標

13.2.13.135. $x_at

現在の地物のジオメトリのx座標を抜き出します。

構文

$x_at(i)

引数

  • i - ラインを構成する点のインデックス(インデックスは0から始まり、負の値は-1を最後のインデックスとして逆順で数えます)

  • $x_at(1) → 5

13.2.13.136. x_max

ジオメトリのx座標の最大値を返します。計算はこのジオメトリの空間参照系で行われます。

構文

x_max(geometry)

引数

  • geometry - ジオメトリ

  • x_max( geom_from_wkt( 'LINESTRING(2 5, 3 6, 4 8)') ) → 4

13.2.13.137. x_min

ジオメトリのx座標の最小値を返します。計算はこのジオメトリの空間参照系で行われます。

構文

x_min(geometry)

引数

  • geometry - ジオメトリ

  • x_min( geom_from_wkt( 'LINESTRING(2 5, 3 6, 4 8)') ) → 2

13.2.13.138. $y

現在のポイント地物のy座標を返します。マルチポイント地物の場合は、最初のポイントのy座標を返します。

構文

$y

  • $y → 42

13.2.13.139. y

ポイントジオメトリのy座標を返します。ポイントジオメトリではない場合には、重心のy座標を返します。

構文

y(geometry)

引数

  • geometry - ジオメトリ

  • y( geom_from_wkt( 'POINT(2 5)' ) ) → 5

  • y( $geometry ) → 現在の地物の重心のy座標

13.2.13.140. $y_at

現在の地物のジオメトリのy座標を抜き出します。

構文

$y_at(i)

引数

  • i - ラインを構成する点のインデックス(インデックスは0から始まり、負の値は-1を最後のインデックスとして逆順で数えます)

  • $y_at(1) → 2

13.2.13.141. y_max

ジオメトリのy座標の最大値を返します。計算はこのジオメトリの空間参照系で行われます。

構文

y_max(geometry)

引数

  • geometry - ジオメトリ

  • y_max( geom_from_wkt( 'LINESTRING(2 5, 3 6, 4 8)') ) → 8

13.2.13.142. y_min

ジオメトリのy座標の最小値を返します。計算はこのジオメトリの空間参照系で行われます。

構文

y_min(geometry)

引数

  • geometry - ジオメトリ

  • y_min( geom_from_wkt( 'LINESTRING(2 5, 3 6, 4 8)') ) → 5

13.2.13.143. $z

地物が3Dの場合に、現在のポイント地物のz座標を返します。マルチポイント地物の場合は、最初のポイントのz座標を返します。

構文

$z

  • $z → 123

13.2.13.144. z

ポイントジオメトリのz座標を返します。ジオメトリがz座標値を持たない場合、NULLを返します。

構文

z(geometry)

引数

  • geometry - ポイントジオメトリ

  • z( geom_from_wkt( 'POINTZ(2 5 7)' ) ) → 7

13.2.13.145. z_max

ジオメトリのz座標の最大値を返します。z座標値を持たない場合、NULLを返します。

構文

z_max(geometry)

引数

  • geometry - z座標を持つジオメトリ

  • z_max( geom_from_wkt( 'POINT ( 0 0 1 )' ) ) → 1

  • z_max( geom_from_wkt( 'MULTIPOINT ( 0 0 1 , 1 1 3 )' ) ) → 3

  • z_max( make_line( make_point( 0,0,0 ), make_point( -1,-1,-2 ) ) ) → 0

  • z_max( geom_from_wkt( 'LINESTRING( 0 0 0, 1 0 2, 1 1 -1 )' ) ) → 2

  • z_max( geom_from_wkt( 'POINT ( 0 0 )' ) ) → NULL

13.2.13.146. z_min

ジオメトリのz座標の最小値を返します。z座標値を持たない場合、NULLを返します。

構文

z_min(geometry)

引数

  • geometry - z座標を持つジオメトリ

  • z_min( geom_from_wkt( 'POINT ( 0 0 1 )' ) ) → 1

  • z_min( geom_from_wkt( 'MULTIPOINT ( 0 0 1 , 1 1 3 )' ) ) → 1

  • z_min( make_line( make_point( 0,0,0 ), make_point( -1,-1,-2 ) ) ) → -2

  • z_min( geom_from_wkt( 'LINESTRING( 0 0 0, 1 0 2, 1 1 -1 )' ) ) → -1

  • z_min( geom_from_wkt( 'POINT ( 0 0 )' ) ) → NULL

13.2.14. レイアウト関数

このグループには、印刷レイアウトアイテムのプロパティを操作する関数が含まれます。

13.2.14.1. item_variables

この印刷レイアウト内にあるレイアウトアイテムから、変数をマップ型オブジェクトとして返します。

構文

item_variables(id)

引数

  • id - レイアウトアイテムのID

  • map_get( item_variables('Map 0'), 'map_scale') → 現在の印刷レイアウト内にある 'Map 0' アイテムの縮尺

参考:デフォルトの 変数 のリスト

13.2.14.2. map_credits

レイアウトの地図アイテムに表示されているレイヤのクレジット(使用権)文字列のリストを返します。

構文

map_credits(id, [include_layer_names=false], [layer_name_separator=': '])

記号[]は、オプションの引数を意味します。

引数

  • id - 地図アイテムのID

  • include_layer_names - trueに設定すると、クレジット文字列の前にレイヤ名を含めます

  • layer_name_separator - include_layer_names が true の場合に、レイヤ名とクレジット文字列の間に挿入される文字列

  • array_to_string( map_credits( 'Main Map' ) ) → 'Main Map' レイアウトアイテム内に表示されているレイヤのクレジットのコンマ区切りリスト。例: 'CC-BY-NC, CC-BY-SA'

  • array_to_string( map_credits( 'Main Map', include_layer_names := true, layer_name_separator := ': ' ) ) → 'Main Map' レイアウトアイテム内に表示されているレイヤの名前とそのクレジットのコンマ区切りリスト。例: 'Railway lines: CC-BY-NC, Basemap: CC-BY-SA'

この関数は、レイヤの 「アクセス」メタデータプロパティ が入力されていることを必要とします。

13.2.15. 地図レイヤ

このグループには、現在のプロジェクトで利用可能なレイヤーのリストと、各レイヤーのフィールド(データセットに格納されているもの、仮想または補助的なもの、および結合によるもの)が含まれます。フィールドは フィールドと値 で述べたのと同じように操作することができます。ただし、ダブルクリックすると、フィールドの参照としてではなく、文字列(シングルクォート)として式に追加されます(アクティブレイヤに属さないため)。これは、 aggregatesattributespatial のクエリを実行するときなど、異なるレイヤーを参照する式を書くのに便利な方法となります。

また、このグループにはレイヤを操作するための便利な関数もあります。

13.2.15.1. decode_uri

レイヤを引数にとり、元のデータプロバイダのuriをデコードします。どのデータが利用できるかは、データプロバイダに依存します。

構文

decode_uri(layer, [part])

記号[]は、オプションの引数を意味します。

引数

  • layer - uri をデコードするレイヤ

  • part - uriの一部。指定しない場合は、uri全体をマップ型としたものが返ります。

  • decode_uri(@layer) → {'layerId': '0', 'layerName': '', 'path': '/home/qgis/shapefile.shp'}

  • decode_uri(@layer) → {'layerId': NULL, 'layerName': 'layer', 'path': '/home/qgis/geopackage.gpkg'}

  • decode_uri(@layer, 'path') → 'C:\my_data\qgis\shape.shp'

13.2.15.2. layer_property

該当するレイヤのプロパティまたはメタデータの値を返します。

構文

layer_property(layer, property)

引数

  • layer - レイヤ名かレイヤIDのどちらかを表す文字列

  • property - 戻り値となるプロパティに対応する文字列。有効なオプションは次のとおり:

    • name: レイヤ名

    • id: レイヤID

    • title: メタデータのタイトル文字列

    • abstract: メタデータの要約文字列

    • keywords: メタデータのキーワード

    • data_url: メタデータのURL

    • attribution: メタデータの帰属文字列

    • attribution_url: メタデータの帰属URL

    • source: レイヤのソース

    • min_scale: レイヤの最小表示縮尺

    • max_scale: レイヤの最大表示縮尺

    • is_editable: レイヤが編集モードに入っているか否か

    • crs: レイヤのCRS

    • crs_definition: レイヤのCRSのProj4定義文字列

    • crs_description: レイヤのCRSの名前

    • extent: レイヤの範囲(戻り値はジオメトリオブジェクト)

    • distance_units: レイヤの距離単位

    • type: レイヤの種類、すなわち「ベクタ」または「ラスタ」

    • storage_type: 保存形式(ベクタレイヤのみ)

    • geometry_type: ジオメトリの種類。例えば「Point 」など(ベクタレイヤのみ)

    • feature_count: レイヤの地物数の概算値(ベクタレイヤのみ)

    • path: レイヤのデータソースへのファイルパス。ファイル形式のレイヤのみ利用可

  • layer_property('streets','title') → 'Basemap Streets'

  • layer_property('airports','feature_count') → 120

  • layer_property('landsat','crs') → 'EPSG:4326'

参考: ベクタラスタメッシュ レイヤのプロパティ

13.2.16. マップ関数

このグループには、キーと値によるマップ型のデータ構造(辞書オブジェクト、キー・バリューのペア、連想配列とも呼ばれます)の作成と操作のための関数が含まれます。値の順序が重要な リストデータ構造 とは異なり、マップ型オブジェクトにおけるキーと値のペアの順番は重要ではなく、値はそのキーによって識別されます。

13.2.16.1. from_json

JSON 形式の文字列を読み込みます。

構文

from_json(string)

引数

  • string - JSON文字列

  • from_json('{"qgis":"rocks"}') → { 'qgis': 'rocks' }

  • from_json('[1,2,3]') → [1,2,3]

13.2.16.2. hstore_to_map

hstore形式の文字列をマップ型オブジェクトに変換します。

構文

hstore_to_map(string)

引数

  • string - 入力文字列

  • hstore_to_map('qgis=>rocks') → { 'qgis': 'rocks' }

13.2.16.3. map

パラメータのペアとして渡された、すべてのキーと値のマップ型オブジェクトを返します。

構文

map(key1, value1, key2, value2, ...)

引数

  • key - キー(文字列)

  • value - 値

  • map('1','one','2', 'two') → { '1': 'one', '2': 'two' }

  • map('1','one','2', 'two')['1'] → 'one'

13.2.16.4. map_akeys

マップ型オブジェクトのすべてのキーを、配列として返します。

構文

map_akeys(map)

引数

  • map - マップ型オブジェクト

  • map_akeys(map('1','one','2','two')) → [ '1', '2' ]

13.2.16.5. map_avals

マップ型オブジェクトのすべての値を、配列として返します。

構文

map_avals(map)

引数

  • map - マップ型オブジェクト

  • map_avals(map('1','one','2','two')) → [ 'one', 'two' ]

13.2.16.6. map_concat

与えられたマップ型の全てのエントリを含むマップ型オブジェクトを返します。2つのマップ型オブジェクトに同じキーが含まれている場合、値は後者のマップ型のものが採用されます。

構文

map_concat(map1, map2, ...)

引数

  • map - マップ型オブジェクト

  • map_concat(map('1','one', '2','overridden'),map('2','two', '3','three')) → { '1': 'one', '2': 'two', '3': 'three' }

13.2.16.7. map_delete

指定されたキーとこれに対応する値が削除されたマップ型オブジェクトを返します。

構文

map_delete(map, key)

引数

  • map - マップ型オブジェクト

  • key - 削除するキー

  • map_delete(map('1','one','2','two'),'2') → { '1': 'one' }

13.2.16.8. map_exist

指定されたキーがマップ型オブジェクトに存在する場合、TRUEを返します。

構文

map_exist(map, key)

引数

  • map - マップ型オブジェクト

  • key - 調べたいキー

  • map_exist(map('1','one','2','two'),'3') → FALSE

13.2.16.9. map_get

マップ型オブジェクトのキーで指定された値を返します。存在しないキーの場合はNULLを返します。

構文

map_get(map, key)

引数

  • map - マップ型オブジェクト

  • key - 調べたいキー

  • map_get(map('1','one','2','two'),'2') → 'two'

  • map_get( item_variables('Map 0'), 'map_scale') → (存在する場合には)現在の印刷レイアウト内にある 'Map 0' アイテムの縮尺

ヒント

マップ型から値を取得するには インデックス演算子 ([]) も使用できます。

13.2.16.10. map_insert

キーと値が追加されたマップ型オブジェクトを返します。キーが既に存在する場合は、その値が上書きされます。

構文

map_insert(map, key, value)

引数

  • map - マップ型オブジェクト

  • key - 追加するキー

  • value - 追加する値

  • map_insert(map('1','one'),'3','three') → { '1': 'one', '3': 'three' }

  • map_insert(map('1','one','2','overridden'),'2','two') → { '1': 'one', '2': 'two' }

13.2.16.11. map_prefix_keys

すべてのキーが与えられた文字列でプリフィックスされたマップを返します。

構文

map_prefix_keys(map, prefix)

引数

  • map - マップ型オブジェクト

  • prefix - 文字列

  • map_prefix_keys(map('1','one','2','two'), 'prefix-') → { 'prefix-1': 'one', 'prefix-2': 'two' }

13.2.16.12. map_to_hstore

マップ型オブジェクトをhstore形式の文字列に変換します。

構文

map_to_hstore(map)

引数

  • map - マップ型オブジェクト

  • map_to_hstore(map('qgis','rocks')) → '"qgis"=>"rocks"'

13.2.16.13. to_json

マップ型オブジェクトや配列、その他の値などから、JSON文字列を作成します。

構文

to_json(value)

引数

  • value - 入力値

  • to_json(map('qgis','rocks')) → {"qgis":"rocks"}

  • to_json(array(1,2,3)) → [1,2,3]

13.2.16.14. url_encode

マップから URL エンコードされた文字列を返します。すべての文字を適切にエンコードした形で変換し、完全準拠のクエリ文字列を生成します。

プラス記号 '+' は変換されないことに注意してください。

構文

url_encode(map)

引数

  • map - マップ。

  • url_encode(map('a&+b', 'a and plus b', 'a=b', 'a equals b')) → 'a%26+b=a%20and%20plus%20b&a%3Db=a%20equals%20b'

13.2.17. 数学関数

このグループには、数学関数(例えば平方根や sin、cosなど)が含まれます。

13.2.17.1. abs

数値の絶対値を返します。

構文

abs(value)

引数

  • value - 数値

  • abs(-2) → 2

13.2.17.2. acos

逆余弦(アークコサイン)をラジアンで返します。

構文

acos(value)

引数

  • value - 角度の余弦

  • acos(0.5) → 1.0471975511966

13.2.17.3. asin

逆正弦(アークサイン)をラジアンで返します。

構文

asin(value)

引数

  • value - 角度の正弦

  • asin(1.0) → 1.5707963267949

13.2.17.4. atan

逆正接(アークタンジェント)をラジアンで返します。

構文

atan(value)

引数

  • value - 角度の正接

  • atan(0.5) → 0.463647609000806

13.2.17.5. atan2

2つの引数の符号を用いて象限を決定し、dy/dxの逆正接(アークタンジェント)を返します。

構文

atan2(dy, dx)

引数

  • dy - y座標の差

  • dx - x座標の差

  • atan2(1.0, 1.732) → 0.523611477769969

13.2.17.6. ceil

数値を上に丸めた値を返します。

構文

ceil(value)

引数

  • value - 数値

  • ceil(4.9) → 5

  • ceil(-4.9) → -4

13.2.17.7. clamp

入力値を指定の範囲に制限した値を返します。

構文

clamp(minimum, input, maximum)

引数

  • minimum - input が取りうる最小値

  • input - minimummaximum で指定される範囲に制限される値

  • maximum - input が取りうる最大値

  • clamp(1,5,10) → 5

    input は 1 と 10 の間にあるので、そのまま返します。

  • clamp(1,0,10) → 1

    input は最小値の1より小さいので、関数は1を返します。

  • clamp(1,11,10) → 10

    input は最大値の10より大きいので、関数は10を返します。

13.2.17.8. cos

角度の余弦(コサイン)を返します。

構文

cos(angle)

引数

  • angle - ラジアン単位の角度

  • cos(1.571) → 0.000796326710733263

13.2.17.9. degrees

ラジアンから度に変換します。

構文

degrees(radians)

引数

  • radians - 数値

  • degrees(3.14159) → 180

  • degrees(1) → 57.2958

13.2.17.10. exp

自然対数の底(ネイピア数)のべき乗を返します。

構文

exp(value)

引数

  • value - 指数

  • exp(1.0) → 2.71828182845905

13.2.17.11. floor

数値を下に丸めた値を返します。

構文

floor(value)

引数

  • value - 数値

  • floor(4.9) → 4

  • floor(-4.9) → -5

13.2.17.12. ln

自然対数を返します。

構文

ln(value)

引数

  • value - 数値

  • ln(1) → 0

  • ln(2.7182818284590452354) → 1

13.2.17.13. log

指定した底の対数を返します。

構文

log(base, value)

引数

  • base - 正の数

  • value - 正の数

  • log(2, 32) → 5

  • log(0.5, 32) → -5

13.2.17.14. log10

10を底とする、常用対数を返します。

構文

log10(value)

引数

  • value - 正の数

  • log10(1) → 0

  • log10(100) → 2

13.2.17.15. max

最大値を返します。

構文

max(value1, value2, ...)

引数

  • value - 数値

  • max(2,10.2,5.5) → 10.2

  • max(20.5,NULL,6.2) → 20.5

13.2.17.16. min

最小値を返します。

構文

min(value1, value2, ...)

引数

  • value - 数値

  • min(20.5,10,6.2) → 6.2

  • min(2,-10.3,NULL) → -10.3

13.2.17.17. pi

円周率を返します。

構文

pi()

  • pi() → 3.14159265358979

13.2.17.18. radians

角度をラジアンに変換します。

構文

radians(degrees)

引数

  • degrees - 数値

  • radians(180) → 3.14159

  • radians(57.2958) → 1

13.2.17.19. rand

最小値と最大値の引数で指定された範囲内(境界値を含む)の、ランダムな整数を返します。乱数のシードを指定する場合、値はシードに応じて常に同じ値となります。

構文

rand(min, max, [seed=NULL])

記号[]は、オプションの引数を意味します。

引数

  • min - 乱数の下限値の整数

  • max - 乱数の上限値の整数

  • seed - 乱数のシードとして使用する任意の値

  • rand(1, 10) → 8

13.2.17.20. randf

最小値と最大値の引数で指定された範囲内(境界値を含む)の、ランダムな浮動小数点数を返します。乱数のシードを指定する場合、値はシードに応じて常に同じ値となります。

構文

randf([min=0.0], [max=1.0], [seed=NULL])

記号[]は、オプションの引数を意味します。

引数

  • min - 乱数の下限値の浮動小数点数

  • max - 乱数の上限値の浮動小数点数

  • seed - 乱数のシードとして使用する任意の値

  • randf(1, 10) → 4.59258286403147

13.2.17.21. round

指定した小数点以下の桁数になるように四捨五入した数値を返します。

構文

round(value, [places=0])

記号[]は、オプションの引数を意味します。

引数

  • value - 丸められる数値

  • places - (オプション)数値を丸める桁を表す整数。負の値も可。

  • round(1234.567, 2) → 1234.57

  • round(1234.567) → 1235

  • round(1234.567, -1) → 1230

13.2.17.22. scale_exp

指数曲線を用いて、与えられた値を入力範囲から出力範囲に変換します。この関数は、指定された出力範囲へ値をイージングするために使用します。

構文

scale_exp(value, domain_min, domain_max, range_min, range_max, exponent)

引数

  • value - 入力範囲内の値。関数は出力範囲でスケーリングされた対応する値を返します。

  • domain_min - 入力範囲の最小値を指定します。入力値が取りうる最小値です。

  • domain_max - 入力範囲の最大値を指定します。入力値が取りうる最大値です。

  • range_min - 出力範囲の最小値を指定します。関数による出力の最小値です。

  • range_max - 出力範囲の最大値を指定します。関数による出力の最大値です。

  • exponent - 入力値を出力範囲へマッピングする方法を決定する正の値(0より大きな値)。指数が大きいと出力値は 'ease in' され、出力値の増加はゆっくりと始まって、入力値が入力範囲の最大値に近づくにつれて増加が加速します。指数が小さい(1よりも小さい)と出力値は 'ease out' され、値の増加は早く始まり、入力範囲の最大値に近づくにつれて増加は減速します。

  • scale_exp(5,0,10,0,100,2) → 25

    指数2を使用した easing in

  • scale_exp(3,0,10,0,100,0.5) → 54.772

    指数0.5を使用した easing out

13.2.17.23. scale_linear

線形補間を用いて、与えられた値を入力範囲から出力範囲に変換します。

構文

scale_linear(value, domain_min, domain_max, range_min, range_max)

引数

  • value - 入力範囲内の値。関数は出力範囲でスケーリングされた対応する値を返します。

  • domain_min - 入力範囲の最小値を指定します。入力値が取りうる最小値です。

  • domain_max - 入力範囲の最大値を指定します。入力値が取りうる最大値です。

  • range_min - 出力範囲の最小値を指定します。関数による出力の最小値です。

  • range_max - 出力範囲の最大値を指定します。関数による出力の最大値です。

  • scale_linear(5,0,10,0,100) → 50

  • scale_linear(0.2,0,1,0,360) → 72

    0から1までの値を、0から360までの角度に変換します

  • scale_linear(1500,1000,10000,9,20) → 9.6111111

    1000から10000まで変化する人口を9から20のフォントサイズにスケーリングします。

13.2.17.24. sin

角度の正弦(サイン)を返します。

構文

sin(angle)

引数

  • angle - ラジアン単位の角度

  • sin(1.571) → 0.999999682931835

13.2.17.25. sqrt

平方根を返します。

構文

sqrt(value)

引数

  • value - 数値

  • sqrt(9) → 3

13.2.17.26. tan

角度の正接(タンジェント)を返します。

構文

tan(angle)

引数

  • angle - ラジアン単位の角度

  • tan(1.0) → 1.5574077246549

13.2.18. メッシュ関数

このグループには、メッシュに関連した値を計算したり返したりする関数が含まれます。

13.2.18.1. $face_area

現在のメッシュ面の面積を返します。この関数で計算される面積には、現在のプロジェクトの楕円体設定と面積単位設定の両方が反映されます。例えば、プロジェクトに回転楕円体が設定されている場合、楕円体面積になり、設定されていない場合、平面上の面積になります。

構文

$face_area

  • $face_area → 42

13.2.18.2. $face_index

現在のメッシュ面のインデックスを返します。

構文

$face_index

  • $face_index → 4581

13.2.18.3. $vertex_as_point

現在の頂点をポイントジオメトリとして返します。

構文

$vertex_as_point

  • geom_to_wkt( $vertex_as_point ) → 'POINT(800 1500 41)'

13.2.18.4. $vertex_index

現在のメッシュ頂点のインデックスを返します。

構文

$vertex_index

  • $vertex_index → 9874

13.2.18.5. $vertex_x

現在のメッシュ頂点のx座標を返します。

構文

$vertex_x

  • $vertex_x → 42.12

13.2.18.6. $vertex_y

現在のメッシュ頂点のy座標を返します。

構文

$vertex_y

  • $vertex_y → 12.24

13.2.18.7. $vertex_z

現在のメッシュ頂点のz座標を返します。

構文

$vertex_z

  • $vertex_z → 42

13.2.19. 演算子

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

13.2.19.1. %

除算の余り。被除数の符号をとる。

構文

a % b

引数

  • a - 値

  • b - 値

  • 9 % 2 → 1

  • 9 % -2 → 1

  • -9 % 2 → -1

  • 5 % NULL → NULL

13.2.19.2. *

2つの値の乗算

構文

a * b

引数

  • a - 値

  • b - 値

  • 5 * 4 → 20

  • 5 * NULL → NULL

13.2.19.3. +

2つの値の加算。いずれかの値がNULLの場合、結果はNULLになります。

構文

a + b

引数

  • a - 値

  • b - 値

  • 5 + 4 → 9

  • 5 + NULL → NULL

  • 'QGIS ' + 'ROCKS' → 'QGIS ROCKS'

  • to_datetime('2020-08-01 12:00:00') + '1 day 2 hours' → 2020-08-02T14:00:00

参考: concat||

13.2.19.4. -

2つの値の減算。いずれかの値がNULLの場合、結果はNULLになります。

構文

a - b

引数

  • a - 値

  • b - 値

  • 5 - 4 → 1

  • 5 - NULL → NULL

  • to_datetime('2012-05-05 12:00:00') - to_interval('1 day 2 hours') → 2012-05-04T10:00:00

13.2.19.5. /

2つの値の除算

構文

a / b

引数

  • a - 値

  • b - 値

  • 5 / 4 → 1.25

  • 5 / NULL → NULL

13.2.19.6. <

2つの値を比較し、左の値が右の値より小さい場合、1 と評価されます。

構文

a < b

引数

  • a - 値

  • b - 値

  • 5 < 4 → FALSE

  • 5 < 5 → FALSE

  • 4 < 5 → TRUE

13.2.19.7. <=

2つの値を比較し、左の値が右の値より小さいか等しい場合、1 と評価されます。

構文

a <= b

引数

  • a - 値

  • b - 値

  • 5 <= 4 → FALSE

  • 5 <= 5 → TRUE

  • 4 <= 5 → TRUE

13.2.19.8. <>

2つの値を比較し、両者が等しくない場合、1 と評価されます。

構文

a <> b

引数

  • a - 値

  • b - 値

  • 5 <> 4 → TRUE

  • 4 <> 4 → FALSE

  • 5 <> NULL → NULL

  • NULL <> NULL → NULL

13.2.19.9. =

2つの値を比較し、両者が等しい場合、1 と評価されます。

構文

a = b

引数

  • a - 値

  • b - 値

  • 5 = 4 → FALSE

  • 4 = 4 → TRUE

  • 5 = NULL → NULL

  • NULL = NULL → NULL

13.2.19.10. >

2つの値を比較し、左の値が右の値より大きい場合、1 と評価されます。

構文

a > b

引数

  • a - 値

  • b - 値

  • 5 > 4 → TRUE

  • 5 > 5 → FALSE

  • 4 > 5 → FALSE

13.2.19.11. >=

2つの値を比較し、左の値が右の値より大きいか等しい場合、1 と評価されます。

構文

a >= b

引数

  • a - 値

  • b - 値

  • 5 >= 4 → TRUE

  • 5 >= 5 → TRUE

  • 4 >= 5 → FALSE

13.2.19.12. AND

条件式 a と条件式 b がともに true である場合に TRUE を返します。

構文

a AND b

引数

  • a - 条件式

  • b - 条件式

  • TRUE AND TRUE → TRUE

  • TRUE AND FALSE → FALSE

  • 4 = 2+2 AND 1 = 1 → TRUE

  • 4 = 2+2 AND 1 = 2 → FALSE

13.2.19.13. BETWEEN

値が指定された範囲内にあるとき、TRUE を返します。範囲は、境界を含むとみなされます。除外を調べるには、NOT BETWEENを使うことができます。

構文

value BETWEEN lower_bound AND higher_bound

引数

  • value - 範囲と比較する値。文字列、数字または日付です。

  • lower_bound AND higher_bound - 範囲

  • 'B' BETWEEN 'A' AND 'C' → TRUE

  • 2 BETWEEN 1 AND 3 → TRUE

  • 2 BETWEEN 2 AND 3 → TRUE

  • 'B' BETWEEN 'a' AND 'c' → FALSE

  • lower('B') BETWEEN 'a' AND 'b' → TRUE

注釈

value BETWEEN lower_bound AND higher_bound は "value >= lower_bound AND value <= higher_bound" と同じです。

参考: NOT BETWEEN

13.2.19.14. ILIKE

最初の引数が与えられたパターンと大文字・小文字を区別せずに一致する場合に TRUE を返します。マッチングで大文字・小文字を区別する場合には、ILIKE の代わりに LIKE を使用してください。数値にも対応しています。

構文

string/number ILIKE pattern

引数

  • string/number - 検索する文字列

  • pattern - 検索するパターン。 '%' をワイルドカードとして、 '_' を任意の1文字として、 '\\' をこれらの特殊文字のエスケープとして利用できます。

  • 'A' ILIKE 'A' → TRUE

  • 'A' ILIKE 'a' → TRUE

  • 'A' ILIKE 'B' → FALSE

  • 'ABC' ILIKE 'b' → FALSE

  • 'ABC' ILIKE 'B' → FALSE

  • 'ABC' ILIKE '_b_' → TRUE

  • 'ABC' ILIKE '_B_' → TRUE

  • 'ABCD' ILIKE '_b_' → FALSE

  • 'ABCD' ILIKE '_B_' → FALSE

  • 'ABCD' ILIKE '_b%' → TRUE

  • 'ABCD' ILIKE '_B%' → TRUE

  • 'ABCD' ILIKE '%b%' → TRUE

  • 'ABCD' ILIKE '%B%' → TRUE

  • 'ABCD%' ILIKE 'abcd\\%' → TRUE

  • 'ABCD' ILIKE '%B\\%' → FALSE

13.2.19.15. IN

リストの中に値が見つかった場合に TRUE を返します。

構文

a IN b

引数

  • a - 値

  • b - 値のリスト

  • 'A' IN ('A','B') → TRUE

  • 'A' IN ('C','B') → FALSE

13.2.19.16. IS

a と b が同じ場合に TRUE を返します。

構文

a IS b

引数

  • a - 任意の値

  • b - 任意の値

  • 'A' IS 'A' → TRUE

  • 'A' IS 'a' → FALSE

  • 4 IS 4 → TRUE

  • 4 IS 2+2 → TRUE

  • 4 IS 2 → FALSE

  • $geometry IS NULL → ジオメトリが NULL でない場合は 0

13.2.19.17. IS NOT

a と b が同じではない場合に TRUEを返します。

構文

a IS NOT b

引数

  • a - 値

  • b - 値

  • 'a' IS NOT 'b' → TRUE

  • 'a' IS NOT 'a' → FALSE

  • 4 IS NOT 2+2 → FALSE

13.2.19.18. LIKE

最初の引数が与えられたパターンと一致する場合に TRUEを返します。数値にも対応しています。

構文

string/number LIKE pattern

引数

  • string/number - 値

  • pattern - 値と比較するパターン。 '%' をワイルドカードとして、 '_' を任意の1文字として、 '\\' をこれらの特殊文字のエスケープとして利用できます。

  • 'A' LIKE 'A' → TRUE

  • 'A' LIKE 'a' → FALSE

  • 'A' LIKE 'B' → FALSE

  • 'ABC' LIKE 'B' → FALSE

  • 'ABC' LIKE '_B_' → TRUE

  • 'ABCD' LIKE '_B_' → FALSE

  • 'ABCD' LIKE '_B%' → TRUE

  • 'ABCD' LIKE '%B%' → TRUE

  • '1%' LIKE '1\\%' → TRUE

  • '1_' LIKE '1\\%' → FALSE

13.2.19.19. NOT

条件式の否定を返します。

構文

NOT a

引数

  • a - 条件式

  • NOT 1 → FALSE

  • NOT 0 → TRUE

13.2.19.20. NOT BETWEEN

値が指定された範囲内にない場合、TRUE を返します。範囲は、境界を含むとみなされます。

構文

value NOT BETWEEN lower_bound AND higher_bound

引数

  • value - 範囲と比較する値。文字列、数字または日付です。

  • lower_bound AND higher_bound - 範囲

  • 'B' NOT BETWEEN 'A' AND 'C' → FALSE

  • 1.0 NOT BETWEEN 1.1 AND 1.2 → TRUE

  • 2 NOT BETWEEN 2 AND 3 → FALSE

  • 'B' NOT BETWEEN 'a' AND 'c' → TRUE

  • lower('B') NOT BETWEEN 'a' AND 'b' → FALSE

注釈

value NOT BETWEEN lower_bound AND higher_bound は "value < lower_bound OR value > higher_bound" と同じです。

参考: BETWEEN

13.2.19.21. OR

条件式 a、条件式 b のいずれかが true である場合に TRUE を返します。

構文

a OR b

引数

  • a - 条件式

  • b - 条件式

  • 4 = 2+2 OR 1 = 1 → TRUE

  • 4 = 2+2 OR 1 = 2 → TRUE

  • 4 = 2   OR 1 = 2 → FALSE

13.2.19.22. []

インデックス演算子です。配列の要素やマップ型の値を返します。

構文

[index]

引数

  • index - 配列のインデックスまたはマップ型のキー

  • array(1,2,3)[0] → 1

  • array(1,2,3)[2] → 3

  • array(1,2,3)[-1] → 3

  • map('a',1,'b',2)['a'] → 1

  • map('a',1,'b',2)['b'] → 2

参考: array_getmap_get

13.2.19.23. ^

2つの値の累乗。

構文

a ^ b

引数

  • a - 値

  • b - 値

  • 5 ^ 4 → 625

  • 5 ^ NULL → NULL

13.2.19.24. ||

2つの値を連結して文字列にします。

いずれかの値がNULLの場合、結果はNULLになります。動作が異なるconcat 関数についても参照してください。

構文

a || b

引数

  • a - 値

  • b - 値

  • 'Here' || ' and ' || 'there' → 'Here and there'

  • 'Nothing' || NULL → NULL

  • 'Dia: ' || "Diameter" → 'Dia: 25'

  • 1 || 2 → '12'

参考: concat+

13.2.19.25. ~

文字列に対して正規表現のマッチングを実行します。バックスラッシュ文字は二重にエスケープする必要があります(例:空白文字に一致させるには "\\s" )

構文

string ~ regex

引数

  • string - 文字列

  • regex - 正規表現。バックスラッシュにはエスケープが必要です。例: \\d.

  • 'hello' ~ 'll' → TRUE

  • 'hello' ~ '^ll' → FALSE

  • 'hello' ~ 'llo$' → TRUE

  • 'abc123' ~ '\\d+' → TRUE

参考: regexp_match

13.2.20. プロセシング関数

このグループには、プロセシングアルゴリズムで使用できる関数が含まれます。

13.2.20.1. parameter

プロセシングアルゴリズムの入力パラメータの値を返します。

構文

parameter(name)

引数

  • name - 対応する入力パラメータの名前

  • parameter('BUFFER_SIZE') → 5.6

13.2.21. ラスタ関数

このグループには、ラスタレイヤを操作するための関数が含まれます。

13.2.21.1. raster_statistic

ラスタレイヤの統計値を返します。

構文

raster_statistic(layer, band, property)

引数

  • layer - ラスタレイヤ名またはレイヤIDを表す文字列

  • band - 1から始まる、ラスタレイヤのバンド番号を表す整数

  • property - 戻り値となるプロパティに対応する文字列。有効なオプションは次のとおり:

    • min: 最小値

    • max: 最大値

    • avg: 平均値

    • stdev: 標準偏差

    • range: 値の範囲(max - min)

    • sum: ラスタの値の合計値

  • raster_statistic('lc',1,'avg') → 'lc' ラスタレイヤのバンド1の平均値

  • raster_statistic('ac2010',3,'min') → 'ac2010' ラスタレイヤのバンド3の最小値

13.2.21.2. raster_value

指定された点のラスタ値を返します。

構文

raster_value(layer, band, point)

引数

  • layer - ラスタレイヤの名前またはid

  • band - 値をサンプリングするバンド番号

  • point - ポイントジオメトリ(2つ以上のパートを持つマルチパートジオメトリの場合には、NULLを返します)

  • raster_value('dem', 1, make_point(1,1)) → 25

13.2.22. レコードと属性関数

このグループには、レコード識別子を操作する関数が含まれます。

13.2.22.1. attribute

地物の属性を返します。

バージョン1

現在の地物の属性値を返します。

構文

attribute(attribute_name)

引数

  • attribute_name - 返される属性名

  • attribute( 'name' ) → 現在の地物の 'name' 属性に格納されている値

バージョン2

指定された地物の属性値を返します。

構文

attribute(feature, attribute_name)

引数

  • feature - 地物

  • attribute_name - 返される属性名

  • attribute( @atlas_feature, 'name' ) → 現在の地図帳地物の 'name' 属性に格納されている値

13.2.22.2. attributes

属性名をキーとする、地物のすべての属性を含むマップ型オブジェクトを返します。

バージョン1

現在の地物の全属性をマップ型オブジェクトとして返します。

構文

attributes()

  • attributes()['name'] → 現在の地物の 'name' 属性に格納されている値

バージョン2

ターゲットとする地物を指定できます。

構文

attributes(feature)

引数

  • feature - 地物

  • attributes( @atlas_feature )['name'] → 現在の地図帳地物の 'name' 属性に格納されている値

参考: マップ関数

13.2.22.3. $currentfeature

現在評価されている地物を返します。'attribute' 関数と併用することで、現在の地物から属性値を評価することができます。警告: この関数は非推奨です。代わりに代替の@feature変数を使用することが推奨されます。

構文

$currentfeature

  • attribute( $currentfeature, 'name' ) → 現在の地物の 'name' 属性に格納されている値

13.2.22.4. display_expression

指定された地物の表示式を返します。式はデフォルトで評価されます。0個、1個、または2個以上の引数をとることができ、詳しくは以下の通りです。

引数なしバージョン

引数なしで関数を呼んだ場合、関数は現在のレイヤの現在の地物の表示式を評価します。

構文

display_expression()

  • display_expression() → 現在のレイヤの現在の地物の表示式

引数が地物1つのバージョン

地物だけを引数として関数を呼んだ場合、関数は現在のレイヤの指定された地物の表示式を評価します。

構文

display_expression(feature)

引数

  • feature - 表示式を評価したい地物

  • display_expression(@atlas_feature) → 現在の地図帳地物の表示式

レイヤと地物の引数バージョン

レイヤと地物の両方を引数にとって関数を呼んだ場合、関数は指定されたレイヤの指定された地物の表示式を評価します。

構文

display_expression(layer, feature, [evaluate=true])

記号[]は、オプションの引数を意味します。

引数

  • layer - レイヤ(IDまたは名前)

  • feature - 表示式を評価したい地物

  • evaluate - 表示式が評価される必要があるかどうかを指定します。falseとすると、表示式は文字列リテラルで返されるだけです(後で 'eval' 関数を使用して評価する必要があります)

  • display_expression( 'streets', get_feature_by_id('streets', 1)) → 'streets' レイヤの、IDが1の地物の表示式

  • display_expression('a_layer_id', $currentfeature, 'False') → 指定された地物の評価前の表示式

13.2.22.5. get_feature

指定された属性値にマッチした最初の地物を返します。

単独の値のバージョン

レイヤID、および、ひとつの列と値を指定します。

構文

get_feature(layer, attribute, value)

引数

  • layer - レイヤ名またはID

  • attribute - マッチに使う属性名

  • value - マッチさせたい属性値

  • get_feature('streets','name','main st') → "name" フィールドの値が "main st" となっている、 "streets" レイヤで最初に見つかった地物

マップ型バージョン

レイヤID、および、使用する列(キー)とその値を含むマップ

構文

get_feature(layer, attribute)

引数

  • layer - レイヤ名またはID

  • attribute - 使用する列と値のペアを含んでいるマップ

  • get_feature('streets',map('name','main st','lane_num','4')) → "name"フィールドの値が"main st"、"lane_num"フィールドの値が"4"である、"streets"レイヤの最初の地物

13.2.22.6. get_feature_by_id

IDで指定した地物を返します。

構文

get_feature_by_id(layer, feature_id)

引数

  • layer - レイヤ名またはレイヤID

  • feature_id - 戻り値として取得したい地物のID

  • get_feature_by_id('streets', 1) → "streets" レイヤのIDが1の地物

参考: $id

13.2.22.7. $id

現在の行の地物IDを返します。警告: この関数は非推奨です。代わりに代替の@id変数を使用することをお勧めします。

構文

$id

  • $id → 42

13.2.22.8. is_selected

地物が選択されている場合にTRUEを返します。0個、1個、または2個の引数をとることができ、詳しくは以下の通りです。

引数なしバージョン

引数なしで関数を呼んだ場合、関数は現在のレイヤの現在の地物が選択されている場合にTRUEを返します。

構文

is_selected()

  • is_selected() → 現在のレイヤの現在の地物が選択されている場合、TRUE

引数が地物1つのバージョン

'feature' だけを引数として関数を呼んだ場合、関数は現在のレイヤの指定された地物が選択されている場合にTRUEを返します。

構文

is_selected(feature)

引数

  • feature - 選択されているかどうかを確認したい地物

  • is_selected(@atlas_feature) → 現在の地図帳地物が選択されている場合、TRUE。

  • is_selected(get_feature('streets', 'name', 'Main St.'))) →アクティブな "streets" レイヤで地物に一意に名前が付けられ、その中で "Main St." 地物が選択されている場合に TRUE。

  • is_selected(get_feature_by_id('streets', 1)) → アクティブな "streets" レイヤでid=1 の地物が選択されている場合に TRUE

引数が2つのバージョン

レイヤと地物の両方を引数にとって関数を呼んだ場合、関数は指定されたレイヤの指定された地物が選択されている場合にTRUEを返します。

構文

is_selected(layer, feature)

引数

  • layer - 地物の選択をチェックしたいレイヤ(IDまたはレイヤ名)

  • feature - 選択されているかどうかを確認したい地物

  • is_selected( 'streets', get_feature('streets', 'name', "street_name")) → 現在の建物のstreetが選択されていればTRUE(建物レイヤに'street_name'というフィールドがあり、'streets'レイヤにユニークな値を持つ'name'というフィールドがあると仮定している)。

  • is_selected( 'streets', get_feature_by_id('streets', 1)) → "streets"レイヤの id 1 の地物が選択されている場合に TRUE。

13.2.22.9. maptip

指定された地物のTipを返します。式はデフォルトで評価されます。0個、1個、または2個以上の引数をとることができ、詳しくは以下の通りです。

引数なしバージョン

引数なしで関数を呼んだ場合、関数は現在のレイヤの現在の地物のTipを評価します。

構文

maptip()

  • maptip() → 現在のレイヤの現在の地物のTip

引数が地物1つのバージョン

地物だけを引数として関数を呼んだ場合、関数は現在のレイヤの指定された地物の表示式を評価します。

構文

maptip(feature)

引数

  • feature - 表示式を評価したい地物

  • maptip(@atlas_feature) → 現在の地図帳地物のTip

レイヤと地物の引数バージョン

レイヤと地物の両方を引数にとって関数を呼んだ場合、関数は指定されたレイヤの指定された地物の表示式を評価します。

構文

maptip(layer, feature, [evaluate=true])

記号[]は、オプションの引数を意味します。

引数

  • layer - レイヤ(IDまたは名前)

  • feature - 表示式を評価したい地物

  • evaluate - 地物のTipが評価される必要があるかどうかを指定します。falseとすると、表示式は文字列リテラルで返されるだけです(後で 'eval_template' 関数を使用して評価する必要があります)

  • maptip('streets', get_feature_by_id('streets', 1)) → 'streets' レイヤの、IDが1の地物のTip

  • maptip('a_layer_id', $currentfeature, 'False') → 指定された地物の評価前のTip

13.2.22.10. num_selected

指定されたレイヤで選択されている地物の数を返します。デフォルトでは、式が評価されるレイヤ上で動作します。

構文

num_selected([layer=current layer])

記号[]は、オプションの引数を意味します。

引数

  • layer - 地物の選択をチェックしたいレイヤ(IDまたはレイヤ名)

  • num_selected() → 現在のレイヤで選択されている地物の数

  • num_selected('streets') → 'streets' レイヤ上で選択されている地物の数

13.2.22.11. represent_attributes

属性名をキーとし、設定された表現値を値とするマップを返します。属性の表現値は、各属性に設定されているウィジェットタイプに依存します。 0個、1個、またはそれ以上の引数とともに使用することができます。詳細は以下をご覧ください。

引数なしバージョン

パラメータなしで呼び出された場合、この関数は、現在のレイヤの地物の属性の表現を返します。

構文

represent_attributes()

  • represent_attributes() → 現在の地物の属性の表現。

引数が地物1つのバージョン

'feature' パラメータだけで呼び出した場合、関数は現在のレイヤから指定された地物の属性の表現を返します。

構文

represent_attributes(feature)

引数

  • feature - 表示式を評価したい地物

  • represent_attributes(@atlas_feature) → 現在のレイヤから指定された地物の属性の表現。

レイヤと地物の引数バージョン

'layer' と 'feature' パラメータで呼び出した場合、関数は指定されたレイヤから指定された地物の属性の表現を返します。

構文

represent_attributes(layer, feature)

引数

  • layer - レイヤ(IDまたはレイヤ名)。

  • feature - 表示式を評価したい地物

  • represent_attributes('atlas_layer', @atlas_feature) → 指定されたレイヤから指定された地物の属性の表現。

参考: represent_value

13.2.22.12. represent_value

フィールド値に設定された表現値を返します。結果はウィジェットのタイプによって異なります。多くの場合、この関数は「バリューマップ」ウィジェットで便利です。

構文

represent_value(value, [fieldName])

記号[]は、オプションの引数を意味します。

引数

  • value - 評価する値。ほとんどの場合はフィールドを指定。

  • fieldName - ウィジェットの設置が読み込まれるフィールド名。

  • represent_value("field_with_value_map") → バリューマップの値の説明

  • represent_value('static value', 'field_name') → 'field_name' がstatic value であることの説明

参考: widget types, represent_attributes

13.2.22.13. sqlite_fetch_and_increment

SQLite データベースの自動インクリメントを管理します。

SQLite のデフォルト値はinsert 時にしか適用されず、先読みすることはできません。

このため、データベースに行を作成する前にAUTO_INCREMENTでインクリメントされた主キーを取得することはできません。補足:postgresでは、 デフォルト値を評価する オプションでこれが可能です。

リレーションを持つ新たな地物を追加する際、親地物のフォームがまだ開いていてコミットされていない状態でも、親に子を追加することができると便利です。

この制限を回避するため、gpkg のようなsqliteベースの形式で、この関数を使用してシーケンス値を別のテーブルで管理できます。

シーケンステーブルはシーケンスIDに対してフィルタリングされ(filter_attribute と filter_value)、 id_field の現在の値に1増やした値が返されます。

別のカラムで値を指定する必要がある場合には、default_values マップを使用できます。

注意

この関数はターゲットのSQLiteテーブルを更新します。これは、各属性のデフォルト値設定を使用することが想定されているためです。

データベースのパラメータがレイヤで、レイヤがトランザクションモードの場合、値はトランザクション期間中に一度だけ取得され、キャッシュされて値がインクリメントされます。このため、同じデータベース上で複数のプロセスから並列に作業することは安全ではありません。

構文

sqlite_fetch_and_increment(database, table, id_field, filter_attribute, filter_value, [default_values])

記号[]は、オプションの引数を意味します。

引数

  • database - SQLiteファイルまたはGeoPackageレイヤへのパス

  • table - シーケンスを管理するテーブルの名前

  • id_field - 現在のid値を含んでいるフィールドの名前

  • filter_attribute - このシーケンスの一意の識別子を含むフィールドの名前。UNIQUEインデックスが必要です。

  • filter_value - シーケンスに使用する名前

  • default_values - テーブルの別カラムのデフォルト値のためのマップオブジェクト。値は全体をクォート記号で括る必要があります。関数も可能です。

  • sqlite_fetch_and_increment(@layer, 'sequence_table', 'last_unique_id', 'sequence_id', 'global', map('last_change', 'date(''now'')', 'user', '''' || @user_account_name || '''')) → 0

  • sqlite_fetch_and_increment(layer_property(@layer, 'path'), 'sequence_table', 'last_unique_id', 'sequence_id', 'global', map('last_change', 'date(''now'')', 'user', '''' || @user_account_name || '''')) → 0

参考: データソースプロパティ1対多または多対多のリレーションの作成

13.2.22.14. uuid

Qtの QUuid::createUuid メソッドを使用して、テーブルの各行のUUID(Universally Unique Identifier)を生成します。

構文

uuid([format='WithBraces'])

記号[]は、オプションの引数を意味します。

引数

  • format - UUIDのフォーマット。 'WithBraces' 、 'WithoutBraces' 、または 'Id128'

  • uuid() → '{0bd2f60f-f157-4a6d-96af-d4ba4cb366a1}'

  • uuid('WithoutBraces') → '0bd2f60f-f157-4a6d-96af-d4ba4cb366a1'

  • uuid('Id128') → '0bd2f60ff1574a6d96afd4ba4cb366a1'

13.2.23. リレーション

このグループには、このプロジェクトで利用可能な リレーション のリストとその説明が含まれています。このグループは(例えば relation_aggregate 関数を使って)式を書く際やフォームをカスタマイズする際に、リレーションIDに素早くアクセスすることができます。

13.2.24. 文字列関数

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

13.2.24.1. ascii

文字列の最初の文字のunicode番号を返します。

構文

ascii(string)

引数

  • string - unicode番号に変換する文字列

  • ascii('Q') → 81

13.2.24.2. char

unicode番号に対応した文字を返します。

構文

char(code)

引数

  • code - unicode番号

  • char(81) → 'Q'

13.2.24.3. concat

複数の文字列を1つに結合したものを返します。NULL値は空文字列に変換されます。その他の値(数値など)は文字列に変換されます。

構文

concat(string1, string2, ...)

引数

  • string - 文字列

  • concat('sun', 'set') → 'sunset'

  • concat('a','b','c','d','e') → 'abcde'

  • concat('Anno ', 1984) → 'Anno 1984'

  • concat('The Wall', NULL) → 'The Wall'

フィールド連結について

文字列やフィールド値の連結には ||+ 演算子を使用することもできますが、これらにはいくつか特性があります。

  • + 演算子は式の合計も意味するので、整数(フィールドや数値)オペランドがある場合にはエラーを起こしやすく、他の演算子を使用する方が良いでしょう:

    'My feature id is: ' + "gid" => triggers an error as gid returns an integer
    
  • 引数のどれかがNULL値の場合、 ||+ はNULLを返します。NULL値の有無に関わらず、その他の引数の結合を返したい場合には、 concat 関数を使用するのが良いでしょう:

    'My feature id is: ' + NULL ==> NULL
    'My feature id is: ' || NULL => NULL
    concat('My feature id is: ', NULL) => 'My feature id is: '
    

参考: ||+

13.2.24.4. format

指定された引数を用いて文字列をフォーマットします。

構文

format(string, arg1, arg2, ...)

引数

  • string - 引数のプレースホルダを含む文字列。プレースホルダには、 %1 、 %2 などを使います。プレースホルダは繰り返し使用できます。最小番号のプレースホルダは arg1 で置き換えられ、次に小さい番号は arg2 で、以下同様です。

  • arg - 任意の型で任意の数の引数

  • format('This %1 a %2','is', 'test') → 'This is a test'

  • format('This is %2','a bit unexpected but 2 is lowest number in string','normal') → 'This is a bit unexpected but 2 is lowest number in string'

13.2.24.5. format_date

日付型または文字列をカスタム書式文字列でフォーマットします。Qtの date/time フォーマット文字列を使用します。詳細は QDateTime::toString を参照してください。

構文

format_date(datetime, format, [language])

記号[]は、オプションの引数を意味します。

引数

  • datetime - 日付型、時間型または日付時刻型の値

  • format - 文字列の書式設定に使用する文字列テンプレート

    出力

    d

    十の位のゼロがない日付(1から31)

    dd

    十の位にゼロのある日付(01から31)

    ddd

    短縮形のローカル曜日名(例:'月' から '日')

    dddd

    長いローカル曜日名(例:'月曜日' から '日曜日')

    M

    十の位のゼロがない月(1から12)

    MM

    十の位にゼロのある月(01から12)

    MMM

    短縮形のローカル月名(例:'1月' から '12月')

    MMMM

    長いローカル月名(例:'1月' から '12月')

    yy

    2桁の年(00から99)

    yyyy

    4桁の年

    以下の式は、書式文字列の時間部分に使用します。

    出力

    h

    十の位のゼロなしの時(0から23、AM/PM表示の場合は1から12)

    hh

    十の位のゼロありの時(00から23、AM/PM表示の場合は01から12)

    H

    十の位のゼロなしの時(0から23、AM/PM表示の場合も同様)

    HH

    十の位のゼロありの時(00から23、AM/PM表示の場合も同様)

    m

    十の位のゼロなしの分(0から59)

    mm

    十の位のゼロありの分(00から59)

    s

    十の位のゼロなしの秒(0から59)

    ss

    十の位のゼロありの秒(00から59)

    z

    数字の後に付くゼロなしのミリ秒(0 から 999)

    zzz

    数字の後に付くゼロありのミリ秒(000 から 999)

    AP or A

    AM/PM 時間として解釈します。 AP は 'AM' または 'PM' のいずれかです。

    ap or a

    AM/PM 時間として解釈します。 ap は 'am' または 'pm' のいずれかです。

  • language - 日付をカスタム文字列にフォーマットする際に使用する言語(2文字または3文字の小文字、 ISO 639 言語名コード )。デフォルトでは現在のQGISユーザーのロケールを使用します

  • format_date('2012-05-15','dd.MM.yyyy') → '15.05.2012'

  • format_date('2012-05-15','d MMMM yyyy','fr') → '15 mai 2012'

  • format_date('2012-05-15','dddd') → 'Tuesday' (現在のロケールが English 版の場合の結果)

  • format_date('2012-05-15 13:54:20','dd.MM.yy') → '15.05.12'

  • format_date('13:54:20','hh:mm AP') → '01:54 午後'

13.2.24.6. format_number

3桁毎にロケールの桁区切り文字で区切られた数字を返します。デフォルトでは、現在のQGISユーザーのロケールが使用されます。また、指定された桁数で小数点以下の桁数をそろえます。

構文

format_number(number, [places=0], [language], [omit_group_separators=false], [trim_trailing_zeroes=false])

記号[]は、オプションの引数を意味します。

引数

  • number - フォーマットする数値

  • places - 小数点以下の桁数を表す整数

  • language - 数値を文字列にフォーマットする際に使用する言語(2文字または3文字の小文字、 ISO 639 言語名コード )。デフォルトでは現在のQGISユーザーのロケールを使用します

  • omit_group_separators - trueに設定すると、グループセパレータは文字列に含まれません

  • trim_trailing_zeroes - trueを指定すると、小数点以下のゼロが文字列から取り除かれます

  • format_number(10000000.332,2) → '10,000,000.33' (例えば現在のロケールが English 版の場合の結果)

  • format_number(10000000.332,2,'fr') → '10 000 000,33'

13.2.24.7. left

文字列の左から n 文字分の部分文字列を返します。

構文

left(string, length)

引数

  • string - 文字列

  • length - 整数値。文字列の左から数えた文字数

  • left('Hello World',5) → 'Hello'

13.2.24.8. length

文字列の文字数、またはラインストリングジオメトリの長さを返します。

文字列バージョン

文字列の文字数を返します。

構文

length(string)

引数

  • string - 文字数を数える文字列

  • length('hello') → 5

ジオメトリバージョン

ラインジオメトリオブジェクトの長さを返します。計算は常にこのジオメトリの空間参照系(SRS)で平面的に計算され、長さの単位はSRSの単位と一致します。これは、プロジェクトの楕円体と距離単位設定にもとづいた楕円体計算が行われる $length 関数とは異なります。

構文

length(geometry)

引数

  • geometry - ラインジオメトリオブジェクト

  • length(geom_from_wkt('LINESTRING(0 0, 4 0)')) → 4.0

13.2.24.9. lower

文字列を小文字に変換します。

構文

lower(string)

引数

  • string - 小文字に変換したい文字列

  • lower('HELLO World') → 'hello world'

13.2.24.10. lpad

文字列の左側を指定文字で詰め、指定した幅にした文字列を返します。指定した幅が文字列の長さよりも小さい場合、文字列は切り詰められます。

構文

lpad(string, width, fill)

引数

  • string - 幅を揃えたい文字列

  • width - 新しい文字列の長さ

  • fill - 余白を詰める文字

  • lpad('Hello', 10, 'x') → 'xxxxxHello'

  • lpad('Hello', 3, 'x') → 'Hel'

13.2.24.11. regexp_match

unicode文字列内で正規表現にマッチする最初の位置を返します。部分文字列が見つからない場合、0を返します。

構文

regexp_match(input_string, regex)

引数

  • input_string - 正規表現に対してテストする文字列

  • regex - テストする正規表現。バックスラッシュは二重にエスケープする必要があります(たとえば、空白文字に一致させる場合は "\\s" 、単語の境界に一致させる場合は "\\b" )

  • regexp_match('QGIS ROCKS','\\sROCKS') → 5

  • regexp_match('Budač','udač\\b') → 2

13.2.24.12. regexp_replace

正規表現を用いて置き換えた文字列を返します。

構文

regexp_replace(input_string, regex, replacement)

引数

  • input_string - 置換対象文字列

  • regex - 置換する正規表現。バックスラッシュ文字は二重にエスケープする必要があります(例:空白文字に一致させるには "\\s" )

  • replacement - 指定された正規表現のマッチ箇所を置き換える文字列。キャプチャされたグループは、 \\1 や \\2 などを使用して置換文字列内に挿入できます。

  • regexp_replace('QGIS SHOULD ROCK','\\sSHOULD\\s',' DOES ') → 'QGIS DOES ROCK'

  • regexp_replace('ABC123','\\d+','') → 'ABC'

  • regexp_replace('my name is John','(.*) is (.*)','\\2 is \\1') → 'John is my name'

13.2.24.13. regexp_substr

正規表現にマッチする文字列の一部を返します。

構文

regexp_substr(input_string, regex)

引数

  • input_string - 検索対象文字列

  • regex - マッチさせる正規表現。バックスラッシュ文字は二重にエスケープする必要があります(例:空白文字に一致させるには "\\s" )

  • regexp_substr('abc123','(\\d+)') → '123'

13.2.24.14. replace

文字列を指定した別の文字列、配列またはマップ型オブジェクトで置換した文字列を返します。

文字列・配列バージョン

指定された文字列または文字列の配列を、別の文字列または文字列の配列で置換した文字列を返します。

構文

replace(string, before, after)

引数

  • string - 入力文字列

  • before - 置換対象の文字列または文字列の配列

  • after - 代わりに使用する文字列または文字列の配列

  • replace('QGIS SHOULD ROCK','SHOULD','DOES') → 'QGIS DOES ROCK'

  • replace('QGIS ABC',array('A','B','C'),array('X','Y','Z')) → 'QGIS XYZ'

  • replace('QGIS',array('Q','S'),'') → 'GI'

マップ型バージョン

与えられたマップ型を使用して、キーを対となる値で置き換えた文字列を返します。より長いキー文字列が最初に評価されます。

構文

replace(string, map)

引数

  • string - 入力文字列

  • map - キーと値のペアを含むマップ型オブジェクト

  • replace('APP SHOULD ROCK',map('APP','QGIS','SHOULD','DOES')) → 'QGIS DOES ROCK'

  • replace('forty two',map('for','4','two','2','forty two','42')) → '42'

13.2.24.16. rpad

文字列の右側を指定文字で詰め、指定した幅にした文字列を返します。指定した幅が文字列の長さよりも小さい場合、文字列は切り詰められます。

構文

rpad(string, width, fill)

引数

  • string - 幅を揃えたい文字列

  • width - 新しい文字列の長さ

  • fill - 余白を詰める文字

  • rpad('Hello', 10, 'x') → 'Helloxxxxx'

  • rpad('Hello', 3, 'x') → 'Hel'

13.2.24.17. strpos

文字列中で部分文字列が最初にマッチする位置を返します。部分文字列が見つからなければ、0を返します。

構文

strpos(haystack, needle)

引数

  • haystack - 対象文字列

  • needle - 検索する文字列

  • strpos('HELLO WORLD','WORLD') → 7

  • strpos('HELLO WORLD','GOODBYE') → 0

13.2.24.18. substr

文字列の一部分を返します。

構文

substr(string, start, [length])

記号[]は、オプションの引数を意味します。

引数

  • string - 入力文字列

  • start - 抽出開始位置を表す整数。1から数える。負の値を指定した場合、文字列の最後から数えた位置から開始します

  • length - 抽出する文字列の長さを表す整数。負の値を指定した場合、文字列の末尾から指定された長さ分だけ文字が除かれた文字列を返します。

  • substr('HELLO WORLD',3,5) → 'LLO W'

  • substr('HELLO WORLD',6) → ' WORLD'

  • substr('HELLO WORLD',-5) → 'WORLD'

  • substr('HELLO',3,-1) → 'LL'

  • substr('HELLO WORLD',-5,2) → 'WO'

  • substr('HELLO WORLD',-5,-1) → 'WORL'

13.2.24.19. title

文字列の全ての単語をタイトルケース(先頭が大文字で後に小文字が続く)に変換します。

構文

title(string)

引数

  • string - タイトルケースに変換したい文字列

  • title('hello WOrld') → 'Hello World'

13.2.24.20. to_string

数値を文字列に変換します。

構文

to_string(number)

引数

  • number - 整数または実数値。文字列に変換する数値

  • to_string(123) → '123'

13.2.24.21. trim

文字列の先頭と末尾から全てのホワイトスペース(空白文字、タブ等)を削除します。

構文

trim(string)

引数

  • string - 空白を削除したい文字列

  • trim('   hello world  ') → 'hello world'

13.2.24.22. upper

文字列を大文字に変換します。

構文

upper(string)

引数

  • string - 大文字に変換したい文字列

  • upper('hello WOrld') → 'HELLO WORLD'

13.2.24.23. wordwrap

指定した最大・最小文字数に合わせて改行した文字列を返します。

構文

wordwrap(string, wrap_length, [delimiter_string])

記号[]は、オプションの引数を意味します。

引数

  • string - ワードラップしたい文字列

  • wrap_length - 整数。 wrap_length が正の数値の場合、理想的な一行あたりの最大文字数を意味します。負の値の場合、この数字は改行する最小文字数を意味します。

  • delimiter_string - (オプション)改行を行う区切り文字

  • wordwrap('UNIVERSITY OF QGIS',13) → 'UNIVERSITY OF<br>QGIS'

  • wordwrap('UNIVERSITY OF QGIS',-3) → 'UNIVERSITY<br>OF QGIS'

13.2.25. ユーザー式

このグループには、 ユーザー保存式 として保存された式が含まれます。

13.2.26. 変数

このグループには、アプリケーションやプロジェクトファイル、その他の設定に関連した動的な変数が含まれます。変数が使用できるかどうかは、利用される状況によって異なります。

  • expressionSelect 式による地物選択 ダイアログから使用

  • calculateField フィールド計算機 ダイアログから使用

  • レイヤプロパティダイアログから使用

  • 印刷レイアウトから使用

式の中でこれらの変数を使用するには、変数の先頭に @ 文字を付ける必要があります(例: @row_number

変数

説明

algorithm_id

アルゴリズムのユニークID

animation_end_time

アニメーションの時間範囲全体の終了日時(datetime値)

animation_interval

アニメーションの時間範囲全体の長さ(interval値)

animation_start_time

アニメーションの時間範囲全体の開始日時(datetime値)

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

属性フォームまたはテーブル行で現在編集中の地物のジオメトリ

current_parent_feature

親フォームで現在編集中の地物を表す変数。埋め込みフォームでのみ使用可能。

current_parent_geometry

親フォームで現在編集中の地物のジオメトリを表す変数。埋め込みフォームでのみ使用可能。

form_mode

フォームを使う対象。文字列で AddFeatureMode, SingleEditMode, MultiEditMode, SearchMode, AggregateSearchMode または IdentifyMode のいずれか。

feature NEW in 3.28

評価されている現在の地物。この関数を 'attribute' 関数と共に使用すると、現在の地物の属性値を評価できます。

frame_duration

各アニメーションフレームの時間の長さ(interval値)

frame_number

アニメーション再生時の現在のフレーム番号

frame_rate

アニメーション再生時の1秒あたりフレーム数

fullextent_maxx

全キャンバス領域でのx最大値(全レイヤ)

fullextent_maxy

全キャンバス領域でのy最大値(全レイヤ)

fullextent_minx

全キャンバス領域でのx最小値(全レイヤ)

fullextent_miny

全キャンバス領域でのy最小値(全レイヤ)

geometry NEW in 3.28

評価されている地物のジオメトリ

geometry_part_count

レンダリングされる地物のジオメトリパートの数

geometry_part_num

レンダリングされる地物の現在のジオメトリパートの番号

geometry_point_count

レンダリングされるジオメトリ部分のポイントの数

geometry_point_num

レンダリングされるジオメトリ部分の現在のポイントの番号

geometry_ring_num

レンダリングされる地物の現在のジオメトリのリング番号(ポリゴン地物のみ)。外側リングの番号は0です。

grid_axis

現在のグリッド注記の軸(経度は'x' 、緯度は'y' )

grid_number

現在のグリッド注記の値

id NEW in 3.28

評価されている現在の地物のID

item_id

レイアウトアイテムのユーザID(ユニークとは限らない)

item_uuid

レイアウトアイテムのユニークID

layer

現在のレイヤ

layer_crs

現在のレイヤのCRSのAuthority ID

layer_id

現在のレイヤID

layer_ids

現在のプロジェクト内の全てのレイヤIDのリスト

layer_name

現在のレイヤ名

layers

現在のプロジェクト内の全てのレイヤのリスト

layout_dpi

印刷レイアウトの解像度(DPI)

layout_name

印刷レイアウトの名前

layout_numpages

印刷レイアウトのページ数

layout_page

印刷レイアウト内の現在のアイテムのページ番号

layout_pageheight

レイアウトのアクティブなページの高さ(標準のページサイズの場合はmm単位、カスタムのページサイズの場合は使用されている単位)

layout_pageoffsets

各ページの上端のY座標を要素とする配列。ページのサイズが変化することがある場合に、この変数を使用することでページ上にアイテムを動的に配置できます。

layout_pagewidth

レイアウトのアクティブなページの幅(標準のページサイズの場合はmm単位、カスタムのページサイズの場合は使用されている単位)

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_projection

地図のCRSで使用される投影法の記述名(例: 'Albers Equal Area' )

map_crs_wkt

現在の地図の座標参照系のWKT定義

map_end_time

地図の時系列範囲の終了値(datetime値)

map_extent

現在の地図の範囲を表すジオメトリ

map_extent_center

地図範囲の中心を表すポイント地物

map_extent_height

地図の現在の高さ

map_extent_width

地図の現在の幅

map_id

現在の地図の出力対象のID。スクリーンの場合はcanvas、印刷レイアウトの場合はアイテムID

map_interval

地図の時系列範囲の長さ(interval値)

map_layer_ids

地図で表示中のレイヤIDのリスト

map_layers

地図で表示中のレイヤのリスト

map_rotation

地図の現在の回転

map_scale

地図の現在の縮尺

map_start_time

地図の時系列範囲の開始値(datetime値)

map_units

地図の距離単位

model_path

現在のモデルの(ファイル名を含んだ)フルパス(または、モデルがプロジェクトに埋め込まれている場合にはプロジェクトのパス)

model_folder

現在のモデルがあるフォルダ(または、モデルがプロジェクトに埋め込まれている場合にはプロジェクトのフォルダ)

model_name

現在のモデルの名前

model_group

現在のモデルのグループ

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(well known text)定義

project_distance_units

ジオメトリの長さや距離計算で使用する、現在のプロジェクトの距離単位

project_ellipsoid

ジオメトリの測地面積や測地距離の計算で使用する、現在のプロジェクトの回転楕円体の名前

project_filename

現在のプロジェクトのファイル名

project_folder

現在のプロジェクトのフォルダ

project_home

現在のプロジェクトのホームパス

project_identifier

プロジェクトのメタデータより取得した、プロジェクトの識別子

project_keywords

プロジェクトのメタデータより取得した、プロジェクトのキーワード

project_last_saved

プロジェクトが最後に保存された日時

project_path

現在のプロジェクトのフルパス(ファイル名を含む)

project_title

現在のプロジェクトのタイトル

project_units

プロジェクトCRSの長さ単位

qgis_locale

現在のQGISの言語ロケール

qgis_os_name

現在のOS名(例: 'windows' 、 'linux' 、 'osx' )

qgis_platform

QGISプラットフォーム: 'desktop' または 'server'

qgis_release_name

現在のQGISリリース名

qgis_short_version

現在のQGISバージョンの短縮文字列

qgis_version

現在のQGISバージョンの文字列

qgis_version_no

現在のQGISバージョンの番号

row_number

現在の行の番号を格納します

snapping_results

地物のデジタイジング中にスナップした結果へのアクセスを提供します(地物の追加時のみ利用可)

scale_value

現在のスケールバーの距離の値

selected_file_path

外部ストレージシステムにファイルをアップロードする際に、ファイルセレクタウィジェットによって選択されたファイルのパス

symbol_angle

地物の描画に使用されるシンボルの角度(マーカーシンボルのみで有効)

symbol_color

地物の描画に使用されるシンボルの色

symbol_count

このシンボルで表現されている地物の数(印刷レイアウトの凡例でのみ有効)

symbol_id

シンボルの内部ID(印刷レイアウトの凡例でのみ有効)

symbol_label

シンボルのラベル(ユーザー定義ラベルもしくはデフォルトの自動生成ラベル。印刷レイアウトの凡例でのみ有効)

symbol_layer_count

シンボル内のシンボルレイヤの総数

symbol_layer_index

現在のシンボルレイヤのインデックス

symbol_marker_column

マーカーの列数(ポイントパターン塗りつぶしでのみ有効)

symbol_marker_row

マーカーの行数(ポイントパターン塗りつぶしでのみ有効)

user_account_name

現在のユーザーのOSアカウント名

user_full_name

現在のユーザーのOSユーザー名

value

現在の値

vector_tile_zoom

レンダリングされている地図のベクトルタイルの正確なズームレベル(現在の地図の縮尺から導出される)。通常は [0, 20] の間の値。@zoom_level とは異なり、この変数は浮動小数点値であり、2つの整数のズームレベルの間の値を補間するために使用できます。

with_variable

式の中で使用するための変数を設定することで、同じ値を繰り返し計算することを避けられます。

zoom_level

レンダリングされている地図のベクトルタイルのズームレベル(現在の地図の縮尺から導出される)。通常は [0, 20] の間の値。

  • 印刷レイアウトにおいて、地図アイテムの中心のX座標を返します:

    x( map_get( item_variables( 'map1'), 'map_extent_center' ) )
    
  • 現在のレイヤの各地物について、自身と交差する airport 地物の数を返します:

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

13.2.27. 最近の関数

このグループには、最近使った関数が含まれます。関数の利用のコンテクスト(地物選択、フィールド計算、一般など)に応じて、最近適用した式は対応するリスト(上限10個)に追加され、最近使ったものから順にリストに並びます。これにより、以前に使用した関数を素早く探し出して再適用することが簡単にできます。