Calculadora de campo QGIS: 24 expressões testadas e as armadilhas
Publicado em
Para calcular uma coluna no QGIS, abra a tabela de atributos da camada, clique no ícone da Field Calculator (Calculadora de campo, Ctrl+I), escolha um campo novo ou existente, digite uma expressão e clique em OK. Essa parte é rápida. O difícil é quando a expressão roda sem erro e grava NULLs, graus quadrados ou a classe errada.
Em 7 de novembro de 2026, executei 24 expressões da calculadora de campo em camadas reais do OpenStreetMap de Indiranagar e bairros vizinhos em Bengaluru, na Índia (8.709 edificações, 854 vias, 35 escolas, 37 pontos de ônibus, 10 distritos), e rodei ao lado de cada uma a versão errada mais comum. Abaixo está o livro de receitas com os valores exatos de saída, as armadilhas silenciosas medidas contra uma referência elipsoidal e o que aconteceu quando entreguei as três mais difíceis a um agente de IA dentro do QGIS.
O que é a calculadora de campo do QGIS?
A calculadora de campo do QGIS é a ferramenta nativa que cria ou atualiza colunas da tabela de atributos usando expressões do QGIS. Ela calcula valores de geometria como área, comprimento e coordenadas, reescreve texto, classifica linhas com CASE WHEN e traz contagens ou distâncias de outras camadas do seu projeto.
Na verdade, o QGIS oferece quatro lugares para rodar as mesmas expressões, e escolher o errado é a primeira forma de perder trabalho:
- A janela Field Calculator (
Ctrl+I): edita a camada no próprio lugar. Você pode criar uma coluna nova ou sobrescrever uma existente, em todas as feições ou só nas selecionadas. As alterações ficam no buffer de edição até você salvar as edições. - Um campo virtual (caixa de seleção dentro da janela): calcula a expressão na hora, toda vez que você abre a tabela ou desenha o mapa. Quando dobrei a área da edificação
fid27 na minha camada de teste, a coluna de área normal ficou em197.355, enquanto o campo virtual passou para789.418. O problema é que o campo virtual fica no arquivo de projeto.qgs, não no GeoPackage ou no Shapefile. Abra o arquivo num projeto novo e a coluna some. - A ferramenta de Processamento "Field calculator" (
native:fieldcalculator): grava uma camada de saída nova e não mexe na camada original. Use em modelos ou quando não quiser editar no lugar. Cuidado com@row_number, que começa em0aqui e em1na janela. - A barra de cálculo rápido no topo da tabela de atributos: atualiza uma coluna existente sem abrir a janela completa, boa para uma fórmula curta quando você já está em modo de edição.
Como calcular um campo passo a passo
Abra a Field Calculator
Clique com o botão direito na camada e escolha Open Attribute Table, depois clique no ícone de ábaco na barra de ferramentas da tabela de atributos. Com a camada selecionada no painel Layers, Ctrl+I abre a Field Calculator direto.
Confira a seleção e as configurações do campo
Se houver feições selecionadas no mapa, Only update N selected feature(s) vem marcada por padrão. Desmarque se quiser calcular a camada inteira. Escolha Create a new field (ou Update existing field), defina o Output field name e escolha o Output field type (Decimal number (real) para áreas e comprimentos com casas decimais, Integer para contagens inteiras, Text (string) para rótulos e classes).
Escreva a expressão e confira o Preview
Digite a expressão no editor da esquerda, ou busque na lista de funções do meio e dê um clique duplo para inserir. Sempre confira a linha Preview abaixo do editor antes de clicar em OK. Se ela mostrar um erro, NULL ou um número parecido com 0.0000003, corrija a expressão antes de gravá-la em 8.000 linhas.
Clique em OK e salve as edições
Clique em OK. Se a camada não estava em modo de edição, o QGIS avisa que vai ativá-lo automaticamente. Quando o cálculo terminar, clique no ícone de disquete Save Edits na barra de ferramentas da tabela de atributos para gravar a coluna em disco.
Aqui está a janela na camada de vias, pronta para gravar uma classe de via:

