14.2. Expressões

Com base nos dados da camada e nas funções predefinidas ou definidas pelo usuário, Expressões oferece uma maneira poderosa de manipular valor, geometria e variáveis ​​de atributos, a fim de alterar dinamicamente o estilo da geometria, o conteúdo ou a posição do rótulo, o valor do diagrama, a altura de um item de layout, selecionar alguns recursos, criar um campo virtual …

14.2.1. O Construtor de expressão string

A plataforma principal para construir expressões, o Expression string builder está disponível em muitas partes no QGIS e, pode ser acessado quando:

  • clicando no botão expressão;

  • ref:selecionando feições<sec_selection> com a ferramenta expressionSelect Selecionar por Expressão…;

  • editando atributos com a ferramenta calculateField Calculadora de Campo;

  • manipulação de parâmetros de simbologia, rótulo ou item de layout com a ferramenta dataDefined Substituição de dados definida (veja Data defined override setup);

  • Construindo uma camada de símbolo de geradora de geometria ;

  • Realizando algum geoprocessamento.

A plataforma de Construção de Expressão oferece acesso a:

  • Aba de Expressão, a qual ajuda a escrever e verificar a expressão a ser usada, graças a uma lista predefinida de funções;

  • Aba de Editor de Função a qual ajuda a expandir a lista de funções por meio de criações customizadas de novas funções.

Alguns casos de usos das Expressões:

  • A partir da Calculadora de Campo, calcula-se um campo de densidade populacional (“pop_density”) usando os campos existentes de população (“total_pop”) e de área (“area_km2”):

    "total_pop" / "area_km2"
    
  • Atualiza-se o campo sobre nível de densidade (“density_level”) com categorias de acordo com os valores da densidade (“pop_density”):

    CASE WHEN "pop_density" < 50 THEN 'Low population density'
         WHEN "pop_density" >= 50 and "pop_density" < 150 THEN 'Medium population density'
         WHEN "pop_density" >= 150 THEN 'High population density'
    END
    
  • Update a region layer field with the names (comma separated) of contained airports:

    aggregate('airport_layer', 'concatenate', "name", within($geometry, geometry(@parent)), ', ')
    
  • Aplica-se um estilo categorizado para todas as feições de acordo com condição do valor médio da casa ser maior ou maior do que 10000€ por metro quadrado:

    "price_m2" > 10000
    
  • Usando a ferramenta “Selecionar por Expressão…”, seleciona-se todas as feições representativas de áreas de “Alta densidade populacional” e as quais possuem valor médio da casa maior do que 10000€ por metro 2:

    "density_level" = 'High population density' and "price_m2" > 10000
    

    Do mesmo modo, a expressão anterior poderia também ser usada para definir quais feições deveriam ser rotuladas ou mostradas no mapa.

Usar expressões permite a você um monte de possibilidades.

Dica

Use Parâmetros Nomeados para aperfeiçoar a leitura da expressão

Algumas funções exigem a configuração de inúmeros parâmetros. O mecanismo de Expressão suporta o uso de Parâmetros nomeados. Isto significa que ao invés de escrever a expressão criptografada clamp( 1, 2, 9), você pode usar clamp( min:=1, value:=2, max:=9). Isto permite que os argumentos sejam trocados, por exemplo, clamp( value:=2, max:=9, min:=1). Usar Parâmetros nomeados ajuda a esclarecer ao que os argumentos de uma função se referem, o que pode ser útil quando você estará tentando interpretar uma função no futuro.

14.2.2. Lista de funções

A guia Expressão fornece a interface principal para escrever expressões usando funções, campos e valores da camada. Ele contém os seguintes widgets:

  • Uma área do editor de expressão para digitar ou colar expressões. O preenchimento automático está disponível para acelerar a escrita de expressões:

    • Variáveis ​​correspondentes, nomes de funções e nomes de campos para o texto de entrada são mostrados abaixo: use as setas Up e Down para navegar pelos itens e pressione Tab para inserir na expressão ou basta clicar no item desejado.

    • Os parâmetros de função são mostrados ao preenchê-los.

    O QGIS também verifica a correção da expressão e destaca todos os erros usando:

    • Sublinhado: para funções desconhecidas, argumentos errados ou inválidos;

    • Marcador: para todos os outros erros (por exemplo, parênteses ausentes, caracteres inesperados) em um único local.

    Dica

    Documente sua expressão com comentários

    Ao usar expressões complexas, é uma boa prática adicionar texto como um comentário com várias linhas ou comentários embutidos para ajudá-lo a se lembrar.

    /*
    Labels each region with its highest (in altitude) airport(s)
    and altitude, eg 'AMBLER : 264m' for the 'Northwest Artic' region
    */
    with_variable(
      'airport_alti', -- stores the highest altitude of the region
      aggregate(
        'airports',
        'max',
        "ELEV", -- the field containing the altitude
        -- and limit the airports to the region they are within
        filter := within( $geometry, geometry( @parent ) )
      ),
        aggregate( -- finds airports at the same altitude in the region
          'airports',
          'concatenate',
          "NAME",
          filter := within( $geometry, geometry( @parent ) )
            and "ELEV" = @airport_alti
        )
        || ' : ' || @airport_alti || 'm'
        -- using || allows regions without airports to be skipped
    )
    
  • Sob o editor de expressão, Pré-visualização da Saída exibe o resultado da expressão avaliada na primeira feição da camada. Em caso de erro, este é indicado e você pode acessar os detalhes com o hiperlink fornecido.

  • Um seletor de funções exibe a lista de funções, variáveis, campos … organizados em grupos. Está disponível uma caixa de pesquisa para filtrar a lista e encontrar rapidamente uma função ou campo específico. Clicar duas vezes em um item o adiciona ao editor de expressão.

  • Um painel de ajuda exibe ajuda para cada item selecionado no seletor de funções.

    Dica

    Pressione Ctrl+Click ao passar com o mouse sobre o nome de uma função em uma expressão para exibir automaticamente sua ajuda na caixa de diálogo.

    O widget de valores de um campo mostrado quando um campo é selecionado no seletor de funções ajuda a buscar atributos de feições. Clicar duas vezes em um valor adiciona-o ao editor de expressão.

    Dica

    O painel direito, mostrando as funções de ajuda ou valores de campo, pode ser recolhido (invisível) na caixa de diálogo. Pressione o botão Mostrar valores ou Mostrar ajuda para recuperá-lo.

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

Fig. 14.65 A guia Expressão

14.2.2.1. Funções Agregadas

Este grupo contém funções que agregam valores em camadas e campos.

Função

Descrição

aggregate

Retorna um valor agregado calculado usando feições de outra camada

array_agg

Retorna uma matriz de valores agregados de um campo ou expressão

collect

Retorna a geometria multipartes de geometrias agregadas de uma expressão

concatenate

Retorna todas as strings de caracteres agregadas de um campo ou expressão unida por um delimitador

concatenate_unique

Retorna todas as strings agregadas exclusivas de um campo ou expressão unida por um delimitador

count

Retorna a contagem de feições correspondentes

count_distinct

Retorna a contagem de valores distintos

count_missing

Retorna a contagem de valores ausentes (nulos)

