Junção espacial no QGIS: por localização ou mais próximo
Publicado em

Uma junção espacial copia os campos de uma camada para outra com base em onde as feições estão, e não em um ID em comum. No QGIS, abra Vector > Data Management Tools > Join Attributes by Location… (em português, Vetor > Ferramentas de gerenciamento de dados > Unir atributos por localização…), escolha a camada que vai receber os novos campos, a camada de onde eles vêm e uma regra como "intersect", e execute. Para perguntas do tipo "qual é o mais próximo", use Join Attributes by Nearest ou digite a tarefa inteira em uma frase para o AI Agent.
| O que você quer | Ferramenta | Tempo no nosso teste |
|---|---|---|
| Dar a cada ponto o nome da área onde ele está | Join Attributes by Location | 0,21 s, 382 escolas |
| O mesmo, digitado em uma frase | AI Agent | 22 s, contagem e vizinho mais próximo juntos |
| Contar ou somar pontos por área | Join Attributes by Location (Summary) | 0,02 s, 9 áreas |
| Achar a feição mais próxima e a distância até ela | Join Attributes by Nearest | 0,06 s, 382 escolas |
Os dados de teste
Todos os números deste guia vêm de uma única execução com dados abertos reais de Lyon, na França, em 15 de outubro de 2026:
- 9 arrondissements (os distritos da cidade) e 382 escolas do OpenStreetMap.
- 106 paradas de bonde do OpenStreetMap.
- 103.910 edifícios da BD TOPO do IGN, a base topográfica nacional da França.
Todas as camadas estão em Lambert-93 (EPSG:2154), um sistema projetado em metros. Os tempos vêm do QGIS 3.44 em um MacBook Air M4.
Método 1: Join attributes by location
Esta é a junção espacial clássica. Aqui, cada escola recebe o nome do seu arrondissement.
Abra a ferramenta
Vector > Data Management Tools > Join Attributes by Location…. Você também pode procurar "join attributes" na Caixa de Ferramentas de Processamento (Ctrl+Alt+T).
Escolha as duas camadas
Join to features in é a camada que recebe os novos campos, aqui schools. By comparing to é a camada de onde você os tira, aqui arrondissements.
Marque um predicado
intersect é o padrão seguro para pontos em polígonos. A seção abaixo mostra o que cada opção significa.
Escolha os campos e o tipo de junção
Em Fields to add, mantenha só o que você precisa, aqui name. Defina Join type como um-para-um e adicione um prefixo como arr_ para achar o novo campo com facilidade.
Execute
Deixe Joined layer como camada temporária para conferir o resultado primeiro e depois salve em GeoPackage.

Marque Discard records which could not be joined só se quiser descartar os registros sem correspondência. No início, deixe desmarcado: as linhas vazias mostram o que deu errado.
Use quando: você quer um ou alguns campos da feição em que cada objeto está ou que ele toca.
Evite quando: as feições nunca se tocam, como uma escola e uma parada de bonde. Esse é o Método 4.
Método 2: peça ao AI Agent em uma frase
O AI Agent é o nosso plugin do QGIS que executa tarefas a partir de um pedido digitado. Ele lê os nomes das suas camadas e campos, escolhe as ferramentas e as executa no seu projeto.
Demos a ele este pedido, com as mesmas camadas de Lyon carregadas:
Conte as escolas em cada arrondissement e depois dê a cada escola o nome da parada de bonde mais próxima e a distância até ela em metros.
Ele executou duas ferramentas de processamento do QGIS e depois uma etapa curta em Python que gravou os dois novos campos na camada de escolas. O painel mostrou "Worked for 22 s". Ele pediu permissão uma vez, porque ia editar o GeoPackage em disco. As contagens bateram exatamente com a nossa execução manual: 382 escolas, de 27 no 2º e no 4º até 56 no 5º.