Quando você não sabe o nome de uma função, use a caixa de busca acima da coluna do meio. Ela filtra a árvore de funções e abre a documentação à direita, com a ordem dos parâmetros e exemplos.

O livro de receitas de expressões testadas
Todas as expressões abaixo foram executadas no QGIS 3.44.15 em 7 de novembro de 2026, nas nossas camadas OpenStreetMap de Bengaluru (armazenadas em EPSG:4326, elipsoide do projeto WGS 84). Se precisar de dados de teste para a sua região, nosso guia sobre como baixar dados do OpenStreetMap no QGIS mostra como obter edificações, vias e pontos de forma limpa.
Os exemplos de saída das edificações vêm das edificações fid 27, 28, 30, 60 e 62 (que têm endereço e número de pavimentos) e fid 1, 2 e 3 (que não têm nenhum dos dois).
Área, comprimento, perímetro e coordenadas
| O que você quer | Expressão para colar | Resultado testado na amostra | Versão errada comum (e o que acontece) |
|---|---|---|---|
| Área da edificação em m² (elipsoidal) | $area | 197.35, 110.86, 141.11, 219.71, 318.83 | area($geometry) retorna 0.0 (cerca de 3e-7 graus quadrados), sem erro |
| Área da edificação em m² (projetada em UTM 43N) | area(transform($geometry, 'EPSG:4326', 'EPSG:32643')) | 197.60, 110.99, 141.29, 219.98, 319.22 | Transformar para 'EPSG:3857' (Web Mercator) infla a área em +5,95% aqui |
| Comprimento da via em metros (elipsoidal) | $length | 616.34, 7.99, 1104.32, 9.14, 72.24 | length($geometry) retorna 0.005681, 0.000074 (graus), sem erro |
| Comprimento da via em metros (projetado em UTM 43N) | length(transform($geometry, 'EPSG:4326', 'EPSG:32643')) | 616.72, 7.99, 1105.01, 9.14, 72.29 | Transformar para 'EPSG:3857' infla o comprimento das vias em +3,03% na mediana |
| Perímetro da edificação em metros | $perimeter | 56.72, 44.97, 48.60, 61.54, 72.69 | perimeter($geometry) retorna graus numa camada EPSG:4326 |
| X do centroide do polígono (Leste em metros) | x(centroid(transform($geometry, 'EPSG:4326', 'EPSG:32643'))) | 786714.46, 786437.79, 786237.28 | $x num polígono retorna NULL sem erro; x_at($geometry, 0) retorna o primeiro vértice (77.642744), não o centro |
| Y do centroide do polígono (Norte em metros) | y(centroid(transform($geometry, 'EPSG:4326', 'EPSG:32643'))) | 1435359.45, 1435116.32, 1436699.32 | y(centroid($geometry)) retorna graus (12.97...) quando a camada está em EPSG:4326 |
| Número da linha ou ID da feição | @row_number ou $id | 1, 2, 3, 4 (janela) ou 27 para $id no fid 27 | @row_number começa em 1 na janela da interface, mas começa em 0 no native:fieldcalculator do Processamento |
Se você gravar $area num campo de saída Integer em vez de Decimal number (real) (testado com o Field calculator do Processamento), o QGIS arredonda para o inteiro mais próximo (197.35 vira 197, 110.86 vira 111) em vez de truncar.
Classes condicionais (CASE WHEN e tratamento de NULL)
| O que você quer | Expressão para colar | Resultado testado na amostra | Versão errada comum (e o que acontece) |
|---|---|---|---|
| Classe de tamanho a partir da área | CASE WHEN $area < 100 THEN 'small' WHEN $area < 250 THEN 'medium' ELSE 'large' END | medium, medium, medium, medium, large | Não testado |
| Trocar pavimentos NULL por um inteiro padrão | coalesce(to_int("building:levels"), 1) | 4, 4, 2, 4, 3 (e 1 onde os pavimentos são NULL) | "building:levels" + 'a' retorna '4a' porque as tags do OSM são armazenadas como texto |
| Classe de altura com os NULLs separados | CASE WHEN to_int("building:levels") IS NULL THEN 'unknown' WHEN to_int("building:levels") <= 2 THEN 'low' WHEN to_int("building:levels") <= 4 THEN 'mid' ELSE 'high' END | mid, mid, low, mid, mid (e unknown para o fid 1) | Pular o WHEN ... IS NULL manda toda linha vazia para o ELSE, rotulando 7.636 edificações sem dado como 'high' |
Limpeza de texto, formatação e datas
| O que você quer | Expressão para colar | Resultado testado na amostra | Versão errada comum (e o que acontece) |
|---|---|---|---|
| Juntar número e rua com segurança | concat("addr:housenumber", ' ', "addr:street") | '594 12th Main Road', '83/4 13th Main Road' (' ' se ambos forem NULL) | "addr:housenumber" || ' ' || "addr:street" retorna NULL se qualquer uma das colunas for NULL |
Remover o sufixo (Road, Main, Cross) do nome da via | regexp_replace("name", '\\s+(Road|Main|Cross)$', '') | 'Chinmaya Mission Hospital', '13th Main', '12th Main' | Uma barra invertida só, \s+, falha com Invalid regular expression '?+(Road|Main|Cross)$' |
| Completar um ID com zeros até 12 dígitos | lpad(to_string("osm_id"), 12, '0') | '000313829229', '000313835091' | Não testado |
| Formatar um número para exibição | format_number($area, 1) | '197,4', '110,9' ('3 958,7' para 3958.7 num Mac com vírgula decimal) | A saída é texto que segue a localidade do sistema (vírgula decimal e espaço fino inseparável), então não dá para fazer contas com ela depois |
| Dias entre duas datas | day(age(to_date('2026-11-07'), to_date('2019-03-15'))) | 2794 | age(...) sozinho retorna um objeto QgsInterval; to_date('07/11/2026') falha a menos que você passe 'dd/MM/yyyy' como segundo argumento |
Cuidado também com o tamanho do campo de saída ao gravar texto num GeoPackage ou Shapefile. Quando executei concat("addr:housenumber", ' ', "addr:street") num campo de texto de tamanho 40 no Processamento, a execução inteira foi abortada sem saída, porque uma via (" 80 Feet Road(Sir C.V. Raman Hospital Road)") tinha 43 caracteres.
Contagens, somas e distância ao mais próximo entre camadas
Estas expressões permitem que uma camada consulte outra do seu projeto sem rodar uma junção espacial no QGIS à parte.
| O que você quer | Expressão para colar | Resultado testado na amostra | Versão errada comum (e o que acontece) |
|---|---|---|---|
| Contar edificações que tocam cada distrito | aggregate('buildings', 'count', "osm_id", filter:=intersects($geometry, geometry(@parent))) | 4, 1552, 336, 3141, 79, 402, 1179, 348, 1539, 139 | Esquecer o filter:=... dá a cada distrito a contagem total da camada inteira (8709), sem erro |
| Área total de edificações em ha por distrito | round(aggregate('buildings', 'sum', $area, filter:=intersects($geometry, geometry(@parent))) / 10000, 3) | 0.565, 20.292, 5.605, 59.116, 1.037, 14.094, 16.646, 7.991, 21.39, 1.7 | Soma as áreas inteiras das edificações que tocam o limite, então as da divisa entram nos dois distritos |
| Contar escolas dentro de cada distrito | array_length(overlay_contains('schools', "osm_id")) | 0, 2, 3, 18, 0, 0, 7, 3, 2, 0 (soma: 35) | overlay_contains('schools') sem o segundo argumento retorna true ou false, não uma contagem |
| Distância em metros até o ponto de ônibus mais próximo | distance(transform($geometry, 'EPSG:4326', 'EPSG:32643'), transform(array_first(overlay_nearest('bus_stops', $geometry)), 'EPSG:4326', 'EPSG:32643')) | 125.17, 49.39, 199.59, 158.39, 187.97, 74.67, 123.00, 226.61 | distance($geometry, array_first(overlay_nearest('bus_stops', $geometry))) retorna 0.001142 (graus) |
| Contar pontos de ônibus a até 300 m de uma edificação | aggregate('bus_stops', 'count', "osm_id", filter:=distance(transform($geometry, 'EPSG:4326', 'EPSG:32643'), transform(geometry(@parent), 'EPSG:4326', 'EPSG:32643')) <= 300) | 1, 1, 4, 2, 2, 6, 7, 7 | array_length(overlay_nearest('bus_stops', $id, max_distance:=300, limit:=-1)) retorna 37 (todos os pontos) porque 300 é lido como 300 graus |
Cinco armadilhas da calculadora de campo que falham sem erro
Li 70 comentários de pedido de ajuda em tutoriais de QGIS no YouTube: 48 eram dúvidas reais sobre como escrever uma expressão, e 8 delas eram sobre uma expressão inválida, que retorna NULL ou não seleciona nada. O pior caso é aquele sobre o qual ninguém pergunta, porque a expressão roda e grava números plausíveis. Aqui estão as cinco armadilhas que medimos nos nossos dados de Bengaluru.
1. $area vs area($geometry), e o que o elipsoide do projeto faz
$area e area($geometry) não fazem o mesmo cálculo, e pelo menos um tutorial de 2026 diz que $area retorna graus quadrados num SRC geográfico. Não retornou, em nenhuma das duas configurações de projeto que testamos. Em 7 de novembro de 2026 medimos os dois, além de transform(), nas primeiras 200 edificações e 200 vias das nossas camadas EPSG:4326 de Bengaluru, contra uma referência elipsoidal WGS 84 (QgsDistanceArea).
$areae$lengthusam o elipsoide do projeto (definido emProject > Properties > General > Measurements). Quando o elipsoide éWGS 84,$arearetorna metros quadrados precisos mesmo com a camada e o projeto em graus (EPSG:4326).- Quando o elipsoide do projeto está em
None / Planimetric,$areana nossa camadaEPSG:4326ainda assim não retornou graus quadrados. No QGIS 3.44.15 retornou metros quadrados +3,24% acima do valor real nas 200 edificações. area($geometry)elength($geometry)são sempre planimétricos no SRC da própria camada. Numa camadaEPSG:4326,area($geometry)retorna graus quadrados (cerca de0.0000003para uma casa), que arredonda para0.0numa coluna decimal padrão.- Transformar para Web Mercator (
EPSG:3857) antes dearea()infla cada edificação em +5,95%, mesmo na latitude de Bengaluru (13° N), e infla o comprimento das vias em +3,03%. Transformar para a zona UTM local (EPSG:32643) fica dentro de +0,12% da área elipsoidal.
Expressão em camadas EPSG:4326 (n = 200 edificações, 200 vias) | Erro mediano vs elipsoide WGS 84 | Erro máximo |
|---|---|---|
$area (elipsoide do projeto WGS 84) | 0.00% | 0.00% |
$area (elipsoide do projeto None) | +3.24% | +3.25% |
$perimeter (elipsoide do projeto None) | +1.72% | +2.25% |
$length nas vias (elipsoide do projeto None) | +1.31% | +2.61% |
area($geometry) | -100.00% (graus quadrados) | -100.00% |
length($geometry) nas vias | -100.00% (graus) | -100.00% |
area(transform($geometry, 'EPSG:4326', 'EPSG:32643')) | +0.12% | +0.12% |
length(transform($geometry, 'EPSG:4326', 'EPSG:32643')) nas vias | +0.06% | +0.06% |
area(transform($geometry, 'EPSG:4326', 'EPSG:3857')) | +5.95% | +5.96% |
length(transform($geometry, 'EPSG:4326', 'EPSG:3857')) nas vias | +3.03% | +3.26% |
Se não estiver claro por que EPSG:4326, EPSG:3857 e as zonas UTM se comportam de forma tão diferente, leia nossa explicação sobre o que é um SRC no QGIS.
2. overlay_nearest lê max_distance nas unidades da camada, não em metros
A função overlay_nearest é rápida porque usa um índice espacial, e tem um parâmetro prático, max_distance. Mas max_distance é sempre medido nas unidades de coordenadas da camada.
Quando nossas edificações e pontos de ônibus estão em EPSG:4326 (graus) e você escreve array_length(overlay_nearest('bus_stops', $id, max_distance:=300, limit:=-1)), o QGIS procura pontos de ônibus a até 300 graus. Isso cobre a Terra inteira, então cada edificação recebe 37 (todos os 37 pontos da camada). Chutar max_distance:=0.003 para 300 metros também não funciona direito, porque um grau de longitude e um grau de latitude não têm o mesmo comprimento em metros: na edificação fid 62, 0.003 retornou 8 pontos em vez dos 7 reais. Ou reprojete as duas camadas para UTM antes, ou use o padrão aggregate(..., filter:=distance(transform(...))) da última linha da tabela espacial acima.
3. Linhas NULL caem direto no ramo ELSE do CASE WHEN
No nosso conjunto de dados de Bengaluru, só 1.073 das 8.709 edificações (12,3%) têm a tag building:levels. As outras 7.636 são NULL.
Se você escrever CASE WHEN to_int("building:levels") <= 2 THEN 'low' WHEN to_int("building:levels") <= 4 THEN 'mid' ELSE 'high' END, as duas comparações <= resultam em desconhecido numa linha NULL, e a linha cai no ELSE. Você acaba classificando 7.636 edificações sem dado como torres altas, sem um único aviso. Sempre coloque WHEN "field" IS NULL THEN 'unknown' como primeiro ramo (ou deixe o ELSE de fora para que as linhas sem correspondência fiquem NULL) quando seus dados tiverem lacunas.
4. "Only update selected features" deixa o resto da coluna NULL
Sempre que houver ao menos uma feição selecionada no mapa, a Field Calculator marca Only update N selected feature(s) automaticamente.
Quando selecionei as 39 vias primary de Bengaluru e executei CASE WHEN "highway" IN ('primary', 'secondary') THEN 'arterial' ELSE 'local' END num novo campo road_rank, o QGIS gravou 'arterial' nessas 39 linhas e deixou as outras 815 vias como NULL, incluindo todas as 28 vias secondary que minha expressão citava explicitamente.