iqr

Retorna o intervalo interquartil calculado de um campo ou expressão

majority

Retorna a maioria agregada dos valores (valor que ocorre com mais frequência) de um campo ou expressão

max_length

Retorna o comprimento máximo de strings de um campo ou expressão

maximum

Retorna o valor máximo agregado de um campo ou expressão

mean

Retorna o valor médio agregado de um campo ou expressão

median

Retorna a mediana agregada de um campo ou expressão

min_length

Retorna o comprimento mínimo de strings de um campo ou expressão

minimum

Retorna o valor mínimo agregado de um campo ou expressão

minority

Retorna a minoria agregada de valores (valor que ocorre menos frequentemente) de um campo ou expressão

q1

Retorna o primeiro quartil calculado de um campo ou expressão

q3

Retorna o terceiro quartil calculado de um campo ou expressão

range

Retorna o intervalo agregado de valores (máximo - mínimo) de um campo ou expressão

relation_aggregate

Retorna um valor agregado calculado usando todas as feições filhas correspondentes de uma relação de camada

stdev

Retorna o valor agregado do desvio padrão de um campo ou expressão

sum

Retorna o valor agregado agregado de um campo ou expressão

Exemplos:

  • Retorne o máximo do campo “passengers” dos recursos da camada agrupada pelo campo “station_class”:

    maximum("passengers", group_by:="station_class")
    
  • Calcule o número total de passageiros para as estações dentro da feição atlas atual:

    aggregate('rail_stations','sum',"passengers",
      intersects(@atlas_geometry, $geometry))
    
  • Retorne a média do campo “field_from_related_table” para todos os recursos filhos correspondentes usando a relação ‘my_relation’ da camada:

    relation_aggregate('my_relation', 'mean', "field_from_related_table")
    

    ou:

    relation_aggregate(relation:='my_relation', aggregate := 'mean',
      expression := "field_from_related_table")
    

14.2.2.2. Funções Array

Este grupo contém funções para criar e manipular arrays (também conhecidas como estruturas de dados da lista). A ordem dos valores no array é importante, diferentemente da ‘map’ data structure, onde a ordem dos pares chave-valor é irrelevante e os valores são identificados por suas chaves.

Função

Descrição

array

Retorna um array contendo todos os valores passados ​​como parâmetro

array_all

Retorna true se um array contiver todos os valores de um determinado array

array_append

Retorna um array com o valor agregado adicionado no final

array_cat

Retorna um array contendo todos os arrays fornecidos concatenados

array_contains

Retorna true se um array contiver o valor especificado

array_distinct

Retorna um array contendo valores distintos do array especificado

array_filter

Retorna um array com apenas os itens para os quais uma expressão é avaliada como verdadeira

array_find

Retorna o índice (0 para o primeiro) de um valor dentro de um array. Retorna -1 se o valor não for encontrado.

array_first

Retorna o primeiro valor de um array

array_foreach

Retorna um array com a expressão especificada avaliada em cada item

array_get

Retorna o valor enésimo (0 para o primeiro) de um array

array_insert

Retorna um array com o valor agregado especificado na posição especificada

array_intersect

Retorna true se qualquer elemento do array_1 existir no array_2

array_last

Retorna o último elemento de um array

array_length

Retorna o número de elementos de um array

array_prepend

Retorna um array com o valor dado adicionado no início

array_remove_all

Retorna um array com todas as entradas do valor dado removidas

array_remove_at

Retorna um array com o índice dado removido

array_reverse

Retorna o array dado com os valores do array em ordem inversa

array_slice

Retorna os valores do array do argumento start_pos até e incluindo o argumento end_pos

array_sort

Retorna o array fornecido com seus elementos classificados

array_to_string

Concatena elementos do array em uma string separada por um delimitador e usando a string opcional para valores vazios

generate_series

Cria um array contendo uma sequência de números

regexp_matches

Retorna um array de todas as strings capturadas pela captura de grupos, na ordem em que os próprios grupos aparecem na expressão regular fornecida em uma string

string_to_array

Divide a string em um array usando o delimitador fornecido e a string opcional para valores vazios

14.2.2.3. Funções Cor

Este grupo contém funções para manipulação de cores.

Função

Descrição

color_cmyk

Retorna uma representação de string de caracteres de uma cor com base em seus componentes ciano, magenta, amarelo e preto

color_cmyka

Retorna uma representação de string de caracteres de uma cor com base em seus componentes ciano, magenta, amarelo, preto e alfa (transparência)

color_grayscale_average

Aplica um filtro em escala de cinza e retorna uma representação de string de uma cor fornecida

color_hsl

Retorna uma representação de string de uma cor com base em seus atributos de matiz, saturação e brilho

color_hsla

Retorna uma representação de string de uma cor com base em seus atributos de matiz, saturação, brilho e alfa (transparência)

color_hsv

Retorna uma representação de string de uma cor com base em seus atributos de matiz, saturação e valor

color_hsva

Retorna uma representação de string de uma cor com base em seus atributos de matiz, saturação, valor e alfa (transparência)

color_mix_rgb

Retorna uma string que representa uma cor que mistura os valores vermelho, verde, azul e alfa de duas cores fornecidas com base em uma determinada proporção

color_part

Retorna um componente específico de uma string de cor, por exemplo, o componente vermelho ou o componente alfa

color_rgb

Retorna uma representação de string de uma cor com base em seus componentes vermelho, verde e azul

color_rgba

Retorna uma representação de string de uma cor com base em seus componentes vermelho, verde, azul e alfa (transparência)

create_ramp

Retorna uma rampa de gradiente a partir de um mapa de strings de cores e incrementos

darker

Retorna uma string de cor mais escura (ou mais clara)

lighter

Retorna uma string de cor mais clara (ou mais escura)

project_color

Retorna uma cor do esquema de cores do projeto

ramp_color

Retorna uma string que representa uma cor de uma rampa de cores

set_color_part

Define um componente de cor específico para uma string de cor, por exemplo, o componente vermelho ou o componente alfa

14.2.2.4. Funções Condicionais

Este grupo contém funções para lidar com verificações condicionais em expressões.

Função

Descrição

CASE WHEN … THEN … END

Avalia uma expressão e retorna um resultado se verdadeiro. Você pode testar várias condições

CASE WHEN … THEN … ELSE … END

Avalia uma expressão e retorna um resultado diferente, se for verdadeiro ou falso. Você pode testar várias condições

coalesce

Retorna o primeiro valor diferente de NULL da lista de expressões

if

Testa uma condição e retorna um resultado diferente, dependendo da verificação condicional

nullif(value1, value2)

Retorna um valor nulo se value1 for igual a value2, caso contrário, retornará value1. Isso pode ser usado para substituir condicionalmente valores por NULL.

try

Tenta uma expressão e retorna seu valor se estiver livre de erros, um valor alternativo (se fornecido) ou Nulo se ocorrer um erro

Alguns exemplos:

  • Enviar de volta um valor se a primeira condição é verdade, outra coisa manda outro valor:

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

14.2.2.5. Funções de Conversão

Este grupo contém funções para converter um tipo de dado para outro (por exemplo, texto para inteiro, inteiro para texto).

Função