Use quando: você sabe a pergunta, mas não sabe qual das quatro ferramentas de junção responde a ela, ou quando encadeia várias etapas.
Evite quando: você executa a mesma junção toda semana. Salve-a uma vez como modelo ou script Python.
Preço: plano gratuito, sem cartão. O Pro custa € 49 por mês, impostos não inclusos.
Método 3: contar e resumir com uma junção espacial
O Método 1 dá a cada escola o seu distrito. A pergunta inversa, quantas escolas cada distrito tem, exige a versão de resumo.
Procure Join attributes by location (summary) na Caixa de Ferramentas de Processamento. Coloque os polígonos em Join to features in, os pontos em By comparing to e escolha as estatísticas em Summaries to calculate: contagem, soma, média, mediana, mínimo, máximo e outras. O QGIS adiciona um campo por estatística, com nomes como osm_id_count.

Ele também soma números. Nos edifícios do IGN, uma execução deu a cada arrondissement o número de edifícios e de moradias registradas neles: 9.474 edifícios e 51.743 moradias no 3º, o maior valor nos dois casos.
Para uma contagem simples, Vector > Analysis Tools > Count Points in Polygon… (em português, Vetor > Ferramentas de análise > Contar pontos em polígono…) faz o mesmo com menos opções.
Use quando: a resposta é um número por área: contagem, total, média.
Evite quando: você precisa da lista das correspondências em si. Use o Método 1 com um-para-muitos.
Método 4: Join attributes by nearest
Quando as feições nunca se tocam, una-as pela distância. Procure Join attributes by nearest na Caixa de Ferramentas de Processamento.
Defina Input layer como schools, Input layer 2 como tram_stops e Maximum nearest neighbors como 1. O QGIS adiciona os campos da parada, mais um campo distance e as coordenadas das duas pontas.

Duas configurações mudam o resultado:
- Maximum distance. Com 300 m, só 86 escolas receberam uma parada. As outras 296 ficaram na saída com campos vazios, a menos que você marque Discard records which could not be joined.
- Maximum nearest neighbors. Com 3, as 382 escolas viraram 1.146 linhas, uma por escola e parada. Um empate exato também adiciona uma linha: nos 103.910 edifícios do IGN, obtivemos 103.911 linhas.
A distância é em linha reta, e não a distância a pé pelas ruas.
Use quando: você pergunta "qual é o mais próximo" e "a que distância".
Evite quando: você precisa da distância de deslocamento. Use as ferramentas de análise de rede da Caixa de Ferramentas de Processamento.
Qual predicado marcar
O predicado é a regra espacial que decide se há correspondência. O QGIS o lê como "camada A [predicado] camada B", em que A é a camada que recebe os campos.