5. Aspas duplas vs aspas simples (por que "building" = "yes" retorna NULL)
Nas expressões do QGIS, aspas duplas " " indicam um nome de campo e aspas simples ' ' indicam um valor de texto.
Se você digitar "building" = "yes", o QGIS procura uma coluna chamada building e a compara com outra coluna chamada yes. Como não existe coluna chamada yes, a expressão resulta em NULL (e o parser QgsExpression por baixo informa Field 'yes' not found). Da mesma forma, se o nome de uma coluna tiver dois-pontos, como o building:levels do OpenStreetMap, esquecer as aspas duplas falha com syntax error, unexpected Unknown_CHARACTER. Dar um clique duplo nos nomes de campo na lista Fields and Values insere as aspas certas sempre.
Pulando a sintaxe: fazendo os mesmos cálculos com um agente de IA
Escrever $area à mão é rápido. Escrever um aggregate() aninhado com duas chamadas transform(), uma referência à geometria @parent e um filtro de distância é onde as pessoas vão parar no Stack Exchange.
Nós desenvolvemos o AI Agent, um painel de chat que fica encaixado dentro do QGIS, então esta seção é sobre a nossa própria ferramenta. Como ele funciona dentro do seu projeto QGIS aberto, ele inspeciona os nomes das camadas, os tipos de campo, o SRC e os valores únicos antes de rodar a Field Calculator ou as ferramentas de Processamento para você.
Em 7 de novembro de 2026, passei ao AI Agent (v1.9.4, esforço Medium, permissões Balanced) os três cálculos de várias etapas do nosso plano de teste, uma frase por chat, exatamente nas mesmas cinco camadas de Bengaluru em EPSG:4326.
| Tarefa | Prompt exato enviado | Tempo do agente | Resultado contra a nossa verificação independente |
|---|---|---|---|
| A. Contagem por proximidade | "Add a field called bus_stops_300m to the buildings layer with the number of bus stops within 300 metres of each building." | 39 s | Passou. Campo inteiro criado, todas as 8.709 edificações preenchidas, 0 divergências contra a nossa contagem da edificação ao ponto em EPSG:32643 (de 0 a 8). |
| B. Classificação + estilo | "Class the buildings into low (1 or 2 levels), mid (3 or 4) and high (5 or more) from the building:levels field, store the class in a new field called height_class, and style the buildings by that class." | 18 s | Passou. 563 low, 442 mid, 68 high (todas as 1.073 batem com a nossa regra). As 7.636 linhas sem pavimentos ficaram NULL e receberam uma quarta categoria cinza, "Unknown levels". |
| C. Contagem de escolas e área construída por distrito | "For each ward, add the number of schools and the total building area in hectares." | 37 s | Passou (com uma diferença de método). school_count bateu em 10/10 distritos (total 35). building_ha bateu com as áreas recortadas das edificações em 10/10 distritos (total 148,25 ha). |
Na Tarefa A, o agente não caiu na armadilha dos 300 graus do overlay_nearest. O log de ferramentas mostra que ele inspecionou as duas camadas, conferiu o SRC, fez o cálculo em unidades métricas a partir dos contornos das edificações (não dos centroides, o que teria mudado a resposta em 667 edificações) e verificou os valores mínimo e máximo antes de responder.