Descrição

to_date

Converte uma string em um objeto de data

to_datetime

Converte uma string em um objeto de date e hora

to_dm

Converte uma coordenada em grau, minuto

to_dms

Converte coordenadas em graus, minutos, segundos

to_int

Converte uma string em número inteiro

to_interval

Converte uma string em um tipo de intervalo (pode ser usado para dias, horas, meses etc. de uma data)

to_real

Converte uma string em um número real

to_string

Converte número para string

to_time

Converte uma string em um objeto de tempo

14.2.2.6. Funções Personalizadas

Este grupo contém funções criadas pelo usuário. Veja Editor de Funções para mais detalhes.

14.2.2.7. Funções Data e Hora

Este grupo contém funções para trabalhar datas e hora data.

Função

Descrição

age

Retorna como intervalo a diferença entre duas datas ou data/hora

day

Extrai o dia de uma data ou data/hora, ou o número de dias de um intervalo

day_of_week

Retorna um número correspondente ao dia da semana para uma data ou data/hora especificada

epoch

Retorna o intervalo em milissegundos entre a época unix e um determinado valor de data

hour

Extrai a parte da hora de uma data/hora ou tempo, ou o número de horas de um intervalo

minute

Extrai a parte dos minutos de uma data/hora ou tempo, ou o número de minutos de um intervalo

month

Extrai a parte do mês de uma data ou data/hora ou o número de meses de um intervalo

now

Retorna data e hora atuais

second

Extrai a parte dos segundo de uma data/hora ou horário, ou o número de segundos de um intervalo

week

Extrai o número da semana de uma data ou data/hora ou o número de semanas de um intervalo

year

Extrai a parte do ano de uma data ou data/hora ou o número de anos de um intervalo

Este grupo também compartilha várias funções com os grupos Funções de Conversão ( to_date, to_time, to_datetime, to_interval) e Funções String (format_date).

Alguns exemplos:

  • Obtenha o mês e o ano de hoje no formato “month_number/year”:

    format_date(now(),'MM/yyyy')
    -- Returns '03/2017'
    

Além dessas funções, subtrair datas, datas ou horas usando o operador - (menos) retornará um intervalo.

Adicionar ou subtrair um intervalo a datas, data/hora ou horas, usando os operadores + (mais) e - (menos), retornará uma data/hora.

  • Obtenha o número de dias até o lançamento do QGIS 3.0:

    to_date('2017-09-29') - to_date(now())
    -- Returns <interval: 203 days>
    
  • O mesmo com o tempo:

    to_datetime('2017-09-29 12:00:00') - to_datetime(now())
    -- Returns <interval: 202.49 days>
    
  • Obtenha a data/hora de 100 dias a partir de agora:

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

Nota

Armazenando data e data/hora e intervalos em campos

A capacidade de armazenar data, hora e data/hora diretamente nos campos pode depender do provedor da fonte de dados (por exemplo, o Shapefile aceita o formato data, mas não o formato data/hora ou hora). A seguir, são apresentadas algumas sugestões para superar essa limitação:

  • data, date/hora e hora podem ser armazenados nos campos de tipo de texto após o uso da função to_format().

  • Intervalos podem ser armazenados em campos do tipo inteiro ou decimal após o uso de uma das funções de extração de data (por exemplo, day() para obter o intervalo expresso em dias)

14.2.2.8. Campos e Valores

Contém uma lista de campos da camada.

Clique duas vezes no nome de um campo para adicioná-lo à sua expressão. Você também pode digitar o nome do campo (de preferência entre aspas duplas) ou seu alias.

Para recuperar os valores dos campos a serem usados ​​em uma expressão, selecione o campo apropriado e, no widget mostrado, escolha entre 10 Amostras e Todos os Únicos. Os valores solicitados são exibidos e você pode usar a caixa Pesquisar na parte superior da lista para filtrar o resultado. Valores de amostra também podem ser acessados ​​clicando com o botão direito do mouse em um campo.

Para adicionar um valor à expressão que você está escrevendo, clique duas vezes nela na lista. Se o valor for de um tipo de string, deve ser simples entre aspas, caso contrário, nenhuma citação será necessária.

14.2.2.9. Funções de Arquivos e Caminhos

Este grupo contém funções que manipulam nomes de arquivos e caminhos.

Função

Descrição

base_file_name

Retorna o nome base do arquivo sem o diretório ou sufixo do arquivo.

file_exists

Retorna verdadeiro se existir um caminho de arquivo.

file_name

Retorna o nome de um arquivo (incluindo a extensão do arquivo), excluindo o diretório.

file_path

Retorna o componente de diretório de um caminho de arquivo, sem o nome do arquivo

file_size

Retorna o tamanho (em bytes) de um arquivo.

file_suffix

Retorna a extensão do arquivo de um caminho.

is_directory

Retorna verdadeiro se um caminho corresponder a um diretório.

is_file

Retorna verdadeiro se um caminho corresponder a um arquivo.

14.2.2.10. Fuzzy Matching Functions

This group contains functions for fuzzy comparisons between values.

Função

Descrição

hamming_distance

Retorna o número de caracteres nas posições correspondentes nas strings de entrada em que os caracteres são diferentes

levensheim

Retorna o número mínimo de edições de caracteres (inserções, exclusões ou substituições) necessárias para alterar uma string para outra. Mede a semelhança entre duas strings

longest_common_substring

Retorna a substring comum mais longa entre duas strings

soundex

Retorna a representação Soundex de uma string

14.2.2.11. Funções Gerais

Este grupo contém funções gerais variadas.

Função

Descrição

env

Obtém uma variável de ambiente e retorna seu conteúdo como uma string. Se a variável não for encontrada, NULL será retornado.

eval

Avalia uma expressão que é passada em uma string. Útil para expandir parâmetros dinâmicos passados ​​como campos ou variáveis ​​de contexto.

is_layer_visible

Retorna verdadeiro se uma camada especificada estiver visível

layer_property

Retorna uma propriedade de uma camada ou um valor de seus metadados. Pode ser o nome da camada, src, tipo de geometria, contagem de feições…

var

Retorna o valor armazenado em uma variável especificada. Veja Variáveis abaixo

with_variable

Cria e define uma variável para qualquer código de expressão que será fornecido como um terceiro argumento. Útil para evitar repetições em expressões em que o mesmo valor precisa ser usado mais de uma vez.

14.2.2.12. Funções Geometria

Este grupo contém funções que operam em objetos de geometria (por exemplo, buffer, transform, $ área).

Função

Descrição

$area

Retorna o tamanho da área da feição atual

$geometry

Retorna a geometria da feição atual (pode ser usado para processamento com outras funções)

$length

Retorna o comprimento da feição de linha atual

$perimeter

Retorna o perímetro da feição de polígono atual

$x

Retorna a coordenada X da feição atual

$x_at(n)

Retorna a coordenada X do enésimo nó da geometria da feição atual

$y

Retorna a coordenada Y da feição atual

$y_at(n)

Retorna a coordenada Y do enésimo nó da geometria da feição atual

angle_at_vertex

Retorna o ângulo da bissetriz (ângulo médio) para a geometria para um vértice especificado em uma geometria de linhas. Os ângulos estão em graus no sentido horário do norte

