13.2. 功能列表

下面列出了QGIS中可用的函数、运算符和变量,并按类别分组。

13.2.1. 聚合函数

此组包含聚合层和字段上的值的函数。

13.2.1.1. 集料

返回使用另一图层中的要素计算的聚合值。

语法

Aggregate(层、Aggregate、Expression [filter] , [concatenator=''] , [order_by] )

[]标记可选参数

立论

  • layer -表示层名称或层ID的字符串

  • aggregate -要计算的聚合对应的字符串。有效选项包括:

    • 计数

    • count_distinct

    • count_missing

    • 最小

    • 最大值

    • 求和

    • 小气

    • 中位数

    • 标准开发

    • StDevSample

    • 量程

    • 少数族裔

    • 多数

    • 问题1:第一个四分位数

    • 问题3:第三个四分位数

    • IQR:四分位数范围

    • MIN_LENGTH:最小字符串长度

    • MAX_LENGTH:最大字符串长度

    • 连接:使用连接符连接字符串

    • CONCATENATE_UNIQUE:使用链接符连接唯一字符串

    • 收集:创建聚合的多部分几何图形

    • ARRAY_AGG:创建聚合值的数组

  • expression -要聚合的子表达式或字段名

  • filter -可选的过滤表达式,用于限制用于计算聚合的功能。字段和几何图形来自关联图层上的要素。可以使用变量@Parent访问源要素。

  • concatenator -用于联接‘CONCATENATE’和‘CONCATENATE_UNIQUE’聚合值的可选字符串

  • order_by -可选的过滤器表达式,用于对用于计算聚合的功能进行排序。字段和几何图形来自关联图层上的要素。默认情况下,功能将以未指定的顺序返回。

实例

  • aggregate(layer:='rail_stations',aggregate:='sum',expression:="passengers") RAIL_STATIONS图层中Passenger字段中所有值的→总和

  • aggregate('rail_stations','sum', "passengers"/7) →通过将“Passenger”字段除以7,然后对这些值求和来计算“Passenger”的日平均值

  • aggregate(layer:='rail_stations',aggregate:='sum',expression:="passengers",filter:="class">3) →仅对“CLASS”属性大于3的要素的“Passenger”字段中的所有值进行汇总

  • aggregate(layer:='rail_stations',aggregate:='concatenate', expression:="name", concatenator:=',') →_Stations图层中所有要素的名称字段的以逗号分隔的列表

  • aggregate(layer:='countries', aggregate:='max', expression:="code", filter:=intersects( @geometry, geometry(@parent) ) ) →层上相交国家/地区的国家代码

  • aggregate(layer:='rail_stations',aggregate:='sum',expression:="passengers",filter:=contains( @atlas_geometry, @geometry ) ) 当前地图集要素中RAIL_STATIONS中乘客字段中的所有值的→总和

  • aggregate(layer:='rail_stations', aggregate:='collect', expression:=centroid(@geometry), filter:="region_name" = attribute(@parent,'name') ) →聚合与当前要素位于同一区域的铁路车站的质心几何

13.2.1.2. array_agg

从字段或表达式返回聚合值的数组。

语法

ARRAY_AGG(表达式, [group_by] , [filter] , [order_by] )

[]标记可选参数

立论

  • expression -要聚合的字段的子表达式

  • group_by -用于分组聚合计算的可选表达式

  • filter -用于过滤用于计算聚合的要素的可选表达式

  • order_by -用于对用于计算聚合的要素进行排序的可选表达式。默认情况下,功能将以未指定的顺序返回。

实例

  • array_agg("name",group_by:="state") 名称值的→列表,按州字段分组

13.2.1.3. 收集

从表达式返回聚合几何的多部分几何

语法

收集(Expression, [group_by] , [filter] )

[]标记可选参数

立论

  • expression -要聚合的几何表达式

  • group_by -用于分组聚合计算的可选表达式

  • filter -用于过滤用于计算聚合的要素的可选表达式

实例

  • collect( @geometry ) 聚集几何的→分块几何

  • collect( centroid(@geometry), group_by:="region", filter:= "use" = 'civilian' ) →基于区域值聚合民用要素的质心

13.2.1.4. 串接

返回由分隔符联接的字段或表达式中的所有聚合字符串。

语法

连接(表达式、 [group_by] , [filter] , [concatenator] , [order_by] )

[]标记可选参数

立论

  • expression -要聚合的字段的子表达式

  • group_by -用于分组聚合计算的可选表达式

  • filter -用于过滤用于计算聚合的要素的可选表达式

  • concatenator -用于联接值的可选字符串。默认情况下为空。

  • order_by -用于对用于计算聚合的要素进行排序的可选表达式。默认情况下,功能将以未指定的顺序返回。

实例

  • concatenate("town_name",group_by:="state",concatenator:=',') 以逗号分隔的→_NAMES列表,按州字段分组

13.2.1.5. concatenate_unique

返回由分隔符连接的字段或表达式中的所有唯一字符串。

语法

CONCATENATE_UNIQUE(表达式, [group_by] , [filter] , [concatenator] , [order_by] )

[]标记可选参数

立论

  • expression -要聚合的字段的子表达式

  • group_by -用于分组聚合计算的可选表达式

  • filter -用于过滤用于计算聚合的要素的可选表达式

  • concatenator -用于联接值的可选字符串。默认情况下为空。

  • order_by -用于对用于计算聚合的要素进行排序的可选表达式。默认情况下,功能将以未指定的顺序返回。

实例

  • concatenate_unique("town_name",group_by:="state",concatenator:=',') 以逗号分隔的唯一→_NAMES列表,按州字段分组

13.2.1.6. 计数

返回匹配要素的计数。

语法

Count(表达式、 [group_by] , [filter] )

[]标记可选参数

立论

  • expression -要聚合的字段的子表达式

  • group_by -用于分组聚合计算的可选表达式

  • filter -用于过滤用于计算聚合的要素的可选表达式

实例

  • count("stations",group_by:="state") 站点的→计数,按州字段分组

13.2.1.7. count_distinct

返回非重复值的计数。

语法

COUNT_DISTINCT(表达式, [group_by] , [filter] )

[]标记可选参数

立论

  • expression -要聚合的字段的子表达式

  • group_by -用于分组聚合计算的可选表达式

  • filter -用于过滤用于计算聚合的要素的可选表达式

实例

  • count_distinct("stations",group_by:="state") 不同桩号值的→计数,按州字段分组

13.2.1.8. count_missing

返回缺少(空)值的计数。

语法

Count_Missing(表达式, [group_by] , [filter] )

[]标记可选参数

立论

  • expression -要聚合的字段的子表达式

  • group_by -用于分组聚合计算的可选表达式

  • filter -用于过滤用于计算聚合的要素的可选表达式

实例

  • count_missing("stations",group_by:="state") 缺失(空)桩号值的→计数,按州字段分组

13.2.1.9. IQR

返回从字段或表达式计算的四分位数范围。

语法

IQR(表达式、 [group_by] , [filter] )

[]标记可选参数

立论

  • expression -要聚合的字段的子表达式

  • group_by -用于分组聚合计算的可选表达式

  • filter -用于过滤用于计算聚合的要素的可选表达式

实例

  • iqr("population",group_by:="state") 人口值的→四分位数间范围,按州字段分组

13.2.1.10. 多数

返回字段或表达式中的值(最常出现的值)的合计多数。

语法

多数(表达式、 [group_by] , [filter] )

[]标记可选参数

立论

  • expression -要聚合的字段的子表达式

  • group_by -用于分组聚合计算的可选表达式

  • filter -用于过滤用于计算聚合的要素的可选表达式

实例

  • majority("class",group_by:="state") →最常出现的类值,按州字段分组

13.2.1.11. max_length

返回字段或表达式中字符串的最大长度。

语法

最大长度(表达式, [group_by] , [filter] )

[]标记可选参数

立论

  • expression -要聚合的字段的子表达式

  • group_by -用于分组聚合计算的可选表达式

  • filter -用于过滤用于计算聚合的要素的可选表达式

实例

  • max_length("town_name",group_by:="state") →TOWN_NAME的最大长度,按州字段分组

13.2.1.12. 最大值

返回字段或表达式的聚合最大值。

语法

最大(表达式、 [group_by] , [filter] )

[]标记可选参数

立论

  • expression -要聚合的字段的子表达式

  • group_by -用于分组聚合计算的可选表达式

  • filter -用于过滤用于计算聚合的要素的可选表达式

实例

  • maximum("population",group_by:="state") →最大人口值,按州字段分组

13.2.1.13. 小气

返回字段或表达式的合计平均值。

语法

Mean(表达式, [group_by] , [filter] )

[]标记可选参数

立论

  • expression -要聚合的字段的子表达式

  • group_by -用于分组聚合计算的可选表达式

  • filter -用于过滤用于计算聚合的要素的可选表达式

实例

  • mean("population",group_by:="state") →平均人口值,按州字段分组

13.2.1.14. 中位数

返回字段或表达式的合计中值。

语法

中位数(表达式、 [group_by] , [filter] )

[]标记可选参数

立论

  • expression -要聚合的字段的子表达式

  • group_by -用于分组聚合计算的可选表达式

  • filter -用于过滤用于计算聚合的要素的可选表达式

实例

  • median("population",group_by:="state") →人口中值,按州字段分组

13.2.1.15. min_length

返回字段或表达式中的最小字符串长度。

语法

最小长度(表达式, [group_by] , [filter] )

[]标记可选参数

立论

  • expression -要聚合的字段的子表达式

  • group_by -用于分组聚合计算的可选表达式

  • filter -用于过滤用于计算聚合的要素的可选表达式

实例

  • min_length("town_name",group_by:="state") →城镇名称的最小长度,按州字段分组

13.2.1.16. 最小值

返回字段或表达式中的聚合最小值。

语法

最小值(表达式、 [group_by] , [filter] )

[]标记可选参数

立论

  • expression -要聚合的字段的子表达式

  • group_by -用于分组聚合计算的可选表达式

  • filter -用于过滤用于计算聚合的要素的可选表达式

实例

  • minimum("population",group_by:="state") →最小人口值,按州字段分组

13.2.1.17. 少数族裔

返回字段或表达式中的值(出现次数最少的值)的总和。

语法

少数人(表情, [group_by] , [filter] )

[]标记可选参数

立论

  • expression -要聚合的字段的子表达式

  • group_by -用于分组聚合计算的可选表达式

  • filter -用于过滤用于计算聚合的要素的可选表达式

实例

  • minority("class",group_by:="state") →最小出现类值,按州字段分组

13.2.1.18. 第一季度

返回从字段或表达式计算出的第一个四分位数。

语法

Q1(表达式、 [group_by] , [filter] )

[]标记可选参数

立论

  • expression -要聚合的字段的子表达式

  • group_by -用于分组聚合计算的可选表达式

  • filter -用于过滤用于计算聚合的要素的可选表达式

实例

  • q1("population",group_by:="state") →人口值的第一个四分位数,按州字段分组

13.2.1.19. 第三季度

返回计算出的字段或表达式的第三个四分位数。

语法

Q3(表达式、 [group_by] , [filter] )

[]标记可选参数

立论

  • expression -要聚合的字段的子表达式

  • group_by -用于分组聚合计算的可选表达式

  • filter -用于过滤用于计算聚合的要素的可选表达式

实例

  • q3("population",group_by:="state") →人口值的第三个四分位数,按州字段分组

13.2.1.20. 量程

返回字段或表达式的值的聚合范围(最大值-最小值)。

语法

范围(表达式、 [group_by] , [filter] )

[]标记可选参数

立论

  • expression -要聚合的字段的子表达式

  • group_by -用于分组聚合计算的可选表达式

  • filter -用于过滤用于计算聚合的要素的可选表达式

实例

  • range("population",group_by:="state") 按州字段分组的人口值的→范围

13.2.1.21. relation_aggregate

返回使用来自层关系的所有匹配子要素计算的聚合值。

语法

Relation_Aggregate(Relationship,Aggregate,Expression, [concatenator=''] , [order_by] )

[]标记可选参数

立论

  • relation -代表关系ID的字符串

  • aggregate -要计算的聚合对应的字符串。有效选项包括:

    • 计数

    • count_distinct

    • count_missing

    • 最小

    • 最大值

    • 求和

    • 小气

    • 中位数

    • 标准开发

    • StDevSample

    • 量程

    • 少数族裔

    • 多数

    • 问题1:第一个四分位数

    • 问题3:第三个四分位数

    • IQR:四分位数范围

    • MIN_LENGTH:最小字符串长度

    • MAX_LENGTH:最大字符串长度

    • 连接:使用连接符连接字符串

    • CONCATENATE_UNIQUE:使用链接符连接唯一字符串

    • 收集:创建聚合的多部分几何图形

    • ARRAY_AGG:创建聚合值的数组

  • expression -要聚合的子表达式或字段名

  • concatenator -可选字符串,用于联接‘Conatenate’聚合值

  • order_by -可选表达式,用于对用于计算聚合的要素进行排序。字段和几何图形来自关联图层上的要素。默认情况下,功能将以未指定的顺序返回。

实例

  • relation_aggregate(relation:='my_relation',aggregate:='mean',expression:="passengers") 使用‘My_→’关系的所有匹配子要素的关系平均值

  • relation_aggregate('my_relation','sum', "passengers"/7) 使用‘my_→’关系的所有匹配子要素的Passenger字段的关系总和除以7

  • relation_aggregate('my_relation','concatenate', "towns", concatenator:=',') 使用‘→_Relationship’关系的所有匹配子要素的城镇字段的逗号分隔列表

  • relation_aggregate('my_relation','array_agg', "id") 使用‘my_→’关系的所有匹配子要素的id字段的关系数组

进一步阅读: 创建一种或多对多关系

13.2.1.22. 标准开发

返回字段或表达式的聚合标准差值。

语法

Stdev(表达式、 [group_by] , [filter] )

[]标记可选参数

立论

  • expression -要聚合的字段的子表达式

  • group_by -用于分组聚合计算的可选表达式

  • filter -用于过滤用于计算聚合的要素的可选表达式

实例

  • stdev("population",group_by:="state") 人口值的→标准差,按州字段分组

13.2.1.23. 求和

返回字段或表达式的合计总和值。

语法

SUM(表达式、 [group_by] , [filter] )

[]标记可选参数

立论

  • expression -要聚合的字段的子表达式

  • group_by -用于分组聚合计算的可选表达式

  • filter -用于过滤用于计算聚合的要素的可选表达式

实例

  • sum("population",group_by:="state") →合计人口值,按州字段分组

13.2.2. 数组函数

此组包含创建和操作数组(也称为列表数据结构)的函数。数组中值的顺序很重要,这与 'map' data structure ,其中键-值对的顺序是无关的,值由它们的键来标识。

13.2.2.1. 数组

返回一个数组,其中包含作为参数传递的所有值。

语法

数组(value1,value2,...)

立论

  • value -A值

实例

  • 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)) →为真

  • array_all(array(1,2,3),array(1,2,4)) →为假

13.2.2.3. array_append

返回在末尾添加了给定值的数组。

语法

ARRAY_APPEND(数组,值)

立论

  • 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_contains(array(1,2,3),2) →为真

13.2.2.6. array_count

统计数组中给定值的出现次数。

语法

ARRAY_COUNT(数组,值)

立论

  • array -数组

  • value -要计算的值

实例

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

13.2.2.7. array_distinct

返回包含给定数组的不同值的数组。

语法

ARRAY_DISTINCT(数组)

立论

  • array -数组

实例

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

13.2.2.8. array_filter

返回一个数组,其中只包含表达式计算为True的项。

语法

