このグループには、属性値を集約する関数があります。
別のレイヤの地物を使って計算された値の集計値を返します。
aggregate
(
layer
,
aggregate
,
expression
[,
filter
][,
concatenator
][,
order_by
])
| layer | レイヤ名かレイヤIDのどちらかを表す文字列 |
| aggregate |
集計するデータを示す文字列のオプション:
|
| expression | 式またはフィールド名 |
| filter | (オプション)フィルタ式で集計の計算に使用する地物を制限します。対象の地物は、変数@parentでアクセスできます。 |
| concatenator | (concatenateの場合だけ)値を結合する区切り文字列 |
| order_by | (オプション)並び順を決める式 |
aggregate(layer:='rail_stations',aggregate:='sum',expression:="passengers")
→
rail_stationsレイヤのpassengers属性の値の合計
aggregate('rail_stations','sum', "passengers"/7)
→
passengers属性を7で割って、一日平均を計算しています
aggregate(layer:='rail_stations',aggregate:='sum',expression:="passengers",filter:="class">3)
→
class属性が3より大きな地物だけを合計しています
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レイヤで交差する国のうち、国コードが最大のもの
属性値を集約し、配列として返します。
array_agg
(
expression
[,
group_by
][,
filter
][,
order_by
])
| expression | 集計する属性(式) |
| group_by | (オプション)グループ化に使う式 |
| filter | (オプション)フィルタ式 |
| order_by | (オプション)並び順を決める式 |
array_agg("name",group_by:="state")
→
state属性でグループ化した、name属性のリスト
式で集約されたジオメトリをマルチパートジオメトリとして返します。
collect
(
expression
[,
group_by
][,
filter
])
| expression | ジオメトリ |
| group_by | (オプション)グループ化に使う式 |
| filter | (オプション)フィルタ式 |
collect( $geometry )
→
マルチパートジオメトリ
属性または式の値を、区切り文字(デリミタ)で連結した文字列を返します。
concatenate
(
expression
[,
group_by
][,
filter
][,
concatenator
][,
order_by
])
| expression | 集計する属性(式) |
| group_by | (オプション)グループ化に使う式 |
| filter | (オプション)フィルタ式 |
| concatenator | (オプション)区切り文字列 |
| order_by | (オプション)並び順を決める式 |
concatenate("town_name",group_by:="state",concatenator:=',')
→
state属性でグループ化された、town_names属性値のコンマ区切りリスト
属性または式の重複のない値を、区切り文字(デリミタ)で連結した文字列で返します。
concatenate_unique
(
expression
[,
group_by
][,
filter
][,
concatenator
][,
order_by
])
| expression | 集計する属性(式) |
| group_by | (オプション)グループ化に使う式 |
| filter | (オプション)フィルタ式 |
| concatenator | (オプション)区切り文字列 |
| order_by | (オプション)並び順を決める式 |
concatenate("town_name",group_by:="state",concatenator:=',')
→
state属性でグループ化し、(各州ごとに重複がない)town_names属性のカンマ区切りリスト
マッチする地物の数を返します。
count
(
expression
[,
group_by
][,
filter
])
| expression | 集計する属性(式) |
| group_by | (オプション)グループ化に使う式 |
| filter | (オプション)フィルタ式 |
count("stations",group_by:="state")
→
state属性でグループ化されたstationsの数
重複を除いた(distinctな)値の数を返します。
count_distinct
(
expression
[,
group_by
][,
filter
])
| expression | 集計する属性(式) |
| group_by | (オプション)グループ化に使う式 |
| filter | (オプション)フィルタ式 |
count_distinct("stations",group_by:="state")
→
state属性によってグループ化した、(各州ごとに重複のない)stations属性値の数
欠損値(null)の数を返します。
count_missing
(
expression
[,
group_by
][,
filter
])
| expression | 集計する属性(式) |
| group_by | (オプション)グループ化に使う式 |
| filter | (オプション)フィルタ式 |
count_missing("stations",group_by:="state")
→
state属性でグループ化された、stationsの欠損値の数
フィールドまたは式の値の四分位範囲(IQR)を返します。
iqr
(
expression
[,
group_by
][,
filter
])
| expression | 集計する属性(式) |
| group_by | (オプション)グループ化に使う式 |
| filter | (オプション)フィルタ式 |
iqr("population",group_by:="state")
→
state属性でグループ化された、population値の四分位範囲
フィールドまたは式の最頻値を返します。
majority
(
expression
[,
group_by
][,
filter
])
| expression | 集計する属性(式) |
| group_by | (オプション)グループ化に使う式 |
| filter | (オプション)フィルタ式 |
majority("class",group_by:="state")
→
state属性でグループ化した、最も頻繁に出現するclass属性値
フィールドまたは式の文字列の最大長を返します。
max_length
(
expression
[,
group_by
][,
filter
])
| expression | 集計する属性(式) |
| group_by | (オプション)グループ化に使う式 |
| filter | (オプション)フィルタ式 |
max_length("town_name",group_by:="state")
→
state属性でグループ化されたtown_name属性(文字列)の最大長
フィールドまたは式の最大値を返します。
maximum
(
expression
[,
group_by
][,
filter
])
| expression | 集計する属性(式) |
| group_by | (オプション)グループ化に使う式 |
| filter | (オプション)フィルタ式 |
maximum("population",group_by:="state")
→
state属性でグループ分けした、populationの最大値
フィールドまたは式の平均値を返します。
mean
(
expression
[,
group_by
][,
filter
])
| expression | 集計する属性(式) |
| group_by | (オプション)グループ化に使う式 |
| filter | (オプション)フィルタ式 |
mean("population",group_by:="state")
→
state属性でグループ分けした、populationの平均値
フィールドまたは式の中央値を返します。
median
(
expression
[,
group_by
][,
filter
])
| expression | 集計する属性(式) |
| group_by | (オプション)グループ化に使う式 |
| filter | (オプション)フィルタ式 |
median("population",group_by:="state")
→
state属性でグループ化した、populationの中央値
フィールドまたは式の文字列の最短長を返します。
min_length
(
expression
[,
group_by
][,
filter
])
| expression | 集計する属性(式) |
| group_by | (オプション)グループ化に使う式 |
| filter | (オプション)フィルタ式 |
min_length("town_name",group_by:="state")
→
state属性でグループ化した、town_name属性(文字列)の最短長
フィールドまたは式の最小値を返します。
minimum
(
expression
[,
group_by
][,
filter
])
| expression | 集計する属性(式) |
| group_by | (オプション)グループ化に使う式 |
| filter | (オプション)フィルタ式 |
minimum("population",group_by:="state")
→
state属性でグループ化した、populationの最小値
フィールドまたは式の最少出現値を返します。
minority
(
expression
[,
group_by
][,
filter
])
| expression | 集計する属性(式) |
| group_by | (オプション)グループ化に使う式 |
| filter | (オプション)フィルタ式 |
minority("class",group_by:="state")
→
state属性でグループ化した、最も稀なclass値
フィールドまたは式の値の第1四分位数を返します。
q1
(
expression
[,
group_by
][,
filter
])
| expression | 集計する属性(式) |
| group_by | (オプション)グループ化に使う式 |
| filter | (オプション)フィルタ式 |
q1("population",group_by:="state")
→
state属性でグループ化した、population値の第1四分位数
フィールドまたは式の値の第3四分位数を返します。
q3
(
expression
[,
group_by
][,
filter
])
| expression | 集計する属性(式) |
| group_by | (オプション)グループ化に使う式 |
| filter | (オプション)フィルタ式 |
q3("population",group_by:="state")
→
state属性の値でグループ分けした、populationの第3四分位数
フィールドまたは式の値の範囲(最大値 - 最小値)を返します。
range
(
expression
[,
group_by
][,
filter
])
| expression | 集計する属性(式) |
| group_by | (オプション)グループ化に使う式 |
| filter | (オプション)フィルタ式 |
range("population",group_by:="state")
→
state属性の値でグループ分けした、population値の範囲
レイヤリレーションでマッチする地物の属性値の集計値を返します。
relation_aggregate
(
relation
,
aggregate
,
expression
[,
concatenator
][,
order_by
])
| relation | リレーションIDを表す文字列 |
| aggregate |
集計するデータを示す文字列のオプション:
|
| expression | 式またはフィールド名 |
| concatenator | (concatenateの場合だけ)値を結合する区切り文字列 |
| order_by | optional expression to order the features used for calculating the aggregate. Fields and geometry are from the features on the joined layer. |
relation_aggregate(relation:='my_relation',aggregate:='mean',expression:="passengers")
→
my_relationリレーションを使用してマッチする地物の平均値
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値の配列
フィールドまたは式の標準偏差を返します。
stdev
(
expression
[,
group_by
][,
filter
])
| expression | 集計する属性(式) |
| group_by | (オプション)グループ化に使う式 |
| filter | (オプション)フィルタ式 |
stdev("population",group_by:="state")
→
state属性の値でグループ分けした、populationの標準偏差
フィールドまたは式の合計値を返します。
sum
(
expression
[,
group_by
][,
filter
])
| expression | 集計する属性(式) |
| group_by | (オプション)グループ化に使う式 |
| filter | (オプション)フィルタ式 |
sum("population",group_by:="state")
→
state属性の値によってグループ分けした、populationの合計
このグループには、配列(リストデータ構造とも呼ばれます)の作成と操作のための関数が含まれています。配列では値の順序こそが重要で、値がキーによって識別される「マップ型オブジェクト」のデータ構造とは異なります。
パラメータとして渡されたすべての値を、配列として返します。
array
(
value1
,
value2
…)
| value | 値 |
array(2,10)
→
[ 2, 10 ]
配列の値をすべて含んでいる配列の場合、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
値が最後に追加された配列を返します。
array_append
(
array
,
value
)
| array | 配列 |
| value | 追加する値 |
array_append(array(1,2,3),4)
→
[ 1, 2, 3, 4 ]
すべての配列を連結して、一つの配列として返します。
array_cat
(
array1
,
array2
…)
| array | 配列 |
array_cat(array(1,2),array(2,3))
→
[ 1, 2, 2, 3 ]
配列に指定された値が含まれている場合、trueを返します。
array_contains
(
array
,
value
)
| array | 配列 |
| value | 検索する値 |
array_contains(array(1,2,3),2)
→
true
指定された配列の、異なる(distinctな)値の配列を返します。
array_distinct
(
array
)
| array | 配列 |
array_distinct(array(1,2,3,2,1))
→
[ 1, 2, 3 ]
式がtrueと判定した要素だけを含む配列を返します。
array_filter
(
array
,
expression
)
| array | 配列 |
| expression | それぞれの要素に対して評価する式。変数@elementが各要素を表します。 |
array_filter(array(1,2,3),@element < 3)
→
[ 1, 2 ]
配列内の値のインデックス(最初のものは0)を返します。値が見つからない場合は-1を返します。
array_find
(
array
,
value
)
| array | 配列 |
| value | 検索する値 |
array_find(array(1,2,3),2)
→
1
配列の最初の値を返します。
array_first
(
array
)
| array | 配列 |
array_first(array('a','b','c'))
→
'a'
式で評価した結果を配列として返します。
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 ]
配列のN番目の値(最初の値は0)を返します。
array_get
(
array
,
index
)
| array | 配列 |
| index | 取り出すインデックス(最初は0) |
array_get(array('a','b','c'),1)
→
'b'
指定された位置に値が挿入された配列を返します。
array_insert
(
array
,
pos
,
value
)
| array | 配列 |
| pos | 挿入する位置(最初は0) |
| value | 追加する値 |
array_insert(array(1,2,3),1,100)
→
[ 1, 100, 2, 3 ]
配列array1の要素が一つでも配列array2に存在する場合、trueを返します。
array_intersect
(
array1
,
array2
)
| array1 | 配列 |
| array2 | 別の配列 |
array_intersect(array(1,2,3,4),array(4,0,2,5))
→
true
配列の最後の値を返します。
array_last
(
array
)
| array | 配列 |
array_last(array('a','b','c'))
→
'c'
配列の要素の数を返します。
array_length
(
array
)
| array | 配列 |
array_length(array(1,2,3))
→
3
値を先頭に追加した配列を返します。
array_prepend
(
array
,
value
)
| array | 配列 |
| value | 追加する値 |
array_prepend(array(1,2,3),0)
→
[ 0, 1, 2, 3 ]
指定された値が削除された配列を返します。
array_remove_all
(
array
,
value
)
| array | 配列 |
| value | 削除する値 |
array_remove_all(array('a','b','c','b'),'b')
→
[ 'a', 'c' ]
指定された位置(インデックス)の要素が削除された配列を返します。
array_remove_at
(
array
,
pos
)
| array | 配列 |
| pos | 削除する位置(最初は0) |
array_remove_at(array(1,2,3),1)
→
[ 1, 3 ]
逆順にした配列を返します。
array_reverse
(
array
)
| array | 配列 |
array_reverse(array(2,4,0,10))
→
[ 10, 0, 4, 2 ]
配列の一部を返します。start_posとend_posの引数で定義されます。
array_slice
(
array
,
start_pos
,
end_pos
)
| array | 配列 |
| start_pos | 開始位置(インデックス)。負の数の場合、リストの最後から数えます(最後の要素は-1)。 |
| 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_slice(array('Dufour','Valmiera','Chugiak','Brighton'),-2,-1)
→
[ 'Chugiak', 'Brighton' ]
ソートされた配列を返します。
array_sort
(
array
[,
ascending=true
])
| array | 配列 |
| ascending | 降順にソートする場合はfalse |
array_sort(array(3,2,1))
→
[ 1, 2, 3 ]
配列要素を区切り文字で連結した文字列を返します。空の値を置き換える文字列を指定できます。
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'
連続した数字からなる配列を作ります。
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 ]
正規表現のグループによってキャプチャされた文字列を、配列として返します。
regexp_matches
(
string
,
regex
[,
empty_value=''
])
| string | 対象文字列 |
| regex | グループを取得するために使用される正規表現 |
| empty_value | (オプション)空のマッチの代わりに使用する文字列 |
regexp_matches('QGIS=>rocks','(.*)=>(.*)')
→
[ 'QGIS', 'rocks' ]
regexp_matches('key=>','(.*)=>(.*)','empty value')
→
[ 'key', 'empty value' ]
文字列を区切り文字で配列に分割します。
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' ]
このグループには、色を操作する関数があります。
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
CMYKA(シアン、マゼンタ、イエロー、ブラック、アルファ)で指定した色を表す文字列を返します。
color_cmyka
(
cyan
,
magenta
,
yellow
,
black
,
alpha
)
| cyan | シアン(0から100までの整数のパーセント) |
| magenta | マゼンタ(0から100までの整数のパーセント) |
| yellow | イエロー(0から100までの整数のパーセント) |
| black | ブラック(0から100までの整数のパーセント) |
| alpha | アルファ(0から255までの整数) |
color_cmyk(100,50,0,10,200)
→
0,115,230,200
グレースケールフィルタを適用した色の文字列表現を返します。
color_grayscale_average
(
color
)
| color | 色を表す文字列 |
color_grayscale_average('255,100,50')
→
127,127,127,255
HSL(色相、彩度、輝度)で指定した色を表す文字列を返します。
color_hsl
(
hue
,
saturation
,
lightness
)
| hue | 色相(0から360までの整数) |
| saturation | 彩度(0から100までの整数のパーセント) |
| lightness | 輝度(0から100までの整数のパーセント) |
color_hsl(100,50,70)
→
166,217,140
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
HSV(色相、彩度、明度)で指定した色を表す文字列を返します。
color_hsv
(
hue
,
saturation
,
value
)
| hue | 色相(0から360までの整数) |
| saturation | 彩度(0から100までの整数のパーセント) |
| value | 明度(0から100までの整数のパーセント) |
color_hsv(40,100,100)
→
255,170,0
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
比率に基づいて混合した色を表すRGB文字列を返します。
color_mix_rgb
(
color1
,
color2
,
ratio
)
| color1 | 色を表す文字列 |
| color2 | 色を表す文字列 |
| ratio | 混合比率 |
color_mix_rgb('0,0,0','255,255,255',0.5)
→
127,127,127,255
色の特定成分を返します。
color_part
(
color
,
component
)
| color | 色を表す文字列 |
| component |
色の構成要素に対応する文字列は次の通り:
|
color_part('200,10,30','green')
→
10
RGB(赤、緑、青)で指定した色を表す文字列を返します。
color_rgb
(
red
,
green
,
blue
)
| red | 赤(0から255までの整数の値) |
| green | 緑(0から255までの整数の値) |
| blue | 青(0から255までの整数の値) |
color_rgb(255,127,0)
→
255,127,0
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
色とステップのマップ型オブジェクトで定義されたグラデーションランプを返します。
create_ramp
(
map
[,
discrete
])
| map | 色とステップのマップ型オブジェクト |
| discrete | カラーランプが離散的かどうか |
ramp_color(create_array(map(0,'0,0,0',1,'255,0,0')),1)
→
'255,0,0,255'
指定した色を基準に、より暗い(または明るい)色の文字列を返します。
darker
(
color
,
factor
)
| color | 色を表す文字列 |
| factor |
暗化係数(整数):
|
darker('200,10,30',300)
→
'66,3,10,255'
より明るい(または暗い)色を返します。
lighter
(
color
,
factor
)
| color | 色を表す文字列 |
| factor |
明化係数(整数):
|
lighter('200,10,30',200)
→
'255,158,168,255'
プロジェクトのカラースキーマの色を返します。
project_color
(
name
)
| name | 色の名前 |
project_color('Logo color')
→
20,140,50
カラーランプから色を表す文字列を返します。
ramp_color
(
ramp_name
,
value
)
| ramp_name | カラーランプの名前(Spectralなど) |
| value | 色を取得するランプ上の位置(0から1までの実数値) |
ramp_color('Spectral',0.3)
→
'253,190,115,255'
利用可能なカラーランプは、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'
色の文字列の成分を設定します。
set_color_part
(
color
,
component
,
value
)
| color | 色を表す文字列 |
| component |
設定する色の構成要素は次の通り:
|
| value | 構成要素の値。上記の範囲内の値にします。 |
set_color_part('200,10,30','green',50)
→
200,50,30
このグループには、式の中で条件分けに使う関数があります。
引数リストを順に評価し、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でない場合はその値。そうでなければ、フィールドfallbackFieldの値。両方ともNULLの場合は文字列ERROR(シングル引用符に注意)
条件をテストし、それに応じて異なる結果を返します。
if
(
condition
,
result_when_true
,
result_when_false
)
| condition | チェックする条件 |
| result_when_true | 条件がtrueか、あるいはfalseに変換できない値である場合に返される結果 |
| result_when_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'
value1がvalue2と等しい場合、nullを返します。それ以外の場合、value1を返します。
nullif
(
value1
,
value2
)
| value1 | そのまま使われるか、NULLに置き換えられる値 |
| value2 | NULL置換の基準になる値 |
nullif('(none)', '(none)')
→
NULL
nullif('text', '(none)')
→
'text'
nullif("name", '')
→
nameが空文字(またはNULL)の場合はNULL、それ以外の場合はname
正規表現に一致する最初の位置を返します。部分文字列が見つからない場合、0を返します。
regexp_match
(
input_string
,
regex
)
| input_string | 正規表現に対してテストする文字列 |
| regex | テストする正規表現。バックスラッシュは二重にエスケープする必要があります(空白文字に一致させるには\\sなど)。 |
regexp_match('QGIS ROCKS','\\sROCKS')
→
4
式を評価し、エラーでない値を返すことを保証します(いわゆる例外処理)。式がエラーを返す場合、指定した値を返します。指定値がない場合はnullを返します。
try
(
expression
[,
alternative
])
| expression | 評価したい式 |
| alternative | 式がエラーを起こした際に返したい値 |
try( to_int( '1' ), 0 )
→
1
try( to_int( 'a' ), 0 )
→
0
try( to_date( 'invalid_date' ) )
→
NULL
このグループには、データ型を他の型に変換する関数が含まれます。たとえば、文字列から整数、整数から文字列への変換です。
Decodes a string in the Base64 encoding into a binary value.
from_base64
(
string
)
| string | the string to decode |
from_base64('UUdJUw==')
→
'QGIS'
指定した方法で文字列のハッシュを生成する
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'
keccak_512('QGIS')
→
'6f0f751776b505e317de222508fa5d3ed7099d8f07c74fed54ccee6e7cdc6b89b4a085e309f2ee5210c9'
文字列からmd5ハッシュを作る
md5
(
string
)
| string | ハッシュ化する文字列 |
md5('QGIS')
→
'57470aaa9e22adaefac7f5f342f1c6da'
文字列からsha256ハッシュを作る
sha256
(
string
)
| string | ハッシュ化する文字列 |
sha256('QGIS')
→
'eb045cba7a797aaa06ac58830846e40c8e8c780bc0676d3393605fae50c05309'
Encodes a binary value into a string, using the Base64 encoding.
to_base64
(
value
)
| value | the binary value to encode |
to_base64('QGIS')
→
'UUdJUw=='
文字列を日付型オブジェクト(date)に変換します。オプションとして、文字列をパースするためのフォーマット形式を指定できます。詳しくは、 QDate::fromString をご覧ください。
to_date
(
string
[,
format
][,
language
])
| string | 日付を表す文字列 |
| format | フォーマット形式 |
| language | 文字列をdateに変換する言語(小文字、ISO 639) |
to_date('2012-05-04')
→
2012-05-04
to_date('June 29, 2019','MMMM d, yyyy')
→
2019-06-29
to_date('29 juin, 2019','d MMMM, yyyy','fr')
→
2019-06-29
文字列を日時型オブジェクト(datetime)に変換します。オプションとして、文字列をパースするためのフォーマット形式を指定できます。詳しくは、 QDate::fromString をご覧ください。
to_datetime
(
string
[,
format
][,
language
])
| string | 日時を表す文字列 |
| format | 文字列をdatetimeに変換するフォーマット |
| language | 文字列をdatetimeに変換する言語(小文字、ISO 639) |
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
to_datetime('29 juin, 2019 @ 12:34','d MMMM, yyyy @ HH:mm','fr')
→
2019-06-29T12:34
座標を度・分単位に変換します。
to_dm
(
coordinate
,
axis
,
precision
[,
formatting
])
| coordinate | 緯度か経度 |
| axis | 座標軸(xかy) |
| precision | 小数点桁数 |
| formatting | フォーマット・型を指定する(NULLか aligned か suffix) |
to_dm(6.3545681, 'x', 3)
→
6°21.274′
to_dm(6.3545681, 'y', 4, 'suffix')
→
6°21.2741′N
座標を度、分、秒形式に変換します。
to_dms
(
coordinate
,
axis
,
precision
[,
formatting
])
| coordinate | 緯度か経度 |
| axis | 座標軸(xかy) |
| precision | 小数点桁数 |
| formatting | フォーマット・型を指定する(NULLか aligned か suffix) |
to_dms(6.3545681, 'x', 3)
→
6°21′16.445″
to_dms(6.3545681, 'y', 4, 'suffix')
→
6°21′16.4452″N
文字列を整数値に変換します。整数値に変換できない場合は何も返されません(例えば '123asd' は不正です)
to_int
(
string
)
| string | 整数値に変換する文字列 |
to_int('123')
→
123
文字列をインターバル型に変換します。日付や月、時間などを取得することに利用できます。
to_interval
(
string
)
| string | インターバルを表す文字列。フォーマットの例は{n} days {n} hours {n} months, years, weeks, minutes, secondsが使用できます。 |
to_datetime('2012-05-05 12:00:00') - to_interval('1 day 2 hours')
→
2012-05-04T10:00:00
文字列を実数型に変換します。変換できない場合は何も返されません(例えば'123.56asd'は不正です)。フィールドの精度が変換結果の精度より小さい場合、保存時に数値が丸められます。
to_real
(
string
)
| string | 実数型に変換する文字列 |
to_real('123.45')
→
123.45
文字列を時間型オブジェクト(time)に変換します。オプションとして、文字列をパースするためのフォーマット形式を指定できます。詳しくは、 QDate::fromString をご覧ください。
to_time
(
string
[,
format
][,
language
])
| string | 時刻の値を表す文字列 |
| format | 文字列をtimeに変換するフォーマット |
| language | 文字列をtimeに変換する言語(小文字、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
このグループには、日付や時刻を扱う関数があります。
2つの日付や日時の差を返します。
差は
Interval
型として返されるので、有用な情報を抽出するためには次のいずれかの関数と一緒に使用する必要があるでしょう:
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
1970-01-01T00:00:00.00(Qt.UTC)からの経過時間をdatetime型を返す。
datetime_from_epoch
(
int
)
| int | 数値(ミリ秒) |
datetime_from_epoch(1483225200000)
→
2017-01-01T00:00:00
日付型から日を取り出します。インターバル型からは日単位の長さを取り出します。
day
(
date
)
| date | 日付型(date)または日時型(datetime)の値 |
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
日付または日時の曜日を表す整数を返します。返される値は0から6で、0が日曜日、6が土曜日に対応します。
day_of_week
(
date
)
| date | 日付型(date)または日時型(datetime)の値 |
day_of_week(to_date('2015-09-21'))
→
1
Unixエポックと日付値とのインターバルをミリ秒単位で返します。
epoch
(
date
)
| date | 日付型(date)または日時型(datetime)の値 |
epoch(to_date('2017-01-01'))
→
1483203600000
日付型または文字列をカスタム形式でフォーマットします。詳しくは QDateTime::toString を参照してください。
format_date
(
datetime
,
format
[,
language
])
| datetime | 日付、時刻または日時の値 | ||||||||||||||||||||||||||||||||||||||||||||||||
| format |
文字列の書式設定に使用される文字列テンプレート(以下は英語からの直訳です。日本語設定の場合、デフォルトでは、例えば「Jun」はエラーになり、半角数字の「6月」は正しく解釈されます)
以下の書式文字列は、時間部分に使用できます。
|
||||||||||||||||||||||||||||||||||||||||||||||||
| language | dateをカスタム文字列に変換するフォーマットの言語(小文字、ISO 639) |
format_date('2012-05-15','dd.MM.yyyy')
→
'15.05.2012'
format_date('2012-05-15','d MMMM yyyy','fr')
→
'15 juin 2012'
時間型(time)または日時型(datetime)から時の部分を取り出します。インターバル型からは時間数を取り出します。
hour
(
datetime
)
| datetime | 時間型(time)または日時型(datetime)の値 |
hour('2012-07-22T13:24:57')
→
13
hour
(
interval
)
| interval | インターバルの値 |
hour(tointerval('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
Creates a date value from year, month and day numbers.
make_date
(
year
,
month
,
day
)
| year | Year number. Years 1 to 99 are interpreted as is. Year 0 is invalid. |
| month | Month number, where 1=January |
| day | Day number, beginning with 1 for the first day in the month |
make_date(2020,5,4)
→
date value 2020-05-04
Creates a datetime value from year, month, day, hour, minute and second numbers.
make_datetime
(
year
,
month
,
day
,
hour
,
minute
,
second
)
| year | Year number. Years 1 to 99 are interpreted as is. Year 0 is invalid. |
| month | Month number, where 1=January |
| day | Day number, beginning with 1 for the first day in the month |
| hour | Hour number |
| minute | Minutes |
| second | Seconds (fractional values include milliseconds) |
make_datetime(2020,5,4,13,45,30.5)
→
datetime value 2020-05-04 13:45:30.500
Creates an interval value from year, month, weeks, days, hours, minute and seconds values.
make_interval
([
years=0
][,
months=0
][,
weeks=0
][,
days=0
][,
hours=0
][,
minutes=0
][,
seconds=0
])
| years | Number of years (assumes a 365.25 day year length). |
| months | Number of months (assumes a 30 day month length) |
| weeks | Number of weeks |
| days | Number of days |
| hours | Number of hours |
| minutes | Number of minutes |
| seconds | Number of seconds |
make_interval(hours:=3)
→
3 hour interval
make_interval(days:=2, hours:=3)
→
2 day, 3 hour interval
Creates a time value from hour, minute and second numbers.
make_time
(
hour
,
minute
,
second
)
| hour | Hour number |
| minute | Minutes |
| second | Seconds (fractional values include milliseconds) |
make_time(13,45,30.5)
→
time value 13:45:30.500
日時型(datetime)または時間型(time)から分の部分を取り出します。インターバル型(interval)からは長さを分の単位で取り出します。
minute
(
datetime
)
| datetime | 時間型(time)または日時型(datetime)の値 |
minute('2012-07-22T13:24:57')
→
24
minute
(
interval
)
| interval | インターバル型 |
minute(tointerval('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
日付型(date)から月の部分を取り出します。インターバル型(interval)からは長さを月単位で取り出します。
month
(
date
)
| date | 日付型(date)または日時型(datetime)の値 |
month('2012-05-12')
→
05
month
(
interval
)
| interval | インターバル型 |
month(to_interval('3 months'))
→
3
month(age('2012-01-01','2010-01-01'))
→
4.03333
日時型(datetime)または時間型(time)から秒の部分を取り出します。インターバル型からは長さを秒単位を取り出します。
second
(
datetime
)
| datetime | 時間型(time)または日時型(datetime)の値 |
second('2012-07-22T13:24:57')
→
57
second
(
interval
)
| interval | インターバル型 |
second(age('2012-07-22T00:20:00','2012-07-22T00:00:00'))
→
1200
second(age('2012-01-01','2010-01-01'))
→
63072000
文字列を日付型オブジェクト(date)に変換します。オプションとして、文字列をパースするためのフォーマット形式を指定できます。詳しくは、 QDate::fromString をご覧ください。
to_date
(
string
[,
format
][,
language
])
| string | 日付を表す文字列 |
| format | フォーマット形式 |
| language | 文字列をdateに変換する言語(小文字、ISO 639) |
to_date('2012-05-04')
→
2012-05-04
to_date('June 29, 2019','MMMM d, yyyy')
→
2019-06-29
to_date('29 juin, 2019','d MMMM, yyyy','fr')
→
2019-06-29
文字列を日時型オブジェクト(datetime)に変換します。オプションとして、文字列をパースするためのフォーマット形式を指定できます。詳しくは、 QDate::fromString をご覧ください。
to_datetime
(
string
[,
format
][,
language
])
| string | 日時を表す文字列 |
| format | 文字列をdatetimeに変換するフォーマット |
| language | 文字列をdatetimeに変換する言語(小文字、ISO 639) |
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
to_datetime('29 juin, 2019 @ 12:34','d MMMM, yyyy @ HH:mm','fr')
→
2019-06-29T12:34
文字列をインターバル型に変換します。日付や月、時間などを取得することに利用できます。
to_interval
(
string
)
| string | インターバルを表す文字列。フォーマットの例は{n} days {n} hours {n} months, years, weeks, minutes, secondsが使用できます。 |
to_datetime('2012-05-05 12:00:00') - to_interval('1 day 2 hours')
→
2012-05-04T10:00:00
文字列を時間型オブジェクト(time)に変換します。オプションとして、文字列をパースするためのフォーマット形式を指定できます。詳しくは、 QDate::fromString をご覧ください。
to_time
(
string
[,
format
][,
language
])
| string | 時刻の値を表す文字列 |
| format | 文字列をtimeに変換するフォーマット |
| language | 文字列をtimeに変換する言語(小文字、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
日付型から週番号を取り出します。インターバル型からは週単位の長さを取り出します。
week
(
date
)
| date | 日付型(date)または日時型(datetime)の値 |
week('2012-05-12')
→
19
week
(
interval
)
| interval | インターバル型 |
week(to_interval('3 weeks'))
→
3
week(age('2012-01-01','2010-01-01'))
→
104.285
日付型(date)から年の部分を取り出します。インターバル型からは年単位で長さを取り出します。
year
(
date
)
| date | 日付型(date)または日時型(datetime)の値 |
year('2012-05-12')
→
2012
year
(
interval
)
| interval | インターバル型の値 |
year(to_interval('3 years'))
→
3
year(age('2012-01-01','2010-01-01'))
→
1.9986
このグループには、ファイルとパス名を操作する関数があります。
(ディレクトリも拡張子もない)ファイル名を返します。
base_file_name
(
path
)
| path | ファイルのパス |
base_file_name('/home/qgis/data/country_boundaries.shp')
→
'country_boundaries'
ファイルが存在する場合、trueを返します。
file_exists
(
path
)
| path | ファイルのパス |
file_exists('/home/qgis/data/country_boundaries.shp')
→
true
ファイルパスの、拡張子付きファイル名を返します。ディレクトリは含みません。
file_name
(
path
)
| path | ファイルのパス |
file_name('/home/qgis/data/country_boundaries.shp')
→
'country_boundaries.shp'
ファイルのパスの、ディレクトリ部分を返します。
file_path
(
path
)
| path | ファイルのパス |
file_path('/home/qgis/data/country_boundaries.shp')
→
'/home/qgis/data'
ファイルサイズを返します。単位はbytes。
file_size
(
path
)
| path | ファイルのパス |
file_size('/home/qgis/data/country_boundaries.geojson')
→
5674
ファイルのパスの拡張子部分を返します。
file_suffix
(
path
)
| path | ファイルのパス |
file_suffix('/home/qgis/data/country_boundaries.shp')
→
'shp'
ファイルパスがディレクトリの場合、trueを返します。
is_directory
(
path
)
| path | ファイルのパス |
is_directory('/home/qgis/data/country_boundaries.shp')
→
false
is_directory('/home/qgis/data/')
→
true
ファイルパスがファイルの場合、trueを返します。
is_file
(
path
)
| path | ファイルのパス |
is_file('/home/qgis/data/country_boundaries.shp')
→
true
is_file('/home/qgis/data/')
→
false
Only usable in an embedded form context, this function returns the current, unsaved value of a field in the parent form currently being edited. This will differ from the parent feature's actual attribute values for features which are currently being edited or have not yet been added to a parent layer. When used in a value-relation widget filter expression, this function should be wrapped into a 'coalesce()' that can retrieve the actual parent feature from the layer when the form is not used in an embedded context.
current_parent_value
(
field_name
)
| field_name | a field name in the current parent form |
current_parent_value( 'FIELD_NAME' )
→
The current value of a field 'FIELD_NAME' in the parent form.
現在編集中のフォームまたはテーブルで、属性の(未保存の)値を返します。
current_value
(
field_name
)
| field_name | 現在のフォームまたはテーブルの属性名 |
current_value( 'FIELD_NAME' )
→
FIELD_NAME属性の現在の値
このグループには、値同士を曖昧に比較するファジー・マッチング関数があります。
2つの文字列間のハミング距離を返します。この距離は、入力文字列の対応する位置にある異なった文字の数です。入力文字列は同じ長さでなければならず、大文字と小文字を区別して比較されます。
hamming_distance
(
string1
,
string2
)
| string1 | 文字列 |
| string2 | 文字列 |
hamming_distance('abc','xec')
→
2
hamming_distance('abc','ABc')
→
2
hamming_distance(upper('abc'),upper('ABC'))
→
0
2つの文字列の間のLevenshtein編集距離を返します。これは、ある文字列を別の文字列に変更するために必要な文字編集(挿入、削除または置換)の最小数に相当します。
Levenshtein距離は、2つの文字列間の類似性の尺度です。距離が小さいほど文字列はより似ており、距離が長いほど文字列が異なることを示します。距離は大文字と小文字を区別します。
levenshtein
(
string1
,
string2
)
| string1 | 文字列 |
| string2 | 文字列 |
levenshtein('kittens','mitten')
→
2
levenshtein('Kitten','kitten')
→
1
levenshtein(upper('Kitten'),upper('kitten'))
→
0
2つの文字列の、最も長い共通部分を返します。たとえば、 "ABABC"と "BABCA"の最も長い共通部分は"ABC"です。部分文字列は大文字と小文字を区別します。
longest_common_substring
(
string1
,
string2
)
| string1 | 文字列 |
| string2 | 文字列 |
longest_common_substring('ABABC','BABCA')
→
'ABC'
longest_common_substring('abcDeF','abcdef')
→
'abc'
longest_common_substring(upper('abcDeF'),upper('abcdex'))
→
'ABCDE'
文字列のSoundex表現を返します。Soundexは音声マッチングアルゴリズムで。同じ音の文字列は同じSoundexコードで表現されます。
soundex
(
string
)
| string | 文字列 |
soundex('robert')
→
'R163'
soundex('rupert')
→
'R163'
soundex('rubin')
→
'R150'
このグループには、さまざまな汎用関数があります。
環境変数を取得し、その内容を文字列として返します。変数が見つからない場合、NULLが返します。 この関数は、ドライブ文字やパスプレフィックスなどのシステム固有の設定を取得するために有用です。環境変数の定義はオペレーティングシステムによって異なりますので、システム管理者またはオペレーティングシステムのマニュアルを参照して設定方法を確認してください。
env
(
name
)
| name | 環境変数の名前 |
env( 'LANG' )
→
'en_US.UTF-8'
env( 'MY_OWN_PREFIX_VAR' )
→
'Z:'
env( 'I_DO_NOT_EXIST' )
→
NULL
文字列で渡された式を評価します。これを使えば、コンテキスト変数またはフィールドとして渡されたパラメータを動的に展開できます。
eval
(
expression
)
| expression | 式を表す文字列 |
eval(''nice'')
→
'nice'
eval(@expression_var)
→
[@expression_varを評価した結果...]
Evaluates a template which is passed in a string. Useful to expand dynamic parameters passed as context variables or fields.
eval_template
(
template
)
| template | a template string |
eval_template('QGIS [% upper(\'rocks\') %]')
→
QGIS ROCKS
指定されたレイヤが表示されている場合、trueを返します。
is_layer_visible
(
layer
)
| layer | レイヤ名かレイヤIDのどちらかを表す文字列 |
is_layer_visible('baseraster')
→
True
該当するレイヤのプロパティまたはメタデータの値を返します。
layer_property
(
layer
,
property
)
| layer | レイヤ名かレイヤIDのどちらかを表す文字列 |
| property |
a string corresponding to the property to return. Valid options are:
|
layer_property('streets','title')
→
'Basemap Streets'
layer_property('airports','feature_count')
→
120
layer_property('landsat','crs')
→
'EPSG:4326'
この関数は、第3引数の式で使われる変数を設定します。同じ計算結果を別の場所で繰り返し使用する必要があるような、複雑な式を構成する際に使われます。
with_variable
(
name
,
value
,
expression
)
| name | 設定する変数の名前 |
| value | 設定する値 |
| expression | 変数が使用できる式 |
with_variable('my_sum', 1 + 2 + 3, @my_sum * 2 + @my_sum * 5)
→
42
このグループには、長さや面積など、ジオメトリを扱う関数があります。
地物の面積を返します。この関数で計算される面積は、現在のプロジェクトの楕円体の設定と領域単位の設定の両方を反映します。 例えば、プロジェクトに回転楕円体が設定されている場合、楕円体面積になり、設定されていない場合、平面上の面積になります。
$area
$area
→
42
線の長さを返します。ポリゴンの境界の長さが必要な場合は、$perimeter を使用してください。 計算には、現在のプロジェクトの楕円体の設定と距離単位の設定の両方が影響します。例えば、プロジェクトに楕円体が設定されている場合、楕円体長(測地線長)になり、楕円体が設定されていない場合、平面長になります。
$length
$length
→
42.4711
現在の地物の周長を返します。この関数で計算される周囲は、現在のプロジェクトの楕円体の設定と距離単位の設定の両方が影響します。 たとえば、プロジェクトに楕円体が設定されている場合、計算された周長は楕円体長(測地線)になり、楕円が設定されていない場合、計算された周長は平面長になります。
$perimeter
$perimeter
→
42
現在の地物のジオメトリのx座標を抜き出します。
$x_at
(
i
)
| i | 線の構成点のインデックス(始点は0から始まり、負の数は終点から数えます) |
$x_at(1)
→
5
現在の地物のジオメトリのy座標を抜き出します。
$y_at
(
i
)
| i | 線の構成点のインデックス(始点は0から始まり、負の数は終点から数えます) |
$y_at(1)
→
2
線を構成する頂点の二等分線角度(平均角度)を返します。 角度は北から時計回りです。例えば、北向きのセグメント(0度)と東向きのセグメント(90度)の共通頂点では、45になります。
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
ポリゴンの面積を返します。常に、このジオメトリの座標参照系で平面的として計算されます。単位は座標参照系の単位と一致します。 この面積は、プロジェクトの楕円体と面積単位設定にもとづいた楕円体として計算される $area 関数とは微妙に異なります。
area
(
geometry
)
| geometry | ポリゴンのジオメトリ |
area(geom_from_wkt('POLYGON((0 0, 4 0, 4 2, 0 2, 0 0))'))
→
8.0
point_aから見たpoint_bの方位(北をゼロにして時計回り)をラジアンで返します。
azimuth
(
point_a
,
point_b
)
| point_a | 点(POINT) |
| point_b | 点(POINT) |
degrees( azimuth( make_point(25, 45), make_point(75, 100) ) )
→
42.273689
degrees( azimuth( make_point(75, 100), make_point(25,45) ) )
→
222.273689
ジオメトリのクロージャ(トポロジカル境界)を返します。例えば、ポリゴンでは外側と内側のリングが、線では両端の頂点が、トポロジカル境界です。点やコレクションには境界が定義されていないため、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)'
ジオメトリのバウンディングボックスを返します。計算は、ジオメトリの座標参照系で行われます。
bounds
(
geom
)
| geom | ジオメトリ |
bounds($geometry)
→
$geometry のバウンディングボックス
ジオメトリのバウンディングボックスの高さを返します。計算は、このジオメトリの座標参照系で行われます。
bounds_height
(
geom
)
| geom | ジオメトリ |
bounds_height($geometry)
→
$geometry のバウンディングボックスの高さ
ジオメトリのバウンディングボックスの幅を返します。計算は、このジオメトリの座標参照系で行われます。
bounds_width
(
geom
)
| geom | ジオメトリ |
bounds_width($geometry)
→
$geometry のバウンディングボックスの幅
ジオメトリからの距離が一定値未満の領域(バッファ)を返します。距離の計算は、ジオメトリの座標参照系で行われます。
buffer
(
geom
,
distance
[,
segments=8
])
| geom | ジオメトリ |
| distance | バッファ距離 |
| segments | バッファの四分円に使用するセグメントの数。数値が大きいほど、より多くの点で構成された、なめらかなバッファが生成されます。 |
buffer($geometry, 10.5)
→
10.5のサイズで作られたバッファのポリゴン
線に沿って可変幅のバッファを作成します。バッファの直径は各頂点の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に連続的に変わる可変幅バッファ
Returns a closed line string of the input line string by appending the first point to the end of the line, if it is not already closed. If the geometry is not a line string or multi line string then the result will be 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)
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)
ジオメトリを集約したマルチパートのジオメトリを返します。
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))'
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)
ジオメトリが他のジオメトリを包含するかどうかをテストします。 ジオメトリbの点がジオメトリaの外側になく、bの内部の少なくとも1つの点がaの内部にある場合に true を返します。
contains
(
geometry a
,
geometry b
)
| geometry a | ジオメトリ |
| geometry b | ジオメトリ |
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
凸包(convex hul)を返します。すべてのジオメトリを含む最小面積のポリゴンです。
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))
ジオメトリが他のジオメトリと交差するかどうかをテストします。ジオメトリが全部ではなく一部に共通する内部点を持つ場合、trueを返します。
crosses
(
geometry a
,
geometry b
)
| geometry a | ジオメトリ |
| geometry b | ジオメトリ |
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
geometry_aのうち、geometry_bと交差しない部分を表すジオメトリを返します。
difference
(
geometry_a
,
geometry_b
)
| geometry_a | ジオメトリ |
| geometry_b | ジオメトリ |
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)
空間的に交差していないかどうかをテストします。空間を共有しない場合、trueを返します。
disjoint
(
geometry a
,
geometry b
)
| geometry a | ジオメトリ |
| geometry b | ジオメトリ |
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
2つのジオメトリ間の最小距離を返します。
distance
(
geometry a
,
geometry b
)
| geometry a | ジオメトリ |
| geometry b | ジオメトリ |
distance( geom_from_wkt( 'POINT(4 4)' ), geom_from_wkt( 'POINT(4 8)' ) )
→
4
インデックスで指定した点までの、ジオメトリに沿った距離を返します。
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
ジオメトリの最後のノード(点)を返します。
end_point
(
geometry
)
| geometry | ジオメトリ |
geom_to_wkt(end_point(geom_from_wkt('LINESTRING(4 0, 4 2, 0 2)')))
→
'Point (0 2)'
線ジオメトリの始点と終点を指定量だけ延長します。最初と最後のセグメントを、その方位に向けて延長します。距離の単位はジオメトリの座標参照系を使います。
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)
ポリゴンの外側のリングを返します。ジオメトリがポリゴンではない場合は、nullになります。
exterior_ring
(
geom
)
| geom | ポリゴン |
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)'
線または曲線のジオメトリを、xとyで指定した距離だけ並行移動させてできるポリゴンを返します。
extrude
(
geom
,
x
,
y
)
| geom | ポリゴン |
| x | x方向のシフト量 |
| y | y方向のシフト量 |
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))
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)))
頂点のXとYを入れ替えたジオメトリを返します。緯度と経度を間違えたジオメトリを修復する際に便利です。
flip_coordinates
(
geom
)
| geom | ジオメトリ |
geom_to_wkt(flip_coordinates(make_point(1, 2)))
→
Point (2 1)
ポリゴンのジオメトリに右手ルールを強制します。 右手ルールとは、ポリゴンの境界線の右手側が必ず内側になることで、外側の輪郭線は時計回りに描かれ、ポリゴンの穴の輪郭線は反時計回りに描かれます。シェープファイルは右手ルールです。
force_rhr
(
geom
)
| geom | ジオメトリ。ポリゴンではないジオメトリはそのまま返します。 |
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))
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>')
→
線のジオメトリ
Well-Known Binary(WKB)形式からジオメトリを返す
geom_from_wkb
(
binary
)
| binary | Well-Known Binary(WK)形式のジオメトリ |
geom_from_wkb( geom_to_wkb( make_point(4,5) ) )
→
点のジオメトリオブジェクト
Well-known text(WKT)のジオメトリを返します。
geom_from_wkt
(
text
)
| text | Well-known text(WKT)表現の文字列 |
geom_from_wkt( 'POINT(4 5)' )
→
ジオメトリオブジェクト
Returns the Well-Known Binary (WKB) representation of a geometry
geom_to_wkb
(
geometry
)
| geometry | ジオメトリ |
geom_to_wkb( $geometry )
→
ジオメトリオブジェクトを含むBlob
SRIDメタデータのないWell-known text(WKT)表現を返します。
geom_to_wkt
(
geometry
[,
precision
])
| geometry | ジオメトリ |
| precision | 数値精度 |
geom_to_wkt( $geometry )
→
POINT(6 50)
地物のジオメトリを返します。
geometry
(
feature
)
| feature | 地物オブジェクト |
geom_to_wkt( geometry( get_feature( layer, attributeField, value ) ) )
→
'POINT(6 50)'
intersects( $geometry, geometry( get_feature( layer, attributeField, value ) ) )
→
true
ジオメトリコレクションから特定の要素を返します。入力ジオメトリがコレクションではない場合、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)'
ジオメトリ間のハウスドルフ距離(Hausdorff)を返します。ハウスドルフ距離は、2つのジオメトリがどれほど類似しているかを測る指標で、距離が近いほど類似したジオメトリを示します。
オプションとしてdensify関数を指定できます。指定されていない場合は、標準的なハウスドルフ距離近似が使用されます。この近似は、大きなサブセットでは十分に正確です。例えば、
hausdorff_distance
(
geometry a
,
geometry b
[,
densify_fraction
])
| geometry a | ジオメトリ |
| geometry b | ジオメトリ |
| 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
point_aとpoint_bの間の傾斜角を返します。
inclination
(
point_a
,
point_b
)
| point_a | 点(POINT) |
| point_b | 点(POINT) |
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
ポリゴンの特定の内側のリングを返します。ジオメトリがポリゴンではない場合、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))'
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)
ジオメトリが交差するかどうかテストします。ジオメトリが空間的に交差(空間の一部を共有)する場合はtrueを、そうでなければfalseを返します
intersects
(
geometry a
,
geometry b
)
| geometry a | ジオメトリ |
| geometry b | ジオメトリ |
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
ジオメトリのバウンディングボックスが別のジオメトリのバウンディングボックスに重なるかどうかをテストします。空間的に交差する場合はtrueを、そうでない場合はfalseを返します
intersects_bbox
(
geometry
,
geometry
)
| geometry | ジオメトリ |
| geometry | ジオメトリ |
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
線が閉じている(開始点と終了点が一致している)場合はtrueを、そうでない場合はfalseを返します。ジオメトリが線ではない場合、nullを返します。
is_closed
(
geom
)
| geom | 線のジオメトリ |
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
ジオメトリが空の場合はtrue、空でないならfalse、ジオメトリが存在しないならNULLを返します。is_empty_or_nullも参照してください。
is_empty
(
geom
)
| geom | ジオメトリ |
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
ジオメトリがNULLか空の場合はtrue、それ以外ならfalseを返します。この関数は、 '$geometry IS NULL or is_empty($geometry)'に似ています。
is_empty_or_null
(
geom
)
| geom | ジオメトリ |
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
Returns true if the geometry is of Multi type.
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
ジオメトリが有効(OGCの規約に合う2Dジオメトリ)な場合、trueを返します。
is_valid
(
geom
)
| geom | ジオメトリ |
is_valid(geom_from_wkt('LINESTRING(0 0, 1 1, 2 2, 0 0)'))
→
true
is_valid(geom_from_wkt('LINESTRING(0 0)'))
→
false
文字列の文字数、または線の長さを返します。
length
(
string
)
| string | 文字数を数える文字列 |
length('hello')
→
5
length
(
geometry
)
| geometry | 線のジオメトリ |
length(geom_from_wkt('LINESTRING(0 0, 4 0)'))
→
4.0
始点から線に沿って測った距離にある点での、線の方角を返します。方角の単位は度で、北から時計回りです。 ノード上では平均角度になります。
line_interpolate_angle
(
geometry
,
distance
)
| geometry | 線のジオメトリ |
| distance | (始点からの)線に沿った距離 |
line_interpolate_angle(geometry:=geom_from_wkt('LineString(0 0, 10 0)'),distance:=5)
→
90.0
始点から線に沿って測った距離にある点を返します。
line_interpolate_point
(
geometry
,
distance
)
| geometry | 線のジオメトリ |
| distance | (始点からの)線に沿った距離 |
geom_to_wkt(line_interpolate_point(geometry:=geom_from_wkt('LineString(0 0, 10 0)'),distance:=5))
→
'Point (5 0)'
基準点から線にもっと近い点の、始点から線に沿って測った距離を返します。
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
複数の線をマージした、単一の線ジオメトリを返します。線でない場合、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)'
(始点から測った距離で指定した)始点から終点までを切り出した直線・曲線のジオメトリを返します。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)'
Returns the maximum m (measure) value of a geometry.
m_max
(
geometry
)
| geometry | a geometry containing m values |
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
Returns the minimum m (measure) value of a geometry.
m_min
(
geometry
)
| geometry | a geometry containing m values |
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
円形のポリゴンを作成します。
make_circle
(
center
,
radius
[,
segment=36
]…)
| center | 中心点 |
| radius | 半径 |
| segment | セグメント数。デフォルトは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))'
楕円形のポリゴンを作成します。
make_ellipse
(
center
,
semi_major_axis
,
semi_minor_axis
,
azimuth
[,
segment=36
]…)
| center | 中心点 |
| semi_major_axis | 半長軸 |
| semi_minor_axis | 半短軸 |
| azimuth | 楕円の向き |
| segment | セグメント数。デフォルトは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))'
一連の点ジオメトリから線ジオメトリを作成します。
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)'
xとyの値を指定して点ジオメトリを作成します。
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)'
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)'
外側のリングおよび内側のリング(オプション)でポリゴンを作成します。
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))'
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(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(make_point(0, 0), make_point(0,5), make_point(5, 3), 1)))
→
'Polygon ((0 0, 0 5, 5 5, 5 0, 0 0))'
正多角形を作成します。
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))'
対角線を指定して正方形を作成します。
make_square
(
point1
,
point2
…)
| point1 | 正多角形の最初の点 |
| 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))'
三角形のポリゴンを作成します。
make_triangle
(
point 1
,
point 2
,
point 3
)
| point 1 | 最初の点 |
| point 2 | 2番目の点 |
| point 3 | 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)'
ジオメトリの最小包囲円を返します。すべてのジオメトリを包み込む最小の円を表します。
minimal_circle
(
geometry
[,
segment=36
])
| geometry | ジオメトリ |
| segment | セグメント数。デフォルトは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))
入力ジオメトリのすべてのノード(点)からなるマルチポイントジオメトリを返します。
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))'
ジオメトリコレクション内のジオメトリの数を返します。入力ジオメトリがコレクションでない場合、nullを返します。
num_geometries
(
geometry
)
| geometry | ジオメトリコレクション |
num_geometries(geom_from_wkt('GEOMETRYCOLLECTION(POINT(0 1), POINT(0 0), POINT(1 0), POINT(1 1))'))
→
4
ポリゴンまたはジオメトリコレクション中の内側のリングの数を返します。ポリゴンでもコレクションでもない場合、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
ジオメトリの頂点数を返します。
num_points
(
geom
)
| geom | ジオメトリ |
num_points($geometry)
→
$geometryの頂点の数
ポリゴンまたはジオメトリコレクション中のリング(外側のリングを含む)の数を返します。ポリゴンでもコレクションでもない場合は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
線ジオメトリを側面方向にオフセットさせたジオメトリを返します。距離の単位はジオメトリの座標参照系です。
offset_curve
(
geometry
,
distance
[,
segments=8
][,
join=1
][,
miter_limit=2.0
])
| geometry | 線のジオメトリ |
| distance | オフセット距離。正の値は線の左側にバッファリングされ、負の値は右にバッファされます。 |
| segments | 丸め継ぎ結合が使用されているときに四分円を表すために使用するセグメントの数。数値が大きいほど、より多くのノードでより滑らかな線になります。 |
| join | 角のスタイル。1=Round(丸め継ぎ)、2=Miter(留め継ぎ)、3=Bevel(斜角継ぎ)を表します。 |
| miter_limit | 非常に鋭い角に使用される留め継ぎ比の制限(留め継ぎ結合の場合のみ) |
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)
→
斜角継ぎ(Bevel)を使用して、左に10.5単位だけオフセットされています
与えられた基準によってマルチジオメトリを並べ替えます。
order_parts
(
geom
,
orderby
,
ascending
)
| geom | マルチパートのジオメトリ |
| orderby | 順序基準を定義する式 |
| ascending | 昇順はTrue、降順はFalse |
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)))
order_parts(geom_from_wkt('LineString(1 2, 3 2, 4 3)'), '1', True)
→
LineString(1 2, 3 2, 4 3)
バウンディングボックスのジオメトリを返します。
oriented_bbox
(
geom
)
| geom | ジオメトリ |
geom_to_wkt( oriented_bbox( geom_from_wkt( 'MULTIPOINT(1 2, 3 4, 3 2)' ) ) )
→
Polygon ((1 4, 1 2, 3 2, 3 4, 1 4))
ジオメトリが別のジオメトリに重なるかどうかをテストします。ジオメトリが空間を共有していて同じ次元であり、かつ、互いが完全に含まれない場合、trueを返します。
overlaps
(
geometry a
,
geometry b
)
| geometry a | ジオメトリ |
| geometry b | ジオメトリ |
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
ポリゴンの周長を返します。常にジオメトリの座標参照系で平面上で計算されます。面積の単位はCRSの単位と一致します。 この点で、プロジェクトの楕円体と面積単位設定にもとづいた楕円体計算が行われる $perimeter 関数とは異なります。
perimeter
(
geometry
)
| geometry | ポリゴンのジオメトリ |
perimeter(geom_from_wkt('POLYGON((0 0, 4 0, 4 2, 0 2, 0 0))'))
→
12.0
ジオメトリの特定のノードを返します。
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)'
ジオメトリの表面上に存在することが保証される点(内部保証点)を返します。
point_on_surface
(
geom
)
| geom | ジオメトリ |
point_on_surface($geometry)
→
点(Point)
ポリゴンの表面から最も離れた内部点を近似的に計算します。 使用するpolylabelアルゴリズム(Vladimir Agafonkin, 2016)は、指定された許容範囲内で「到達不能極」を見つける反復的手法です。許容範囲を厳しくすると反復計算の時間がかかります。 到達不能極(Pole of inaccessibility, PIA)とは、陸上で最も海から遠い点、または海上で最も陸から遠い点のことです。
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.55, 1.55)
指定した距離と方位(単位はラジアン)、標高を使って、始点から投影された点を返します。
project
(
point
,
distance
,
azimuth
[,
elevation
])
| point | 起点 |
| distance | 距離 |
| azimuth | 方位角(ラジアン、北を0として時計周り) |
| elevation | 傾斜の角度(ラジアン) |
geom_to_wkt(project(make_point(1, 2), 3, radians(270)))
→
Point(-2, 2)
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'
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
(点の順序を逆にして)線の向きを反転します。
reverse
(
geom
)
| geom | ジオメトリ |
geom_to_wkt(reverse(geom_from_wkt('LINESTRING(0 0, 1 1, 2 2)')))
→
'LINESTRING(2 2, 1 1, 0 0)'
回転したジオメトリを返します。計算はジオメトリの座標参照系で行われます。
rotate
(
geom
,
rotation
[,
point
])
| geom | ジオメトリ |
| rotation | 単位は度(時計回り) |
| point | 回転の中心(指定しない場合、バウンディングボックスの中心が使われます) |
rotate($geometry, 45, make_point(4, 5))
→
点(4, 5)を中心に、45度回転させたジオメトリ
rotate($geometry, 45)
→
バウンディングボックスの中央を中心に、45度回転させたジオメトリ
入力ジオメトリのすべてのセグメントからなる線ジオメトリ(マルチパート)を返します。
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))'
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)
距離の閾値を使用してノード(点)を削除し、ジオメトリを単純化します(いわゆる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)'
面積の閾値を使ってノードを削除し、ジオメトリを単純化します(いわゆる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)'
線の片側だけにバッファを作ったジオメトリを返します。単位はジオメトリの座標参照系です。
single_sided_buffer
(
geometry
,
distance
[,
segments=8
][,
join=1
][,
miter_limit=2.0
])
| geometry | 線のジオメトリ |
| distance | バッファ距離。正の値は線の左側、負の値は右側を意味します。 |
| segments | バッファの四分円に使用するセグメントの数。数値が大きいほど、より多くの点で構成された、なめらかなバッファが生成されます。 |
| join | 角のスタイル。1=Round(丸め継ぎ)、2=Miter(留め継ぎ)、3=Bevel(斜角継ぎ)を表します。 |
| miter_limit | 非常に鋭い角に使用される留め継ぎ比の制限(留め継ぎ結合の場合のみ) |
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)
→
よりなめらかなバッファ
single_sided_buffer($geometry, 10.5, join=3)
→
斜角継ぎ(Bevel)を使用し、左側に10.5単位だけバッファリングされた線
点を追加して角を丸め、ジオメトリを滑らかにします。入力ジオメトリにZ値またはM値が含まれている場合でも、同じように滑らかにされ、出力ジオメトリは入力ジオメトリと同じ次元を保ちます。
smooth
(
geometry
[,
iterations
][,
offset
][,
min_length
][,
max_angle
])
| 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)'
ジオメトリの最初のノード(点)を返します。
start_point
(
geometry
)
| geometry | ジオメトリ |
geom_to_wkt(start_point(geom_from_wkt('LINESTRING(4 0, 4 2, 0 2)')))
→
'Point (4 0)'
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)
線に沿って、バッファの直径が均等に変化するバッファ(テイパードバッファ)を作成します。
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で終わるテイパードバッファ
ジオメトリが別のジオメトリに接するかどうかをテストします。ジオメトリが共通の点を持ち、かつ内部が交差しない場合、trueを返します。
touches
(
geometry a
,
geometry b
)
| geometry a | ジオメトリ |
| geometry b | ジオメトリ |
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
変換元CRSから変換先CRSに変換されたジオメトリを返します。
transform
(
geom
,
source_auth_id
,
dest_auth_id
)
| geom | ジオメトリ |
| source_auth_id | 変換元CRS |
| dest_auth_id | 変換先CRS |
geom_to_wkt( transform( $geometry, 'EPSG:2154', 'EPSG:4326' ) )
→
POINT(0 51)
平行移動したジオメトリを返します。計算はジオメトリの座標参照系で行われます。
translate
(
geom
,
dx
,
dy
)
| geom | ジオメトリ |
| dx | x方向の移動 |
| dy | y方向の移動 |
translate($geometry, 5, 10)
→
元データと同じジオメトリを持っている
ジオメトリの点集合を表すジオメトリを返します。
union
(
geometry1
,
geometry2
)
| geometry1 | ジオメトリ |
| geometry2 | ジオメトリ |
geom_to_wkt( union( geom_from_wkt( 'POINT(4 4)' ), geom_from_wkt( 'POINT(5 5)' ) ) )
→
MULTIPOINT(4 4, 5 5)
点ジオメトリから生成されたくさび形バッファを返します。
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)
→
東に面する点(1,2)を中心とするくさび形バッファで、幅は180度、外半径は1です。
ジオメトリが別のジオメトリの内部にあるかどうかをテストします。geometry aが完全にgeoemtry bの内部にある場合、trueを返します。
within
(
geometry a
,
geometry b
)
| geometry a | ジオメトリ |
| geometry b | ジオメトリ |
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
点のx座標を返します。点ではない場合は、重心のx座標を返します。
x
(
geom
)
| geom | ジオメトリ |
x( geom_from_wkt( 'POINT(2 5)' ) )
→
2
x( $geometry )
→
現在の地物の重心のx座標
ジオメトリのx座標の最大値を返します。計算はこのジオメトリの座標参照系で行われます。
x_max
(
geom
)
| geom | ジオメトリ |
x_max( geom_from_wkt( 'LINESTRING(2 5, 3 6, 4 8)') )
→
4
ジオメトリのx座標の最小値を返します。計算はこのジオメトリの座標参照系で行われます。
x_min
(
geom
)
| geom | ジオメトリ |
x_min( geom_from_wkt( 'LINESTRING(2 5, 3 6, 4 8)') )
→
2
点のy座標を返します。点ではない場合、重心のy座標を返します。
y
(
geom
)
| geom | ジオメトリ |
y( geom_from_wkt( 'POINT(2 5)' ) )
→
5
y( $geometry )
→
現在の地物の重心のy座標
ジオメトリのy座標の最大値を返します。計算はこのジオメトリの座標参照系で行われます。
y_max
(
geom
)
| geom | ジオメトリ |
y_max( geom_from_wkt( 'LINESTRING(2 5, 3 6, 4 8)') )
→
8
ジオメトリのy座標の最小値を返します。計算はこのジオメトリの座標参照系で行われます。
y_min
(
geom
)
| geom | ジオメトリ |
y_min( geom_from_wkt( 'LINESTRING(2 5, 3 6, 4 8)') )
→
5
Returns the maximum z coordinate of a geometry.
z_max
(
geometry
)
| geometry | a geometry with z coordinate |
z_max( geom_from_wkt( 'POINT ( 0 0 1 )' ) )
→
1
z_max( make_line( make_point( 0,0,0 ), make_point( -1,-1,-2 ) ) )
→
0
Returns the minimum z coordinate of a geometry.
z_min
(
geometry
)
| geometry | a geometry with z coordinate |
z_min( geom_from_wkt( 'POINT ( 0 0 1 )' ) )
→
1
z_min( make_line( make_point( 0,0,0 ), make_point( -1,-1,-2 ) ) )
→
-2
このコンポジション内にあるコンポーザアイテムの変数を、マップ型オブジェクトとして返します。
item_variables
(
id
)
| id | コンポーザアイテムID |
map_get(item_variables('main_map'), 'map_scale')
→
2000
このグループには、現在のプロジェクトで使用可能なレイヤがあります。
レイヤのURIを返します。
decode_uri
(
layer
[,
part
])
| layer | 対象レイヤ |
| 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'
このグループには、マップ型オブジェクト(辞書オブジェクト、キーと値のペア、または連想配列とも呼ばれます)の作成と操作のための関数があります。マップ型オブジェクトでは、指定されたキーに値を割り当てることができ、配列と違って、順序は関係ありません。
JSON文字列を読み込む
from_json
(
string
)
| string | JSON文字列 |
from_json('{"qgis":"rocks"}')
→
{ "qgis" : "rocks" }
from_json('[1,2,3]')
→
[1,2,3]
hstore形式の文字列をマップ型オブジェクトに変換します。
hstore_to_map
(
string
)
| string | 入力文字列 |
hstore_to_map('qgis=>rocks')
→
{ "qgis" : "rocks" }
json形式の文字列をマップ型オブジェクトに変換します。
json_to_map
(
string
)
| string | 入力文字列 |
json_to_map('{"qgis":"rocks"}')
→
{ "qgis" : "rocks" }
パラメータのペアとして渡された、すべてのキーと値のマップ型オブジェクトを返します。
map
(
key1
,
value1
,
key2
,
value2
…)
| key | キー(文字列) |
| value | 値 |
map('1','one','2', 'two')
→
{ '1': 'one', '2': 'two' }
マップ型オブジェクトのすべてのキーを、配列として返します。
map_akeys
(
map
)
| map | マップ型オブジェクト |
map_akeys(map('1','one','2','two'))
→
[ '1', '2' ]
マップ型オブジェクトのすべての値を、配列として返します。
map_avals
(
map
)
| map | マップ型オブジェクト |
map_avals(map('1','one','2','two'))
→
[ 'one', 'two' ]
複数のマップ型データのすべてのペア(キーと値)をマージしたマップ型オブジェクトを返します。同じキーが含まれている場合、2番目の値が使用されます。
map_concat
(
map1
,
map2
…)
| map | マップ型オブジェクト |
map_concat(map('1','one', '2','overridden'),map('2','two', '3','three'))
→
{ '1': 'one, '2': 'two', '3': 'three' }
指定されたキーの要素が削除されたマップ型オブジェクトを返します。
map_delete
(
map
,
key
)
| map | マップ型オブジェクト |
| key | 削除するキー |
map_delete(map('1','one','2','two'),'2')
→
{ '1': 'one' }
指定されたキーがマップ型オブジェクトに存在する場合、trueを返します。
map_exist
(
map
,
key
)
| map | マップ型オブジェクト |
| key | 検索するキー |
map_exist(map('1','one','2','two'),'3')
→
false
マップ型オブジェクトの値を返します。
map_get
(
map
,
key
)
| map | マップ型オブジェクト |
| key | 検索するキー |
map_get(map('1','one','2','two'),'2')
→
'two'
キー・値を追加したマップ型オブジェクトを返します。
map_insert
(
map
,
key
,
value
)
| map | マップ型オブジェクト |
| key | 追加するキー |
| value | 追加する値 |
map_insert(map('1','one'),'3','three')
→
{ '1': 'one', '3': 'three' }
マップ型オブジェクトをhstore形式の文字列に変換します。
map_to_hstore
(
map
)
| map | マップ型オブジェクト |
map_to_hstore(map('qgis','rocks'))
→
"qgis"=>"rocks"}
マップ型オブジェクトをjson形式の文字列に変換します。
map_to_json
(
map
)
| map | マップ型オブジェクト |
map_to_json(map('qgis','rocks'))
→
{"qgis":"rocks"}
マップ型オブジェクトや配列などから、JSON文字列を作成します。
to_json
(
value
)
| value | 入力値 |
to_json(map('qgis','rocks'))
→
{"qgis":"rocks"}
to_json(array(1,2,3))
→
[1,2,3]
このグループには、平方根や三角関数のような算術関数があります。
逆コサイン(アークコサイン)をラジアンで返します。
acos
(
value
)
| value | 角度の余弦(ラジアン) |
acos(0.5)
→
1.0471975511966
逆サイン(アークサイン)をラジアンで返します。
asin
(
value
)
| value | 角度の正弦(ラジアン) |
asin(1.0)
→
1.5707963267949
逆タンジェント(アークタンジェント)をラジアンで返します。
atan
(
value
)
| value | 角度の正接(ラジアン) |
atan(0.5)
→
0.463647609000806
2つの引数を用いてdy/dxの逆タンジェント(アークタンジェント)を返します。
atan2
(
dy
,
dx
)
| dy | y座標の差 |
| dx | x座標の差 |
atan2(1.0, 1.732)
→
0.523611477769969
point_aから見たpoint_bの方位(北をゼロにして時計回り)をラジアンで返します。
azimuth
(
point_a
,
point_b
)
| point_a | 点(POINT) |
| point_b | 点(POINT) |
degrees( azimuth( make_point(25, 45), make_point(75, 100) ) )
→
42.273689
degrees( azimuth( make_point(75, 100), make_point(25,45) ) )
→
222.273689
指定の範囲に制限(clamp)した値を返します。
clamp
(
minimum
,
input
,
maximum
)
| minimum | input が取りうる最も小さな値 |
| input | minimum と maximum で指定される範囲に制限される値 |
| maximum | input が取りうる最も大きな値 |
clamp(1,5,10)
→
5
(
input
は1と10の間にあるので、5をそのまま返します)
clamp(1,0,10)
→
1
(
input
は最小値の1より小さいので、1を返します)
clamp(1,11,10)
→
10
(
input
は最大値の10より大きいので、10を返します)
ラジアンから度に変換します。
degrees
(
radians
)
| radians | 数値 |
degrees(3.14159)
→
180
degrees(1)
→
57.2958
point_aとpoint_bの間の傾斜角を返します。
inclination
(
point_a
,
point_b
)
| point_a | 点(POINT) |
| point_b | 点(POINT) |
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
指定した底の対数を返します。
log
(
base
,
value
)
| base | 正の数 |
| value | 正の数 |
log(2, 32)
→
5
log(0.5, 32)
→
-5
最大値を返します。
max
(
value1
,
value2
…)
| value | 数値 |
max(2,10.2,5.5)
→
10.2
max(20.5,NULL,6.2)
→
20.5
最小値を返します。
min
(
value1
,
value2
…)
| value | 数値 |
min(20.5,10,6.2)
→
6.2
min(2,-10.3,NULL)
→
-10.3
角度をラジアンに変換します。
radians
(
degrees
)
| degrees | 数値 |
radians(180)
→
3.14159
radians(57.2958)
→
1
最小値と最大値の引数で指定された範囲内(境界値を含む)のランダムな整数を返します。seedが固定されている場合、値は常に同じになります。
rand
(
min
,
max
[,
seed=null
])
| min | 乱数の下限値 |
| max | 乱数の上限値 |
| seed | 乱数のseed |
rand(1, 10)
→
8
最小値と最大値の引数で指定された範囲内(境界値を含む)のランダムな浮動小数点数を返します。seedが固定されている場合、値は常に同じになります。
randf
([
min=0.0
][,
max=1.0
][,
seed=null
])
| min | 乱数の下限値 |
| max | 乱数の上限値 |
| seed | 乱数のseed |
randf(1, 10)
→
4.59258286403147
指定した桁数になるように四捨五入した数値を返します。
round
(
value
[,
places=0
])
| value | 丸められる数値 |
| places | 数値を丸める桁(オプション、負の値も可) |
round(1234.567, 2)
→
1234.57
round(1234.567)
→
1235
指数曲線を用いて、与えられた値を入力範囲から出力範囲に変換します。この関数は、入力値から指定された出力範囲の内外の対応する値を得るために使用することができます。
scale_exp
(
val
,
domain_min
,
domain_max
,
range_min
,
range_max
,
exponent
)
| val | 入力範囲内の値 |
| domain_min | 入力範囲の最小値を指定します。入力値がとるべき最小値です。 |
| domain_max | 入力範囲の最大値を指定します。入力値がとるべき最大値です。 |
| range_min | 出力範囲の最小値を指定します。関数の最小の出力値です。 |
| range_max | 出力範囲の最大値を指定します。関数の最大の出力値です。 |
| exponent | 入力値が出力範囲にマッピングされる方法を規定する正の値。大きな値を指定すると、出力値が'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)
線形補間を用いて、与えられた値を入力範囲から出力範囲に変換します。
scale_linear
(
val
,
domain_min
,
domain_max
,
range_min
,
range_max
)
| val | 入力範囲内の値 |
| 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のフォントサイズにスケールする)
プロセシングアルゴリズムの入力パラメータの値を返します。
parameter
(
name
)
| name | 対応する入力パラメータの名前 |
parameter('BUFFER_SIZE')
→
5.6
$mask_geometryの関数のヘルプはありません。
in_maskの関数のヘルプはありません。
このグループには、ラスタの統計量を計算する関数があります。
ラスタレイヤの統計値を返します。
raster_statistic
(
layer
,
band
,
property
)
| layer | ラスタレイヤ名またはレイヤIDを表す文字列 |
| band | (1から始まる)バンド番号を表す整数 |
| property |
統計値のオプションは次のとおりです。
|
raster_statistic('lc',1,'avg')
→
lcレイヤのバンド1の平均値
raster_statistic('ac2010',3,'min')
→
ac2010レイヤのバンド3の最小値
指定された点のラスタ値を返します。
raster_value
(
layer
,
band
,
point
)
| layer | ラスタレイヤの名前またはid |
| band | バンド番号 |
| point | 点のジオメトリ(マルチパートの場合は対応していません) |
raster_value('dem', 1, make_point(1,1))
→
25
このグループには、レコード(テーブル上の各地物)を特定するような関数があります。
現在の地物を返します。'attribute'関数で使用すると、現在の地物の属性値を取得できます。
$currentfeature
attribute( $currentfeature, 'name' )
→
現在の地物の'name'属性に格納されている値
地物の属性を返します。2バージョンあります。
attribute
(
attribute_name
)
| attribute_name | 返される属性名 |
attribute( 'name' )
→
現在の地物の'name'属性に格納されている値
attribute
(
feature
,
attribute_name
)
| feature | 地物 |
| attribute_name | 返される属性名 |
attribute( @atlas_feature, 'name' )
→
地図帳の地物の'name'属性に格納されている値
地物のすべての属性をマップ型オブジェクトとして返します。属性名がキーになった辞書型オブジェクトです。
attributes
()
attributes()['name']
→
現在の地物の'name'属性に格納されている値
attributes
(
feature
)
| feature | 地物 |
attributes( @atlas_feature )['name']
→
地図帳の地物の'name'属性に格納されている値
Returns the display expression for a given feature in a layer. If called with no parameters, it evaluates the current feature. The expression is evaluated by default.
display_expression
([
feature=current feature
][,
layer=current layer
][,
evaluate=true
])
| feature | The feature which should be evaluated. |
| layer | The layer (or its id or name). |
| evaluate | If the expression must be evaluated. If false, the expression will be returned as a string literal only (which could potentially be later evaluated using the 'eval' function). |
display_expression()
→
The display expression of the current feature.
display_expression(get_feature_by_id('streets', 1), 'streets')
→
The display expression of the feature with the ID 1 on the layer 'streets'.
display_expression('a_layer_id', $currentfeature, 'False')
→
The display expression of the given feature not evaluated.
属性値にマッチする最初の地物を返します。
get_feature
(
layer
,
attribute
,
value
)
| layer | レイヤ名またはID |
| attribute | 属性名 |
| value | マッチさせる属性値 |
get_feature('streets','name','main st')
→
"streets"レイヤの"name"フィールドの値が"main st"の最初の地物
IDで指定した地物を返します。
get_feature_by_id
(
layer
,
feature_id
)
| layer | レイヤ名またはレイヤID |
| feature_id | 地物のID |
get_feature('streets', 1)
→
streetsレイヤのIDが1の地物
Returns True if a feature is selected. Can be used with zero, one or two arguments, see below for details.
is_selected
()
is_selected()
→
True if the current feature in the current layer is selected.
is_selected
(
feature
)
| feature | 対象地物 |
is_selected(@atlas_feature)
→
True if the current atlas feature is selected.
is_selected
(
layer
,
feature
)
| layer | The layer (or its ID or name) on which the selection will be checked. |
| feature | 対象地物 |
is_selected( 'streets', get_feature('streets', 'name', "street_name"))
→
True if the current building's street is selected (assuming the building layer has a field named 'street_name' and the 'streets' layer has a field called 'name').
Returns the maptip for a given feature in a layer. If called with no parameters, it evaluates the current feature. The maptip is evaluated by default.
maptip
([
feature=current feature
][,
layer=current layer
][,
evaluate=true
])
| feature | The feature which should be evaluated. |
| layer | The layer (or its id or name). |
| evaluate | If the expression must be evaluated. If false, the expression will be returned as a string literal only (which could potentially be later evaluated using the 'eval_template' function). |
maptip()
→
The maptip of the current feature.
maptip(get_feature('streets', 1), 'streets')
→
The maptip of the feature with the ID 1 on the layer 'streets'.
maptip('a_layer_id', $currentfeature, 'False')
→
The maptip of the given feature not evaluated.
選択された地物の数を返します。デフォルトでは、式が評価されるレイヤ上で動作します。
num_selected
([
layer=current layer
])
| layer | 対象レイヤ(IDまたは名前) |
num_selected()
→
現在のレイヤで選択されている地物の数。
num_selected('streets')
→
streetsレイヤ上の選択された地物の数
フォーマット処理された属性値を返します。結果はウィジェットのタイプによって異なります。多くの場合、ウィジェットの作成に使われます。
represent_value
(
value
,
fieldName
)
| value | フォーマット処理する値。通常はフィールド名。 |
| fieldName | ウィジェットの設定があるフィールド名(オプション) |
represent_value("field_with_value_map")
→
通常、値の表示でしょう
represent_value('static value', 'field_name')
→
通常、static valueに関する表示でしょう
sqliteデータベースの自動インクリメントを管理します。
sqliteのデフォルト値は挿入(INSERT)時にしか適用されません。
このため、AUTO_INCREMENTでインクリメントされた値をデータベースに行を作る前に取得することは不可能です。(注)Postgresでは デフォルト値を評価 するオプションがあります。
親子関係のある地物を追加する際、親要素が挿入(コミット)される前に子要素を追加できれば大変便利です。
この関数は、この制約を回避するため、gpkgのようなsqliteベースのテーブルのインクリメントテーブルを管理します。
インクリメントテーブルは、連続ID (filter_attributeとfilter_value)と現在のid_field値によって選択され、1だけインクリメントし、その値を返します。
もし、別のカラム用に別の値を指定する必要がある場合、default_valueマップを使用できます。
注
この関数は、sqliteのテーブルを更新します。これは各属性のデフォルト設定を使用することが想定されているためです。
データベースのパラメータがレイヤで、レイヤがトランザクションモードの場合、値はトランザクション中に一度だけ取り出され、キャシュされます。このため、複数のプロセスで並行して同じデータベースを操作することは安全ではありません。
sqlite_fetch_and_increment
(
database
,
table
,
id_field
,
filter_attribute
,
filter_value
[,
default_values
])
| database | SQliteファイルまたはgeopackageレイヤのパス |
| table | テーブルの名前 |
| id_field | フィールド名 |
| filter_attribute | ID値を格納するフィールドの名前(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
Qtの QUuid::createUuid メソッドを使って唯一識別子(UUID)を生成します。UUIDの長さは38文字です。
uuid
()
uuid()
→
'{0bd2f60f-f157-4a6d-96af-d4ba4cb366a1}'
このグループには、文字列を扱う関数があります。置き換えや文字列の大文字化です。
Returns the unicode code associated with the first character of a string.
ascii
(
string
)
| string | the string to convert to unicode code |
ascii('Q')
→
81
複数の文字列を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'
指定された引数を用いて文字列をフォーマットします。
format
(
string
,
arg1
,
arg2
…)
| string | 引数のプレースホルダを含む文字列。プレースホルダには%1や%2などを使います。プレースホルダは繰り返し使用できます。 |
| arg | 任意の型。任意の数の引数 |
format('This %1 a %2','is', 'test')
→
'This is a test''
日付型または文字列をカスタム形式でフォーマットします。詳しくは QDateTime::toString を参照してください。
format_date
(
datetime
,
format
[,
language
])
| datetime | 日付、時刻または日時の値 | ||||||||||||||||||||||||||||||||||||||||||||||||
| format |
文字列の書式設定に使用される文字列テンプレート(以下は英語からの直訳です。日本語設定の場合、デフォルトでは、例えば「Jun」はエラーになり、半角数字の「6月」は正しく解釈されます)
以下の書式文字列は、時間部分に使用できます。
|
||||||||||||||||||||||||||||||||||||||||||||||||
| language | dateをカスタム文字列に変換するフォーマットの言語(小文字、ISO 639) |
format_date('2012-05-15','dd.MM.yyyy')
→
'15.05.2012'
format_date('2012-05-15','d MMMM yyyy','fr')
→
'15 juin 2012'
Returns a number formatted with the locale separator for thousands. Also truncates the decimal places to the number of supplied places.
format_number
(
number
,
places
[,
language
])
| number | フォーマットする数値 |
| places | 小数点以下の桁数を表す整数 |
| language | language (lowercase, two- or three-letter, ISO 639 language code) used to format the number into a string |
format_number(10000000.332,2)
→
'10,000,000.33'
文字列の左端の n 文字分を返します。
left
(
string
,
length
)
| string | 文字列 |
| length | 取得する文字数 |
left('Hello World',5)
→
'Hello'
文字列の文字数、または線の長さを返します。
length
(
string
)
| string | 文字数を数える文字列 |
length('hello')
→
5
length
(
geometry
)
| geometry | 線のジオメトリ |
length(geom_from_wkt('LINESTRING(0 0, 4 0)'))
→
4.0
小文字に変換します。
lower
(
string
)
| string | 小文字に変換する文字列 |
lower('HELLO World')
→
'hello world'
左側を指定文字で詰め、指定した幅にした文字列を返します。指定した幅が文字列の長さよりも小さい場合、文字列は切り詰められます。
lpad
(
string
,
width
,
fill
)
| string | 幅を揃える文字列 |
| width | 文字列の長さ |
| fill | 余白を埋める文字 |
lpad('Hello', 10, 'x')
→
'xxxxxHello'
lpad('Hello', 3, 'x')
→
'Hel'
正規表現に一致する最初の位置を返します。部分文字列が見つからない場合、0を返します。
regexp_match
(
input_string
,
regex
)
| input_string | 正規表現に対してテストする文字列 |
| regex | テストする正規表現。バックスラッシュは二重にエスケープする必要があります(空白文字に一致させるには\\sなど)。 |
regexp_match('QGIS ROCKS','\\sROCKS')
→
4
正規表現を用いて置き換えられた文字列を返します。
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_substr
(
input_string
,
regex
)
| input_string | 検索対象文字列 |
| regex | 一致させる正規表現。バックスラッシュは二重にエスケープする必要があります(空白文字に一致させるには\\sなど)。 |
regexp_substr('abc123','(\\d+)')
→
'123'
文字列を別の文字列で置換した文字列を返します。
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'
文字列の右端の n 文字分を返します。
right
(
string
,
length
)
| string | 文字列 |
| length | 切り取る文字数 |
right('Hello World',5)
→
'World'
右側を指定文字で詰め、指定した幅にした文字列を返します。指定した幅が文字列の長さよりも小さい場合、文字列は切り詰められます。
rpad
(
string
,
width
,
fill
)
| string | 幅を揃える文字列 |
| width | 文字列の長さ |
| fill | 余白を埋める文字 |
rpad('Hello', 10, 'x')
→
'Helloxxxxx'
rpad('Hello', 3, 'x')
→
'Hel'
文字列中で最初にマッチする部分の位置を返します。部分文字列が見つからなければ、0を返します。
strpos
(
haystack
,
needle
)
| haystack | 対象文字列 |
| needle | 検索する文字列 |
strpos('HELLO WORLD','WORLD')
→
7
strpos('HELLO WORLD','GOODBYE')
→
0
文字列の一部分を返します。
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'
文字列の単語を、タイトルケース(先頭が大文字で後に小文字が続く)に変換します。
title
(
string
)
| string | 変換する文字列 |
title('hello WOrld')
→
'Hello World'
文字列の先頭と末尾からすべてのホワイトスペース(空白、タブなど)を削除します。
trim
(
string
)
| string | 対象文字列 |
trim(' hello world ')
→
'hello world'
大文字に変換します。
upper
(
string
)
| string | 大文字に変換する文字列 |
upper('hello WOrld')
→
'HELLO WORLD'
指定した最大・最小文字数に合わせてワードラップ(改行)した文字列を返します。
wordwrap
(
string
,
wrap_length
[,
delimiter_string
])
| string | ワードラップする文字列 |
| wrap_length | wrap_lengthが正の場合は、理想的な一行あたりの最大文字数を意味します。負の場合は最小文字数を意味します。 |
| delimiter_string | (オプション)新しい行に折り返す区切り文字 |
wordwrap('UNIVERSITY OF QGIS',13)
→
'UNIVERSITY OF
QGIS'
wordwrap('UNIVERSITY OF QGIS',-3)
→
'UNIVERSITY
OF QGIS'