area

Retorna a área de uma feição de geometria de polígono . Os cálculos estão no Sistema de Referência Espacial desta geometria

azimuth

Retorna o azimute baseado no norte como o ângulo em radianos medido no sentido horário da vertical em point_a a point_b

boundary

Retorna o fechamento do limite combinatório da geometria (isto é, o limite topológico da geometria - veja também Boundary).

bounds

Retorna uma geometria que representa a caixa delimitadora de uma geometria de entrada. Os cálculos estão no Sistema de Referência Espacial desta geometria (veja também Bounding boxes)

bounds_height

Retorna a altura da caixa delimitadora de uma geometria. Os cálculos estão no Sistema de Referência Espacial desta geometria

bounds_width

Retorna a largura da caixa delimitadora de uma geometria. Os cálculos estão no Sistema de Referência Espacial desta geometria

buffer

Retorna uma geometria que representa todos os pontos cuja distância dessa geometria é menor ou igual à distância. Os cálculos estão no sistema de referência espacial desta geometria (veja também Buffer)

buffer_by_m

Cria um buffer ao longo de uma geometria de linha em que o diâmetro do buffer varia de acordo com os valores M nos vértices da linha (veja também Variable width buffer (by M value))

centroid

Retorna o centro geométrico de uma geometria (veja também Centroids)

closest_point

Retorna o ponto em uma geometria mais próxima de uma segunda geometria

collect_geometries

Coleta um conjunto de geometrias em um objeto de geometria com várias partes (veja também Collect geometries)

combine

Retorna a combinação de duas geometrias

contains(a,b)

Retorna 1 (verdadeiro) se e somente se nenhum ponto de b estiver no exterior de a e pelo menos um ponto do interior de b estiver no interior de a

convex_hull

Returns the convex hull of a geometry (this represents the minimum convex geometry that encloses all geometries within the set) (see also Convex hull)

crosses

Retorna 1 (verdadeiro) se as geometrias fornecidas tiverem alguns, mas não todos, pontos interiores em comum

difference(a,b)

Retorna uma geometria que representa a parte da geometria a que não se cruza com a geometria b (veja tambéms Difference)

disjoint

Retorna 1 (verdadeiro) se as geometrias não compartilharem nenhum espaço juntas

distance

Retorna a distância mínima (com base no Sistema de Referência Espacial) entre duas geometrias em unidades projetadas

distance_to_vertex

Retorna a distância ao longo da geometria para um vértice especificado

end_point

Retorna o último nó de uma geometria (veja também Extract specific vertices)

extend

Aumenta o início e o fim de uma geometria de uma linha em uma quantidade especificada (veja também Extend lines)

exterior_ring

Retorna uma string de linhas que representa o anel externo de uma geometria de polígono ou nula se a geometria não for um polígono

extrude(geom,x,y)

Retorna uma versão extrudida da geometria de entrada (Multi) Curva ou (Multi) Linhas com uma extensão especificada por X e Y

flip_coordinates

Retorna uma cópia da geometria com as coordenadas X e Y trocadas (veja também Swap X and Y coordinates)

force_rhr

Força uma geometria a respeitar a Regra da Mão Direita (veja também Force right-hand-rule)

geom_from_gml

Retorna uma geometria criada a partir de uma representação GML da geometria

geom_from_wkt

Retorna uma geometria criada a partir de uma representação de texto bem conhecido (WKT)

geom_to_wkt

Retorna a representação de texto bem conhecido (WKT) da geometria sem metadados SRID

geometry

Retorna a geometria de uma feição

geometry_n

Retorna a enésima geometria de uma coleção de geometrias ou nula se a geometria de entrada não for uma coleção

hausdorff_distance

Retorna basicamente uma medida de quão semelhantes ou diferentes são duas geometrias, com uma distância menor indicando geometrias mais semelhantes

inclination

Retorna a inclinação medida do zênite (0) ao nadir (180) no ponto_a ao ponto_b

interior_ring_n

Retorna a geometria do enésimo anel interno de uma geometria de polígono ou nula se a geometria não for um polígono

intersection

Retorna uma geometria que representa a parte compartilhada de duas geometrias (veja também Intersection)

intersects

Testa se uma geometria cruza outra. Retorna 1 (verdadeiro) se as geometrias se cruzam espacialmente (compartilham qualquer parte do espaço) e 0 se não o fizerem

intersects_bbox

Testa se a caixa delimitadora de uma geometria se sobrepõe à caixa delimitadora de outra geometria. Retorna 1 (verdadeiro) se as geometrias se cruzam espacialmente (compartilham qualquer parte do espaço) sua caixa delimitadora ou 0 se não o fizerem

is_closed

Retorna true se uma string de linha estiver fechada (os pontos inicial e final são coincidentes), false se uma string de linha não estiver fechada ou null se a geometria não for uma string de linha

length

Retorna o comprimento de uma feição de geometria de linha (ou o comprimento de uma string)

line_interpolate_angle

Retorna o ângulo paralelo à geometria a uma distância especificada ao longo de uma geometria de linhas. Os ângulos estão em graus no sentido horário do norte.

line_interpolate_point

Retorna o ponto interpolado por uma distância especificada ao longo de uma geometria de linhas. (veja também Interpolate point on line)

line_locate_point

Retorna a distância ao longo de uma linha correspondente à posição mais próxima da linha a uma geometria de ponto especificada.

line_merge

Returns a (Multi-)LineString geometry, where any connected LineStrings from the input geometry have been merged into a single linestring.

line_substring

Retorna a parte de uma geometria de linha ou curva que cai entre as distâncias inicial e final especificadas (medidas desde o início da linha) (veja também Line substring)

m

Retorna o valor M de uma geometria de ponto

make_circle

Cria uma geometria circular com base no ponto central e raio

make_ellipse

Cria uma geometria elíptica com base no ponto central, eixos e azimute

make_line

Cria uma geometria de linha a partir de uma série ou de um array de geometrias de pontos

make_point(x,y,z,m)

Retorna uma geometria de ponto a partir dos valores X e Y (e Z ou M opcionais)

make_point_m(x,y,m)

Retorna uma geometria de ponto das coordenadas X e Y e valores M

make_polygon

Cria uma geometria de polígono a partir de um anel externo e uma série opcional de geometrias de anel interno

make_rectangle_3points

Cria um retângulo a partir de 3 pontos

make_regular_polygon

Cria um polígono regular

make_square

Cria um quadrado a partir de uma diagonal

make_triangle

Cria um polígono triangular

minimal_circle

Retorna o círculo mínimo de uma geometria de entrada (veja também Minimum enclosing circles)

nodes_to_points

Retorna uma geometria multiponto que consiste em cada nó na geometria de entrada (veja também Extract vertices)

num_geometries

Retorna o número de geometrias em uma coleção de geometrias ou nulo se a geometria de entrada não for uma coleção

num_interior_rings

Retorna o número de anéis internos em uma coleção de polígonos ou geometria ou nulo se a geometria de entrada não for um polígono ou coleção

num_points

Retorna o número de vértices em uma geometria

num_rings