Três regras cobrem a maior parte do trabalho:
- intersect para pontos em polígonos e para tudo que só precisa se tocar. Ele também pega feições sobre a borda.
- are within quando a feição precisa estar totalmente dentro. Nos nossos edifícios, 112 que intersectam Lyon não estavam totalmente dentro de um único arrondissement: 108 cruzam o limite da cidade e 4 cruzam uma divisa interna.
- contain para o sentido inverso, polígonos que contêm pontos.
Você pode marcar vários predicados. Uma feição então é associada se qualquer um deles for verdadeiro.
Um-para-um, um-para-muitos ou maior sobreposição
Um edifício sobre uma divisa toca dois distritos. O Join type decide o que acontece com ele. Nos 46.250 edifícios do IGN que intersectam Lyon:
| Tipo de junção | Linhas na saída | Tempo |
|---|---|---|
| Um-para-muitos (uma feição por correspondência) | 46.254 | 1,13 s |
| Apenas a primeira feição correspondente (um-para-um) | 46.250 | 0,99 s |
| Apenas a maior sobreposição (um-para-um) | 46.250 | 9,62 s |
O um-para-muitos duplicou os 4 edifícios que cruzam uma divisa interna. Isso está certo para uma lista de correspondências e errado para qualquer soma: esses edifícios seriam contados duas vezes.
A "primeira correspondente" fica com a que o QGIS encontra primeiro, então um edifício na divisa pode cair em qualquer um dos distritos. A "maior sobreposição" escolhe o distrito que contém a maior parte dele, que é a resposta justa, mas levou dez vezes mais tempo aqui.
Armadilhas de CRS
Um sistema de referência de coordenadas errado raramente impede uma junção. Ele muda o resultado em silêncio.
- CRS misturados funcionam em junções por localização. Deixamos as escolas em WGS 84 (EPSG:4326) e os distritos em Lambert-93. O QGIS reprojetou na hora e as 382 foram associadas.
- As distâncias seguem as unidades da camada de entrada. Execute a Join by nearest nos arquivos em WGS 84 e a "distância" mediana sai como 0,0071. Isso é em graus, não em metros. Reprojete as duas camadas para um CRS projetado em metros antes, com
Vector > Data Management Tools > Reproject Layer…. - Maximum distance usa as mesmas unidades. Um valor 300 em graus cobre o planeta inteiro.
Nosso guia sobre o que é um CRS explica graus versus metros e como corrigir uma camada que aparece no lugar errado.
Velocidade em camadas grandes
O QGIS faz junções em escala de cidade em segundos. Nos 103.910 edifícios do IGN:
- Junção um-para-um com os 9 distritos: 0,97 s a partir de um GeoPackage.
- A mesma camada como Shapefile: 1,69 s. Depois de
Vector > Data Management Tools > Create Spatial Index…, 1,04 s. - Parada de bonde mais próxima para cada edifício: 3,5 s.
- Maior sobreposição: 9,62 s, a opção mais lenta.
Quatro hábitos mantêm as junções grandes rápidas:
- Trabalhe a partir de GeoPackage. Ele já traz um índice espacial. Um Shapefile precisa do arquivo
.qix, que o Create Spatial Index grava. - Peça menos campos. Preencha Fields to add em vez de copiar tudo.
- Evite a maior sobreposição a menos que as feições de borda realmente importem.
- Corrija as geometrias antes. Um polígono inválido interrompe a execução com "has invalid geometry". A ferramenta Fix geometries da Caixa de Ferramentas de Processamento o repara. Você também pode mudar Invalid feature filtering sob o ícone de chave de boca ao lado da camada de entrada.
Confira também onde ficam os seus pontos. Só 211 dos 382 pontos de escolas caíram dentro de um edifício do IGN. Os demais marcam pátios e quadras, então "escola dentro de edifício" teria perdido 171 escolas.
O que lembrar
Use Join Attributes by Location com intersect para dar aos pontos o nome da sua área.
Use a versão Summary para contar ou somar por área e Join Attributes by Nearest para a feição mais próxima e a distância até ela.
Escolha um-para-um para totais e um-para-muitos quando precisar de todas as correspondências.
Reprojete para um CRS em metros antes de qualquer distância.
Se não tiver certeza de qual ferramenta serve, descreva o resultado que você quer ao AI Agent e confira o que ele construiu.
Perguntas frequentes
O que é uma junção espacial no QGIS?
Uma junção espacial adiciona os campos de uma camada a outra com base na localização: dentro, tocando ou mais próximo. No QGIS, as principais ferramentas são Join Attributes by Location, sua versão Summary para contagens e estatísticas, e Join Attributes by Nearest para distâncias.
Como unir atributos por localização no QGIS?
Abra Vector > Data Management Tools > Join Attributes by Location…. Defina a camada que recebe os campos em Join to features in e a camada de origem em By comparing to, marque intersect, escolha os campos e um tipo de junção um-para-um e execute.
Qual é a diferença entre a junção por localização e a junção pelo vizinho mais próximo?
A junção por localização exige que as feições se toquem ou se sobreponham, conforme o predicado marcado. A junção pelo mais próximo não exige contato: ela encontra a feição mais próxima e adiciona um campo de distância, nas unidades do CRS da camada de entrada.
Por que minha junção espacial retorna campos vazios?
Em geral, as feições não atendem ao predicado: pontos logo fora dos polígonos, um predicado rígido demais como "are within" ou geometrias inválidas. Confira as duas camadas no mapa, tente "intersect" e execute Fix Geometries. A falta de CRS em uma das camadas também a coloca no lugar errado.
A IA consegue fazer uma junção espacial no QGIS?
Sim. O AI Agent executa as ferramentas do QGIS a partir de um pedido digitado. No nosso teste em Lyon, ele fez uma contagem por distrito e uma junção pelo mais próximo a partir de uma frase, em 22 segundos, com os mesmos resultados da execução manual.
, abra 