Na Tarefa B, ele conferiu primeiro os valores únicos de building:levels, viu que 7.636 das 8.709 edificações não tinham número de pavimentos, deixou essas linhas NULL em height_class em vez de deixá-las cair em high e aplicou no mapa um estilo categorizado com 4 classes.

Olhando o mapa renderizado, fica óbvio por que conferir NULL importa em dados do OpenStreetMap: as edificações cinza são os 87,7% sem a tag building:levels registrada.

Na Tarefa C, os números de building_ha do agente ficaram um pouco diferentes da linha de hectares por distrito do nosso livro de receitas: New Thippasandra deu 20.151 ha em vez de 20.292 ha (-0,69%), Jeevan Bhimanagar -0.14% e Indiranagar -0.06%. Quando fui ver o porquê, o agente tinha usado um método geométrico mais rigoroso que o meu filtro intersects(): recortou os polígonos das edificações nos limites dos distritos antes de somar as áreas, para que as edificações na divisa não fossem contadas duas vezes, e mencionou isso na resposta. Ele deixou a camada de distritos em modo de edição com alterações não confirmadas, avisando na resposta que as edições ainda não estavam salvas.

Aqui está a tabela de atributos resultante na camada de distritos, depois de confirmar essas edições:

Três tarefas é uma amostra pequena (n = 3), e dei prompts claros, que citavam os campos e os limites das classes, então trate isto como uma demonstração, não como um benchmark. Para fórmulas simples como $area ou concat(), a janela Field Calculator é mais rápida do que digitar uma mensagem no chat. Um agente vale a pena quando você precisa de agregados entre camadas, transformações de SRC ou cadeias de Processamento com várias etapas, ou quando você teria que escrever um script PyQGIS. Você também pode comparar outros assistentes no nosso hub de IA para QGIS.
Como medimos. Todos os testes foram feitos em 7 de novembro de 2026 no QGIS 3.44.15-Solothurn no macOS, com dados do OpenStreetMap de Indiranagar, Bengaluru (retângulo envolvente 12.968, 77.634, 12.986, 77.656, ODbL), no SRC de projeto EPSG:4326. Cada expressão do livro de receitas foi verificada contra um cálculo independente em Python ou com QgsDistanceArea nos mesmos IDs de feição. Os erros de área e comprimento foram medidos nas primeiras 200 edificações e 200 vias por fid, contra QgsDistanceArea com o elipsoide WGS 84 (EPSG:7030). O AI Agent 1.9.4 rodou com esforço Medium e permissões Balanced, num chat novo para cada tarefa. As contagens de dúvidas do YouTube vêm de 70 comentários de pedido de ajuda em 59 vídeos, filtrados de um corpus de 25.276 comentários.
Perguntas frequentes
Por que meu cálculo de $area está errado ou retorna 0 no QGIS?
Primeiro, confira se você digitou area($geometry) em vez de $area. Numa camada armazenada em graus (EPSG:4326), area($geometry) retorna graus quadrados (cerca de 0.0000003 para uma casa), que arredonda para 0.0 num campo decimal. Use $area com o elipsoide do projeto definido como WGS 84 em Project > Properties > General > Measurements, ou reprojete a geometria na própria expressão com area(transform($geometry, 'EPSG:4326', 'EPSG:32643')), usando a sua zona UTM local. Evite EPSG:3857 (Web Mercator), que inflou a área das edificações em +5,95% mesmo a 13° N no nosso teste.
Como escrevo um IF ou um CASE na calculadora de campo do QGIS?
Para dois resultados, use if(condition, value_if_true, value_if_false), por exemplo if($area < 100, 'small', 'large'). Para três classes ou mais, use CASE WHEN ... THEN ... ELSE ... END:
CASE WHEN to_int("building:levels") IS NULL THEN 'unknown' WHEN to_int("building:levels") <= 2 THEN 'low' WHEN to_int("building:levels") <= 4 THEN 'mid' ELSE 'high' END
Coloque a verificação IS NULL primeiro. Senão, toda linha com valor vazio cai no ELSE.
Por que a calculadora de campo retornou NULL em todas ou quase todas as linhas?
Quatro causas comuns:
- Havia uma feição selecionada no mapa, então Only update N selected feature(s) estava marcada e deixou todas as linhas não selecionadas como
NULL. - Você concatenou texto com
||(como"addr:housenumber" || ' ' || "addr:street"), em que um único valorNULLtorna o resultado inteiroNULL. Useconcat(). - Você colocou aspas duplas em volta de um valor de texto (
"building" = "yes"), o que manda o QGIS procurar uma coluna chamadayes. Use aspas simples para valores ("building" = 'yes'). - Você usou
$xou$ynuma camada de polígonos ou linhas.$xsó funciona com pontos; usex(centroid($geometry))para polígonos.
Como calculo a área em hectares na calculadora de campo do QGIS?
Defina o Output field type como Decimal number (real), a Precision como 2 ou 3 e digite $area / 10000 (supondo que as unidades de área do projeto sejam metros quadrados e que o elipsoide esteja definido em Project > Properties > General). Para arredondar o próprio valor gravado a 3 casas decimais, use round($area / 10000, 3).
Como atualizo só as feições selecionadas na calculadora de campo?
Selecione primeiro as feições no mapa ou na tabela de atributos e depois abra a Field Calculator (Ctrl+I). A caixa Only update N selected feature(s) no canto superior esquerdo vem marcada automaticamente. Escolha Update existing field, selecione a coluna na lista, digite a expressão e clique em OK.
Faça no QGIS só pedindo
O AI Agent executa a tarefa que você descreve, no seu próprio projeto QGIS. Grátis, sem cartão.
, abra a tabela de atributos da camada, clique no ícone da Field Calculator (Calculadora de campo, 