Retorna o número de anéis (incluindo anéis externos) em uma coleção de geometria ou polígono, ou nulo se a geometria de entrada não for uma coleção ou polígono

offset_curve

Retorna uma geometria formada deslocando uma geometria de linhas para o lado. As distâncias estão no Sistema de Referência Espacial desta geometria. (veja também Offset lines)

order_parts

Ordena as partes de um MultiGeometry por um determinado critério

oriented_bbox

Retorna uma geometria que representa a caixa delimitadora orientada mínima de uma geometria de entrada (veja também Oriented minimum bounding box)

overlaps

Testa se uma geometria se sobrepõe a outra. Retorna 1 (verdadeiro) se as geometrias compartilham espaço, têm a mesma dimensão, mas não são completamente contidas uma pela outra

perimeter

Retorna o perímetro de uma feição de polígono de geometria. Os cálculos estão no Sistema de Referência Espacial desta geometria

point_n

Retorna um nó específico de uma geometria (veja também Extract specific vertices)

point_on_surface

Retorna um ponto que, com certeza, fica na superfície de uma geometria (veja também Point on Surface)

pole_of_inaccessibility

Calcula o pólo aproximado de inacessibilidade para uma superfície, que é o ponto interno mais distante do limite da superfície (veja também Pole of inaccessibility)

project

Returns a point projected from a start point using a distance, a bearing (azimuth) and an elevation in radians (see also Project points (Cartesian))

relate

Testa ou retorna a representação do Dimensional Extended 9 Intersection Model (DE-9IM) do relacionamento entre duas geometrias

reverse

Inverte a direção de uma string de linhas invertendo a ordem de seus vértices (veja também Reverse line direction)

segments_to_lines

Retorna uma geometria multi linhas que consiste em uma linha para cada segmento na geometria de entrada (veja também Explode lines)

shortest_line

Retorna a linha mais curta que une duas geometrias. A linha resultante começará na geometria 1 e terminará na geometria 2

simplify

Simplifica uma geometria removendo nós usando um limite baseado em distância (veja também Simplify)

simplify_vw

Simplifica uma geometria removendo nós usando um limite baseado em área (veja também Simplify)

single_sided_buffer

Retorna uma geometria formada fazendo um buffer em apenas um lado de uma geometria de linhas. As distâncias estão no Sistema de Referência Espacial desta geometria (veja também Single sided buffer)

smooth

Suaviza uma geometria adicionando nós extras que arredondam os cantos da geometria (veja também Smooth)

start_point

Retorna o primeiro nó de uma geometria (veja também Extract specific vertices)

sym_difference

Retorna uma geometria que representa as partes de duas geometrias que não se cruzam (veja também Symmetrical difference)

tapered_buffer

Cria um buffer ao longo de uma geometria de linha em que o diâmetro do buffer varia uniformemente ao longo do comprimento da linha (veja também Tapered buffers)

touches

Testa se uma geometria toca outra. Retorna 1 (verdadeiro) se as geometrias tiverem pelo menos um ponto em comum, mas seus interiores não se cruzam

transform

Retorna a geometria transformada do SRC de origem no SRC de destino (veja também Reproject layer)

translate

Retorna uma versão traduzida de uma geometria. Os cálculos estão no Sistema de Referência Espacial da geometria (veja também Translate)

union

Retorna uma geometria que representa a união do conjunto de pontos das geometrias

wedge_buffer

Retorna um buffer em forma de cunha originário de uma geometria de ponto, dada um ângulo e raios (veja também Create wedge buffers)

within (a,b)

Testa se uma geometria está dentro de outra. Retorna 1 (verdadeiro) se a geometria a estiver completamente dentro da geometria b

x

Retorna a coordenada X de uma geometria de ponto ou a coordenada X do centróide para uma geometria que não seja de ponto

x_max

Retorna a coordenada X máxima de uma geometria. Os cálculos estão no Sistema de Referência Espacial desta geometria

x_min

Retorna a coordenada X mínima de uma geometria. Os cálculos estão no Sistema de Referência Espacial desta geometria

y

Retorna a coordenada Y de uma geometria de ponto ou a coordenada Y do centróide para uma geometria que não seja de ponto

y_max

Retorna a coordenada Y máxima de uma geometria. Os cálculos estão no Sistema de Referência Espacial desta geometria

y_min

Retorna a coordenada Y mínima de uma geometria. Os cálculos estão no Sistema de Referência Espacial desta geometria

z

Retorna a coordenada Z de uma geometria de ponto

Alguns exemplos:

  • Retorna a coordenada X do centróide da feição atual:

    x( $geometry )
    
  • Devolve um valor de acordo com a área da feição:

    CASE WHEN $area > 10 000 THEN 'Larger' ELSE 'Smaller' END
    
  • Você pode manipular a geometria atual usando a variável $geometry para criar um buffer ou obter um ponto na superfície da geometria:

    buffer( $geometry, 10 )
    point_on_surface( $geometry )
    
  • Dado uma feição de ponto, gere uma linha fechada (usando make_line) em torno da geometria de ponto:

    make_line(
      -- using an array of points placed around the original
      array_foreach(
        -- list of angles for placing the projected points (every 90°)
        array:=generate_series( 0, 360, 90 ),
        -- translate the point 20 units in the given direction (angle)
        expression:=project( $geometry, distance:=20, azimuth:=radians( @element ) )
      )
    )
    

14.2.2.13. Funções de Layout

Este grupo contém funções para manipular as propriedades dos itens de layout de impressão.

Função

Descrição

item_variables

Retorna um mapa de variáveis ​​de um item de layout dentro deste layout de impressão

Um exemplo:

  • Obtenha a escala do ‘Map 0’ no layout de impressão atual:

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

14.2.2.14. Camadas do mapa

Este grupo contém uma lista das camadas disponíveis no projeto atual. Isso oferece uma maneira conveniente de escrever expressões referentes a várias camadas, como quando se fazem consultas usando aggregates, attribute ou spatial.

Também fornece algumas funções convenientes para manipular camadas.

Função

Descrição

decode_uri

Toma uma camada e decodifica a URI do provedor de dados subjacente. As informações disponíveis dependem do tipo de provedor de dados.

14.2.2.15. Funções de mapas

Este grupo contém funções para criar ou manipular chaves e valores de estruturas de dados de mapas (também conhecidos como objetos de dicionário, pares de valores-chave ou arrays associativos). Ao contrário de list data structure em que a ordem dos valores importa, a ordem dos pares de valores-chave no objeto de mapa não é relevante e os valores são identificados por suas chaves.

Função

Descrição

from_json

Carrega uma string com formato json

hstore_to_map

Cria um mapa a partir de uma string com formato hstore

json_to_map

Cria um mapa a partir de uma string com formato json

map

Retorna um mapa contendo todas as chaves e valores passados ​​como par de parâmetros

map_akeys

Retorna todas as chaves de um mapa como um array

map_avals

Retorna todos os valores de um mapa como um array

map_concat

Retorna um mapa contendo todas as entradas dos mapas fornecidos. Se dois mapas contiverem a mesma chave, o valor do segundo mapa será usado.

map_delete

Retorna um mapa com a chave fornecida e seu valor correspondente excluído

map_exist