ARRAY_FILTER(数组,表达式, [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_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_first(array('a','b','c')) →‘a’

13.2.2.11. array_foreach

返回一个数组,该数组包含对每一项计算的给定表达式。

语法

ARRAY_FOREACH(数组,表达式)

立论

  • 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’

提示

您也可以使用 index operator ([]) 若要从数组获取值,请执行以下操作。

13.2.2.13. array_insert

返回在给定位置相加了给定值的数组。

语法

ARRAY_INSERT(数组,位置,值)

立论

  • array -数组

  • pos -要添加的位置(从0开始)

  • value -要增加的价值

实例

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

13.2.2.14. array_intersect

如果array2中至少存在array1的一个元素,则返回True。

语法

ARRAY_INTERSECT(array1,array2)

立论

  • array1 -数组

  • array2 -另一个阵列

实例

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

13.2.2.15. array_last

返回数组的最后一个值。

语法

ARRAY_LAST(数组)

立论

  • array -数组

实例

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

13.2.2.16. array_length

返回数组的元素数。

语法

ARRAY_LENGTH(数组)

立论

  • array -数组

实例

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

13.2.2.17. array_majority

返回数组中最常见的值。

语法

ARRAY_MODITY(数组, [option='all'] )

[]标记可选参数

立论

  • array -数组

  • option='all' -指定返回值处理的字符串。有效选项包括:

    • All:默认情况下,所有最常用的值都以数组形式返回。

    • Any:返回最常见的值之一。

    • 中位数:返回最常见值的中位数。忽略非算术值。

    • REAL_MULTIAL:返回出现在数组大小一半以上的值。

实例

  • 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') →为空

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

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

13.2.2.18. array_max

返回数组的最大值。

语法

ARRAY_max(数组)

立论

  • array -数组

实例

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

13.2.2.19. array_mean

返回数组中算术值的平均值。数组中的非数值将被忽略。

语法

ARRAY_Mean(数组)

立论

  • 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_Medium(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_min(array(43,42,54)) →42

13.2.2.22. array_minority

返回数组中不常用的值。

语法

ARRAY_NORMAL(ARRAY, [option='all'] )

[]标记可选参数

立论

  • array -数组

  • option='all' -指定返回值处理的字符串。有效选项包括:

    • All:默认情况下,所有不常用的值都以数组形式返回。

    • Any:返回较不常见的值之一。

    • 中位数:返回不常用的值的中位数。忽略非算术值。

    • REAL_MARIAL:返回出现的值小于数组大小的一半。

实例

  • 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_PAREND(数组,值)

立论

  • array -数组

  • value -要增加的价值

实例

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

13.2.2.24. array_prioritize

返回按另一个数组中指定的顺序排序的数组。在第一个数组中存在但在第二个数组中缺失的值将添加到结果的末尾。

语法

ARRAY_PRIORITIZATE(ARRAY,ARRAY_PRIORITIZATE)

立论

  • 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_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

返回替换了提供的值、数组或值映射的数组。

Value & array variant

返回一个数组,该数组包含提供的值或由另一个值或值数组替换的值数组。

语法

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', '-' ]

Map variant

返回一个数组,其中提供的映射键被它们的配对值替换。

语法

ARRAY_REPLACE(数组,映射)

立论

  • 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_reverse(array(2,4,0,10)) → [ 10, 0, 4, 2 ]

13.2.2.29. array_slice

返回数组的一部分。切片由startpos和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(数组, [ascending=true] )

[]标记可选参数

立论

  • array -数组

  • ascending -将此参数设置为FALSE可按降序对数组进行排序

实例

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

13.2.2.31. array_sum

返回数组中算术值的总和。数组中的非数值将被忽略。

语法

ARRAY_SUM(数组)

立论

  • array -数组

实例

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

13.2.2.32. array_to_string

将数组元素连接成由分隔符分隔的字符串,并对空值使用可选字符串。

语法

ARRAY_TO_STRING(数组, [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

创建包含数字序列的数组。

语法

生成序列(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 -输入几何图形

实例

  • 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]) →‘多边形((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(字符串,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

使用提供的分隔符和空值的可选字符串将字符串拆分到数组中。

语法

字符串到数组(字符串, [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 -颜色的青色分量,为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

根据颜色的青色、洋红色、黄色、黑色和Alpha(透明)分量返回颜色的字符串表示形式

语法

COLOR_cmyka(青色、洋红色、黄色、黑色、阿尔法)

立论

  • cyan -颜色的青色分量,为0到100之间的百分比整数值

  • magenta -颜色的洋红色分量,为0到100之间的百分比整数值

  • yellow -颜色的黄色分量,为0到100之间的百分比整数值

  • black -颜色的黑色分量,为0到100之间的百分比整数值

  • alpha -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_grayscale_average('255,100,50') →‘135,135,135,255’

13.2.3.4. color_hsl

根据颜色的色调、饱和度和亮度属性返回颜色的字符串表示形式。

语法

COLOR_HSL(色调、饱和度、亮度)

立论

  • hue -颜色的色调,为0到360之间的整数值

  • saturation -颜色的饱和度百分比,为0到100之间的整数值

  • lightness -颜色的亮度百分比,为0到100之间的整数值

实例

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

13.2.3.5. color_hsla

根据颜色的色调、饱和度、亮度和Alpha(透明度)属性返回颜色的字符串表示形式

语法

COLOR_HSLA(色调、饱和度、亮度、Alpha)

立论

  • hue -颜色的色调,为0到360之间的整数值

  • saturation -颜色的饱和度百分比,为0到100之间的整数值

  • lightness -颜色的亮度百分比,为0到100之间的整数值

  • alpha -Alpha分量为介于0(完全透明)到255(不透明)之间的整数值。

实例

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

13.2.3.6. color_hsv

根据颜色的色调、饱和度和值属性返回颜色的字符串表示形式。

语法

COLOR_HSV(色调、饱和度、值)

立论

  • hue -颜色的色调,为0到360之间的整数值

  • saturation -颜色的饱和度百分比,为0到100之间的整数值

  • value -颜色的值百分比,为0到100之间的整数

实例

  • color_hsv(40,100,100) →‘255,170,0’

13.2.3.7. color_hsva

根据颜色的色调、饱和度、值和Alpha(透明度)属性返回颜色的字符串表示形式。

语法

COLOR_HSVA(色调、饱和度、值、Alpha)

立论

  • hue -颜色的色调,为0到360之间的整数值

  • saturation -颜色的饱和度百分比,为0到100之间的整数值

  • value -颜色的值百分比,为0到100之间的整数

  • alpha -Alpha分量为0(完全透明)到255(不透明)之间的整数值

实例

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

13.2.3.8. color_mix_rgb

返回一个字符串,该字符串表示基于给定比率混合两种所提供颜色的红色、绿色、蓝色和Alpha值的颜色。

语法

COLOR_MIX_RGB(Color1,Color2,RGB)

立论

  • color1 -颜色字符串

  • color2 -颜色字符串

  • ratio -A比率

实例

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

13.2.3.9. color_part

返回颜色字符串中的特定分量,例如红色分量或Alpha分量。

语法

COLOR_PART(颜色、组件)

立论

  • color -颜色字符串

  • component -与要返回的颜色分量对应的字符串。有效选项包括:

    • 红色:RGB红色分量(0-255)

    • 绿色:RGB绿色分量(0-255)

    • 蓝色:RGB蓝色分量(0-255)

    • Alpha:Alpha(透明度)值(0-255)

    • 色调:HSV色调(0-360)

    • 饱和度:HSV饱和度(0-100)

    • 值:HSV值(0-100)

    • HSL_HUE:HSL色调(0-360)

    • HSL_饱和度:HSL饱和度(0-100)

    • 亮度:HSL亮度(0-100)

    • 青色:CMYK青色成分(0-100)

    • 洋红色:CMYK洋红色组件(0-100)

    • 黄色:CMYK黄色分量(0-100)

    • 黑色:CMYK黑色分量(0-100)

实例

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

13.2.3.10. color_rgb

根据颜色的红色、绿色和蓝色分量返回颜色的字符串表示形式。

语法

COLOR_RGB(红、绿、蓝)

立论

  • red -红色分量,为0到255之间的整数值

  • green -绿色分量,为0到255之间的整数值

  • blue -蓝色分量,为0到255之间的整数值

实例

  • color_rgb(255,127,0) →‘255,127,0’

13.2.3.11. color_rgba

根据颜色的红、绿、蓝和Alpha(透明)分量返回颜色的字符串表示形式。

语法

COLOR_RGBA(红、绿、蓝、阿尔法)

立论

  • red -红色分量,为0到255之间的整数值

  • green -绿色分量,为0到255之间的整数值

  • blue -蓝色分量,为0到255之间的整数值

  • alpha -Alpha分量为介于0(完全透明)到255(不透明)之间的整数值。

实例

  • color_rgba(255,127,0,200) →‘255,127,0,200’

13.2.3.12. create_ramp

从颜色串和步骤的映射中返回渐变渐变。

语法

创建渐变(贴图、 [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. 更暗一些

返回较暗(或较浅)的颜色字符串

语法

较暗(颜色、因子)

立论

  • color -颜色字符串

  • factor -与变暗系数对应的整数:

    • 如果因子大于100,则此函数返回较暗的颜色(例如,将因子设置为200将返回亮度的一半);

    • 如果因子小于100,则返回的颜色较浅,但建议使用lightter()函数实现此目的;

    • 如果因子为0或负,则未指定返回值。

实例

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

进一步阅读: 打火机

13.2.3.14. 打火机

返回较浅(或较暗)的颜色字符串

语法

较浅(颜色、系数)

立论

  • color -颜色字符串

  • factor -与闪光系数对应的整数:

    • 如果因子大于100,则此函数返回较浅的颜色(例如,将因子设置为150将返回比50%亮的颜色);

    • 如果因子小于100,则返回的颜色较暗,但建议使用Darker()函数实现此目的;

    • 如果因子为0或负,则未指定返回值。

实例

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

进一步阅读: 更暗一些

13.2.3.15. project_color

返回项目配色方案中的颜色。

语法

PROJECT_COLOR(名称)

立论

  • name -颜色名称

实例

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

进一步阅读: setting project colors

13.2.3.16. ramp_color

返回表示色带中的颜色的字符串。

Saved ramp variant

返回表示保存的渐变中的颜色的字符串

语法

RAMP_COLOR(RAMP_NAME,值)

立论

  • ramp_name -字符串形式的色带名称,例如‘Spectral’

  • value -渐变上的位置,以0到1之间的实数形式选择颜色

实例

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

备注

可用色带因QGIS安装而异。如果您在安装之间移动QGIS项目,此函数可能不会提供预期的结果。

Expression-created ramp variant

返回表示表达式创建的渐变中的颜色的字符串

语法

渐变_颜色(渐变、值)

立论

  • 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

设置颜色串的特定颜色分量,例如红色分量或Alpha分量。

语法

SET_COLOR_PART(颜色、组件、值)

立论

  • color -颜色字符串

  • component -与要设置的颜色分量对应的字符串。有效选项包括:

    • 红色:RGB红色分量(0-255)

    • 绿色:RGB绿色分量(0-255)

    • 蓝色:RGB蓝色分量(0-255)

    • Alpha:Alpha(透明度)值(0-255)

    • 色调:HSV色调(0-360)

    • 饱和度:HSV饱和度(0-100)

    • 值:HSV值(0-100)

    • HSL_HUE:HSL色调(0-360)

    • HSL_饱和度:HSL饱和度(0-100)

    • 亮度:HSL亮度(0-100)

    • 青色:CMYK青色成分(0-100)

    • 洋红色:CMYK洋红色组件(0-100)

    • 黄色:CMYK黄色分量(0-100)

    • 黑色: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用于评估一系列条件,并返回满足的第一个条件的结果。按顺序计算条件,如果条件为真,则停止计算,并返回相应的结果。如果所有条件都不为真,则返回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 如果“名称”字段为空,则→返回字符串“None”

  • CASE WHEN $area > 10000 THEN 'Big property' WHEN $area > 5000 THEN 'Medium property' ELSE 'Small property' END 如果面积大于10000,则→返回字符串‘Big Property’,如果面积在5,000和10000之间,则返回字符串‘Medium Property’,如果返回其他值,则返回‘Small Property

13.2.4.2. 合并

返回表达式列表中的第一个非空值。

此函数可以接受任意数量的参数。

语法

合并(表达式1、表达式2、...)

立论

  • expression -任何有效的表达式或值,无论其类型如何。

实例

  • coalesce(NULL, 2) →2

  • coalesce(NULL, 2, 3) →2

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

  • coalesce("fieldA", "fallbackField", 'ERROR') 字段的错误值如果非空,则为A;否则为“→”的值;如果两者都为空,则为字符串‘Error’

13.2.4.3. 如果

测试条件并根据条件检查返回不同的结果。

语法

IF(条件,RESULT_WHEN_TRUE,RESULT_WHEN_FALSE)

立论

  • condition -应检查的条件

  • result_when_true -条件为TRUE或其他值未转换为FALSE时返回的结果。

  • result_when_false -当条件为FALSE或其他值转换为FALSE时返回的结果,如0或‘’。NULL也将转换为FALSE。

实例

  • if( 1+1=2, 'Yes', 'No' ) →回答“是”

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

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

  • if( '', 'It is true (not empty)', 'It is false (empty)' ) →‘这是假的(空)’

  • if( ' ', 'It is true (not empty)', 'It is false (empty)' ) →‘这是真的(不为空)’

  • if( 0, 'One', 'Zero' ) →“零”

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

13.2.4.4. 为空

如果value1等于value2,则返回空值;否则返回value1。这可用于有条件地用空值替换值。

语法

Nullif(value1,value2)

立论

  • value1 -应使用或替换为空的值。

  • value2 -将触发空值替换的控制值。

实例

  • nullif('(none)', '(none)') →为空

  • nullif('text', '(none)') →‘文本’

  • nullif("name", '') 如果→为空字符串(或已为NULL),则为任何其他大小写形式的名称。

13.2.4.5. regexp_match

返回与Unicode字符串中的正则表达式匹配的第一个匹配位置,如果未找到子字符串,则返回0。

语法

Regexp_Match(INPUT_STRING,regex)

立论

  • input_string -要针对正则表达式进行测试的字符串

  • regex - The regular expression to test against. Backslash characters must be double escaped (e.g., "\\s" to match a white space character or "\\b" to match a word boundary).

实例

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

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

13.2.4.6. 试试看

尝试一个表达式,如果没有错误,则返回其值。如果表达式返回错误,则在提供备用值时将返回备用值,否则函数将返回NULL。

语法

Try(表达式, [alternative] )

[]标记可选参数

立论

  • expression -应运行的表达式

  • alternative -如果表达式返回错误,将返回的结果。

实例

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

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

  • try( to_date( 'invalid_date' ) ) →为空

13.2.5. 转换函数

此组包含将一种数据类型转换为另一种数据类型的函数(例如,字符串从/到整数、二进制从/到字符串、字符串到日期等)。

13.2.5.1. from_base64

将Base64编码的字符串解码为二进制值。

语法

From_Base64(字符串)

立论

  • string -要解码的字符串

实例

  • from_base64('UUdJUw==') →‘qgis’

13.2.5.2. 散列

使用给定方法从字符串创建哈希。一个字节(8位)用两个十六进制的‘’数字‘’表示,因此‘md4’(16个字节)产生一个16 * 2 = 32 character long hex string and 'keccak_512' (64 bytes) produces a 64 * 2=128字符长的十六进制字符串。

语法

Hash(字符串,方法)

立论

  • 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') →‘57470aa9e22adaefac7f5f342f1c6da’

  • 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 -要散列的字符串

实例

  • md5('QGIS') →‘57470aa9e22adaefac7f5f342f1c6da’

13.2.5.4. Sha256

从字符串创建sha256哈希。

语法

Sha256(字符串)

立论

  • string -要散列的字符串

实例

  • sha256('QGIS') ‘eb045cba7a797aaa06ac58830846e40c8e8c780bc0676d3393605fae50c05309’→

13.2.5.5. to_base64

使用Base64编码将二进制值编码为字符串。

语法

To_Base64(值)

立论

  • value -要编码的二进制值

实例

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

13.2.5.6. to_date

将字符串转换为Date对象。可以提供可选的格式字符串来分析该字符串;请参见 QDate::fromString 或FORMAT_DATE函数的文档,以获取有关该格式的其他文档。默认情况下,使用当前的QGIS用户区域设置。

语法

TO_DATE(字符串, [format] , [language] )

[]标记可选参数

立论

  • string -表示日期值的字符串

  • format -用于将字符串转换为日期的格式

  • language -用于将字符串转换为日期的语言(小写,由两个或三个字母组成,ISO 639语言代码)。默认情况下,使用当前的QGIS用户区域设置。

实例

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

  • to_date('June 29, 2019','MMMM d, yyyy') →2019-06-29,如果当前区域设置将名称‘JUMP’用于第六个月,否则将发生错误

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

13.2.5.7. to_datetime

将字符串转换为DateTime对象。可以提供可选的格式字符串来分析该字符串;请参见 QDate::fromStringQTime::fromString 或FORMAT_DATE函数的文档,以获取有关该格式的其他文档。默认情况下,使用当前的QGIS用户区域设置。

语法

TO_DATETIME(字符串, [format] , [language] )

[]标记可选参数

立论

  • string -表示日期时间值的字符串

  • format -用于将字符串转换为日期时间的格式

  • language -用于将字符串转换为日期时间的语言(小写,由两个或三个字母组成,ISO 639语言代码)。默认情况下,使用当前的QGIS用户区域设置。

实例

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

  • to_datetime('June 29, 2019 @ 12:34','MMMM d, yyyy @ HH:mm') →2019-06-29T12:34,如果当前区域设置将名称‘JUND’用于第六个月,否则将发生错误

  • 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 -度、分、秒弦。

实例

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

13.2.5.9. to_dm

将坐标转换为度、分。

语法

To_dm(坐标,轴,精度, [formatting=] )

[]标记可选参数

立论

  • coordinate -纬度或经度值。

  • axis -坐标的轴。‘x’或‘y’。

  • precision -小数位数。

  • formatting -指定格式类型。可接受的值为空(默认)、‘Aligned’或‘Suffix’。

实例

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

  • to_dm(6.1545681, 'y', 4, 'aligned') →北纬6°09.2741‘

  • to_dm(6.1545681, 'y', 4, 'suffix') →北纬6°9.2741‘

13.2.5.10. to_dms

将坐标转换为度、分、秒。

语法

TO_DMS(坐标、轴、精度 [formatting=] )

[]标记可选参数

立论

  • coordinate -纬度或经度值。

  • axis -坐标的轴。‘x’或‘y’。

  • precision -小数位数。

  • formatting -指定格式类型。可接受的值为空(默认)、‘Aligned’或‘Suffix’。

实例

  • to_dms(6.1545681, 'x', 3) →6°9‘16.445“

  • to_dms(6.1545681, 'y', 4, 'aligned') →6°09‘16.4452“北纬

  • to_dms(6.1545681, 'y', 4, 'suffix') →6°9‘16.4452“北纬

13.2.5.11. to_int

将字符串转换为整数。如果值不能转换为整数(例如‘123asd’无效),则不会返回任何内容。

语法

TO_INT(字符串)

立论

  • string -要转换为整数的字符串

实例

  • to_int('123') →123

13.2.5.12. to_interval

将字符串转换为间隔类型。可用于表示日期的天数、小时数、月数等。

语法

目标间隔(字符串)(_I)

立论

  • string - a string representing an interval. Allowable formats include {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 -要转换为实数的字符串

实例

  • to_real('123.45') →123.45

13.2.5.14. to_string

将数字转换为字符串。

语法

TO_STRING(数字)

立论

  • number -整型或实值。要转换为字符串的数字。

实例

  • to_string(123) →‘123’

13.2.5.15. to_time

将字符串转换为时间对象。可以提供可选的格式字符串来分析该字符串;请参见 QTime::fromString 有关该格式的其他文档,请参阅。

语法

To_Time(字符串, [format] , [language] )

[]标记可选参数

立论

  • string -表示时间值的字符串

  • format -用于将字符串转换为时间的格式

  • language -用于将字符串转换为时间的语言(小写,两个或三个字母,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. 日期和时间函数

此组包含用于处理日期和时间数据的函数。此组与 转换函数 (截止日期、截止时间、截止日期时间、截止时间间隔)和 字符串函数 (Format_Date)组。

备注

Storing date, datetime and intervals on fields

存储的能力 datetimedatetime 直接取决于字段的值取决于数据源的提供程序(例如,shapefile接受 date 格式,但不是 datetimetime 格式)。以下是克服这一限制的一些建议:

  • datedatetimetime 属性转换并存储在文本类型字段中。 format_date() 功能。

  • Intervals 可以在使用日期提取函数之一之后存储在整型或小数型字段中(例如, day() 以获取以天数表示的间隔)

13.2.7.1. 年龄

返回两个日期或日期时间之间的差值。

差值将作为 Interval 需要与以下功能之一一起使用才能提取有用的信息:

  • year

  • month

  • week

  • day

  • hour

  • minute

  • second

语法

年龄(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

返回日期和时间为自1970年1月1日01T00:00:00.000协调世界时(Qt.UTC)并转换为Qt.LocalTime以来经过的毫秒数(毫秒)的DateTime。

语法

DATETIME_FROM_EPOCH(Int)

立论

  • int -数字(毫秒)

实例

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

13.2.7.3.

从日期中提取日期,或从间隔中提取天数。

Date variant

从日期或日期时间中提取日期。

语法

日(日)

立论

  • date -日期或日期时间值

实例

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

Interval variant

计算间隔的天数长度。

语法

天(间隔)

立论

  • 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对应周六。

语法

星期几(日期)

立论

  • date -日期或日期时间值

实例

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

13.2.7.5. 新纪元

返回Unix纪元和给定日期值之间的间隔(以毫秒为单位)。

语法

纪元(日期)

立论

  • date -日期或日期时间值

实例

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

13.2.7.6. format_date

将日期类型或字符串格式设置为自定义字符串格式。使用Qt日期/时间格式字符串。看见 QDateTime::toString

语法

Format_Date(日期时间,格式, [language] )

[]标记可选参数

立论

  • datetime -日期、时间或日期时间值

  • format -用于设置字符串格式的字符串模板。

    表达式

    输出

    D

    不带前导零的日期AS编号(1到31)

    DD

    带有前导零的日期AS编号(01到31)

    DDD

    缩写的本地化日期名称(例如“Mon”到“Sun”)

    DDDDD

    长的本地化日期名称(例如“星期一”至“星期日”)

    M

    不带前导零的月份AS数字(1-12)

    MM

    带有前导零的月份AS数字(01-12)

    MMM

    缩写的本地化月份名称(例如“Jan”至“Dec”)

    MMMM

    长的本地化月份名称(例如“1月”至“12月”)

    YY

    两位数字表示的年份(00-99)

    YYYY

    以四位数字表示的年份

    这些表达式可用于格式字符串的时间部分:

    表达式

    输出

    H

    不带前导零的小时(如果显示AM/PM,则为0到23或1到12)

    HH

    带有前导零的小时(如果显示AM/PM,则为00到23或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或A

    解释为AM/PM时间。 AP 必须是‘AM’或‘PM’。

    AP或A

    解释为AM/PM时间。 ap 必须是‘am’或‘pm’。

  • language -语言(小写,两个或三个字母, ISO 639 language code )用于将日期格式化为自定义字符串。默认情况下,使用当前的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') →‘星期二’,如果当前区域设置为英语变体

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

  • format_date('13:54:20','hh:mm AP') →‘01:54 PM’

13.2.7.7. 小时

从日期时间或时间中提取小时部分,或从时间间隔中提取小时数。

Time variant

从时间或日期时间中提取小时部分。

语法

小时(日期时间)

立论

  • datetime -时间或日期时间值

实例

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

Interval variant

以小时为单位计算时间间隔的长度。

语法

小时(间隔)

立论

  • 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 -年份编号。1至99岁按原样解释。年份0无效。

  • month -月份数字,其中1=1月

  • day -日期编号,从1开始表示该月的第一天

实例

  • make_date(2020,5,4) →日期值2020-05-04

13.2.7.9. make_datetime

从年、月、日、小时、分钟和秒数字创建日期时间值。

语法

Make_DateTime(年、月、日、时、分、秒)

立论

  • year -年份编号。1至99岁按原样解释。年份0无效。

  • month -月份数字,其中1=1月

  • day -日期编号,从1开始表示该月的第一天

  • hour -小时数

  • minute -分钟

  • second -秒(小数值包括毫秒)

实例

  • make_datetime(2020,5,4,13,45,30.5) →日期时间值2020-05-04 13:45:30.500

13.2.7.10. make_interval

创建年、月、周、日、小时、分钟和秒值的间隔值。

语法

生成间隔(_I)( [years=0] , [months=0] , [weeks=0] , [days=0] , [hours=0] , [minutes=0] , [seconds=0] )

[]标记可选参数

立论

  • years -年数(假设全年长度为365.25天)。

  • months -月数(假设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 -秒(小数值包括毫秒)

实例

  • make_time(13,45,30.5) →时间值13:45:30.500

13.2.7.12. 分钟

从日期时间或时间中提取分钟部分,或从间隔中提取分钟数。

Time variant

从时间或日期时间中提取分钟部分。

语法

分钟(日期时间)

立论

  • datetime -时间或日期时间值

实例

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

Interval variant

计算间隔的长度(以分钟为单位)。

语法

分钟(间隔)

立论

  • 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. 月份

从日期中提取月份部分,或从间隔中提取月数。

Date variant

从日期或日期时间中提取月份部分。

语法

月(日)

立论

  • date -日期或日期时间值

实例

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

Interval variant

计算间隔的长度(以月为单位)。

语法

月(间隔)

立论

  • interval -返回月数的间隔值

实例

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

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

13.2.7.14. 现在

返回当前日期和时间。该函数是静态的,在求值时将返回一致的结果。返回的时间是准备表达式的时间。

语法

现在()

实例

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

13.2.7.15. 第二

从日期时间或时间中提取秒部分,或从间隔中提取秒数。

Time variant

从时间或日期时间中提取秒部分。

语法

秒(DateTime)

立论

  • datetime -时间或日期时间值

实例

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

Interval variant

计算间隔的长度(以秒为单位)。

语法

秒(间隔)

立论

  • 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

将字符串转换为Date对象。可以提供可选的格式字符串来分析该字符串;请参见 QDate::fromString 或FORMAT_DATE函数的文档,以获取有关该格式的其他文档。默认情况下,使用当前的QGIS用户区域设置。

语法

TO_DATE(字符串, [format] , [language] )

[]标记可选参数

立论

  • string -表示日期值的字符串

  • format -用于将字符串转换为日期的格式

  • language -用于将字符串转换为日期的语言(小写,由两个或三个字母组成,ISO 639语言代码)。默认情况下,使用当前的QGIS用户区域设置。

实例

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

  • to_date('June 29, 2019','MMMM d, yyyy') →2019-06-29,如果当前区域设置将名称‘JUMP’用于第六个月,否则将发生错误

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

13.2.7.17. to_datetime

将字符串转换为DateTime对象。可以提供可选的格式字符串来分析该字符串;请参见 QDate::fromStringQTime::fromString 或FORMAT_DATE函数的文档,以获取有关该格式的其他文档。默认情况下,使用当前的QGIS用户区域设置。

语法

TO_DATETIME(字符串, [format] , [language] )

[]标记可选参数

立论

  • string -表示日期时间值的字符串

  • format -用于将字符串转换为日期时间的格式

  • language -用于将字符串转换为日期时间的语言(小写,由两个或三个字母组成,ISO 639语言代码)。默认情况下,使用当前的QGIS用户区域设置。

实例

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

  • to_datetime('June 29, 2019 @ 12:34','MMMM d, yyyy @ HH:mm') →2019-06-29T12:34,如果当前区域设置将名称‘JUND’用于第六个月,否则将发生错误

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

13.2.7.18. to_interval

将字符串转换为间隔类型。可用于表示日期的天数、小时数、月数等。

语法

目标间隔(字符串)(_I)

立论

  • string - a string representing an interval. Allowable formats include {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(字符串, [format] , [language] )

[]标记可选参数

立论

  • string -表示时间值的字符串

  • format -用于将字符串转换为时间的格式

  • language -用于将字符串转换为时间的语言(小写,两个或三个字母,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. 星期

从日期中提取周数,或从间隔中提取周数。

Date variant

从日期或日期时间中提取周数字。

语法

周(日期)

立论

  • date -日期或日期时间值

实例

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

Interval variant

计算间隔的长度(以周为单位)。

语法

周(间隔)

立论

  • interval -返回月数的间隔值

实例

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

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

13.2.7.21.

从日期中提取年份部分,或从间隔中提取年数。

Date variant

从日期或日期时间中提取年份部分。

语法

年(日)

立论

  • date -日期或日期时间值

实例

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

Interval variant

计算间隔的长度(以年为单位)。

语法

年份(间隔)

立论

  • interval -返回起始年数的间隔值

实例

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

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

Some examples:

除这些函数外,还可以使用 - (减号)运算符将返回一个间隔。

向日期、日期时间或时间添加或减去间隔 + (加号)和 - (减号)运算符,将返回日期时间。

  • 获取距离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

双击字段名称将其添加到您的表达式中。您还可以键入字段名(最好用双引号引起来)或其 alias

要检索要在表达式中使用的字段值,请选择相应的字段,然后在显示的微件中进行选择 10 SamplesAll Unique 。然后会显示请求的值,您可以使用 Search 框以筛选结果。也可以通过右击某个字段来访问示例值。

要将值添加到您正在编写的表达式中,请在列表中双击它。如果值是字符串类型,则应使用简单引号,否则不需要引号。

13.2.8.1. NULL

等于空值。

语法

NULL

实例

  • NULL →为空值

备注

若要测试是否为空,请使用 IS NULLIS NOT NULL 表情。

13.2.9. 文件和路径函数

此组包含操作文件名和路径名的函数。

13.2.9.1. base_file_name

返回不带目录或文件后缀的文件的基本名称。

语法

基本文件名(路径)

立论

  • path -文件路径或地图层值。如果指定了地图层值,则将使用该层的文件源。

实例

  • base_file_name('/home/qgis/data/country_boundaries.shp') →‘国家/地区边界’

13.2.9.2. EXIF

从图像文件中检索EXIF标记值。

语法

EXIF(路径, [tag] )

[]标记可选参数

立论

  • path -图像文件路径或地图层值。如果指定了地图层值,则将使用该层的文件源。

  • tag -要返回的标记。如果为空,将返回包含所有EXIF标记值的映射。

实例

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

13.2.9.3. file_exists

如果文件路径存在,则返回True。

语法

文件_EXISTS(路径)

立论

  • path -文件路径或地图层值。如果指定了地图层值,则将使用该层的文件源。

实例

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

13.2.9.4. file_name

返回文件的名称(包括文件扩展名),不包括目录。

语法

文件名(路径)

立论

  • path -文件路径或地图层值。如果指定了地图层值,则将使用该层的文件源。

实例

  • file_name('/home/qgis/data/country_boundaries.shp') →‘国家_边界.shp’

13.2.9.5. file_path

返回文件路径的目录组件。这不包括文件名。

语法

文件路径(路径)

立论

  • path -文件路径或地图层值。如果指定了地图层值,则将使用该层的文件源。

实例

  • file_path('/home/qgis/data/country_boundaries.shp') →‘/HOME/qgis/Data’

13.2.9.6. file_size

返回文件的大小(字节)。

语法

文件大小(路径)

立论

  • path -文件路径或地图层值。如果指定了地图层值,则将使用该层的文件源。

实例

  • file_size('/home/qgis/data/country_boundaries.geojson') →5674

13.2.9.7. file_suffix

从文件路径返回文件后缀(扩展名)。

语法

文件后缀(路径)

立论

  • path -文件路径或地图层值。如果指定了地图层值,则将使用该层的文件源。

实例

  • file_suffix('/home/qgis/data/country_boundaries.shp') →‘shp’

13.2.9.8. is_directory

如果路径对应于目录,则返回True。

语法

IS目录(路径)

立论

  • path -文件路径或地图层值。如果指定了地图层值,则将使用该层的文件源。

实例

  • is_directory('/home/qgis/data/country_boundaries.shp') →为假

  • is_directory('/home/qgis/data/') →为真

13.2.9.9. is_file

如果路径对应于文件,则返回True。

语法

IS_FILE(路径)

立论

  • path -文件路径或地图层值。如果指定了地图层值,则将使用该层的文件源。

实例

  • is_file('/home/qgis/data/country_boundaries.shp') →为真

  • is_file('/home/qgis/data/') →为假

13.2.10. 表单功能

此组包含专门在属性表单上下文下操作的函数。例如,在 field's widgets 设置。

13.2.10.1. current_parent_value

此函数仅在嵌入的表单上下文中可用,它返回当前正在编辑的父表单中某个字段的当前未保存值。对于当前正在编辑或尚未添加到父层的要素,这将不同于父要素的实际属性值。在值关系小部件筛选器表达式中使用时,此函数应包装到一个‘coalesce()’中,该函数可以在表单未在嵌入上下文中使用时从层检索实际的父功能。

语法

Current_Parent_Value(字段名称)

立论

  • field_name -当前父窗体中的字段名称

实例

  • current_parent_value( 'FIELD_NAME' ) →父窗体中字段‘FIELD_NAME’的当前值。

13.2.10.2. current_value

返回当前正在编辑的窗体或表格行中某个字段的当前未保存值。这将不同于当前正在编辑或尚未添加到图层中的要素的要素的实际属性值。

语法

Current_Value(字段名称)

立论

  • field_name -当前表单或表格行中的字段名称

实例

  • current_value( 'FIELD_NAME' ) 字段‘→_name’的当前值。

13.2.11. 模糊匹配函数

此组包含用于值之间的模糊比较的函数。

13.2.11.1. hamming_distance

返回两个字符串之间的汉明距离。这等于输入字符串中字符不同的相应位置上的字符数量。输入字符串的长度必须相同,并且比较区分大小写。

语法

汉明距离(字符串1,字符串2)

立论

  • string1 -A字符串

  • string2 -A字符串

实例

  • hamming_distance('abc','xec') →2

  • hamming_distance('abc','ABc') →2

  • hamming_distance(upper('abc'),upper('ABC')) →%0

  • hamming_distance('abc','abcd') →为空

13.2.11.2. 利文施泰因

返回两个字符串之间的Levenshtein编辑距离。这相当于将一个字符串更改为另一个字符串所需的最小字符编辑次数(插入、删除或替换)。

Lvenshtein距离是两个字符串之间的相似性度量。距离越小,字符串越相似,距离越大,字符串越不同。距离区分大小写。

语法

Levenshtein(弦1,弦2)

立论

  • string1 -A字符串

  • string2 -A字符串

实例

  • levenshtein('kittens','mitten') →2

  • levenshtein('Kitten','kitten') →1

  • levenshtein(upper('Kitten'),upper('kitten')) →%0

13.2.11.3. longest_common_substring

返回两个字符串之间最长的公共子字符串。该子字符串是作为两个输入字符串的子字符串的最长字符串。例如,“ABABC”和“BABCA”的最长公共子字符串是“BABC”。子字符串区分大小写。

语法

LENGING_COMMON_SUBSTRING(字符串1,字符串2)

立论

  • string1 -A字符串

  • string2 -A字符串

实例

  • 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 -A字符串

实例

  • soundex('robert') →‘R163’

  • soundex('rupert') →‘R163’

  • soundex('rubin') →‘R150’

13.2.12. 一般职能

该组包含一般的分类函数。

13.2.12.1. 环境

获取环境变量并以字符串形式返回其内容。如果没有找到该变量,则返回NULL。这可以方便地注入特定于系统的配置,如驱动器号或路径前缀。环境变量的定义取决于操作系统,请咨询您的系统管理员或查看如何设置该环境变量的操作系统文档。

语法

环境(名称)

立论

  • name -应检索的环境变量的名称。

实例

  • env( 'LANG' ) →‘en_US.UTF-8’

  • env( 'MY_OWN_PREFIX_VAR' ) →‘Z:’

  • env( 'I_DO_NOT_EXIST' ) →为空

13.2.12.2. 埃瓦尔

计算以字符串形式传递的表达式。对于扩展作为上下文变量或字段传递的动态参数很有用。

语法

Eval(表达式)

立论

  • expression -表达式字符串

实例

  • eval('\'nice\'') →“很好”

  • eval(@expression_var) → [whatever the result of evaluating @expression_var might be…]

13.2.12.3. eval_template

计算以字符串形式传递的模板。对于扩展作为上下文变量或字段传递的动态参数很有用。

语法

评估模板(模板)

立论

  • template -模板字符串

实例

  • eval_template('QGIS [% upper(\'rocks\') %]') →QGIS岩

13.2.12.4. is_layer_visible

如果指定的层可见,则返回True。

语法

IS_LAYER_VIRED(LAYER)

立论

  • layer -表示层名称或层ID的字符串

实例

  • is_layer_visible('baseraster') →为真

13.2.12.5. mime_type

返回二进制数据的MIME类型。

语法

MIME_TYPE(字节)

立论

  • bytes -二进制数据

实例

  • mime_type('<html><body></body></html>') →文本/Html

  • mime_type(from_base64('R0lGODlhAQABAAAAACH5BAEKAAEALAAAAAABAAEAAAIAOw==')) →图像/GIF

13.2.12.6. 变量

返回存储在指定变量中的值。

语法

Var(名称)

立论

  • name -变量名

实例

  • var('qgis_version') →‘2.12’

进一步阅读:违约清单 variables

13.2.12.7. with_variable

此函数为将作为第三个参数提供的任何表达式代码设置一个变量。这仅适用于复杂的表达式,其中需要在不同位置使用相同的计算值。

语法

WITH_VARIABLE(名称、值、表达式)

立论

  • name -要设置的变量的名称

  • value -要设置的值

  • expression -变量将可用于的表达式

实例

  • with_variable('my_sum', 1 + 2 + 3, @my_sum * 2 + @my_sum * 5) →42

13.2.13. 几何函数

此组包含对几何体对象(例如,缓冲区、变换、$Area)进行操作的函数。

13.2.13.1. affine_transform

返回仿射变换后的几何体。计算位于该几何图形的空间参考系中。这些操作以缩放、旋转、平移的顺序执行。如果存在Z或M偏移,但几何图形中不存在该坐标,则会添加该坐标。

语法

仿射变换(几何,增量_x,增量_y,旋转_z,比例_x,比例_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)) →‘线条(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)) →‘多边形((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

返回线串几何图形上指定顶点的几何图形的平分线角度(平均角度)。角度是从北开始顺时针方向的度数。

语法

在顶点上的角度(几何体、顶点)

立论

  • 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

将虚线图案应用于几何图形,返回多重线串几何图形,该几何图形是沿具有指定图案的每条直线/环描边的输入几何图形。

语法

APPLY_DASH_Pattern(几何图形、图案、 [start_rule=no_rule] , [end_rule=no_rule] , [adjustment=both] , [pattern_offset=0] )

[]标记可选参数

立论

  • geometry -几何图形(接受(多个)线串或(多个)多边形)。

  • 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))) →多行字符串((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')) →多行字符串((1 1,2 5 1),(3 5 1,6 5 1),(7 5 1,10 1,10 1))

13.2.13.4. $面积

返回当前要素的面积。此函数计算的面积既考虑当前项目的椭球体设置,也考虑面积单位设置。例如,如果已为项目设置了椭球体,则计算的面积将是椭球体,如果未设置椭球体,则计算的面积将是平面面积。

语法

$面积

实例

  • $area →42

13.2.13.5. 面积

返回几何体多边形对象的面积。在该几何图形的空间参考系(SRS)中,计算始终是平面的,并且返回区域的单位将与SRS的单位相匹配。这与$Area函数执行的计算不同,后者将根据项目的椭球体和面积单位设置执行椭球体计算。

语法

面积(几何体)

立论

  • geometry -多边形几何体对象

实例

  • area(geom_from_wkt('POLYGON((0 0, 4 0, 4 2, 0 2, 0 0))')) →8.0

13.2.13.6. 方位角

以弧度为单位返回从point_a到point_b的垂直线顺时针测量的方位角。

语法

方位角(点_a、点_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. 轴承

返回从point_a到point_b的垂直线在椭球体上顺时针测量的角度(以弧度为单位)。

语法

方位角(a点、b点、 [source_crs] , [ellipsoid] )

[]标记可选参数

立论

  • point_a -点几何图形

  • point_b -点几何图形

  • source_crs -表示点的源CRS的可选字符串。默认情况下,使用当前层的CRS。

  • ellipsoid -一个可选字符串,表示应在其上测量轴承的椭球体的首字母缩写或权威:ID(例如‘EPSG:7030’)。默认情况下,使用当前项目的椭球体设置。

实例

  • degrees( bearing( make_point(16198544, -4534850), make_point(18736872, -1877769), 'EPSG:3857', 'EPSG:7030') ) →49.980071

  • degrees( bearing( make_point(18736872, -1877769), make_point(16198544, -4534850), 'EPSG:3857', 'WGS84') ) →219.282386

13.2.13.8. 边界

返回几何体的组合边界(即几何体的拓扑边界)的闭包。例如,多边形几何体将具有由多边形中每个环的线串组成的边界。某些几何图形类型没有定义的边界,例如点或几何图形集合,将返回NULL。

语法

边界(几何体)

立论

  • geometry -一个几何体

实例

  • geom_to_wkt(boundary(geom_from_wkt('Polygon((1 1, 0 0, -1 1, 1 1))'))) →‘线条(1 1,0 0,-1,1 1)’

  • geom_to_wkt(boundary(geom_from_wkt('LineString(1 1,0 0,-1 1)'))) →‘多点((1 1),(-1 1))’

进一步阅读: 边界 演算法

13.2.13.9. 边界

返回表示输入几何图形的边框的几何图形。计算位于该几何图形的空间参考系中。

语法

边界(几何体)

立论

  • geometry -一个几何体

实例

  • bounds(@geometry) 当前要素几何的→边界框

  • geom_to_wkt(bounds(geom_from_wkt('Polygon((1 1, 0 0, -1 1, 1 1))'))) →‘多边形((-1 0,1 0,1 1,-1 1,-1 0))’

../../../_images/bounding_box.png

图 13.4 黑线表示每个面要素的边界框

进一步阅读: 包围盒 演算法

13.2.13.10. bounds_height

返回几何图形边框的高度。计算位于该几何图形的空间参考系中。

语法

Bound_Height(几何体)

立论

  • geometry -一个几何体

实例

  • bounds_height(@geometry) 当前要素几何的边框的→高度

  • bounds_height(geom_from_wkt('Polygon((1 1, 0 0, -1 1, 1 1))')) →1

13.2.13.11. bounds_width

返回几何图形的边框的宽度。计算位于该几何图形的空间参考系中。

语法

边界宽度(几何体)

立论

  • geometry -一个几何体

实例

  • bounds_width(@geometry) 当前要素几何的边框的→宽度

  • bounds_width(geom_from_wkt('Polygon((1 1, 0 0, -1 1, 1 1))')) →2

13.2.13.12. 缓冲层

返回一个几何图形,该几何图形表示与此几何图形的距离小于或等于距离的所有点。计算位于该几何图形的空间参考系中。

语法

缓冲区(几何体、距离、 [segments=8] , [cap='round'] , [join='round'] , [miter_limit=2] )

[]标记可选参数

立论

  • geometry -一个几何体

  • distance -以层为单位的缓冲距离

  • segments -使用圆角连接样式时用于表示四分之一圆的线段数。数值越大,缓冲区越平滑,节点越多。

  • cap -缓冲区的端帽样式。有效值为‘圆形’、‘扁平’或‘正方形’

  • join -缓冲区的联接样式。有效值为‘ROUND’、‘BEVELL’或‘MITER’。

  • miter_limit -斜接距离限制,在连接样式设置为‘斜接’时使用

实例

  • buffer(@geometry, 10.5) 以10.5个单位缓冲的当前要素几何的→面

../../../_images/buffer1.png

图 13.5 点、线、具有正缓冲区的面和具有负缓冲区的面的缓冲区(黄色)

进一步阅读: 缓冲层 演算法

13.2.13.13. buffer_by_m

沿线几何图形创建缓冲区,其中缓冲区直径随线顶点处的m值而变化。

语法

Buffer_by_m(几何图形, [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.14. 质心

返回几何图形的几何中心。

语法

质心(几何体)

立论

  • geometry -一个几何体

实例

  • centroid(@geometry) →点几何图形

进一步阅读: 质心 演算法

13.2.13.15. close_line

通过将第一个点追加到行尾(如果尚未闭合),返回输入行串的闭合行串。如果几何图形不是直线字符串或多行字符串,则结果将为空。

语法

Close_line(几何图形)

立论

  • geometry -线串几何图形

实例

  • geom_to_wkt(close_line(geom_from_wkt('LINESTRING(0 0, 1 0, 1 1)'))) →‘线条(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)'))) →‘线条(0 0,1 0,1 1,0 0)’

13.2.13.16. closest_point

返回geometry1上最接近geometry2的点。

语法

最近点(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)'))) →‘点(73.0769 115.384)’

13.2.13.17. collect_geometries

将一组几何图形收集到由多部分组成的几何图形对象中。

List of arguments variant

几何图形部分被指定为函数的单独参数。

语法

COLLECT_GEOMETRIES(GEOMETRY1、GEOMETRYY2、...)

立论

  • geometry -一个几何体

实例

  • geom_to_wkt(collect_geometries(make_point(1,2), make_point(3,4), make_point(5,6))) →‘多点((1 2),(3 4),(5 6))’

Array variant

几何图形零件被指定为几何图形零件数组。

语法

Collect_Geometries(数组)

立论

  • array -几何体对象数组

实例

  • geom_to_wkt(collect_geometries(array(make_point(1,2), make_point(3,4), make_point(5,6)))) →‘多点((1 2),(3 4),(5 6))’

进一步阅读: 收集几何图形 演算法

13.2.13.18. 联合收割机

返回两个几何图形的组合。

语法

合并(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)' ) ) ) →‘多行((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,21)’

13.2.13.19. concave_hull

返回可能包含几何中所有点的凹面

语法

凹面Shell(几何体,目标百分比, [allow_holes=False] )

[]标记可选参数

立论

  • geometry -一个几何体

  • target_percent -解决方案尝试接近的凸面Shell的面积百分比。Target_Percent为1会产生与凸面Shell相同的结果。TARGET_PERCENT介于0和0.99之间会产生一个比凸面Shell面积更小的结果。

  • 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)) →‘多边形((30112,36150,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.20.

测试一个几何体是否包含另一个几何体。当且仅当geometry2的点没有位于geometry1的外部,并且geometry2的内部至少有一个点位于geometry1的内部时,返回TRUE。

语法

包含(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 )' ) ) →为真

  • 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)' ) ) →为假

进一步阅读: overlay_contains

13.2.13.21. convex_hull

返回几何体的凸包。它表示包含集合内所有几何图形的最小凸几何图形。

语法

凸包(几何体)

立论

  • geometry -一个几何体

实例

  • geom_to_wkt( convex_hull( geom_from_wkt( 'LINESTRING(3 3, 4 4, 4 10)' ) ) ) →‘多边形((3 3,4 10,4 4,3 3))’

进一步阅读: concave_hull凸壳 演算法

13.2.13.22. 十字架

测试一个几何体是否与另一个几何体相交。如果提供的几何图形有一些(但不是全部)共有的内部点,则返回TRUE。

语法

十字(几何1、几何2)

立论

  • geometry1 -一个几何体

  • geometry2 -一个几何体

实例

  • crosses( geom_from_wkt( 'LINESTRING(3 5, 4 4, 5 3)' ), geom_from_wkt( 'LINESTRING(3 3, 4 4, 5 5)' ) ) →为真

  • crosses( geom_from_wkt( 'POINT(4 5)' ), geom_from_wkt( 'LINESTRING(3 3, 4 4, 5 5)' ) ) →为假

进一步阅读: overlay_crosses

13.2.13.23. densify_by_count

获取多边形或线层几何体并生成一个新的几何体,其中几何体的顶点数比原始几何体的顶点数多。

语法

Denssify_by_count(几何体、顶点)

立论

  • geometry -几何图形(接受(多个)线串或(多个)多边形)。

  • vertices -要添加的顶点数(每段)

实例

  • geom_to_wkt(densify_by_count(geom_from_wkt('LINESTRING(1 1, 10 1)'), 3)) →线串(1 1,3.25 1,5.5 1,7.75 1,10 1)

进一步阅读: 按计数增密 演算法

13.2.13.24. densify_by_distance

获取多边形或线层几何图形并生成新的几何图形,其中通过在最大距离为指定间隔距离的边上添加附加顶点来加密几何图形。

语法

按距离增密(几何图形、距离)

立论

  • geometry -几何图形(接受(多个)线串或(多个)多边形)。

  • distance -输出几何图形中顶点之间的最大间隔距离

实例

  • geom_to_wkt(densify_by_distance(geom_from_wkt('LINESTRING(1 1, 10 1)'), 4)) →线条(1 1,4 1,7 1,10 1)

进一步阅读: 按间隔加密 演算法

13.2.13.25. 差异

返回一个几何图形,该几何图形表示几何图形1中不与几何图形2相交的部分。

语法

差异(几何1、几何2)

立论

  • geometry1 -一个几何体

  • geometry2 -一个几何体

实例

  • geom_to_wkt( difference( geom_from_wkt( 'LINESTRING(3 3, 4 4, 5 5)' ), geom_from_wkt( 'LINESTRING(3 3, 4 4)' ) ) ) →‘线条(4 4,5 5)’

进一步阅读: 差异化 演算法

13.2.13.26. 不相交

测试几何图形是否在空间上不相交。如果几何图形不共享任何空间,则返回True。

语法

不相交(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)' ) ) →为真

  • disjoint( geom_from_wkt( 'LINESTRING(3 3, 4 4, 5 5)' ), geom_from_wkt( 'POINT(4 4)' )) →为假

进一步阅读: overlay_disjoint

13.2.13.27. 距离

以投影单位返回两个几何图形之间的最小距离(基于空间参考)。

语法

距离(几何图形1、几何图形2)

立论

  • geometry1 -一个几何体

  • geometry2 -一个几何体

实例

  • distance( geom_from_wkt( 'POINT(4 4)' ), geom_from_wkt( 'POINT(4 8)' ) ) →4

13.2.13.28. distance_to_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.29. end_point

返回几何体中的最后一个节点。

语法

端点(几何体)

立论

  • geometry -几何体对象

实例

  • geom_to_wkt(end_point(geom_from_wkt('LINESTRING(4 0, 4 2, 0 2)'))) →‘点(0 2)’

进一步阅读: 提取特定顶点 演算法

13.2.13.30. exif_geotag

从图像文件的EXIF地理标记创建点几何图形。

语法

EXIF_GeoTag(路径)

立论

  • path -图像文件路径或地图层值。如果指定了地图层值,则将使用该层的文件源。

实例

  • geom_to_wkt(exif_geotag('/my/photo.jpg')) →‘点(2 4)’

13.2.13.31. 延伸

将线串几何图形的起点和终点延伸指定的量。使用直线中第一段和最后一段的方向角来延长线。对于多线串,所有部分都是扩展的。距离在此几何图形的空间参考系中。

语法

延伸(几何图形、起点距离、终点距离)

立论

  • geometry -(多)线串几何图形

  • start_distance -延长线起点的距离

  • end_distance -延伸直线末端的距离。

实例

  • geom_to_wkt(extend(geom_from_wkt('LineString(0 0, 1 0, 1 1)'),1,2)) →‘线条(-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)) →‘多行字符串((-1 0,1 0,1 3),(3 2,0 2,0 7))’

进一步阅读: 延长线 演算法

13.2.13.32. exterior_ring

返回表示多边形几何图形的外环的线条字符串。如果几何图形不是多边形,则结果将为空。

语法

外环(几何体)

立论

  • 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))'))) →‘线条(-1-1,4 0,4 2,0 2,-1-1)’

13.2.13.33. 拉伸

返回具有由x和y指定的扩展名的输入(多)曲线或(多)线串几何图形的拉伸版本。

语法

拉伸(几何体,x,y)

立论

  • geometry -曲线或线串几何图形

  • x -x扩展名,数值

  • y -y扩展名,数值

实例

  • geom_to_wkt(extrude(geom_from_wkt('LineString(1 2, 3 2, 4 3)'), 1, 2)) →‘多边形((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)) →‘多重多边形(1 2,3 2,4 4,2 4,1 2)),((4 3,8 3,9 5,5 5,4 3)’

13.2.13.34. flip_coordinates

返回交换了x和y坐标的几何图形的副本。对于修复纬度和经度值颠倒的几何图形非常有用。

语法

翻转坐标(几何体)

立论

  • geometry -一个几何体

实例

  • geom_to_wkt(flip_coordinates(make_point(1, 2))) →‘点(2 1)’

  • geom_to_wkt(flip_coordinates(geom_from_wkt('LineString(0 2, 1 0, 1 6)'))) →‘线条(2 0,0 1,6 1)’

进一步阅读: 交换X和Y坐标 演算法

13.2.13.35. force_polygon_ccw

强制几何体遵守外部环逆时针方向,内部环顺时针方向的约定。

语法

FORCE_POLYGON_CCW(几何体)

立论

  • geometry -几何图形。任何非多边形几何体都将原样返回。

实例

  • geom_to_wkt(force_polygon_ccw(geometry:=geom_from_wkt('Polygon ((-1 -1, 0 2, 4 2, 4 0, -1 -1))'))) →‘多边形((-1-1,4 0,4 2,0 2,-1-1))’

进一步阅读: force_polygon_cwforce_rhr

13.2.13.36. force_polygon_cw

强制几何体遵守这样的约定,即外部环沿顺时针方向,内部环逆时针方向。

语法

Force_Polygon_CW(几何体)

立论

  • geometry -几何图形。任何非多边形几何体都将原样返回。

实例

  • geom_to_wkt(force_polygon_cw(geometry:=geom_from_wkt('POLYGON((-1 -1, 4 0, 4 2, 0 2, -1 -1))'))) →‘多边形((-1-1,0 2,4 2,4 0,-1-1))’

进一步阅读: force_polygon_ccwforce_rhr

13.2.13.37. force_rhr

强制几何图形遵守右手规则,在右手规则中,以多边形为边界的区域位于边界的右侧。具体地,外环以顺时针方向取向,而内环以逆时针方向取向。由于右手规则的定义在某些上下文中不一致,建议改用显式FORCE_POLYGON_CW函数。

语法

FORCE_RHR(几何体)

立论

  • geometry -几何图形。任何非多边形几何体都将原样返回。

实例

  • geom_to_wkt(force_rhr(geometry:=geom_from_wkt('POLYGON((-1 -1, 4 0, 4 2, 0 2, -1 -1))'))) →‘多边形((-1-1,0 2,4 2,4 0,-1-1))’

进一步阅读: 强制右手定尺 算法, force_polygon_ccwforce_polygon_cw

13.2.13.38. 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.39. geom_from_wkb

返回从熟知二进制(WKB)表示形式创建的几何图形。

语法

Geom_from_wkb(二进制)

立论

  • binary -几何体的熟知二进制(WKB)表示(作为二进制BLOB)

实例

  • geom_from_wkb( geom_to_wkb( make_point(4,5) ) ) →点几何图形对象

13.2.13.40. geom_from_wkt

返回从熟知文本(WKT)表示创建的几何图形。

语法

Geom_from_wkt(文本)

立论

  • text -几何图形的熟知文本(WKT)表示法

实例

  • geom_from_wkt( 'POINT(4 5)' ) →几何体对象

13.2.13.41. geom_to_wkb

返回几何的熟知二进制(WKB)表示

语法

Geom_to_WKB(几何图形)

立论

  • geometry -一个几何体

实例

  • geom_to_wkb( @geometry ) 包含几何对象的→二进制BLOB

13.2.13.42. geom_to_wkt

返回不带SRID元数据的几何图形的熟知文本(WKT)表示形式。

语法

Geom_to_Wkt(几何图形, [precision=8] )

[]标记可选参数

立论

  • geometry -一个几何体

  • precision -数字精度

实例

  • geom_to_wkt( make_point(6, 50) ) →‘点(6 50)’

  • geom_to_wkt(centroid(geom_from_wkt('Polygon((1 1, 0 0, -1 1, 1 1))'))) →‘点(0 0.66666667)’

  • geom_to_wkt(centroid(geom_from_wkt('Polygon((1 1, 0 0, -1 1, 1 1))')), 2) →‘点(0 0.67)’

13.2.13.43. $几何图形

返回当前要素的几何图形。可用于其他功能的加工。 WARNING: This function is deprecated. It is recommended to use the replacement @geometry variable instead.

语法

$几何图形

实例

  • geom_to_wkt( $geometry ) →‘点(6 50)’

13.2.13.44. 几何学

返回要素的几何图形。

语法

几何图形(特征)

立论

  • feature -要素对象

实例

  • geometry( @feature ) →当前要素的几何图形。更喜欢使用@几何图形。

  • geom_to_wkt( geometry( get_feature_by_id( 'streets', 1 ) ) ) 将ID为1的要素在WKT中的几何图形放置在“→”层上,例如‘POINT(6 50)’

  • intersects( @geometry, geometry( get_feature( 'streets', 'name', 'Main St.' ) ) ) 如果当前要素在空间上与‘Main St.’相交,则→为True。Streets图层中的命名要素

13.2.13.45. geometry_n

返回几何图形集合中的特定几何图形,如果输入几何图形不是集合,则返回NULL。还可以从多零件几何图形中返回零件。

语法

GEOMETRY_n(几何图形,索引)

立论

  • 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)) →‘点(1 0)’

13.2.13.46. geometry_type

返回描述几何体类型的字符串值(点、线或面)

语法

Geomety_type(几何图形)

立论

  • geometry -一个几何体

实例

  • geometry_type( geom_from_wkt( 'LINESTRING(2 5, 3 6, 4 8)') ) →的“线”

  • geometry_type( geom_from_wkt( 'MULTILINESTRING((2 5, 3 6, 4 8), (1 1, 0 0))') ) →的“线”

  • geometry_type( geom_from_wkt( 'POINT(2 5)') ) →‘点’

  • geometry_type( geom_from_wkt( 'POLYGON((-1 -1, 4 0, 4 2, 0 2, -1 -1))') ) →“多边形”

13.2.13.47. hausdorff_distance

返回两个几何图形之间的Hausdorff距离。这基本上是对两个几何图形相似或不相似程度的度量,距离越小,表示相似的几何图形越多。

可以使用可选的Denssify分数参数执行该函数。如果未指定,则使用标准Hausdorff距离的近似值。对于一大部分有用的情况,这种近似是精确的或接近的。这些例子包括:

  • 计算彼此大致平行且长度大致相等的线串之间的距离。这发生在匹配的线性网络中。

  • 测试几何图形的相似性。

如果此方法提供的默认近似值不够充分,请指定可选的密度分数参数。指定此参数将在计算离散Hausdorff距离之前执行线段加密。该参数设置用于加密每个线段的分数。每个分段将被分成多个等长子分段,其在总长度中的分段最接近给定分段。减小密度分数参数将使返回的距离接近几何体的真实Hausdorff距离。

语法

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.48. 倾角

返回点_a至点_b上从天顶(0)到最低点(180)测量的倾角。

语法

倾斜度(a点、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.49. interior_ring_n

从多边形几何体返回特定的内环,如果该几何体不是多边形,则返回NULL。

语法

INTERNAL_RING_n(几何图形,索引)

立论

  • 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)) →‘线串(-0.1-0.1,0.4 0,0.4 0.2,0 0.2,-0.1-0.1)’

13.2.13.50. 交集

返回表示两个几何图形的共享部分的几何图形。

语法

交点(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)' ) ) ) →‘线条(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)' ) ) ) →‘点(3.53.5)’

进一步阅读: 交集 演算法

13.2.13.51. 交点

测试一个几何体是否与另一个几何体相交。如果几何图形在空间上相交(共享空间的任意部分),则返回True;如果不相交,则返回False。

语法

交点(几何图形1、几何图形2)

立论

  • geometry1 -一个几何体

  • geometry2 -一个几何体

实例

  • intersects( geom_from_wkt( 'POINT(4 4)' ), geom_from_wkt( 'LINESTRING(3 3, 4 4, 5 5)' ) ) →为真

  • intersects( geom_from_wkt( 'POINT(4 5)' ), geom_from_wkt( 'POINT(5 5)' ) ) →为假

进一步阅读: overlay_intersects

13.2.13.52. 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)' ) ) →为真

  • intersects_bbox( geom_from_wkt( 'POINT(6 5)' ), geom_from_wkt( 'POLYGON((3 3, 4 4, 5 5, 3 3))' ) ) →为假

13.2.13.53. is_closed

如果直线串闭合(起点和终点重合),则返回TRUE;如果直线串未闭合,则返回FALSE。如果几何图形不是线串,则结果将为空。

语法

封闭(几何图形)(_C)

立论

  • geometry -线串几何图形

实例

  • is_closed(geom_from_wkt('LINESTRING(0 0, 1 1, 2 2)')) →为假

  • is_closed(geom_from_wkt('LINESTRING(0 0, 1 1, 2 2, 0 0)')) →为真

13.2.13.54. is_empty

如果几何图形为空(没有坐标),则返回TRUE;如果几何图形不为空,则返回FALSE;如果没有几何图形,则返回NULL。另请参阅IS_EMPTY_OR_NULL。

语法

IS_EMPTY(几何图形)

立论

  • geometry -一个几何体

实例

  • is_empty(geom_from_wkt('LINESTRING(0 0, 1 1, 2 2)')) →为假

  • is_empty(geom_from_wkt('LINESTRING EMPTY')) →为真

  • is_empty(geom_from_wkt('POINT(7 4)')) →为假

  • is_empty(geom_from_wkt('POINT EMPTY')) →为真

进一步阅读: is_empty_or_null

13.2.13.55. is_empty_or_null

如果几何图形为空或空(没有坐标),则返回True,否则返回False。此函数类似于表达式‘@GEOMETRY IS NULL或IS_EMPTY(@GEOMETRY)’

语法

IS_EMPTY_OR_NULL(几何图形)

立论

  • geometry -一个几何体

实例

  • is_empty_or_null(NULL) →为真

  • is_empty_or_null(geom_from_wkt('LINESTRING(0 0, 1 1, 2 2)')) →为假

  • is_empty_or_null(geom_from_wkt('LINESTRING EMPTY')) →为真

  • is_empty_or_null(geom_from_wkt('POINT(7 4)')) →为假

  • is_empty_or_null(geom_from_wkt('POINT EMPTY')) →为真

进一步阅读: is_emptyNULL

13.2.13.56. is_multipart

如果几何图形为多类型,则返回True。

语法

多部分(几何图形)(_M)

立论

  • geometry -一个几何体

实例

  • is_multipart(geom_from_wkt('MULTIPOINT ((0 0),(1 1),(2 2))')) →为真

  • is_multipart(geom_from_wkt('POINT (0 0)')) →为假

13.2.13.57. is_valid

如果几何图形有效,则返回True;如果根据OGC规则在2D中格式良好,则返回True。

语法

有效(几何图形)(_VALID)

立论

  • geometry -一个几何体

实例

  • is_valid(geom_from_wkt('LINESTRING(0 0, 1 1, 2 2, 0 0)')) →为真

  • is_valid(geom_from_wkt('LINESTRING(0 0)')) →为假

进一步阅读: make_valid检查有效性 演算法

13.2.13.58. $长度

返回线串的长度。如果需要多边形边界的长度,请改用$PERIMETER。此函数计算的长度与当前项目的椭球体设置和距离单位设置有关。例如,如果已为项目设置了椭球体,则计算的长度将为椭球体,如果未设置椭球体,则计算的长度将为平面长度。

语法

$长度

实例

  • $length →42.4711

13.2.13.59. 长度

返回字符串中的字符数或几何线串的长度。

String variant

返回字符串中的字符数。

语法

长度(字符串)

立论

  • string -要计算长度的字符串

实例

  • length('hello') →5

Geometry variant

计算几何线对象的长度。在此几何图形的空间参考系(SRS)中,计算始终是平面的,返回长度的单位将与SRS的单位匹配。这与$LENGTH函数执行的计算不同,后者将根据项目的椭球体和距离单位设置执行椭球体计算。

语法

长度(几何图形)

立论

  • geometry -线条几何图形对象

实例

  • length(geom_from_wkt('LINESTRING(0 0, 4 0)')) →4.0.

进一步阅读: straight_distance_2d

13.2.13.60. Length3D

计算几何线对象的三维长度。如果几何图形不是三维线对象,则返回其二维长度。在此几何图形的空间参考系(SRS)中,计算始终是平面的,返回长度的单位将与SRS的单位匹配。这与$LENGTH函数执行的计算不同,后者将根据项目的椭球体和距离单位设置执行椭球体计算。

语法

Length3D(几何体)

立论

  • geometry -线条几何图形对象

实例

  • length3D(geom_from_wkt('LINESTRINGZ(0 0 0, 3 0 4)')) →5.0

13.2.13.61. line_interpolate_angle

返回沿线串几何图形在指定距离处与几何图形平行的角度。角度是从北开始顺时针方向的度数。

语法

LINE_INTERRATE_ANGLE(几何图形、距离)

立论

  • geometry -线串几何图形

  • distance -沿直线插入角度的距离

实例

  • line_interpolate_angle(geometry:=geom_from_wkt('LineString(0 0, 10 0)'),distance:=5) →90.0

13.2.13.62. line_interpolate_point

返回沿线串几何图形按指定距离内插的点。

语法

Line_Interpolate_point(几何图形、距离)

立论

  • geometry -线串几何图形

  • distance -要插补的沿线距离

实例

  • geom_to_wkt(line_interpolate_point(geometry:=geom_from_wkt('LineString(0 0, 8 0)'), distance:=5)) →‘点(5 0)’

  • geom_to_wkt(line_interpolate_point(geometry:=geom_from_wkt('LineString(0 0, 1 1, 2 0)'), distance:=2.1)) →‘点(1.48492424 0.51507576)’

  • geom_to_wkt(line_interpolate_point(geometry:=geom_from_wkt('LineString(0 0, 1 0)'), distance:=2)) →为空

进一步阅读: 在直线上插值点 演算法

13.2.13.63. line_locate_point

返回与直线串到达指定点几何图形的最近位置对应的直线串的距离。

语法

LINE_LOCATE_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.64. line_merge

返回线串或多重线串几何图形,其中来自输入几何图形的任何连接的线串都已合并为单个线串。如果传递的几何图形不是线串/多重线串,则此函数将返回NULL。

语法

Line_Merge(几何体)

立论

  • geometry -线串/多重线串几何图形

实例

  • geom_to_wkt(line_merge(geom_from_wkt('MULTILINESTRING((0 0, 1 1),(1 1, 2 2))'))) →‘线串(0 0,1 1,2 2)’

  • geom_to_wkt(line_merge(geom_from_wkt('MULTILINESTRING((0 0, 1 1),(11 1, 21 2))'))) →‘多行字符串((0 0,1 1),(11 1,21 2)’

13.2.13.65. line_substring

返回位于指定起点距离和终点距离(从直线起点测量)之间的直线(或曲线)几何图形的部分。Z值和M值从现有值线性内插。

语法

LINE_SUBSTRING(几何图形、起点距离、终点距离)

立论

  • 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)) →‘线条(2 0,6 0)’

进一步阅读: 行子串 演算法

13.2.13.66. M

返回点几何图形的m(测量)值。

语法

M(几何体)

立论

  • geometry -点几何图形

实例

  • m( geom_from_wkt( 'POINTM(2 5 4)' ) ) →4

13.2.13.67. m_at

检索几何体的m坐标,如果几何体没有m值,则检索NULL。

语法

M_AT(几何体、顶点)

立论

  • geometry -几何体对象

  • vertex -几何体顶点的索引(索引从0开始;负值从最后一个索引开始,从-1开始)

实例

  • m_at(geom_from_wkt('LineStringZM(0 0 0 0, 10 10 0 5, 10 10 0 0)'), 1) →5

13.2.13.68. m_max

返回几何图形的最大m(测量)值。

语法

M_max(几何体)

立论

  • 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.69. m_min

返回几何图形的最小m(测量)值。

语法

M_MIN(几何体)

立论

  • 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.70. main_angle

返回完全覆盖几何体的定向最小边界矩形的长轴角度(顺时针方向,从北开始,以度为单位)。

语法

主角(几何体)

立论

  • geometry -一个几何体

实例

  • main_angle(geom_from_wkt('Polygon ((321577 129614, 321581 129618, 321585 129615, 321581 129610, 321577 129614))')) →38.66

13.2.13.71. make_circle

创建圆形多边形。

语法

制作圆(圆心、半径、 [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)) →‘Polygon Z((10155,15105,1055,5105,10155))’

  • geom_to_wkt(make_circle(make_point(10,10,5,30), 5, 4)) →‘Polygon ZM(10 15 5 30,15 10 5 30,10 5 5 30,5 10 5 30,10 15 5 30))’

13.2.13.72. make_ellipse

创建椭圆多边形。

语法

使椭圆(中心,半长轴,半长轴,方位角, [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)) →‘Polygon Z((15105,1085,5105,10125,15105))’

  • geom_to_wkt(make_ellipse(make_point(10,10,5,30), 5, 2, 90, 4)) →‘Polygon ZM((15 10 5 30,10 8 5 30,5 10 5 30,10 12 5 30,15 10 5 30))’

13.2.13.73. make_line

从一系列点几何图形创建线几何图形。

List of arguments variant

线条顶点被指定为函数的单独参数。

语法

Make_line(Point1,Point2,...)

立论

  • point -点几何图形(或点阵列)

实例

  • geom_to_wkt(make_line(make_point(2,4),make_point(3,5))) →‘线条(2 4,3 5)’

  • geom_to_wkt(make_line(make_point(2,4),make_point(3,5),make_point(9,7))) →‘线条(2 4,3 5,9 7)’

Array variant

线条顶点被指定为点数组。

语法

Make_line(数组)

立论

  • array -点数组

实例

  • geom_to_wkt(make_line(array(make_point(2,4),make_point(3,5),make_point(9,7)))) →‘线条(2 4,3 5,9 7)’

13.2.13.74. 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)) →‘点(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.75. 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)) →‘点M(2 4 6)’

13.2.13.76. make_polygon

从外环和一系列可选的内环几何体创建多边形几何体。

语法

Make_Polygon(OutterRing, [innerRing1] , [innerRing2] ,...)

[]标记可选参数

立论

  • outerRing -多边形外环的闭合线几何图形

  • innerRing -用于内圈的可选闭合线几何图形

实例

  • geom_to_wkt(make_polygon(geom_from_wkt('LINESTRING( 0 0, 0 1, 1 1, 1 0, 0 0 )'))) →‘多边形((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 )'))) →‘多边形((0 0,0 1,1 1,1 0,0 0,0 0),(0.1,0.2,0.2,0.2,0.1),(0.8 0.8,0.8 0.9,0.9,0.9,0.8 0.8))’

13.2.13.77. make_rectangle_3points

从3个点创建矩形。

语法

生成_矩形_3点(点1、点2、点3、 [option=0] )

[]标记可选参数

立论

  • point1 --第一点。

  • point2 -第二点。

  • point3 -第三点。

  • option -构造矩形的可选参数。默认情况下,此值为0。值可以是0(距离)或1(投影)。选项距离:第二个距离等于第二个点和第三个点之间的距离。投影选项:第二个距离等于该线段或其延伸部分上第三个点的垂直投影的距离。

实例

  • geom_to_wkt(make_rectangle_3points(make_point(0, 0), make_point(0,5), make_point(5, 5), 0)) →‘多边形((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)) →‘多边形((0 0,0 5,5 5,5 0,0 0))’

13.2.13.78. make_regular_polygon

创建正则多边形。

语法

Make_Regular_Polygon(Center,Radius,Numbers_Side, [circle=0] )

[]标记可选参数

立论

  • center -正多边形的中心

  • radius -第二点。如果正多边形是内切的,则为第一个。如果正多边形外接,则为第一条边的中点。

  • number_sides -正多边形的边数/边数

  • circle -构造正多边形的可选参数。默认情况下,此值为0。值可以是0(内切)或1(外接)

实例

  • geom_to_wkt(make_regular_polygon(make_point(0,0), make_point(0,5), 5)) →‘多边形((0 5,4.76 1.55,2.94-4.05,-2.94-4.05,-4.76 1.55,05))’

  • geom_to_wkt(make_regular_polygon(make_point(0,0), project(make_point(0,0), 4.0451, radians(36)), 5)) →‘多边形((0 5,4.76 1.55,2.94-4.05,-2.94-4.05,-4.76 1.55,05))’

13.2.13.79. make_square

从对角线创建正方形。

语法

Make_Square(Point1、Point2)

立论

  • point1 -对角线的第一个点

  • point2 -对角线的最后一点

实例

  • geom_to_wkt(make_square( make_point(0,0), make_point(5,5))) →‘多边形((0 0,-0 5,5 5,5 0,0 0))’

  • geom_to_wkt(make_square( make_point(5,0), make_point(5,5))) →‘多边形((5 0,2.5,5 5,7.52.5,5 0))’

13.2.13.80. make_triangle

创建一个三角形多边形。

语法

Make_三角形(Point 1、Point2、Point3)

立论

  • point1 -三角形的第一个点

  • point2 -三角形的第二个点

  • point3 -三角形的第三个点

实例

  • geom_to_wkt(make_triangle(make_point(0,0), make_point(5,5), make_point(0,10))) →‘三角形((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)))) →‘线条(0 0,5 5,0 10,0 0)’

13.2.13.81. make_valid

如果无法使几何图形有效,则返回有效几何图形或空几何图形。

语法

使能有效(几何图形、 [method=structure] , [keep_collapsed=false] )

[]标记可选参数

立论

  • geometry -一个几何体

  • method -修复算法。可以是‘Structure’或‘Line Work’。线条处理选项将所有环合并为一组结点线,然后从该线条提取有效的多边形。“Structure”方法首先使所有环有效,然后合并壳并从壳中减去孔以生成有效结果。假定孔和壳分类正确。

  • keep_collapsed -如果设置为True,则将保留已折叠到较低维度的组件。例如,环折叠为一条线,或一条线折叠为一点。

实例

  • geom_to_wkt(make_valid(geom_from_wkt('POLYGON((3 2, 4 1, 5 8, 3 2, 4 2))'))) →‘多边形((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')) →‘多边形((3 2,4 1,5 8,3 2))’

  • make_valid(geom_from_wkt('LINESTRING(0 0)')) →空几何图形

进一步阅读: is_valid固定几何图形 演算法

13.2.13.82. minimal_circle

返回几何图形的最小封闭圆。它表示包围集合中所有几何图形的最小圆。

语法

Minimal_Circle(几何图形、 [segments=36] )

[]标记可选参数

立论

  • geometry -一个几何体

  • segments -用于多边形分割的可选参数。默认情况下,此值为36

实例

  • geom_to_wkt( minimal_circle( geom_from_wkt( 'LINESTRING(0 5, 0 -5, 2 1)' ), 4 ) ) →‘多边形((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 ) ) →‘多边形((3 4,3 2,1 2,1 4,3 4))’

进一步阅读: 最小封闭圆 演算法

13.2.13.83. nodes_to_points

返回由输入几何体中的每个节点组成的多点几何体。

语法

结点到点(几何图形、 [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)'))) →‘多点((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)) →‘多点((-1-1),(4 0),(4 2),(0 2))’

进一步阅读: 提取折点 演算法

13.2.13.84. num_geometries

返回几何图形集合中的几何图形数量,或多部分几何图形中的零件数量。如果输入几何图形不是集合,则该函数返回NULL。

语法

Num_Geometries(几何体)

立论

  • 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.85. num_interior_rings

返回多边形或几何图形集合中的内环数量,如果输入几何图形不是多边形或集合,则返回NULL。

语法

Num_INTERNAL_RING(几何体)

立论

  • 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.86. num_points

返回几何体中的顶点数。

语法

Num_Points(几何体)

立论

  • geometry -一个几何体

实例

  • num_points(@geometry) 当前要素几何中的→折点数

13.2.13.87. num_rings

返回多边形或几何图形集合中的环形数(包括外部环形),如果输入几何图形不是多边形或集合,则返回NULL。

语法

Num_Rings(几何体)

立论

  • 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.88. offset_curve

返回通过将线串几何图形偏移到边上而形成的几何图形。距离在此几何图形的空间参考系中。

语法

偏移曲线(几何图形、距离、 [segments=8] , [join=1] , [miter_limit=2.0] )

[]标记可选参数

立论

  • geometry -(多)线串几何图形

  • distance -偏移距离。正值将缓冲到行的左侧,负值将缓冲到右侧

  • segments -使用圆角连接样式时用于表示四分之一圆的线段数。数值越大,线条越平滑,节点越多。

  • join -拐角的连接样式,其中1=圆形,2=斜接,3=倒角

  • 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) →线向左偏移10.5个单位,使用倒角连接

进一步阅读: 偏移线 演算法

13.2.13.89. order_parts

按给定条件对多重几何图形的各部分进行排序

语法

Order_Parts(几何图形、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)) →‘多重多边形(1 1,9 1,9 9,19,11)),((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)) →‘线条(1 2,3 2,4 3)’

13.2.13.90. oriented_bbox

返回表示输入几何图形的最小定向边界框的几何图形。

语法

Oriented_BBox(几何体)

立论

  • geometry -一个几何体

实例

  • geom_to_wkt( oriented_bbox( geom_from_wkt( 'MULTIPOINT(1 2, 3 4, 3 2)' ) ) ) →‘多边形((3 2,3 4,1 4,1 2,3 2))’

进一步阅读: 定向最小边界框 演算法

13.2.13.91. 重叠部分

测试一个几何体是否与另一个几何体重叠。如果几何图形共享空间、维度相同但不完全包含在彼此之间,则返回TRUE。

语法

重叠(几何图形1、几何图形2)

立论

  • 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)' ) ) →为真

  • overlaps( geom_from_wkt( 'LINESTRING(0 0, 1 1)' ), geom_from_wkt( 'LINESTRING(3 3, 4 4, 5 5)' ) ) →为假

13.2.13.92. overlay_contains

返回当前要素在空间上是否至少包含目标图层中的一个要素,或者返回当前要素所包含的目标图层中的要素的基于表达式的结果数组。

阅读更多有关底层GEOS“CONTAINS”谓词的信息,如PostGIS中所述 ST_Contains 功能。

语法

Overlay_CONTAINS(层, [expression] , [filter] , [limit] , [cache=false] )

[]标记可选参数

立论

  • layer -其覆盖被选中的层

  • expression -对目标层中的要素求值的可选表达式。如果未设置,该函数将只返回一个布尔值,指示是否至少有一个匹配。

  • filter -用于过滤要检查的目标特征的可选表达式。如果未设置,则将选中所有功能。

  • limit -一个可选整数,用于限制匹配要素的数量。如果未设置,将返回所有匹配的要素。

  • cache -将其设置为TRUE以构建本地空间索引(大多数情况下,这是不需要的,除非您正在使用速度特别慢的数据提供程序)

实例

  • overlay_contains('regions') 如果当前要素在空间上包含区域,则为→

  • overlay_contains('regions', filter:= population > 10000) 如果当前要素在空间上包含人口超过10000的区域,则→为True

  • overlay_contains('regions', name) →当前要素中包含的区域的名称数组

  • array_to_string(overlay_contains('regions', name)) 对于当前要素中包含的区域,以逗号分隔的名称列表的形式→字符串

  • array_sort(overlay_contains(layer:='regions', expression:="name", filter:= population > 10000)) →当前要素中包含且人口大于10000的区域的名称的有序数组

  • overlay_contains(layer:='regions', expression:= geom_to_wkt(@geometry), limit:=2) →当前要素中最多包含两个区域的几何数组(以WKT为单位

进一步阅读: array manipulation按位置选择 演算法

13.2.13.93. overlay_crosses

返回当前要素是在空间上与目标层中的至少一个要素交叉,还是与当前要素交叉的目标层中的要素的基于表达式的结果数组。

阅读有关基础GEOS“交叉”谓词的更多信息,如PostGIS中所述 ST_Crosses 功能。

语法

Overlay_Crosses(Layer, [expression] , [filter] , [limit] , [cache=false] )

[]标记可选参数

立论

  • layer -其覆盖被选中的层

  • expression -对目标层中的要素求值的可选表达式。如果未设置,该函数将只返回一个布尔值,指示是否至少有一个匹配。

  • filter -用于过滤要检查的目标特征的可选表达式。如果未设置,则将选中所有功能。

  • limit -一个可选整数,用于限制匹配要素的数量。如果未设置,将返回所有匹配的要素。

  • cache -将其设置为TRUE以构建本地空间索引(大多数情况下,这是不需要的,除非您正在使用速度特别慢的数据提供程序)

实例

  • overlay_crosses('regions') 如果当前要素在空间上跨越区域,则→为True

  • overlay_crosses('regions', filter:= population > 10000) 如果当前要素在空间上穿过人口超过10000的区域,则→为True

  • overlay_crosses('regions', name) →当前要素交叉的区域的名称数组

  • array_to_string(overlay_crosses('regions', name)) 对于当前要素交叉的区域,以逗号分隔的名称列表的形式→字符串

  • array_sort(overlay_crosses(layer:='regions', expression:="name", filter:= population > 10000)) →名称的有序数组,用于与当前要素交叉且人口超过10000的区域

  • overlay_crosses(layer:='regions', expression:= geom_to_wkt(@geometry), limit:=2) →当前要素最多相交的两个区域的几何数组(以WKT为单位

进一步阅读: 十字架array manipulation按位置选择 演算法

13.2.13.94. overlay_disjoint

返回当前要素是与目标层的所有要素在空间上不相交,还是返回目标层中与当前要素不相交的要素的基于表达式的结果数组。

阅读有关底层GEOS“不相交”谓词的更多信息,如PostGIS中所述 ST_Disjoint 功能。

语法

叠加不相交(Layer, [expression] , [filter] , [limit] , [cache=false] )

[]标记可选参数

立论

  • layer -其覆盖被选中的层

  • expression -对目标层中的要素求值的可选表达式。如果未设置,该函数将只返回一个布尔值,指示是否至少有一个匹配。

  • filter -用于过滤要检查的目标特征的可选表达式。如果未设置,则将选中所有功能。

  • limit -一个可选整数,用于限制匹配要素的数量。如果未设置,将返回所有匹配的要素。

  • cache -将其设置为TRUE以构建本地空间索引(大多数情况下,这是不需要的,除非您正在使用速度特别慢的数据提供程序)

实例

  • overlay_disjoint('regions') 如果当前要素与所有区域在空间上不相交,则为→

  • overlay_disjoint('regions', filter:= population > 10000) 如果当前要素与人口超过10000的所有区域在空间上不相交,则→为True

  • overlay_disjoint('regions', name) →与当前要素在空间上不相交的区域的名称数组

  • array_to_string(overlay_disjoint('regions', name)) 对于空间上与当前要素不相交的区域,将字符串作为逗号分隔的名称列表进行→

  • array_sort(overlay_disjoint(layer:='regions', expression:="name", filter:= population > 10000)) →名称的有序数组,用于在空间上与当前要素不相交且人口大于10000的区域

  • overlay_disjoint(layer:='regions', expression:= geom_to_wkt(@geometry), limit:=2) →几何数组(以WKT为单位),最多可包含两个空间上与当前要素不相交的区域

进一步阅读: 不相交array manipulation按位置选择 演算法

13.2.13.95. overlay_equals

返回当前要素在空间上是否等于目标图层中的至少一个要素,或者返回目标图层中空间上与当前要素相同的要素的基于表达式的结果数组。

阅读有关基础GEOS“等于”谓词的更多信息,如PostGIS中所述 ST_Equals 功能。

语法

Overlay_equals(层, [expression] , [filter] , [limit] , [cache=false] )

[]标记可选参数

立论

  • layer -其覆盖被选中的层

  • expression -对目标层中的要素求值的可选表达式。如果未设置,该函数将只返回一个布尔值,指示是否至少有一个匹配。

  • filter -用于过滤要检查的目标特征的可选表达式。如果未设置,则将选中所有功能。

  • limit -一个可选整数,用于限制匹配要素的数量。如果未设置,将返回所有匹配的要素。

  • cache -将其设置为TRUE以构建本地空间索引(大多数情况下,这是不需要的,除非您正在使用速度特别慢的数据提供程序)

实例

  • overlay_equals('regions') 如果当前要素在空间上等于区域,则为→

  • overlay_equals('regions', filter:= population > 10000) 如果当前要素在空间上等于人口超过10000的区域,则→为True

  • overlay_equals('regions', name) →空间上与当前要素相同的区域的名称数组

  • array_to_string(overlay_equals('regions', name)) 对于空间上与当前要素相同的区域,将字符串作为逗号分隔的名称列表进行→

  • array_sort(overlay_equals(layer:='regions', expression:="name", filter:= population > 10000)) →为空间上等于当前要素且人口大于10000的区域的名称的有序数组

  • overlay_equals(layer:='regions', expression:= geom_to_wkt(@geometry), limit:=2) →最多两个空间上等于当前要素的区域的几何数组(以WKT为单位

进一步阅读: array manipulation按位置选择 演算法

13.2.13.96. overlay_intersects

返回当前要素是与目标图层中的至少一个要素在空间上相交,还是与当前要素相交的目标图层中的要素的基于表达式的结果数组。

阅读有关基础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 -定义可选的排除过滤器:

    • 对于多边形,以当前要素平方单位表示的交点的最小面积。如果交集生成多个面,并且至少有一个面的面积大于或等于该值,则将返回交集

    • 对于线,以当前要素单位表示的最小长度。如果交集产生多条线,并且至少有一条线的长度大于或等于该值,则将返回交点。

  • min_inscribed_circle_radius -定义可选的排除过滤器(仅适用于多边形):交点的最大内接圆的最小半径(以当前特征单位表示)。如果交点产生多个多边形,并且至少有一个多边形的最大内接圆的半径大于或等于该值,则将返回交点。

    阅读有关基础GEOS谓词的更多信息,如PostGIS中所述 ST_MaximumInscribedCircle 功能。

    此参数要求GEOS>=3.9。

  • return_details -将其设置为TRUE将返回一个映射列表,其中包含(引号中的关键字名称)特征‘id’、表达式‘Result’和‘Overoverage’值。当目标层是一个多边形时,也会返回最大内切圆的‘半径’。仅在与Expression参数一起使用时有效

  • sort_by_intersection_size -仅在与表达式一起使用时有效,将此项设置为‘DES’以降序返回按重叠值排序的结果,或将此项设置为‘ASC’以进行升序。

实例

  • overlay_intersects('regions') 如果当前要素在空间上与区域相交,则为→

  • overlay_intersects('regions', filter:= population > 10000) 如果当前要素与人口超过10000的区域在空间上相交,则→为True

  • overlay_intersects('regions', name) →当前要素相交区域的名称数组

  • array_to_string(overlay_intersects('regions', name)) 对于与当前要素相交的区域,以逗号分隔的名称列表的形式→字符串

  • array_sort(overlay_intersects(layer:='regions', expression:="name", filter:= population > 10000)) →当前要素相交且人口大于10000的区域的名称的有序数组

  • overlay_intersects(layer:='regions', expression:= geom_to_wkt(@geometry), limit:=2) →最多两个与当前要素相交的区域的几何数组(以WKT为单位

  • overlay_intersects(layer:='regions', min_overlap:=0.54) 如果当前要素在空间上与区域相交,并且相交面积(在多面的情况下,至少有一个部分的相交面积)大于或等于0.54时,则为→

  • overlay_intersects(layer:='regions', min_inscribed_circle_radius:=0.54) 如果当前要素在空间上与区域相交并且相交区域的最大内接圆半径(在多部分情况下至少是其中一个部分的半径)大于或等于0.54时,则为→

  • overlay_intersects(layer:='regions', expression:= geom_to_wkt(@geometry), return_details:=true) 结果包含‘id’、‘→’、‘overage’和‘Radius’的贴图的数组

  • overlay_intersects(layer:='regions', expression:= geom_to_wkt(@geometry), sort_by_intersection_size:='des') →按重叠值降序排序的几何数组(以WKT为单位

进一步阅读: 交点array manipulation按位置选择 演算法

13.2.13.97. overlay_nearest

返回当前要素与给定距离内的目标图层之间的要素(S),还是目标图层中距离当前要素一定距离内的要素的基于表达式的结果数组。

注意:对于较大的层,此函数可能会很慢,并且会消耗大量内存。

语法

Overlay_NEAREST(层, [expression] , [filter] , [limit=1] , [max_distance] , [cache=false] )

[]标记可选参数

立论

  • layer -目标层

  • expression -对目标层中的要素求值的可选表达式。如果未设置,该函数将只返回一个布尔值,指示是否至少有一个匹配。

  • filter -用于过滤要检查的目标特征的可选表达式。如果未设置,则将使用目标图层中的所有要素。

  • limit -一个可选整数,用于限制匹配要素的数量。如果未设置,则只返回最近的要素。如果设置为-1,则返回所有匹配的要素。

  • max_distance -限制搜索匹配要素的可选距离。如果未设置,则将使用目标图层中的所有要素。

  • cache -将其设置为TRUE以构建本地空间索引(大多数情况下,这是不需要的,除非您正在使用速度特别慢的数据提供程序)

实例

  • overlay_nearest('airports') 如果“Airways”图层至少具有一个要素,则→为True

  • overlay_nearest('airports', max_distance:= 5000) 如果在距当前要素5,000个地图单位的距离内有机场,则→为True

  • overlay_nearest('airports', name) →以数组形式表示距离当前要素最近的机场的名称

  • array_to_string(overlay_nearest('airports', name)) →字符串形式的距离当前要素最近的机场的名称

  • overlay_nearest(layer:='airports', expression:= name, max_distance:= 5000) →以数组形式表示距离当前要素5,000个地图单位范围内的最近机场的名称

  • overlay_nearest(layer:='airports', expression:="name", filter:= "Use"='Civilian', limit:=3) →一组名称,最多三个最近的民用机场,按距离排序

  • overlay_nearest(layer:='airports', expression:="name", limit:= -1, max_distance:= 5000) →为距离当前要素5,000个地图单位范围内的所有机场按距离排序的名称数组

进一步阅读: array manipulation按最近点连接属性 演算法

13.2.13.98. overlay_touches

返回当前要素是在空间上接触目标层中的至少一个要素,还是返回当前要素接触的目标层中的要素的基于表达式的结果数组。

阅读有关基础GEOS“触及”谓词的更多信息,如PostGIS中所述 ST_Touches 功能。

语法

覆盖(Layer, [expression] , [filter] , [limit] , [cache=false] )

[]标记可选参数

立论

  • layer -其覆盖被选中的层

  • expression -对目标层中的要素求值的可选表达式。如果未设置,该函数将只返回一个布尔值,指示是否至少有一个匹配。

  • filter -用于过滤要检查的目标特征的可选表达式。如果未设置,则将选中所有功能。

  • limit -一个可选整数,用于限制匹配要素的数量。如果未设置,将返回所有匹配的要素。

  • cache -将其设置为TRUE以构建本地空间索引(大多数情况下,这是不需要的,除非您正在使用速度特别慢的数据提供程序)

实例

  • overlay_touches('regions') 如果当前要素在空间上与区域接触,则为→

  • overlay_touches('regions', filter:= population > 10000) 如果当前要素在空间上触及人口超过10000的区域,则→为True

  • overlay_touches('regions', name) →当前要素所触及的区域的名称数组

  • string_to_array(overlay_touches('regions', name)) →当前要素所触及区域的逗号分隔名称列表形式的字符串

  • array_sort(overlay_touches(layer:='regions', expression:="name", filter:= population > 10000)) →当前要素所触及且人口超过10000的区域的名称的有序数组

  • overlay_touches(layer:='regions', expression:= geom_to_wkt(@geometry), limit:=2) →当前要素接触的最多两个区域的几何数组(以WKT为单位

进一步阅读: 触动人心array manipulation按位置选择 演算法

13.2.13.99. overlay_within

返回当前要素在空间上是否位于目标图层中的至少一个要素内,还是返回目标图层中包含当前要素的要素的基于表达式的结果数组。

阅读更多有关基础GEOS“范围内”谓词的信息,如PostGIS中所述 ST_Within 功能。

语法

覆盖范围(Layer, [expression] , [filter] , [limit] , [cache=false] )

[]标记可选参数

立论

  • layer -其覆盖被选中的层

  • expression -对目标层中的要素求值的可选表达式。如果未设置,该函数将只返回一个布尔值,指示是否至少有一个匹配。

  • filter -用于过滤要检查的目标特征的可选表达式。如果未设置,则将选中所有功能。

  • limit -一个可选整数,用于限制匹配要素的数量。如果未设置,将返回所有匹配的要素。

  • cache -将其设置为TRUE以构建本地空间索引(大多数情况下,这是不需要的,除非您正在使用速度特别慢的数据提供程序)

实例

  • overlay_within('regions') 如果当前要素在空间上位于区域内,则为→

  • overlay_within('regions', filter:= population > 10000) 如果当前要素在空间上位于人口超过10000的区域内,则为→

  • overlay_within('regions', name) →包含当前要素的区域的名称数组

  • array_to_string(overlay_within('regions', name)) 对于包含当前要素的区域,以逗号分隔的名称列表的形式→字符串

  • array_sort(overlay_within(layer:='regions', expression:="name", filter:= population > 10000)) →包含当前要素且人口大于10000的区域的名称的有序数组

  • overlay_within(layer:='regions', expression:= geom_to_wkt(@geometry), limit:=2) →最多两个包含当前要素的区域的几何数组(以WKT为单位

进一步阅读: array manipulation按位置选择 演算法

13.2.13.100. $周长

返回当前要素的周长。此函数计算的周长与当前项目的椭球体设置和距离单位设置有关。例如,如果已为项目设置了椭球体,则计算的周长将为椭球体,如果未设置椭球体,则计算的周长将为平面周长。

语法

$周长

实例

  • $perimeter →42

13.2.13.101. 周长

返回几何体多边形对象的周长。在此几何图形的空间参考系(SRS)中,计算始终是平面的,返回周长的单位将与SRS的单位匹配。这与$PERIMETER函数执行的计算不同,后者将根据项目的椭球体和距离单位设置执行椭球体计算。

语法

周长(几何体)

立论

  • geometry -多边形几何体对象

实例

  • perimeter(geom_from_wkt('POLYGON((0 0, 4 0, 4 2, 0 2, 0 0))')) →12.0

13.2.13.102. point_n

从几何体返回特定节点。

语法

Point_n(几何图形、索引)

立论

  • geometry -几何体对象

  • index -要返回的节点的索引,其中1是第一个节点;如果该值为负数,则选定的顶点索引将是其总计数减去绝对值

实例

  • geom_to_wkt(point_n(geom_from_wkt('POLYGON((0 0, 4 0, 4 2, 0 2, 0 0))'),2)) →‘点(4 0)’

进一步阅读: 提取特定顶点 演算法

13.2.13.103. point_on_surface

返回一个保证位于几何体表面上的点。

语法

曲面上的点(几何体)

立论

  • geometry -一个几何体

实例

  • point_on_surface(@geometry) →点几何图形

进一步阅读: 面上的点 演算法

13.2.13.104. pole_of_inaccessibility

计算曲面不可访问的近似极点,该极点是距曲面边界最远的内点。这个函数使用‘PolyLabel’算法(Vladimir Agafonkin,2016),这是一种迭代方法,保证在指定的容差内找到不可访问性的真正极点。公差越精确,迭代次数越多,计算时间也越长。

语法

极点不可访问性(几何图形、公差)

立论

  • 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)) →‘点(1.546875 2.546875)’

进一步阅读: 不可及之极 演算法

13.2.13.105. 项目

使用距离、方位角(方位角)和高程(弧度)返回从起点投影的点。

语法

投影(点、距离、方位角、 [elevation] )

[]标记可选参数

立论

  • point -起点

  • distance -到项目的距离

  • azimuth -以弧度为单位的方位角为顺时针,其中0对应于北

  • elevation -倾角(弧度)

实例

  • geom_to_wkt(project(make_point(1, 2), 3, radians(270))) →‘点(-2,2)’

进一步阅读: 项目点(笛卡尔) 演算法

13.2.13.106. 相关

测试两个几何图形之间关系的标注扩展9相交模型(DE-9IM)表示。

Relationship variant

返回两个几何图形之间关系的维扩展9交集模型(DE-9IM)表示形式。

语法

关联(几何体、几何体)

立论

  • geometry -一个几何体

  • geometry -一个几何体

实例

  • relate( geom_from_wkt( 'LINESTRING(40 40,120 120)' ), geom_from_wkt( 'LINESTRING(40 40,60 120)' ) ) →‘FF1F00102’

Pattern match variant

测试两个几何图形之间的DE-9IM关系是否与指定模式匹配。

语法

关联(几何图形、几何图形、阵列)

立论

  • geometry -一个几何体

  • geometry -一个几何体

  • pattern -要匹配的DE-9IM模式

实例

  • relate( geom_from_wkt( 'LINESTRING(40 40,120 120)' ), geom_from_wkt( 'LINESTRING(40 40,60 120)' ), '**1F001**' ) →为真

13.2.13.107. 反转

通过反转直线串顶点的顺序来反转直线串的方向。

语法

反转(几何体)

立论

  • geometry -一个几何体

实例

  • geom_to_wkt(reverse(geom_from_wkt('LINESTRING(0 0, 1 1, 2 2)'))) →‘线条(2 2,1 1,0 0)’

进一步阅读: 反转线方向 演算法

13.2.13.108. 旋转

返回几何体的旋转版本。计算位于该几何图形的空间参考系中。

语法

旋转(几何体、旋转、 [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.109. 圆度

计算多边形形状与圆的距离。当多边形为完美圆形时,该函数返回TRUE;当多边形完全平坦时,该函数返回0。

语法

圆度(几何图形)

立论

  • 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

进一步阅读: 圆度 演算法

13.2.13.110. 比例尺

返回几何体的缩放版本。计算位于该几何图形的空间参考系中。

语法

Scale(几何图形,x_Scale,y_Scale, [center] )

[]标记可选参数

立论

  • geometry -一个几何体

  • x_scale -x轴比例因子

  • y_scale -Y轴比例因子

  • center -缩放中心点。如果未指定,则使用几何体边界框的中心。

实例

  • scale(@geometry, 2, 0.5, make_point(4, 5)) →几何体围绕(4,5)点水平缩放两次,垂直减半

  • scale(@geometry, 2, 0.5) →几何图形围绕其边界框的中心水平和垂直各减半

13.2.13.111. segments_to_lines

返回多线几何图形,该几何图形由输入几何图形中每条线段的一条线组成。

语法

Segments_to_Line(几何图形)

立论

  • geometry -几何体对象

实例

  • geom_to_wkt(segments_to_lines(geom_from_wkt('LINESTRING(0 0, 1 1, 2 2)'))) →‘多行字符串((0 0,1 1),(1 1,2 2))’

进一步阅读: 分解线 演算法

13.2.13.112. 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(多行字符串((126 156.25,126125),(101150,90161),(90161,76175)),多行字符串为空)’

  • 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(多线串空,多线串((76175,90161),(90161,101150),(126125,126 156.25)’

13.2.13.113. shortest_line

返回连接geometry1和geometry2的最短直线。生成的线将在geometry1处开始,在geometry2处结束。

语法

最短直线(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)'))) →‘线串(73.0769 100,100 100)’

13.2.13.114. 简化

通过使用基于距离的阈值(即,Douglas Peucker算法)移除节点来简化几何体。该算法保留了几何图形中较大的偏差,并减少了近直线段中的顶点数量。

语法

简化(几何图形、公差)

立论

  • geometry -一个几何体

  • tolerance -要删除的点与直线段的最大偏差

实例

  • geom_to_wkt(simplify(geometry:=geom_from_wkt('LineString(0 0, 5 0.1, 10 0)'),tolerance:=5)) →‘线条(0 0,10 0)’

进一步阅读: 简化 演算法

13.2.13.115. simplify_vw

通过使用基于区域的阈值(即Visvalingam-Whyatt算法)移除节点来简化几何体。该算法去除了在几何图形中创建小区域的顶点,例如狭窄的尖峰或近乎笔直的线段。

语法

简化VW(几何图形、公差)(_V)

立论

  • 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)) →‘线条(0 0,10 0)’

进一步阅读: 简化 演算法

13.2.13.116. single_sided_buffer

返回通过仅缓冲线串几何图形的一侧而形成的几何图形。距离在此几何图形的空间参考系中。

语法

单面缓冲区(几何图形、距离、 [segments=8] , [join=1] , [miter_limit=2.0] )

[]标记可选参数

立论

  • geometry -(多)线串几何图形

  • distance -缓冲距离。正值将缓冲到行的左侧,负值将缓冲到右侧

  • segments -使用圆角连接样式时用于表示四分之一圆的线段数。数值越大,缓冲区越平滑,节点越多。

  • join -拐角的连接样式,其中1=圆形,2=斜接,3=倒角

  • 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) 向左缓冲10.5个单位的→线,使用更多的线段以实现更平滑的缓冲

  • single_sided_buffer(@geometry, 10.5, join:=3) 向左缓冲10.5个单位的→线,使用倒角连接

进一步阅读: 单面缓冲器 演算法

13.2.13.117. 曲折曲折

返回曲线的弯曲程度,即曲线长度与其端点之间的直线(2D)距离之比。

语法

弯曲度(几何体)

立论

  • 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.118. 光滑

通过添加使几何体中的角变圆的额外节点来平滑几何体。如果输入几何图形包含Z或M值,则这些值也将被平滑,并且输出几何图形将保留与输入几何图形相同的维度。

语法

平滑(几何体、 [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)) →‘线条(0 0,4 0,5 1,5 5)’

进一步阅读: 平滑 演算法

13.2.13.119. square_wave

沿几何体的边界构建方形/矩形波。

语法

方波(几何形状、波长、幅度、 [strict=False] )

[]标记可选参数

立论

  • geometry -一个几何体

  • wavelength -方波波长

  • amplitude -方波幅度

  • strict -默认情况下,波长参数被视为“最大波长”,其中实际波长将被动态调整,以便沿着几何体的边界创建准确数量的方波。如果将严格自变量设置为真,则将准确地使用波长,并且最终波形可能使用不完整的图案。

实例

  • square_wave(geom_from_wkt('LineString(0 0, 10 0)'), 3, 1) 沿线串具有3个波长和1个幅度的→方波

13.2.13.120. square_wave_randomized

沿几何体边界构建随机方形/矩形波。

语法

方波随机化(几何,最小波长,最大波长,最小幅度,最大幅度, [seed=0] )

[]标记可选参数

立论

  • geometry -一个几何体

  • min_wavelength -波的最小波长

  • max_wavelength -波的最大波长

  • min_amplitude -波幅最小

  • max_amplitude -最大波幅

  • seed -指定用于生成波浪的随机种子。如果种子为0,则将生成一组完全随机的波。

实例

  • square_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.121. start_point

返回几何体中的第一个节点。

语法

起点(几何图形)

立论

  • geometry -几何体对象

实例

  • geom_to_wkt(start_point(geom_from_wkt('LINESTRING(4 0, 4 2, 0 2)'))) →‘点(4 0)’

进一步阅读: 提取特定顶点 演算法

13.2.13.122. straight_distance_2d

返回几何体的第一个顶点和最后一个顶点之间的直接/欧几里得距离。几何图形必须是曲线(圆形字符串、直线字符串)。

语法

直线距离_2D(几何体)

立论

  • 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

进一步阅读: 长度

13.2.13.123. sym_difference

返回表示两个不相交的几何图形的部分的几何图形。

语法

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)' ) ) ) →‘线条(5 5,8 8)’

进一步阅读: 对称差分 演算法

13.2.13.124. tapered_buffer

沿直线几何图形创建缓冲区,其中缓冲区直径在直线长度上均匀变化。

语法

锥形缓冲区(几何图形,开始宽度,结束宽度, [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.125. 触动人心

测试一个几何体是否与另一个几何体接触。如果几何图形至少有一个共同点,但其内部不相交,则返回True。

语法

接触(几何图形1、几何图形2)

立论

  • geometry1 -一个几何体

  • geometry2 -一个几何体

实例

  • touches( geom_from_wkt( 'LINESTRING(5 3, 4 4)' ), geom_from_wkt( 'LINESTRING(3 3, 4 4, 5 5)' ) ) →为真

  • touches( geom_from_wkt( 'POINT(4 4)' ), geom_from_wkt( 'POINT(5 5)' ) ) →为假

进一步阅读: overlay_touches

13.2.13.126. 转型

将从源CRS变换到目标CRS的几何体返回。

语法

变换(GEOMETRY,SOURCE_AUTH_ID,DestAUTH_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' ) ) →‘点(0 51)’

进一步阅读: 重新投影层 演算法

13.2.13.127. 翻译

返回几何体的转换版本。计算位于该几何图形的空间参考系中。

语法

平移(几何体、dx、dy)

立论

  • geometry -一个几何体

  • dx -增量x

  • dy -增量y

实例

  • translate(@geometry, 5, 10) →与原始几何体类型相同的几何体

../../../_images/translate_geometry.png

图 13.9 转换要素

进一步阅读: 翻译 演算法

13.2.13.128. triangular_wave

沿几何体的边界构建三角波。

语法

三角波(几何形状、波长、幅度、 [strict=False] )

[]标记可选参数

立论

  • geometry -一个几何体

  • wavelength -三角波波长

  • amplitude -三角波形的幅度

  • strict -默认情况下,波长变元被视为“最大波长”,其中实际波长将被动态调整,以便沿着几何体的边界创建准确数量的三角波。如果将严格自变量设置为真,则将准确地使用波长,并且最终波形可能使用不完整的图案。

实例

  • triangular_wave(geom_from_wkt('LineString(0 0, 10 0)'), 3, 1) 沿线串具有3个波长和1个振幅的→三角波

13.2.13.129. triangular_wave_randomized

沿几何体边界构建随机三角波。

语法

三角波随机化(几何、最小波长、最大波长、最小幅度、最大幅度、 [seed=0] )

[]标记可选参数

立论

  • geometry -一个几何体

  • min_wavelength -波的最小波长

  • max_wavelength -波的最大波长

  • min_amplitude -波幅最小

  • max_amplitude -最大波幅

  • 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.130. 友联市

返回表示几何图形的点集并集的几何图形。

语法

并集(geometry1、geometry2)

立论

  • geometry1 -一个几何体

  • geometry2 -一个几何体

实例

  • geom_to_wkt( union( make_point(4, 4), make_point(5, 5) ) ) →‘多点(4 4,5 5)’

13.2.13.131. 波浪

沿几何体边界构造圆形(类正弦)波。

语法

波(几何形状、波长、幅度、 [strict=False] )

[]标记可选参数

立论

  • geometry -一个几何体

  • wavelength -类正弦波的波长

  • amplitude -类正弦波的幅度

  • strict -默认情况下,波长参数被视为“最大波长”,其中实际波长将被动态调整,以便沿着几何体的边界创建准确的波数。如果将严格自变量设置为真,则将准确地使用波长,并且最终波形可能使用不完整的图案。

实例

  • wave(geom_from_wkt('LineString(0 0, 10 0)'), 3, 1) 沿线串具有3个波长和1个振幅的→类正弦波

13.2.13.132. wave_randomized

沿几何体边界构建随机弯曲(类正弦)波。

语法

波随机化(几何、最小波长、最大波长、最小幅度、最大幅度、 [seed=0] )

[]标记可选参数

立论

  • geometry -一个几何体

  • min_wavelength -波的最小波长

  • max_wavelength -波的最大波长

  • min_amplitude -波幅最小

  • max_amplitude -最大波幅

  • 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.133. wedge_buffer

返回源自点几何图形的楔形缓冲区。

语法

楔形缓冲区(中心,方位角,宽度,外半径, [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。

进一步阅读: 创建楔形缓冲区 演算法

13.2.13.134.

测试一个几何体是否在另一个几何体中。如果geometry1完全位于geometry2内,则返回TRUE。

语法

(几何图形1、几何图形2)内

立论

  • 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))' ) ) →为真

  • within( geom_from_wkt( 'POINT( 5 5 )' ), geom_from_wkt( 'POLYGON((0 0, 0 1, 1 1, 1 0, 0 0 ))' ) ) →为假

进一步阅读: overlay_within

13.2.13.135. $x

返回当前点要素的x坐标。如果要素是多点要素,则将返回第一个点的x坐标。 WARNING: This function is deprecated. It is recommended to use the replacement x() function with @geometry variable instead.

语法

$x

实例

  • $x →42

进一步阅读: X

13.2.13.136. X

返回点几何图形的x坐标,或非点几何图形的质心x坐标。

语法

X(几何体)

立论

  • geometry -一个几何体

实例

  • x( geom_from_wkt( 'POINT(2 5)' ) ) →2

  • x( @geometry ) 当前要素质心的→x坐标

13.2.13.137. $x_at

检索当前要素几何图形的x坐标。 WARNING: This function is deprecated. It is recommended to use the replacement x_at function with @geometry variable instead.

语法

$x_at(顶点)

立论

  • vertex -当前几何体顶点的索引(索引从0开始;负值从最后一个索引开始,从-1开始)

实例

  • $x_at(1) →5

进一步阅读: x_at

13.2.13.138. x_at

检索几何图形的x坐标。

语法

X_at(几何体、顶点)

立论

  • geometry -几何体对象

  • vertex -几何体顶点的索引(索引从0开始;负值从最后一个索引开始,从-1开始)

实例

  • x_at( geom_from_wkt( 'POINT(4 5)' ), 0 ) →4

13.2.13.139. x_max

返回几何体的最大x坐标。计算位于该几何图形的空间参考系中。

语法

X_max(几何体)

立论

  • geometry -一个几何体

实例

  • x_max( geom_from_wkt( 'LINESTRING(2 5, 3 6, 4 8)') ) →4

13.2.13.140. x_min

返回几何图形的最小x坐标。计算位于该几何图形的空间参考系中。

语法

X_MIN(几何体)

立论

  • geometry -一个几何体

实例

  • x_min( geom_from_wkt( 'LINESTRING(2 5, 3 6, 4 8)') ) →2

13.2.13.141. $y

返回当前点要素的y坐标。如果要素是多点要素,则将返回第一个点的y坐标。 WARNING: This function is deprecated. It is recommended to use the replacement y() function with @geometry variable instead.

语法

$y

实例

  • $y →42

进一步阅读:

13.2.13.142.

返回点几何图形的y坐标,或非点几何图形的质心y坐标。

语法

Y(几何体)

立论

  • geometry -一个几何体

实例

  • y( geom_from_wkt( 'POINT(2 5)' ) ) →5

  • y( @geometry ) 当前要素质心的→y坐标

13.2.13.143. $y_at

检索当前要素几何图形的y坐标。 WARNING: This function is deprecated. It is recommended to use the replacement y_at function with @geometry variable instead.

语法

$y_at(顶点)

立论

  • vertex -当前几何体顶点的索引(索引从0开始;负值从最后一个索引开始,从-1开始)

实例

  • $y_at(1) →2

进一步阅读: y_at

13.2.13.144. y_at

检索几何图形的y坐标。

语法

Y_at(几何体、顶点)

立论

  • geometry -几何体对象

  • vertex -几何体顶点的索引(索引从0开始;负值从最后一个索引开始,从-1开始)

实例

  • y_at( geom_from_wkt( 'POINT(4 5)' ), 0 ) →5

13.2.13.145. y_max

返回几何图形的最大y坐标。计算位于该几何图形的空间参考系中。

语法

Y_max(几何体)

立论

  • geometry -一个几何体

实例

  • y_max( geom_from_wkt( 'LINESTRING(2 5, 3 6, 4 8)') ) →8

13.2.13.146. y_min

返回几何图形的最小y坐标。计算位于该几何图形的空间参考系中。

语法

Y_MIN(几何体)

立论

  • geometry -一个几何体

实例

  • y_min( geom_from_wkt( 'LINESTRING(2 5, 3 6, 4 8)') ) →5

13.2.13.147. $z

如果是三维的,则返回当前点要素的z值。如果要素是多点要素,则将返回第一个点的z值。 WARNING: This function is deprecated. It is recommended to use the replacement z() function with @geometry variable instead.

语法

$z

实例

  • $z →123

13.2.13.148. Z

返回点几何图形的z坐标,如果该几何图形没有z值,则返回NULL。

语法

Z(几何体)

立论

  • geometry -点几何图形

实例

  • z( geom_from_wkt( 'POINTZ(2 5 7)' ) ) →7

13.2.13.149. z_at

检索几何图形的z坐标,如果几何图形没有z值,则为NULL。

语法

Z_at(几何体、顶点)

立论

  • geometry -几何体对象

  • vertex -几何体顶点的索引(索引从0开始;负值从最后一个索引开始,从-1开始)

实例

  • z_at(geom_from_wkt('LineStringZ(0 0 0, 10 10 5, 10 10 0)'), 1) →5

13.2.13.150. z_max

返回几何体的最大z坐标,如果几何体没有z值,则返回NULL。

语法

Z_max(几何体)

立论

  • 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 )' ) ) →为空

13.2.13.151. z_min

返回几何体的最小z坐标,如果几何体没有z值,则返回NULL。

语法

Z_MIN(几何体)

立论

  • 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 )' ) ) →为空

13.2.14. 布局功能

此组包含用于操作打印版面项目属性的函数。

13.2.14.1. item_variables

从此打印版面内的版面项目返回变量映射。

语法

Item_Variables(Id)

立论

  • id -布局项目ID

实例

  • map_get( item_variables('Map 0'), 'map_scale') 当前打印布局中项目‘→0’的地图比例

进一步阅读:违约清单 variables

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() ) 布局中所有地图项目中显示的所有图层的→逗号分隔的图层制作者名单列表,例如‘CC-by-NC,CC-by-SA’

  • array_to_string( map_credits( 'Main Map' ) ) →以逗号分隔的列表,其中的图层制作者名单显示在‘主地图’布局项目中,例如‘CC-by-NC,CC-by-SA’

  • array_to_string( map_credits( 'Main Map', include_layer_names := true, layer_name_separator := ': ' ) ) →以逗号分隔的列表,列出了在主地图布局项目中显示的层名称及其制作者名单,例如‘铁路线:CC-by-NC,底图:CC-by-SA’

此函数需要 Access metadata properties 要填充的层的百分比。

13.2.15. 地图层

此编组包含当前项目中可用图层的列表,以及每个图层的字段(存储在数据集中、虚拟或辅助字段以及来自关联的字段)。这些字段可以按照中提到的相同方式进行交互 字段和值 ,不同之处在于,如果名称不属于活动层,则双击会将名称作为字符串(单引号)添加到表达式中,而不是作为字段引用。这为编写引用不同层的表达式提供了一种方便的方法,例如在执行 aggregatesattributespatial 查询。

它还提供了一些方便的功能来操作层。

13.2.15.1. decode_uri

获取一个层并对基础数据提供程序的URI进行解码。这取决于数据提供商,哪些数据是可用的。

语法

Decode_uri(层, [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 -表示层名称或层ID的字符串

  • property -与要返回的属性对应的字符串。有效选项包括:

    • 名称:层名称

    • ID:层ID

    • 标题:元数据标题字符串

    • 摘要:元数据摘要字符串

    • 关键词:元数据关键词

    • Data_url:元数据URL

    • 属性:元数据属性字符串

    • 属性_url:元数据属性URL

    • 来源:图层源

    • MIN_SCALE:层的最小显示比例

    • MAX_SCALE:层的最大显示比例

    • 是否可编辑:如果层处于编辑模式

    • CRS:层CRS

    • CRS_DEFINITION:层CRS完全定义

    • CRS_Description:层CRS描述

    • CRS_椭球体:CRS层的椭球体

    • 范围:层范围(作为几何体对象)

    • 距离单位:层距离单位

    • 类型:图层类型,例如,矢量或栅格

    • STORAGE_TYPE:存储格式(仅限矢量层)

    • GEOMETRY_TYPE:几何体类型,例如,点(仅限矢量层)

    • FEATURE_COUNT:层的近似要素数(仅限矢量层)

    • 路径:指向图层数据源的文件路径。仅适用于基于文件的层。

实例

  • layer_property('streets','title') →“底图街道”

  • layer_property('airports','feature_count') →120

  • layer_property('landsat','crs') →‘epsg:4326’

进一步阅读: vectorrastermesh 层属性

13.2.15.3. load_layer

按源URI和提供程序名称加载层。

语法

Load_Layer(URI,提供程序)

立论

  • uri -层源URI字符串

  • provider -层数据提供程序名称

实例

  • layer_property(load_layer('c:/data/roads.shp', 'ogr'), 'feature_count') 来自c:/→/Roads.shp矢量图层的要素的数据计数

13.2.16. 地图功能

此组包含用于创建或操作映射数据结构(也称为字典对象、键-值对或关联数组)的键和值的函数。不像 list data structure 在值顺序很重要的情况下,映射对象中键-值对的顺序并不相关,值由它们的键来标识。

13.2.16.1. from_json

加载JSON格式的字符串。

语法

From_json(字符串)

立论

  • 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 -输入字符串

实例

  • hstore_to_map('qgis=>rocks') → { 'qgis': 'rocks' }

13.2.16.3. 地图

返回一个映射,其中包含作为参数对传递的所有键和值。

语法

Map(键1,值1,键2,值2,...)

立论

  • key -a密钥(字符串)

  • value -A值

实例

  • map('1','one','2', 'two') → { '1': 'one', '2': 'two' }

  • map('1','one','2', 'two')['1'] →‘One’

13.2.16.4. map_akeys

以数组形式返回映射的所有键。

语法

Map_akey(贴图)

立论

  • map -一张地图

实例

  • map_akeys(map('1','one','2','two')) → [ '1', '2' ]

13.2.16.5. map_avals

以数组形式返回映射的所有值。

语法

贴图平均值(MAP)

立论

  • map -一张地图

实例

  • map_avals(map('1','one','2','two')) → [ 'one', 'two' ]

13.2.16.6. map_concat

返回包含给定映射的所有条目的映射。如果两个映射包含相同的键,则取第二个映射的值。

语法

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,键)

立论

  • map -一张地图

  • key --查找的关键

实例

  • map_exist(map('1','one','2','two'),'3') →为假

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') 当前打印布局中项目‘→0’(如果存在)的地图比例

提示

您也可以使用 index operator ([]) 从地图中获取值。

13.2.16.10. map_insert

返回添加了键/值的映射。如果该键已存在,则其值将被覆盖。

语法

MAP_INSERT(映射、键、值)

立论

  • 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 -A字符串

实例

  • 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”=>“岩石”’

13.2.16.13. map_to_html_dl

将映射元素合并为一个HTML定义列表字符串。

语法

Map_to_html_dl(Map)

立论

  • map -输入映射

实例

  • map_to_html_dl(map('qgis','rocks')) →<dl><dt>Qgis</dt><dd>岩石</dd></dl>

13.2.16.14. map_to_html_table

将地图元素合并为一个HTML表字符串。

语法

Map_to_html_table(Map)

立论

  • map -输入映射

实例

  • map_to_html_table(map('qgis','rocks')) <table><thead><th>qgis</th></thead><tbody><tr><td>rocks</td></tr></tbody></table>→

13.2.16.15. to_json

从映射、数组或其他值创建JSON格式的字符串。

语法

TO_JSON(值)

立论

  • value -输入值

实例

  • to_json(map('qgis','rocks')) → {"qgis":"rocks"}

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

13.2.16.16. url_encode

从映射返回URL编码的字符串。转换正确编码形式的所有字符,生成完全兼容的查询字符串。

请注意,加号‘+’不会被转换。

语法

Url_encode(映射)

立论

  • 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(值)

立论

  • value -一个数字

实例

  • abs(-2) →2

13.2.17.2. ACOS

返回值的反余弦(以弧度表示)。

语法

ACOS(值)

立论

  • value -以弧度表示的角度的余弦

实例

  • acos(0.5) →1.0471975511966

13.2.17.3. ASIN

返回值的反正弦(以弧度表示)。

语法

ASIN(值)

立论

  • value -角度的正弦,以弧度为单位

实例

  • asin(1.0) →1.5707963267949

13.2.17.4. 阿坦

返回以弧度表示的值的逆正切。

语法

ATAN(值)

立论

  • value -以弧度为单位的角度的黄褐色

实例

  • atan(0.5) →0.463647609000806

13.2.17.5. 阿坦纳2

通过使用两个参数的符号来确定结果的象限,返回dy/dx的逆正切。

语法

Atan2(dy,dx)

立论

  • dy -y坐标差

  • dx -x坐标差

实例

  • atan2(1.0, 1.732) →0.523611477769969

13.2.17.6. CEIL

将数字向上舍入。

语法

CEIL(值)

立论

  • value -一个数字

实例

  • ceil(4.9) →5

  • ceil(-4.9) →-4

13.2.17.7. 夹钳

将输入值限制在指定范围内。

语法

钳位(最小值、输入值、最大值)

立论

  • 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(角度)

立论

  • angle -以弧度为单位的角度

实例

  • cos(1.571) →0.000796326710733263

13.2.17.9. 学位

将弧度转换为度。

语法

度(弧度)

立论

  • radians -数值

实例

  • degrees(3.14159) →180

  • degrees(1) →57.2958

13.2.17.10. EXP

返回值的指数。

语法

EXP(值)

立论

  • value -要返回其指数的数字

实例

  • exp(1.0) →2.71828182845905

13.2.17.11. 地板

将数字向下舍入。

语法

下限(值)

立论

  • value -一个数字

实例

  • floor(4.9) →4

  • floor(-4.9) →-5

13.2.17.12.

返回值的自然对数。

语法

Ln(值)

立论

  • value -数值

实例

  • ln(1) →%0

  • ln(2.7182818284590452354) →1

13.2.17.13. 日志

返回传递的值和底数的对数值。

语法

LOG(基数,值)

立论

  • base -任意正数

  • value -任意正数

实例

  • log(2, 32) →5

  • log(0.5, 32) →-5

13.2.17.14. 日志10

返回传递的表达式的以10为底的对数的值。

语法

Log10(值)

立论

  • value -任意正数

实例

  • log10(1) →%0

  • log10(100) →2

13.2.17.15. 最大值

返回一组值中的最大值。

语法

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(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. 弧度

将度数转换为弧度。

语法

弧度(度)

立论

  • degrees -数值

实例

  • radians(180) →3.14159

  • radians(57.2958) →1

13.2.17.19. 兰德

返回由最小和最大参数(包括)指定的范围内的随机整数。如果提供了种子,则返回的结果将始终相同,具体取决于种子。

语法

兰德(最小,最大, [seed=NULL] )

[]标记可选参数

立论

  • min -表示所需的最小可能随机数的整数

  • max -表示所需的最大可能随机数的整数

  • seed -用作种子的任何值

实例

  • rand(1, 10) →8

13.2.17.20. 兰德夫

返回由最小和最大参数(包括)指定的范围内的随机浮点数。如果提供了种子,则返回的结果将始终相同,具体取决于种子。

语法

兰德夫( [min=0.0] , [max=1.0] , [seed=NULL] )

[]标记可选参数

立论

  • min -表示所需的最小可能随机数的浮点数

  • max -表示所需的最大可能随机数的浮点数

  • seed -用作种子的任何值

实例

  • randf(1, 10) →4.59258286403147

13.2.17.21.

将数字四舍五入为小数位数。

语法

ROUND(值, [places=0] )

[]标记可选参数

立论

  • value -要四舍五入的十进制数

  • places -可选整数,表示要将小数舍入到的位数。可能是负值。

实例

  • round(1234.567, 2) →1234.57

  • round(1234.567) →1235

  • round(1234.567, -1) →1230

13.2.17.22. scale_exponential

使用指数曲线将给定值从输入域转换到输出范围。此函数可用于减缓指定输出范围内的值或超出指定输出范围的值。

语法

标度指数(VALUE,DOMAIN_MIN,DOMAX_MAX,RANGE_MIN,RANGE_MAX,指数)

立论

  • value -输入域中的值。该函数将在输出范围内返回相应的缩放值。

  • domain_min -指定输入域中的最小值,即输入值应采用的最小值。

  • domain_max -指定输入域中的最大值,即输入值应采用的最大值。

  • range_min -指定输出范围中的最小值,即函数应输出的最小值。

  • range_max -指定输出范围中的最大值,即函数应输出的最大值。

  • exponent -正值(大于0),指示输入值映射到输出范围的方式。较大的指数会导致输出值变得缓慢,然后随着输入值接近域最大值而加速。较小的指数(小于1)将导致输出值“缓出”,此时映射开始得很快,但在接近域最大值时会变慢。

实例

  • scale_exp(5,0,10,0,100,2) →25

    缓入,使用2的指数

  • scale_exp(3,0,10,0,100,0.5) →54.772

    缓出,使用0.5的指数

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

    将1,000到10000之间的人口调整为9到20之间的字体大小

13.2.17.24. scale_polynomial

使用多项式曲线将给定值从输入域转换到输出范围。此函数可用于减缓指定输出范围内的值或超出指定输出范围的值。

语法

标度多项式(VALUE,DOMAIN_MIN,DOMAX_MAX,RANGE_MIN,RANGE_MAX,指数)

立论

  • value -输入域中的值。该函数将在输出范围内返回相应的缩放值。

  • domain_min -指定输入域中的最小值,即输入值应采用的最小值。

  • domain_max -指定输入域中的最大值,即输入值应采用的最大值。

  • range_min -指定输出范围中的最小值,即函数应输出的最小值。

  • range_max -指定输出范围中的最大值,即函数应输出的最大值。

  • exponent -正值(大于0),指示输入值映射到输出范围的方式。较大的指数会导致输出值变得缓慢,然后随着输入值接近域最大值而加速。较小的指数(小于1)将导致输出值“缓出”,此时映射开始得很快,但在接近域最大值时会变慢。

实例

  • scale_polynomial(5,0,10,0,100,2) →25

    缓入,使用2的指数

  • scale_polynomial(3,0,10,0,100,0.5) →54.772

    缓出,使用0.5的指数

13.2.17.25. 罪过

返回角度的正弦值。

语法

正弦(角度)

立论

  • angle -以弧度为单位的角度

实例

  • sin(1.571) →0.999999682931835

13.2.17.26. SQRT

返回值的平方根。

语法

SQRT(值)

立论

  • value -一个数字

实例

  • sqrt(9) →3

13.2.17.27. 晒黑

返回角度的正切。

语法

Tan(角度)

立论

  • 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 ) →‘点(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. 操作员

此组包含运算符(例如,+、-、*)。请注意,对于下面的大多数数学函数,如果其中一个输入为空,则结果为空。

13.2.19.1. 百分比

组织的其余部分。取红利的符号。

语法

A%b

立论

  • a -价值

  • b -价值

实例

  • 9 % 2 →1

  • 9 % -2 →1

  • -9 % 2 →-1

  • 5 % NULL →为空

13.2.19.2. *

两个值的乘法

语法

A*b

立论

  • a -价值

  • b -价值

实例

  • 5 * 4 →20

  • 5 * NULL →为空

13.2.19.3. +

两个值相加。如果其中一个值为空,则结果将为空。

语法

A+b

立论

  • a -价值

  • b -价值

实例

  • 5 + 4 →9

  • 5 + NULL →为空

  • 'QGIS ' + 'ROCKS' →‘QGIS ROKS’

  • to_datetime('2020-08-01 12:00:00') + '1 day 2 hours' →2020-08-02T14:00:00

进一步阅读: 合并||

13.2.19.4. -

两个值的减法。如果其中一个值为空,则结果将为空。

语法

A-B

立论

  • a -价值

  • b -价值

实例

  • 5 - 4 →1

  • 5 - NULL →为空

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

13.2.19.5. /

两个值的除法

语法

A/b

立论

  • a -价值

  • b -价值

实例

  • 5 / 4 →1.25

  • 5 / NULL →为空

13.2.19.6. //

两个值的楼层除法

语法

A//b

立论

  • a -价值

  • b -价值

实例

  • 9 // 2 →4

13.2.19.7. <

比较两个值,如果左侧的值小于右侧的值,则计算结果为1。

语法

A<b

立论

  • a -价值

  • b -价值

实例

  • 5 < 4 →为假

  • 5 < 5 →为假

  • 4 < 5 →为真

13.2.19.8. <=

比较两个值,如果左侧的值小于或等于右侧的值,则计算结果为1。

语法

A<=b

立论

  • a -价值

  • b -价值

实例

  • 5 <= 4 →为假

  • 5 <= 5 →为真

  • 4 <= 5 →为真

13.2.19.9. <>

比较两个值,如果它们不相等,则计算结果为1。

语法

A<>b

立论

  • a -价值

  • b -价值

实例

  • 5 <> 4 →为真

  • 4 <> 4 →为假

  • 5 <> NULL →为空

  • NULL <> NULL →为空

13.2.19.10. =

比较两个值,如果它们相等,则计算结果为1。

语法

A=b

立论

  • a -价值

  • b -价值

实例

  • 5 = 4 →为假

  • 4 = 4 →为真

  • 5 = NULL →为空

  • NULL = NULL →为空

13.2.19.11. >

比较两个值,如果左侧的值大于右侧的值,则计算结果为1。

语法

A>b

立论

  • a -价值

  • b -价值

实例

  • 5 > 4 →为真

  • 5 > 5 →为假

  • 4 > 5 →为假

13.2.19.12. >=

比较两个值,如果左侧的值大于或等于右侧的值,则计算结果为1。

语法

A>=b

立论

  • a -价值

  • b -价值

实例

  • 5 >= 4 →为真

  • 5 >= 5 →为真

  • 4 >= 5 →为假

13.2.19.13. AND

当条件a和b为真时,返回真。

语法

甲和乙

立论

  • a -条件

  • b -条件

实例

  • TRUE AND TRUE →为真

  • TRUE AND FALSE →为假

  • 4 = 2+2 AND 1 = 1 →为真

  • 4 = 2+2 AND 1 = 2 →为假

13.2.19.14. BETWEEN

如果值在指定范围内,则返回True。该范围被认为包括边界。可以用来测试排除,而不是介于两者之间。

语法

介于下限和上限之间的值

立论

  • value -要与范围进行比较的值。它可以是字符串、数字或日期。

  • lower_bound AND higher_bound -范围界限

实例

  • 'B' BETWEEN 'A' AND 'C' →为真

  • 2 BETWEEN 1 AND 3 →为真

  • 2 BETWEEN 2 AND 3 →为真

  • 'B' BETWEEN 'a' AND 'c' →为假

  • lower('B') BETWEEN 'a' AND 'b' →为真

备注

value BETWEEN lower_bound AND higher_bound 等同于“ value >= lower_bound AND value <= higher_bound “。”

进一步阅读: 不是在两者之间

13.2.19.15. ILIKE

如果第一个参数与提供的模式匹配且不区分大小写,则返回True。Like可以用来代替iLike,以使匹配区分大小写。对数字也很有用。

语法

字符串/数字iLike模式

立论

  • string/number -要搜索的字符串

  • pattern - pattern to find, you can use '%' as a wildcard, '_' as a single char and '\\' to escape these special characters.

实例

  • 'A' ILIKE 'A' →为真

  • 'A' ILIKE 'a' →为真

  • 'A' ILIKE 'B' →为假

  • 'ABC' ILIKE 'b' →为假

  • 'ABC' ILIKE 'B' →为假

  • 'ABC' ILIKE '_b_' →为真

  • 'ABC' ILIKE '_B_' →为真

  • 'ABCD' ILIKE '_b_' →为假

  • 'ABCD' ILIKE '_B_' →为假

  • 'ABCD' ILIKE '_b%' →为真

  • 'ABCD' ILIKE '_B%' →为真

  • 'ABCD' ILIKE '%b%' →为真

  • 'ABCD' ILIKE '%B%' →为真

  • 'ABCD%' ILIKE 'abcd\\%' →为真

  • 'ABCD' ILIKE '%B\\%' →为假

13.2.19.16. IN

如果在值列表中找到值,则返回TRUE。

语法

A in b

立论

  • a -价值

  • b -值列表

实例

  • 'A' IN ('A','B') →为真

  • 'A' IN ('C','B') →为假

13.2.19.17. IS

如果a与b相同,则返回TRUE。

语法

A是B

立论

  • a -任何价值

  • b -任何价值

实例

  • 'A' IS 'A' →为真

  • 'A' IS 'a' →为假

  • 4 IS 4 →为真

  • 4 IS 2+2 →为真

  • 4 IS 2 →为假

  • @geometry IS NULL 如果几何不为空,则为→0

13.2.19.18. 不是

如果a与b不同,则返回TRUE。

语法

A不是B

立论

  • a -价值

  • b -价值

实例

  • 'a' IS NOT 'b' →为真

  • 'a' IS NOT 'a' →为假

  • 4 IS NOT 2+2 →为假

13.2.19.19. LIKE

如果第一个参数与提供的模式匹配,则返回True。对数字也很有用。

语法

字符串/类似数字的图案

立论

  • string/number -价值

  • pattern - pattern to compare value with, you can use '%' as a wildcard, '_' as a single char and '\\' to escape these special characters.

实例

  • 'A' LIKE 'A' →为真

  • 'A' LIKE 'a' →为假

  • 'A' LIKE 'B' →为假

  • 'ABC' LIKE 'B' →为假

  • 'ABC' LIKE '_B_' →为真

  • 'ABCD' LIKE '_B_' →为假

  • 'ABCD' LIKE '_B%' →为真

  • 'ABCD' LIKE '%B%' →为真

  • '1%' LIKE '1\\%' →为真

  • '1_' LIKE '1\\%' →为假

13.2.19.20. NOT

否定一个条件。

语法

不是

立论

  • a -条件

实例

  • NOT 1 →为假

  • NOT 0 →为真

13.2.19.21. 不是在两者之间

如果值不在指定范围内,则返回TRUE。该范围被认为包括边界。

语法

值不在LOWER_BIND和HIGH_BIND之间

立论

  • value -要与范围进行比较的值。它可以是字符串、数字或日期。

  • lower_bound AND higher_bound -范围界限

实例

  • 'B' NOT BETWEEN 'A' AND 'C' →为假

  • 1.0 NOT BETWEEN 1.1 AND 1.2 →为真

  • 2 NOT BETWEEN 2 AND 3 →为假

  • 'B' NOT BETWEEN 'a' AND 'c' →为真

  • lower('B') NOT BETWEEN 'a' AND 'b' →为假

备注

value NOT BETWEEN lower_bound AND higher_bound 等同于“ value < lower_bound OR value > higher_bound “。”

进一步阅读: BETWEEN

13.2.19.22. OR

当条件a或b为真时,返回真。

语法

A或b

立论

  • a -条件

  • b -条件

实例

  • 4 = 2+2 OR 1 = 1 →为真

  • 4 = 2+2 OR 1 = 2 →为真

  • 4 = 2   OR 1 = 2 →为假

13.2.19.23. []

索引运算符。返回数组或映射值中的元素。

语法

[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.24. ^

两个值的幂。

语法

A^b

立论

  • a -价值

  • b -价值

实例

  • 5 ^ 4 →625

  • 5 ^ NULL →为空

13.2.19.25. ||

将两个值联接到一个字符串中。

如果其中一个值为空,则结果将为空。有关不同的行为,请参阅Conat函数。

语法

A||b

立论

  • a -价值

  • b -价值

实例

  • 'Here' || ' and ' || 'there' →‘到处都是’

  • 'Nothing' || NULL →为空

  • 'Dia: ' || "Diameter" →‘Dia:25’

  • 1 || 2 →‘12’

进一步阅读: 合并+

13.2.19.26. ~

Performs a regular expression match on a string value. Backslash characters must be double escaped (e.g., "\\s" to match a white space character).

语法

字符串~正则表达式

立论

  • string -A字符串值

  • regex - A regular expression. Slashes must be escaped, eg \\d.

实例

  • 'hello' ~ 'll' →为真

  • 'hello' ~ '^ll' →为假

  • 'hello' ~ 'llo$' →为真

  • 'abc123' ~ '\\d+' →为真

进一步阅读: regexp_match

13.2.20. 处理功能

该组包含对处理算法进行操作的函数。

13.2.20.1. 参数

返回处理算法输入参数的值。

语法

参数(名称)

立论

  • name -对应的输入参数名称

实例

  • parameter('BUFFER_SIZE') →5.6.

13.2.21. 栅格函数

此组包含对栅格层进行操作的函数。

13.2.21.1. raster_attributes

返回一个映射,其中字段名称作为关键字,栅格属性表值作为与给定栅格值匹配的属性表项中的值。

语法

RASTER_ATTRIBUTES(层、波段、值)

立论

  • layer -栅格图层的名称或ID

  • band -关联属性表查找的波段编号。

  • value -栅格值

实例

  • raster_attributes('vegetation', 1, raster_value('vegetation', 1, make_point(1,1))) → {'class': 'Vegetated', 'subclass': 'Trees'}

13.2.21.2. raster_statistic

返回栅格图层中的统计信息。

语法

RASTER_STATISTICS(图层、标注栏、特性)

立论

  • layer -表示栅格图层名或图层ID的字符串

  • band -表示栅格图层中波段编号的整数,从1开始

  • property -与要返回的属性对应的字符串。有效选项包括:

    • 最小值:最小值

    • 最大:最大值

    • 平均值:平均值

    • Stdev:值的标准差

    • Range:取值范围(max-min)

    • 总和:栅格中所有值的总和

实例

  • raster_statistic('lc',1,'avg') 来自‘lc’栅格图层的波段1的→平均值

  • raster_statistic('ac2010',3,'min') 来自‘ac2010’栅格图层的波段3的→最小值

13.2.21.3. raster_value

返回在提供的点处找到的栅格值。

语法

RASTER_VALUE(图层、标注栏、点)

立论

  • layer -栅格图层的名称或ID

  • band -要从中采样值的波段编号。

  • point -点几何图形(对于具有多个零件的多部分几何图形,将返回空值)

实例

  • raster_value('dem', 1, make_point(1,1)) →25

13.2.22. 记录和属性函数

此组包含对记录标识符进行操作的函数。

13.2.22.1. 属性

从要素返回属性。

Variant 1

返回当前要素的属性值。

语法

属性(属性名)

立论

  • attribute_name -要返回的属性名称

实例

  • attribute( 'name' ) 存储在当前要素的‘→’属性中的名称值

Variant 2

允许指定目标要素和属性名称。

语法

属性(要素,属性名称)

立论

  • feature -一项特色

  • attribute_name -要返回的属性名称

实例

  • attribute( @atlas_feature, 'name' ) 存储在当前地图集要素的‘→’属性中的名称值

13.2.22.2. 属性

返回包含要素所有属性的地图,并将字段名作为映射键。

Variant 1

返回当前要素的所有属性的地图。

语法

属性()

实例

  • attributes()['name'] 存储在当前要素的‘→’属性中的名称值

Variant 2

允许指定目标功能。

语法

属性(功能)

立论

  • feature -一项特色

实例

  • attributes( @atlas_feature )['name'] 存储在当前地图集要素的‘→’属性中的名称值

进一步阅读: 地图功能

13.2.22.3. $CurrentFeature

返回正在评估的当前要素。这可以与‘ATTRIBUTE’函数一起使用,以评估当前特征的属性值。 WARNING: This function is deprecated. It is recommended to use the replacement @feature variable instead.

语法

$CurrentFeature

实例

  • attribute( $currentfeature, 'name' ) 存储在当前要素的‘→’属性中的名称值

13.2.22.4. display_expression

返回层中给定要素的显示表达式。默认情况下会计算该表达式。可以与零个、一个或多个参数一起使用,有关详细信息,请参阅以下内容。

No parameters

如果在不带参数的情况下调用,该函数将计算当前层中当前要素的显示表达式。

语法

DISPLAY_EXPRESSION()

实例

  • display_expression() →当前层中当前要素的显示表达式。

One 'feature' parameter

如果仅使用‘Feature’参数调用,则该函数将计算当前层中的指定功能。

语法

Display_Expression(功能)

立论

  • feature -应评估的功能。

实例

  • display_expression(@atlas_feature) →当前贴图集要素的显示表达式。

Layer and feature parameters

如果同时使用一个层和一个要素调用该函数,则它将计算指定层中的指定要素。

语法

Display_Expression(Layer,Feature, [evaluate=true] )

[]标记可选参数

立论

  • layer -层(或其ID或名称)

  • feature -应评估的功能。

  • evaluate -如果必须对表达式求值。如果为False,则该表达式将仅作为字符串文字返回(稍后可能会使用‘val’函数对其求值)。

实例

  • display_expression( 'streets', get_feature_by_id('streets', 1)) →‘Streets’层上ID为1的要素的显示表达式。

  • display_expression('a_layer_id', @feature, 'False') →未计算给定特征的显示表达式。

13.2.22.5. feature_id

返回功能的唯一ID,如果功能无效,则返回NULL。

语法

Feature_id(功能)

立论

  • feature -要素对象

实例

  • feature_id( @feature ) →当前要素的ID

进一步阅读: get_feature_by_id

13.2.22.6. get_feature

返回与给定属性值匹配的层的第一个要素。

Single value variant

除了层ID,还指定了单个列和值。

语法

GET_FEATURE(层、属性、值)

立论

  • layer -层名称或ID

  • attribute -用于匹配的属性名称

  • value -要匹配的属性值

实例

  • get_feature('streets','name','main st') 在“Streets”图层中找到的第一个要素在“→”字段中具有“Main st”值

Map variant

与层ID一起,还有一个包含要使用的列(索引)及其各自的值的映射。

语法

GET_FEATURE(层、属性)

立论

  • layer -层名称或ID

  • attribute -包含要使用的列和值对的映射

实例

  • get_feature('streets',map('name','main st','lane_num','4')) 在“Streets”图层中找到的第一个要素,在“→”字段中使用“Main st”值,在“车道编号”字段中使用“4”值

13.2.22.7. get_feature_by_id

返回层上具有ID的要素。

语法

Get_Feature_by_id(Layer,Feature_id)

立论

  • layer -层、层名称或层ID

  • feature_id -需要返回的功能id

实例

  • get_feature_by_id('streets', 1) 将ID为1的要素放在图层“→”上

进一步阅读: feature_id

13.2.22.8. $id

返回当前行的功能ID。 WARNING: This function is deprecated. It is recommended to use the replacement @id variable instead.

语法

$id

实例

  • $id →42

进一步阅读: feature_idget_feature_by_id

13.2.22.9. is_attribute_valid

如果特定功能属性满足所有约束,则返回True。

语法

IS_ATTRIBUTE_Valid(属性, [feature] , [layer] , [strength] )

[]标记可选参数

立论

  • attribute -属性名称

  • feature -一项功能。如果未设置,将使用当前功能。

  • layer -矢量层。如果未设置,将使用当前层。

  • strength -设置为‘Hard’或‘Soft’可缩小到特定的约束类型。如果未设置,则当硬约束或软约束失败时,该函数将返回FALSE。

实例

  • is_attribute_valid('HECTARES') 如果“公顷”字段中的当前要素值满足所有限制,则→为True。

  • is_attribute_valid('HOUSES',get_feature('my_layer', 'FID', 10), 'my_layer') 如果‘My_Layer’中具有“fid”=10的特征的“House”字段中的值不能满足所有约束,则为→False。

进一步阅读: 制约因素

13.2.22.10. is_feature_valid

如果要素满足所有字段约束,则返回True。

语法

IS_FEATURE_VALID( [feature] , [layer] , [strength] )

[]标记可选参数

立论

  • feature -一项功能。如果未设置,将使用当前功能。

  • layer -矢量层。如果未设置,将使用当前层。

  • strength -设置为‘Hard’或‘Soft’可缩小到特定的约束类型。如果未设置,则当硬约束或软约束失败时,该函数将返回FALSE。

实例

  • is_feature_valid(strength:='hard') 如果当前功能的所有字段都满足其硬约束,则→为True。

  • is_feature_valid(get_feature('my_layer', 'FID', 10), 'my_layer') 如果‘My_Layer’中具有“fid”=10的要素的所有字段都无法满足所有约束,则返回→False。

进一步阅读: 制约因素

13.2.22.11. is_selected

如果选择了某个功能,则返回True。可以与零个、一个或两个参数一起使用,详细信息见下文。

No parameters

如果在不带参数的情况下调用,则在选择了当前层中的当前要素时,该函数将返回TRUE。

语法

IS_SELECTED()

实例

  • is_selected() 如果选择了当前层中的当前要素,则→为True。

One 'feature' parameter

如果仅使用‘Feature’参数调用,则在从当前层选择指定的功能时,该函数返回TRUE。

语法

已选定(要素)(_S)

立论

  • feature -应选中以供选择的功能。

实例

  • is_selected(@atlas_feature) 如果选择了当前地图集功能,则为→。

  • is_selected(get_feature('streets', 'name', 'Main St.')) →如果唯一名称为“Main St.”,则为True。活动的“Streets”层上的要素处于选中状态。

  • is_selected(get_feature_by_id('streets', 1)) 如果在活动的“Streets”层上选择了id为1的要素,则→为True。

Two parameters

如果同时使用一个层和一个要素调用该函数,则如果从指定的层选择了指定的要素,则该函数将返回TRUE。

语法

选定对象(图层、要素)(_S)

立论

  • layer -将在其上选中选择的层(其ID或名称)。

  • feature -应选中以供选择的功能。

实例

  • is_selected( 'streets', get_feature('streets', 'name', "street_name")) 如果选择了当前建筑物的街道,则→为True(假设建筑物层有一个名为‘Street_Name’的字段,而‘Streets’层有一个名为‘Name’的字段,具有唯一的值)。

  • is_selected( 'streets', get_feature_by_id('streets', 1)) 如果选择了“Streets”层上ID为1的要素,则→为True。

13.2.22.12. 地图提示

返回层中给定要素的地图提示。默认情况下会计算该表达式。可以与零个、一个或多个参数一起使用,有关详细信息,请参阅以下内容。

No parameters

如果在不带参数的情况下调用,该函数将计算当前图层中当前要素的地图提示。

语法

地图提示()

实例

  • maptip() →当前图层中当前要素的地图提示。

One 'feature' parameter

如果仅使用‘Feature’参数调用,则该函数将计算当前层中的指定功能。

语法

地图提示(要素)

立论

  • feature -应评估的功能。

实例

  • maptip(@atlas_feature) →当前地图集功能的地图提示。

Layer and feature parameters

如果同时使用一个层和一个要素调用该函数,则它将计算指定层中的指定要素。

语法

地图提示(图层、要素、 [evaluate=true] )

[]标记可选参数

立论

  • layer -层(或其ID或名称)

  • feature -应评估的功能。

  • evaluate -如果必须对表达式求值。如果为False,则该表达式将仅作为字符串文字返回(稍后可能会使用‘val_模板’函数对其进行求值)。

实例

  • maptip('streets', get_feature_by_id('streets', 1)) →‘街道’层上ID为1的要素的地图提示。

  • maptip('a_layer_id', @feature, 'False') →未计算给定要素的地图提示。

13.2.22.13. num_selected

返回给定图层上选定要素的数量。默认情况下,在对其计算表达式的层上起作用。

语法

编号_选定( [layer=current layer] )

[]标记可选参数

立论

  • layer -将在其上选中选择的层(或其ID或名称)。

实例

  • num_selected() →当前图层上选定要素的数量。

  • num_selected('streets') →图层Streets上所选要素的数量

13.2.22.14. represent_attributes

返回以属性名称为关键字、以配置的表示值为值的映射。属性的表示值取决于为每个属性配置的小部件类型。可以与零个、一个或多个参数一起使用,有关详细信息,请参阅以下内容。

No parameters

如果调用时不带参数,该函数将返回当前层中当前要素的属性表示。

语法

表示属性()

实例

  • represent_attributes() →当前特征的属性表示形式。

One 'feature' parameter

如果仅使用‘Feature’参数调用,该函数将返回当前层中指定特征的属性表示。

语法

表示属性(要素)(_A)

立论

  • feature -应评估的功能。

实例

  • represent_attributes(@atlas_feature) →当前层中指定要素的属性表示形式。

Layer and feature parameters

如果使用‘Layer’和‘Feature’参数调用,该函数将从指定的层返回指定特征的属性表示。

语法

表示属性(层、要素)(_A)

立论

  • layer -层(或其ID或名称)。

  • feature -应评估的功能。

实例

  • represent_attributes('atlas_layer', @atlas_feature) →指定层中指定要素的属性的表示形式。

进一步阅读: represent_value

13.2.22.15. represent_value

返回为字段值配置的表示值。这取决于配置的小部件类型。通常,这对“价值地图”小部件很有用。

语法

表示_值(值, [fieldName] )

[]标记可选参数

立论

  • value -应解析的值。最有可能是一块田地。

  • fieldName -需要加载微件配置的字段名称。

实例

  • represent_value("field_with_value_map") 值的→描述

  • represent_value('static value', 'field_name') 静态值的→描述

进一步阅读: widget typesrepresent_attributes

13.2.22.16. sqlite_fetch_and_increment

管理SQLite数据库中的自动增量值。

SQLite缺省值只能在INSERT上应用,不能预取。

这使得在数据库中创建行之前无法通过AUTO_INCREMENT获取递增的主键。SideNote:对于Postgres,这是通过选项实现的 evaluate default values

在添加带有关系的新特性时,能够为父项添加子项,而父项窗体仍处于打开状态,因此父项特性未提交,这真的很好。

为了绕过这一限制,可以使用该函数在一个单独的表中管理基于SQLite的格式(如gpkg)中的序列值。

序列表将被过滤出序列id(过滤器属性和过滤器值),并且id_field的当前值将递增1,并且返回递增后的值。

如果其他列需要指定值,则可以使用DEFAULT_VALUES映射来实现此目的。

Note

此函数用于修改目标SQLITE表。它旨在与属性的默认值配置一起使用。

当数据库参数为层并且层处于事务模式时,在事务的生存期内仅检索一次该值,并对其进行缓存和递增。这使得从多个进程并行处理同一数据库是不安全的。

语法

SQLite_FETCH_AND_INCREMENT(数据库,表,id_field,过滤器_属性,过滤器_值, [default_values] )

[]标记可选参数

立论

  • database -SQLite文件或地理包图层的路径

  • table -管理序列的表的名称

  • id_field -包含当前值的字段的名称

  • filter_attribute -命名包含此序列的唯一标识符的字段。必须有唯一的索引。

  • 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

进一步阅读: 数据源属性创建一种或多对多关系

13.2.22.17. UUID

使用Qt为每一行生成通用唯一标识符(UUID) QUuid::createUuid 方法。

语法

Uuid( [format='WithBraces'] )

[]标记可选参数

立论

  • format -格式,因为UUID将被格式化。“WithBrace”、“WithoutBrace”或“Id128”。

实例

  • uuid() → '{0bd2f60f-f157-4a6d-96af-d4ba4cb366a1}'

  • uuid('WithoutBraces') →‘0bd2f60f-f157-4a6d-96af-d4ba4cb366a1’

  • uuid('Id128') →‘0bd2f60ff1574a6d96afd4ba4cb366a1’

13.2.23. 关系

此组包含以下列表: relations 在当前项目中可用,以及它们的说明。它为编写表达式提供了对关系ID的快速访问(例如, relation_aggregate 功能)或自定义表单。

13.2.24. 传感器功能

该组包含与传感器交互的功能。

13.2.24.1. sensor_data

返回上次从已注册传感器捕获的值(或报告多个值的传感器的映射形式的值)。

语法

传感器数据(名称、 [expiration] )

[]标记可选参数

立论

  • name -传感器名称

  • expiration -自上次捕获以来允许的最大毫秒数

实例

  • sensor_data('geiger_1') →‘2000’

13.2.25. 字符串函数

此组包含对字符串进行操作的函数(例如,替换、转换为大写)。

13.2.25.1. ASCII

返回与字符串的第一个字符关联的Unicode代码。

语法

ASCII(字符串)

立论

  • string -要转换为Unicode代码的字符串

实例

  • ascii('Q') →81

13.2.25.2. 柴尔

返回与Unicode代码关联的字符。

语法

字符(代码)

立论

  • code -Unicode代码号

实例

  • char(81) →‘Q’

13.2.25.3. 合并

将多个字符串连接为一个。空值将转换为空字符串。其他值(如数字)被转换为字符串。

语法

Concat(字符串1,字符串2,...)

立论

  • string -a字符串值

实例

  • concat('sun', 'set') →《日落》

  • concat('a','b','c','d','e') →‘abcde’

  • concat('Anno ', 1984) →‘Anno 1984’

  • concat('The Wall', NULL) →《长城》

About fields concatenation

您还可以使用以下任一方法连接字符串或字段值 ||+ 运算符,具有一些特殊特征:

  • 这个 + 运算符也意味着求和表达式,因此如果您有一个整型(字段或数值)操作数,这很容易出错,您最好使用其他运算符:

    'My feature id is: ' + "gid" => triggers an error as gid returns an integer
    
  • 当任何参数为空值时, ||+ 将返回空值。若要返回其他参数而不考虑空值,您可能需要使用 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.25.4. 格式

使用提供的参数设置字符串的格式。

语法

格式(字符串、arg1、arg2、...)

立论

  • string -参数的占位符为%1、%2等的字符串。占位符可以重复。编号最低的占位符替换为arg1,下一个替换为arg2,依此类推。

  • arg -任何类型的。任意数量的参数。

实例

  • format('This %1 a %2','is', 'test') →‘这是一个测试’

  • format('This is %2','a bit unexpected but 2 is lowest number in string','normal') →‘这有点出乎意料,但2是字符串中的最小数字’

13.2.25.5. format_date

将日期类型或字符串格式设置为自定义字符串格式。使用Qt日期/时间格式字符串。看见 QDateTime::toString

语法

Format_Date(日期时间,格式, [language] )

[]标记可选参数

立论

  • datetime -日期、时间或日期时间值

  • format -用于设置字符串格式的字符串模板。

    表达式

    输出

    D

    不带前导零的日期AS编号(1到31)

    DD

    带有前导零的日期AS编号(01到31)

    DDD

    缩写的本地化日期名称(例如“Mon”到“Sun”)

    DDDDD

    长的本地化日期名称(例如“星期一”至“星期日”)

    M

    不带前导零的月份AS数字(1-12)

    MM

    带有前导零的月份AS数字(01-12)

    MMM

    缩写的本地化月份名称(例如“Jan”至“Dec”)

    MMMM

    长的本地化月份名称(例如“1月”至“12月”)

    YY

    两位数字表示的年份(00-99)

    YYYY

    以四位数字表示的年份

    这些表达式可用于格式字符串的时间部分:

    表达式

    输出

    H

    不带前导零的小时(如果显示AM/PM,则为0到23或1到12)

    HH

    带有前导零的小时(如果显示AM/PM,则为00到23或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或A

    解释为AM/PM时间。 AP 必须是‘AM’或‘PM’。

    AP或A

    解释为AM/PM时间。 ap 必须是‘am’或‘pm’。

  • language -语言(小写,两个或三个字母, ISO 639 language code )用于将日期格式化为自定义字符串。默认情况下,使用当前的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') →‘星期二’,如果当前区域设置为英语变体

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

  • format_date('13:54:20','hh:mm AP') →‘01:54 PM’

13.2.25.6. format_number

返回使用区域设置分隔符格式化的数字(以千为单位)。默认情况下,使用当前的QGIS用户区域设置。还将小数位数截断为所提供的位数。

语法

Format_Numbers(编号, [places=0] , [language] , [omit_group_separators=false] , [trim_trailing_zeroes=false] )

[]标记可选参数

立论

  • number -要格式化的数字

  • places -表示要将字符串截断到的小数位数的整数。

  • language -语言(小写,两个或三个字母, ISO 639 language code )用于将数字格式化为字符串。默认情况下,使用当前的QGIS用户区域设置。

  • omit_group_separators -如果设置为True,则字符串中将不包括组分隔符

  • trim_trailing_zeroes -如果设置为True,则小数点后的尾随零将从字符串中删除

实例

  • format_number(10000000.332,2) 如果当前区域设置为英语变体,则为→‘10,000,000.33

  • format_number(10000000.332,2,'fr') →‘10 000 000,33’

13.2.25.7. 左边

返回一个子字符串,其中包含 n 字符串最左侧的字符。

语法

Left(字符串,长度)

立论

  • string -A字符串

  • length -INTEGER。要返回的字符串左侧的字符数。

实例

  • left('Hello World',5) →上的“你好”

13.2.25.8. 长度

返回字符串中的字符数或几何线串的长度。

String variant

返回字符串中的字符数。

语法

长度(字符串)

立论

  • string -要计算长度的字符串

实例

  • length('hello') →5

Geometry variant

计算几何线对象的长度。在此几何图形的空间参考系(SRS)中,计算始终是平面的,返回长度的单位将与SRS的单位匹配。这与$LENGTH函数执行的计算不同,后者将根据项目的椭球体和距离单位设置执行椭球体计算。

语法

长度(几何图形)

立论

  • geometry -线条几何图形对象

实例

  • length(geom_from_wkt('LINESTRING(0 0, 4 0)')) →4.0.

13.2.25.9. 较低

将字符串转换为小写字母。

语法

小写(字符串)

立论

  • string -要转换为小写的字符串

实例

  • lower('HELLO World') →“你好,世界”

13.2.25.10. LPAD

使用填充字符将左侧填充的字符串返回到指定宽度。如果目标宽度小于字符串的长度,则会截断该字符串。

语法

LPAD(字符串、宽度、填充)

立论

  • string -要填充的字符串

  • width -新字符串的长度

  • fill -用来填充剩余空格的字符

实例

  • lpad('Hello', 10, 'x') →‘xxxxHello’

  • lpad('Hello', 3, 'x') →‘Hel’

13.2.25.11. LTrim

从字符串的开头删除仅包含指定字符(默认情况下为空格)的最长字符串。

语法

Ltrim(字符串、 [characters=' '] )

[]标记可选参数

立论

  • string -要修剪的字符串

  • characters -要裁切的字符

实例

  • ltrim('   hello world  ') →“你好,世界”

  • ltrim('zzzytest', 'xyz') →‘测试’

进一步阅读: RTrim修整

13.2.25.12. regexp_match

返回与Unicode字符串中的正则表达式匹配的第一个匹配位置,如果未找到子字符串,则返回0。

语法

Regexp_Match(INPUT_STRING,regex)

立论

  • input_string -要针对正则表达式进行测试的字符串

  • regex - The regular expression to test against. Backslash characters must be double escaped (e.g., "\\s" to match a white space character or "\\b" to match a word boundary).

实例

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

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

13.2.25.13. regexp_replace

返回替换了提供的正则表达式的字符串。

语法

Regexp_替换(INPUT_STRING,正则表达式,替换)

立论

  • input_string -要替换中的匹配项的字符串

  • regex - The regular expression to replace. Backslash characters must be double escaped (e.g., "\\s" to match a white space character).

  • replacement - The string that will replace any matching occurrences of the supplied regular expression. Captured groups can be inserted into the replacement string using \\1, \\2, etc.

实例

  • 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.25.14. regexp_substr

返回与提供的正则表达式匹配的字符串部分。

语法

Regexp_substr(输入_字符串,regex)

立论

  • input_string -要在其中查找匹配的字符串

  • regex - The regular expression to match against. Backslash characters must be double escaped (e.g., "\\s" to match a white space character).

实例

  • regexp_substr('abc123','(\\d+)') →‘123’

13.2.25.15. 更换

返回替换了所提供的字符串、数组或字符串映射的字符串。

String & array variant

返回一个字符串,其中提供的字符串或字符串数组被字符串或字符串数组替换。

语法

替换(字符串、之前、之后)

立论

  • string -输入字符串

  • before -要替换的字符串或字符串数组

  • after -要用作替换的字符串或字符串数组

实例

  • replace('QGIS SHOULD ROCK','SHOULD','DOES') →‘QGIS确实很摇滚’

  • replace('QGIS ABC',array('A','B','C'),array('X','Y','Z')) →‘QGISXYZ’

  • replace('QGIS',array('Q','S'),'') →‘Gi’

Map variant

返回一个字符串,其中提供的映射键被成对的值替换。首先计算较长的贴图关键点。

语法

替换(字符串,映射)

立论

  • string -输入字符串

  • map -包含键和值的映射

实例

  • replace('APP SHOULD ROCK',map('APP','QGIS','SHOULD','DOES')) →‘QGIS确实很摇滚’

  • replace('forty two',map('for','4','two','2','forty two','42')) →‘42’

13.2.25.17. RPAD

使用填充字符将右侧填充的字符串返回到指定宽度。如果目标宽度小于字符串的长度,则会截断该字符串。

语法

RPAD(字符串、宽度、填充)

立论

  • string -要填充的字符串

  • width -新字符串的长度

  • fill -用来填充剩余空格的字符

实例

  • rpad('Hello', 10, 'x') →‘Helloxxxxx’

  • rpad('Hello', 3, 'x') →‘Hel’

13.2.25.18. RTrim

从字符串末尾删除仅包含指定字符(默认情况下为空格)的最长字符串。

语法

Rtrim(字符串、 [characters=' '] )

[]标记可选参数

立论

  • string -要修剪的字符串

  • characters -要裁切的字符

实例

  • rtrim('   hello world  ') →“你好,世界”

  • rtrim('testxxzx', 'xyz') →‘测试’

进一步阅读: LTrim修整

13.2.25.19. Strpos

返回子字符串在另一个字符串中的第一个匹配位置,如果找不到该子字符串,则返回0。

语法

干草堆(干草堆、针)

立论

  • haystack -要搜索的字符串

  • needle -要搜索的字符串

实例

  • strpos('HELLO WORLD','WORLD') →7

  • strpos('HELLO WORLD','GOODBYE') →%0

13.2.25.20. 子字符串

返回字符串的一部分。

语法

Substr(字符串,开始, [length] )

[]标记可选参数

立论

  • string -完整的输入字符串

  • start -表示从1开始提取的开始位置的整数;如果开始为负,则返回字符串将从字符串末尾减去起始值开始

  • length -表示要提取的字符串长度的整数;如果长度为负数,则返回的字符串将从字符串末尾忽略给定长度的字符

实例

  • substr('HELLO WORLD',3,5) →‘LLO W’

  • substr('HELLO WORLD',6) →的“世界”

  • substr('HELLO WORLD',-5) →的“世界”

  • substr('HELLO',3,-1) →‘ll’

  • substr('HELLO WORLD',-5,2) →‘WO’

  • substr('HELLO WORLD',-5,-1) →‘WORL’

13.2.25.21. 标题

将字符串的所有单词转换为标题大小写(所有单词均小写,前导为大写字母)。

语法

标题(字符串)

立论

  • string -要转换为标题大小写的字符串

实例

  • title('hello WOrld') →《你好,世界》

13.2.25.22. to_string

将数字转换为字符串。

语法

TO_STRING(数字)

立论

  • number -整型或实值。要转换为字符串的数字。

实例

  • to_string(123) →‘123’

13.2.25.23. 修整

从字符串中删除所有前导和尾随空格(空格、制表符等)。

语法

Trim(字符串)

立论

  • string -要修剪的字符串

实例

  • trim('   hello world  ') →“你好,世界”

进一步阅读: LTrimRTrim

13.2.25.24. 上端

将字符串转换为大写字母。

语法

UPPER(字符串)

立论

  • string -要转换为大写的字符串

实例

  • upper('hello WOrld') →《你好,世界》

13.2.25.25. 自动换行

返回换行到最大/最小字符数的字符串。

语法

WordWrap(字符串,WRAP_LENGTH, [delimiter_string] )

[]标记可选参数

立论

  • string -要缠绕的字符串

  • wrap_length -一个整数。如果WRAP_LENGTH为正数,则该数字表示理想的最大换行字符数;如果为负数,则该数字表示要换行的最小字符数。

  • delimiter_string -要换行的可选分隔符字符串。

实例

  • wordwrap('UNIVERSITY OF QGIS',13) →‘<br>昆士兰大学’

  • wordwrap('UNIVERSITY OF QGIS',-3) →‘大学<br>of QGIS’

13.2.26. 用户表达式

此组包含保存为的表达式 user expressions

13.2.27. 变数

此组包含与应用程序、项目文件和其他设置相关的动态变量。变量的可用性取决于上下文:

  • 表达式选择 Select by expression 对话框

  • 计算字段 Field calculator 对话框

  • 从图层属性对话框中

  • 从打印版面

若要在表达式中使用这些变量,应在它们之前加上 @ 字符(例如, @row_number )。

变量

描述

algorithm_id

算法的唯一ID

animation_end_time

动画的整个时间范围的结束(作为日期时间值)

animation_interval

动画的整个时间范围的持续时间(作为间隔值)

animation_start_time

动画整体时间范围的开始(作为DateTime值)

atlas_feature

当前地图集要素(作为要素对象)

atlas_featureid

当前地图集要素ID

atlas_featurenumber

布局中的当前地图集要素编号

atlas_filename

当前地图集文件名

atlas_geometry

当前地图集要素几何

atlas_layerid

当前地图集Coverage图层ID

atlas_layername

当前地图集Coverage图层名称

atlas_pagename

当前的地图集页面名称

atlas_totalfeatures

Atlas中的要素总数

canvas_cursor_point

项目地理坐标中画布上的最后一个光标位置

cluster_color

群集中符号的颜色,如果符号具有混合颜色,则为NULL

cluster_size

簇中包含的符号数

current_feature

当前在属性表单或表行中编辑的要素

current_geometry

表单或表行中当前正在编辑的要素的几何

current_parent_feature

表示父窗体中当前正在编辑的功能。仅在嵌入的表单上下文中可用。

current_parent_geometry

表示父窗体中当前正在编辑的要素的几何图形。仅在嵌入的表单上下文中可用。

form_mode

表单的用途,如AddFeatureMode、SingleEditMode、MultiEditMode、SearchMode、AggregateSearchModel或作为字符串的标识模式。

特征

正在评估的当前功能。这可以与‘ATTRIBUTE’函数一起使用,以评估当前特征的属性值。

frame_duration

每个动画帧的时间持续时间(作为间隔值)

frame_number

动画播放过程中的当前帧编号

frame_rate

动画播放过程中每秒的帧数

fullextent_maxx

全画布范围(包括所有层)的最大x值

fullextent_maxy

全画布范围(包括所有层)的最大y值

fullextent_minx

全画布范围的最小x值(包括所有层)

fullextent_miny

全画布范围(包括所有层)的最小y值

几何学

要评估的当前要素的几何

geometry_part_count

渲染要素几何图形中的部件数

geometry_part_num

正在渲染的特征的当前几何图形零件代号

geometry_point_count

渲染的几何体部分中的点数

geometry_point_num

渲染几何图形部分中的当前点编号

geometry_ring_num

正在渲染的要素的当前几何图形环形编号(仅适用于多边形要素)。外环的值为0。

grid_axis

当前栅格注释轴(例如,‘x’代表经度,‘y’代表纬度)

grid_number

当前格网注释值

ID

正在评估的当前要素的ID

item_id

布局项目用户ID(不一定唯一)

item_uuid

布局项唯一ID

图层

当前层

layer_crs

当前图层的坐标参考系权限ID

layer_crs_ellipsoid

当前层CRS的椭球体权限ID

layer_id

当前层的ID

layer_ids

当前项目中所有地图图层的ID列表

layer_name

当前层的名称

层层

以列表形式显示当前项目中的所有地图图层

layout_dpi

合成分辨率(DPI)

layout_name

布局名称

layout_numpages

布局中的页数

layout_page

布局中当前项目的页码

layout_pageheight

布局中的活动页面高度(对于标准纸张大小,以毫米为单位;对于自定义纸张大小,以任何单位表示)

layout_pageoffsets

每页顶部的Y坐标数组。允许在页面大小可能发生变化的上下文中动态定位页面上的项目

layout_pagewidth

布局中的活动页面宽度(对于标准纸张大小,以毫米为单位;对于自定义纸张大小,以任何单位表示)

legend_column_count

图例中的列数

legend_filter_by_map

指示是否按地图过滤图例内容

legend_filter_out_atlas

指示是否从图例中过滤出地图集

legend_split_layers

指示是否可以在图例中拆分图层

legend_title

传说的标题

legend_wrap_string

用于换行图例文本的字符(S)

map_crs

当前地图的坐标参考系

map_crs_acronym

当前地图的坐标参考系的缩写

map_crs_definition

当前地图的坐标参考系的完整定义

map_crs_description

当前地图的坐标参考系的名称

map_crs_ellipsoid

当前地图的坐标参考系的椭球体的缩写

map_crs_proj4

当前地图的坐标参考系的Proj4定义

map_crs_projection

地图的坐标参考系使用的投影方法的描述性名称(例如‘阿尔伯斯等面积’)

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

地图的时间范围的持续时间(以间隔值表示)

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

提供程序发送的通知消息的内容(仅适用于提供程序通知触发的操作)。

亲本

引用父层中的当前要素,在过滤时提供对其属性和几何的访问 aggregate 功能

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(熟知文本)表示

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

Q地理信息系统的通用语言

qgis_os_name

当前操作系统名称,例如‘windows’、‘linux’或‘osx’

qgis_platform

QGIS平台,如‘桌面’或‘服务器’

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

当前用户的操作系统帐户名

user_full_name

当前用户的操作系统用户名

价值

当前值

vector_tile_zoom

正在渲染的地图的精确向量平铺缩放级别(从当前地图比例派生)。通常在时间间隔内 [0, 20] 。与@ZOOM_LEVEL不同,该变量是一个浮点值,可用于在两个整数缩放级别之间插入值。

with_variable

允许设置变量以在表达式中使用,并避免重复计算相同的值

zoom_level

正在渲染的地图的矢量平铺缩放级别(从当前地图比例派生)。通常在时间间隔内 [0, 20] 。

Some examples:

  • 返回布局中地图项中心的X坐标::

    x( map_get( item_variables( 'map1'), 'map_extent_center' ) )
    
  • 为当前层中的每个要素返回重叠的机场要素数:

    aggregate( layer:='airport', aggregate:='count', expression:="code",
                   filter:=intersects( $geometry, geometry( @parent ) ) )
    
  • 获取直线的第一个捕捉点的对象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.28. 最近的函数

此组包含最近使用的函数。根据其使用的上下文(功能选择、字段计算器、通用),最近应用的表达式被添加到相应的列表(最多十个表达式),从多到少排序。这使得快速检索和重新应用以前使用的表达式变得很容易。