Retorna verdadeiro se a chave especificada existir no mapa

map_get

Retorna o valor de um mapa, considerando sua chave

map_insert

Retorna um mapa com uma chave/valor adicionado

map_to_hstore

Mescla elementos do mapa em uma string formatada em hstore

map_to_json

Mescla elementos do mapa em uma string com formato json

to_json

Cria uma string formatada em json a partir de um mapa, um array ou outro valor

14.2.2.16. Funções Matemáticas

Este grupo contém funções matemáticas (por exemplo, raiz quadrada, sen e cos).

Função

Descrição

abs

Retorna o valor absoluto de um número

acos

Retorna o arco cosseno de um valor em radianos

asin

Retorna o arco seno de um valor em radianos

atan

Retorna o arco tangente de um valor em radianos

atan2(y,x)

Retorna o arco tangente Y/X usando os sinais dos dois argumentos para determinar o quadrante do resultado

azimuth(a,b)

Retorna o azimute baseado no norte como o ângulo em radianos medido no sentido horário da vertical no ponto a ao ponto b

ceil

Arredonda um número para cima

clamp

Restringe um valor de entrada para um intervalo especificado

cos

Retorna o cosseno de um ângulo em radianos

degrees

Converte de radianos em graus

exp

Retorna exponencial de um valor

floor

Arredonda um número para baixo

inclination

Retorna a inclinação medida do zênite (0) ao nadir (180) no ponto_a ao ponto_b.

ln

Retorna o logaritmo natural da expressão passada

log

Retorna o valor do logaritmo do valor passado e da base

log10

Retorna o valor do logaritmo base 10 da expressão passada

max

Retorna o maior valor não nulo em um conjunto de valores

min

Retorna o menor valor não nulo em um conjunto de valores

pi

Retorna o valor de pi para cálculos

radians

Converte de graus em radianos

rand

Retorna o número inteiro aleatório dentro do intervalo especificado pelo argumento mínimo e máximo (inclusive)

randf

Returns the random float within the range specified by the minimum and maximum argument (inclusive)

round

Arredonda para o número de casas decimais

scale_exp

Transforma um determinado valor de um domínio de entrada em um intervalo de saída usando uma curva exponencial

scale_linear

Transforma um dado valor de um domínio de entrada em um intervalo de saída usando interpolação linear

sin

Retorna o seno de um ângulo em radianos

sqrt

Retorna a raiz quadrada de um valor

tan

Retorna a tangente de um ângulo em radianos

14.2.2.17. Operadores

Este grupo contém operadores (por exemplo, +, -, *). Observe que, para a maioria das funções matemáticas abaixo, se uma das entradas for NULL, o resultado será NULL.

Função

Descrição

a + b

Adição de dois valores (a mais b)

a - b

Subtração de dois valores (a menos b)

a * b

Multiplicação de dois valores (a multiplicado por b)

a / b

Divisão de dois valores (a dividido por b)

a % b

Resto da divisão de a por b (por exemplo, 7% 2 = 1 ou 2 cabe em 7 três vezes com resto 1)

a ^ b

Potência de dois valores (por exemplo, 2^2=4 ou 2^3=8)

a < b

Compara dois valores e avalia como 1 se o valor da esquerda for menor que o valor da direita (a é menor que b)

a <= b

Compara dois valores e avalia como 1 se o valor da esquerda for menor ou igual ao valor da direita

a <> b

Compara dois valores e avalia como 1 se eles não forem iguais

a = b

Compara dois valores e avalia como 1 se forem iguais

a != b

a e b não são iguais

a > b

Compara dois valores e avalia como 1 se o valor da esquerda for maior que o valor da direita (a é maior que b)

a >= b

Compara dois valores e avalia como 1 se o valor da esquerda for maior ou igual ao valor da direita

a ~ b

a corresponde à expressão regular b

||

Une dois valores em uma string. Se um dos valores for NULL, o resultado será NULL

‘\n’

Insere uma nova linha em uma string

LIKE

Retorna 1 se o primeiro parâmetro corresponder ao padrão fornecido

ILIKE

Retorna 1 se o primeiro parâmetro corresponder a maiúsculas e minúsculas o padrão fornecido (ILIKE pode ser usado em vez de LIKE para fazer a correspondência sem maiúsculas e minúsculas)

a IS b

Testa se dois valores são idênticos. Retorna 1 se a for igual a b

a OR b

Retorna 1 quando a condição a ou a condição b for verdadeira

a AND b

Retorna 1 quando as condições a e b forem verdadeiras

NOT

Nega uma condição

“Column_name”

Value of the field Column_name, take care to not be confused with simple quote, see below

‘string’

um valor de string, tome cuidado para não se confundir com aspas duplas, veja acima

NULL

valor nulo

a IS NULL

a não tem valor

a IS NOT NULL

a tem um valor

a IN (value[,value])

a está abaixo dos valores listados

a NOT IN (value[,value])

a não está abaixo dos valores listados

Alguns exemplos:

  • Juntando um texto e um valor a partir de um nome de coluna:

    'My feature''s id is: ' || "gid"
    
  • Testa se o campo de atributo “description” começa com a string ‘Hello’ no valor (observe a posição do caractere %):

    "description" LIKE 'Hello%'
    

14.2.2.18. Funções de Processamento

Este grupo contém funções que operam em algoritmos de processamento.

Função

Descrição

parameter

Retorna o valor de um parâmetro de entrada do algoritmo de processamento

14.2.2.19. Funções Rasters

Este grupo contém funções para operar na camada raster.

Função

Descrição

raster_statistic

Retorna estatísticas de uma camada raster

raster_value

Retorna o valor da banda raster no ponto fornecido

14.2.2.20. Funções de Registro e Atributos

Este grupo contém funções que operam na identificação da registros.

Função

Descrição

$currentfeature

Retorna a feição atual que está sendo avaliada. Isso pode ser usado com a função ‘attribute’ para avaliar os valores de atributo da feição atual.

$id

Retorna o ID da feição da linha atual

attribute

Retorna o valor de um atributo especificado de uma feição

attributes

Retorna um map de todos os atributos de uma feição, com nomes de campo como chaves do mapa

get_feature

Retorna a primeira feição de uma camada que corresponde a um determinado valor de atributo

get_feature_by_id

Retorna a feição de uma camada que corresponde ao ID fornecido da feição

is_selected

Retorna se uma feição for selecionada

num_selected

Retorna o número de feições selecionadas em uma determinada camada

represent_value

Returns the configured representation value for a field value (convenient with some widget types)

sql_fetch_and_increment

Manage autoincrementing values in SQLite databases

uuid

Gera um Identificador Universalmente Exclusivo (UUID) para cada linha. Cada UUID tem 38 caracteres.

Alguns exemplos:

  • Retorne a primeira feição na camada “LayerA”, cujo campo “id” possui o mesmo valor que o campo “name” da feição atual (um tipo de junção):

    get_feature( 'layerA', 'id', attribute( $currentfeature, 'name') )
    
  • Calcule a área da feição unida do exemplo anterior:

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

14.2.2.21. Funções String

Este grupo contém funções que operam em textos (por exemplo, quer substituir, converter para maiúsculas).

Função

Descrição

char

Retorna o caractere associado a um código unicode

concat

Concatena várias strings em uma

format

Formata uma string usando argumentos fornecidos

format_date

Formata um tipo de data ou string em um formato de string personalizado

format_number

Returns a number formatted with the locale separator for thousands (also truncates the number to the number of supplied places)

left(string, n)

Retorna uma substring que contém os n caracteres mais à esquerda da string

length

Retorna o comprimento de uma string (ou o comprimento de uma feição de geometria de linha)

lower

converte uma string para letras minúsculas

lpad

Retorna uma string preenchida à esquerda na largura especificada, usando o caractere de preenchimento

regexp_match

Retorna a primeira posição correspondente que corresponde a uma expressão regular dentro de uma sequência ou 0 se a substring não for encontrada

regexp_replace

Retorna uma string com a expressão regular fornecida substituída

regexp_substr

Retorna a parte de uma string que corresponde a uma expressão regular fornecida

replace

Retorna uma string com a string, matriz ou mapa de strings fornecidos substituídos por uma string, um array de strings ou valores em pares

right(string, n)

Retorna uma substring que contém os n caracteres mais à direita da string

rpad

Retorna uma string preenchida à direita na largura especificada, usando o caractere de preenchimento

strpos

Retorna a primeira posição correspondente de uma substring dentro de outra string ou 0 se a substring não for encontrada

substr

Retorna uma parte de uma string

title

Converte todas as palavras de uma sequência em maiúsculas (todas as palavras em minúsculas com letra maiúscula inicial)

trim

Remove todos os espaços em branco iniciais e finais (espaços, guias, etc.) de uma string

upper

Converte a string para letras maiúsculas

wordwrap

Retorna uma string quebrada para um número máximo/mínimo de caracteres

Sobre a concatenação de campos

Você pode concatenar strings ou valores de campo usando os operadores || ou + ou a função concat, com algumas características especiais:

  • O operador + também significa somar expressão; portanto, se você tiver um operando inteiro (valor numérico ou de campo), isso pode ser propenso a erros e é melhor usar os outros:

    'My feature''s id is: ' + "gid" => triggers an error as gid is an integer
    
  • Quando qualquer um dos argumentos for um valor NULL, || ou + retornará um valor NULL. Para retornar os outros argumentos independentemente do valor NULL, convém usar a função concat:

    "country_name" || NULL => NULL
    concat('My feature''s id is: ', NULL) => My feature's id is
    concat("firstname", "nickname", "lastname") => Chuck Norris (if empty nickname)
    "firstname" + "nickname" + "lastname" => NULL (if one field is empty)
    
  • Para outros casos, faça o que for mais conveniente:

    'My country is ' + "country_name" + ' (' + "country_code" + ')'
    'My country is ' || "country_name" || ' (' || "country_code" || ')'
    concat('My country is ', "country_name", ' (', "country_code", ')')
    # All the above return: My country is France (FR)
    

14.2.2.22. Variáveis

Este grupo contém variáveis ​​dinâmicas relacionadas ao aplicativo, ao arquivo do projeto e outras configurações. A disponibilidade das variáveis ​​depende do contexto:

  • da caixa de diálogo expressionSelect Selecionar por expressão

  • da caixa de diálogo |CalculeField| Calculadora de campo

  • na caixa de diálogo de propriedades da camada

  • do layout de impressão

Para usar essas variáveis ​​em uma expressão, elas devem ser precedidas pelo caractere @ (por exemplo, @row_number).

Função

Descrição

algorithm_id

O ID exclusivo de um algoritmo

atlas_feature

A feição atual do atlas (como objeto de feição)

atlas_featureid

O ID da feição do atlas atual

atlas_featurenumber

O número atual da feição do atlas no layout

atlas_filename

O nome do arquivo do atlas atual

atlas_geometry

A geometria da feição do atlas atual

atlas_layerid

O ID da camada de cobertura do atlas atual

atlas_layername

O nome atual da camada de cobertura do atlas

atlas_pagename

O nome da página atual do atlas

atlas_totalfeatures

O número total de feições no atlas

canvas_cursor_point

A última posição do cursor na tela nas coordenadas geográficas do projeto

cluster_color

A cor dos símbolos em um cluster ou NULL se os símbolos tiverem cores misturadas

cluster_size

O número de símbolos contidos em um cluster

current_feature

A feição atualmente sendo editada no formulário de atributo ou na linha da tabela

current_geometry

A geometria da feição atualmente sendo editada no formulário ou na linha da tabela

fullextent_maxx

Valor máximo de x da extensão completa da tela (incluindo todas as camadas)

fullextent_maxy

Valor y máximo da extensão total da tela (incluindo todas as camadas)

fullextent_minx

Valor mínimo de x da extensão completa da tela (incluindo todas as camadas)

fullextent_miny

Valor y mínimo da extensão completa da tela (incluindo todas as camadas)

geometry_part_count

O número de partes na geometria da feição renderizada

geometry_part_num

O número da parte da geometria atual para a feiição que está sendo renderizada

geometry_point_count

O número de pontos na parte da geometria renderizada

geometry_point_num

O número do ponto atual na parte da geometria renderizada

grid_axis

O eixo de anotação da grade atual (por exemplo, ‘x’ para longitude, ‘y’ para latitude)

grid_number

O valor atual da anotação da grade

item_id

O ID do usuário do item de layout (não necessariamente exclusivo)

item_uuid

O ID exclusivo do item de layout

layer

A camada atual

layer_id

O ID da camada atual

layer_name

O nome da camada atual

layout_dpi

A resolução da composição (DPI)

layout_name

O nome do layout

layout_numpages

O número de páginas no layout

layout_page

O número da página do item atual no layout

layout_pageheight

A altura da página ativa no layout (em mm)

layout_pagewidth

A largura da página ativa no layout (em mm)

legend_column_count

O número de colunas na legenda

legend_filter_by_map

Indica se o conteúdo da legenda é filtrado pelo mapa

legend_filter_out_atlas

Indica se o atlas é filtrado para fora da legenda

legend_split_layers

Indica se as camadas podem ser divididas na legenda

legend_title

O título da lenda

legend_wrap_string

O(s) caractere(s) usados ​​para quebrar o texto da legenda

map_crs

O Sistema de referência de coordenadas do mapa atual

map_crs_acronym

A sigla do Sistema de referência de coordenadas do mapa atual

map_crs_definition

A definição completa do Sistema de referência de coordenadas do mapa atual

map_crs_description

O nome do Sistema de referência de coordenadas do mapa atual

map_crs_ellipsoid

A sigla do elipsóide do Sistema de referência de coordenadas do mapa atual

map_crs_proj4

A definição do Proj4 do Sistema de referência de coordenadas do mapa atual

map_crs_wkt

A definição WKT do Sistema de referência de coordenadas do mapa atual

map_extent

A geometria que representa a extensão atual do mapa

map_extent_center

A feição de ponto no centro do mapa

map_extent_height

A altura atual do mapa

map_extent_width

A largura atual do mapa

map_id

O ID do destino atual do mapa. Será ‘canvas’ para renderizações de tela, e o ID do item para renderizações de mapa de layout

map_layer_ids

A lista de IDs da camada do mapa visíveis no mapa

map_layers

A lista de camadas do mapa visíveis no mapa

map_rotation

A rotação atual do mapa

map_scale

A escala atual do mapa

map_units

As unidades de medidas do mapa

notification_message

Conteúdo da mensagem de notificação enviada pelo provedor (disponível apenas para ações acionadas por notificações do provedor).

parent

Refere-se ao recurso atual na camada pai, fornecendo acesso aos seus atributos e geometria ao filtrar uma função aggregate

project_abstract

O resumo do projeto, extraído dos metadados do projeto

project_area_units

A unidade de área do projeto atual, usada no cálculo de áreas de geometrias

project_author

O autor do projeto, extraído dos metadados do projeto

project_basename

O nome base do nome do arquivo do projeto atual (sem caminho e extensão)

project_creation_date

A data de criação do projeto, extraída dos metadados do projeto

project_crs

O Sistema de referência de coordenadas do projeto

project_crs_arconym

A sigla do Sistema de referência de coordenadas do projeto

project_crs_definition

A definição completa do Sistema de referência de coordenadas do projeto

project_crs_description

A descrição do Sistema de referência de coordenadas do projeto

project_crs_ellipsoid

O elipsóide do Sistema de referência de coordenadas do projeto

project_crs_proj4

A representação do Proj4 do Sistema de referência de coordenadas do projeto

project_crs_wkt

A representação WKT (well known text) do Sistema de referência de coordenadas do projeto

project_distance_units

A unidade de distância para o projeto atual, usada no cálculo de comprimentos de geometrias e distâncias

project_ellipsoid

O nome do elipsóide do projeto atual, usado no cálculo de áreas geodésicas ou comprimentos de geometrias

project_filename

O nome do arquivo do projeto atual

project_folder

A pasta do projeto atual

project_home

O caminho inicial do projeto atual

project_identifier

O identificador do projeto, obtido dos metadados do projeto

project_keywords

As palavras-chave do projeto, extraídas dos metadados do projeto

project_last_saved

Data/hora em que o projeto foi salvo pela última vez.

project_path

O caminho completo (incluindo o nome do arquivo) do projeto atual

project_title

O título do projeto atual

project_units

As unidades do SRC do projeto

qgis_locale

O idioma atual do QGIS

qgis_os_name

O nome atual do sistema operacional, por exemplo, ‘windows’, ‘linux’ ou ‘osx’

qgis_platform

A plataforma QGIS, por exemplo, ‘desktop’ ou ‘servidor’

qgis_release_name

O nome da versão atual do QGIS

qgis_short_version

A string curta da versão atual do QGIS

qgis_version

A string de versão atual do QGIS

qgis_version_no

O número da versão atual do QGIS

row_number

Armazena o número da linha atual

snapping_results

Gives access to snapping results while digitizing a feature (only available in add feature)

scale_value

O valor atual da distância da barra de escala

symbol_angle

O ângulo do símbolo usado para renderizar a feição (válido apenas para símbolos de marcador)

symbol_color

A cor do símbolo usado para renderizar a feição

symbol_count

O número de feições representadas pelo símbolo (na legenda do layout)

symbol_id

O ID interno do símbolo (na legenda do layout)

symbol_label

O rótulo do símbolo (um rótulo definido pelo usuário ou o rótulo gerado automaticamente por padrão - na legenda do layout)

user_account_name

O nome da conta do sistema operacional do usuário atual

user_full_name

O nome do usuário do sistema operacional do usuário atual

value

O valor atual

with_variable

Permite definir uma variável para uso em uma expressão e evitar recalcular o mesmo valor repetidamente

Alguns exemplos:

  • Retorna a coordenada X de um centro de item de mapa no layout:

    x( map_get( item_variables( 'map1'), 'map_extent_center' ) )
    
  • Retorne, para cada feição na camada atual, o número de feições de aeroporto sobrepostas:

    aggregate( layer:='airport', aggregate:='count', expression:="code",
                   filter:=intersects( $geometry, geometry( @parent ) ) )
    
  • Obtém o object_id do primeiro ponto ajustado de uma linha:

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

14.2.2.23. Funções Recentes

Este grupo contém funções usadas recentemente. Dependendo do contexto de seu uso (seleção de feição, calculadora de campo, genérico), as expressões aplicadas recentemente são adicionadas à lista correspondente (até dez expressões), ordenadas de mais para menos recente. Isso facilita a rápida recuperação e reaplicação de expressões usadas anteriormente.

14.2.3. Editor de Funções

Com a guia Editor de Funções, você pode escrever suas próprias funções na linguagem Python. Isso fornece uma maneira prática e confortável de abordar necessidades específicas que não seriam cobertas pelas funções predefinidas.

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

Fig. 14.66 A guia Editor de Funções

Para criar uma nova função:

  1. Pressione o botão signPlus Novo Arquivo.

  2. Digite um nome para usar no formulário que aparece e pressione OK.

    Um novo item com o nome que você fornece é adicionado no painel esquerdo da guia Editor de Funções; este é um arquivo Python .py baseado no arquivo de modelo QGIS e armazenado na pasta /python/expressions no diretório ativo user profile.

  3. O painel direito exibe o conteúdo do arquivo: um modelo de script python. Atualize o código e sua ajuda de acordo com suas necessidades.

  4. Pressione o botão start Salvar e Carregar Funções. A função que você escreveu é adicionada à árvore de funções na guia Expressão, por padrão, no grupo``Personalizada``.

  5. Aproveite sua nova função.

  6. Se a função precisar de melhorias, ative a guia Editor de Funções, faça as alterações e pressione novamente o botão start Salvar e Carregar Funções para disponibilizá-las no arquivo, e portanto, em qualquer guia de expressão.

As funções personalizadas do Python são armazenadas no diretório de perfil do usuário, o que significa que, a cada inicialização do QGIS, ele carrega automaticamente todas as funções definidas no perfil do usuário atual. Esteja ciente de que novas funções são salvas apenas na pasta /python/expression e não no arquivo do projeto. Se você compartilha um projeto que utiliza uma de suas funções personalizadas, também precisará compartilhar o arquivo .py na pasta /python/expression.

Aqui há um breve exemplo de como criar suas próprias funções:

from qgis.core import *
from qgis.gui import *

@qgsfunction(args='auto', group='Custom')
def my_sum(value1, value2, feature, parent):
    """
    Calculates the sum of the two parameters value1 and value2.
    <h2>Example usage:</h2>
    <ul>
      <li>my_sum(5, 8) -> 13</li>
      <li>my_sum("field1", "field2") -> 42</li>
    </ul>
    """
    return value1 + value2

O pequeno exemplo cria uma função my_sum que fornecerá uma função com dois valores. Ao usar o argumento da função args = 'auto', o número de argumentos da função necessário será calculado pelo número de argumentos com os quais a função foi definida no Python (menos 2 - feição e pai).

Esta função pode ser usada em expressões:

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

Fig. 14.67 Função Personalizada adicionada à guia Expressão

Informações adicionais sobre a criação de código Python podem ser encontradas em Passo-a-passo para desenvolvedor PyQGIS.