Erros Comuns e Soluções
Evite armadilhas frequentes e resolva problemas rapidamente com este guia de solução de problemas.
Visão Geral
Este guia documenta os erros mais comuns que os usuários encontram ao usar o FilterMate, com soluções claras e estratégias de prevenção.
Navegação Rápida:
- Resultados de Filtro Vazios
- Backend PostgreSQL Indisponível
- Desempenho Lento
- Resultados Espaciais Incorretos
- Erros de Expressão
- Falhas de Exportação
- Histórico de Filtros Perdido
- Problemas de CRS
1. Resultados de Filtro Vazios
Sintoma: O filtro retorna 0 feições, mas você esperava correspondências.
Causas Comuns
Causa A: Incompatibilidade de CRS
Problema: As camadas têm sistemas de coordenadas diferentes que não se sobrepõem geograficamente.
Exemplo:
Camada 1: EPSG:4326 (WGS84) - Coordenadas globais
Camada 2: EPSG:2154 (Lambert 93) - Apenas França
Solução: ✅ O FilterMate lida com a reprojeção de CRS automaticamente, mas verifique se as camadas se sobrepõem:
- Clique com o botão direito em cada camada → Zoom para Camada
- Verifique se ambas as camadas aparecem na mesma área geográfica
- Procure o indicador 🔄 de reprojeção nos logs do FilterMate
Prevenção:
- Use camadas da mesma região geográfica
- Verifique a extensão da camada em Propriedades → Informação
Causa B: Geometrias Inválidas
Problema: Geometrias corrompidas ou auto-intersectantes impedem operações espaciais.
Sintomas:
- "Erro GEOS" nos logs
- Resultados inconsistentes
- Algumas feições ausentes inesperadamente
Solução: ✅ Execute reparo de geometria antes de filtrar:
# Na Caixa de Ferramentas de Processamento QGIS
1. Geometria vetorial → Corrigir geometrias
2. Entrada: Sua camada problemática
3. Saída: camada_corrigida
4. Use a camada corrigida no FilterMate
Verificação Rápida:
# Caixa de Ferramentas de Processamento
Geometria vetorial → Verificar validade
Causa C: Distância de Buffer Muito Pequena
Problema: A zona de buffer não alcança nenhuma feição.
Exemplo:
Buffer: 10 metros
Realidade: A feição mais próxima está a 50 metros
Resultado: 0 feições encontradas
Solução: ✅ Aumente progressivamente a distância do buffer:
Tente: 50m → 100m → 500m → 1000m
✅ Teste primeiro sem buffer:
- Use o predicado "Intersects" sem buffer
- Se isso retornar resultados, a distância do buffer é o problema
Causa D: Valores de Atributo Errados
Problema: Filtrando por valores que não existem nos dados.
Exemplo:
-- Sua expressão:
city = 'Paris'
-- Valores reais nos dados:
city = 'PARIS' (maiúsculas)
city = 'Paris, France' (inclui país)
Solução: ✅ Verifique os valores reais dos campos primeiro:
- Clique com o botão direito na camada → Tabela de Atributos
- Observe os valores reais no campo
- Ajuste a expressão para corresponder exatamente
✅ Use correspondência insensível a maiúsculas:
-- Em vez de:
city = 'Paris'
-- Use:
upper(city) = 'PARIS'
-- ou
city ILIKE 'paris'
Causa E: As Camadas Não se Sobrepõem Geograficamente
Problema: A camada de referência e a camada alvo estão em locais diferentes.
Exemplo:
Alvo: Edifícios em Nova York
Referência: Estradas em Londres
Resultado: Sem sobreposição = 0 resultados
Solução: ✅ Verifique a sobreposição geográfica:
- Selecione ambas as camadas no Painel de Camadas
- Clique com o botão direito → Zoom para Camadas
- Ambas devem aparecer na mesma visualização do mapa
Fluxo de Trabalho de Depuração para Resultados Vazios
Passo 1: Teste com expressão simples
1 = 1 -- Deve retornar TODAS as feições
Se isso falhar → Problema de backend ou camada
Passo 2: Teste apenas o filtro de atributo
-- Remova o filtro espacial
-- Teste: population > 0
Se isso funcionar → Problema de configuração espacial
Passo 3: Teste apenas o filtro espacial
-- Remova o filtro de atributo
-- Use um "Intersects" básico sem buffer
Se isso funcionar → Problema de expressão de atributo
Passo 4: Verifique os logs
QGIS → Visualizar → Painéis → Mensagens de Log → FilterMate
Procure mensagens de erro em vermelho
2. Backend PostgreSQL Indisponível
Sintoma: Mensagem de aviso: Backend PostgreSQL indisponível - usando fallback
Causa Raiz
Problema: O pacote Python psycopg2 não está instalado no ambiente Python do QGIS.
Impacto:
- Desempenho 10-50× mais lento em grandes conjuntos de dados
- Sem views materializadas ou processamento no servidor
- Fallback para backend Spatialite ou OGR
Solução: Instalar psycopg2
- Windows
- Linux
- macOS
# Método A: Shell OSGeo4W (Recomendado)
# Abra o Shell OSGeo4W como Administrador
# Execute estes comandos:
py3_env
pip install psycopg2-binary
# Método B: Console Python QGIS
# QGIS → Plugins → Console Python
# Execute este código:
import subprocess
subprocess.check_call(['python', '-m', 'pip', 'install', 'psycopg2-binary'])
# Ubuntu/Debian
sudo apt-get install python3-psycopg2
# Ou via pip
pip3 install psycopg2-binary
# Verificar instalação
python3 -c "import psycopg2; print(psycopg2.__version__)"
# Via pip (Python QGIS)
/Applications/QGIS.app/Contents/MacOS/bin/pip3 install psycopg2-binary
# Ou via Homebrew
brew install postgresql
pip3 install psycopg2-binary
Verificação
Verifique se psycopg2 está instalado:
# Console Python QGIS
import psycopg2
print(psycopg2.__version__)
# Esperado: '2.9.x (dt dec pq3 ext lo64)'
Verifique os logs do FilterMate:
✅ Sucesso: "Backend PostgreSQL disponível"
❌ Aviso: "psycopg2 não encontrado, usando Spatialite"
Quando NÃO se Preocupar
Você pode pular a instalação do PostgreSQL se:
- Conjunto de dados com
<10.000feições (Spatialite é rápido o suficiente) - Usando camadas OGR (Shapefile, GeoPackage) e não pode migrar
- Filtragem apenas ocasional (desempenho não crítico)
- Nenhum banco de dados PostgreSQL disponível
3. Desempenho Lento (>30 segundos)
Sintoma: A operação de filtro leva mais de 30 segundos.
Diagnóstico
Verifique o backend em uso:
Painel FilterMate → Info da camada:
Provider: ogr (⚠️ Mais lento)
Provider: spatialite (⏱️ Médio)
Provider: postgresql (⚡ Mais rápido)
Soluções por Backend
Backend OGR (Shapefile, GeoPackage)
Problema: Sem índices espaciais nativos, processamento em memória.
Solução 1: Migrar para PostgreSQL
# Melhor para conjuntos de dados >50k feições
1. Configure PostgreSQL+PostGIS
2. Gerenciador BD → Importar camada
3. Reconecte no QGIS
4. Aceleração de 10-50×
Solução 2: Migrar para Spatialite
# Bom para conjuntos de dados 10k-50k feições
1. Caixa de Ferramentas de Processamento → Vetor geral → Empacotar camadas
2. Escolha formato Spatialite
3. Aceleração de 3-5× vs Shapefile
Solução 3: Otimizar a consulta
-- Adicione filtro de atributo PRIMEIRO (reduz escopo da consulta espacial)
population > 10000 AND ...consulta espacial...
-- Em vez de:
...consulta espacial... AND population > 10000
Backend Spatialite
Problema: Grande conjunto de dados (>50k feições).
Solução: Migrar para PostgreSQL
- Melhoria esperada: 5-10× mais rápido
- Consultas em menos de um segundo em 100k+ feições
Contorno: Reduzir escopo da consulta
-- Pré-filtrar com bounding box
bbox($geometry,
$xmin, $ymin,
$xmax, $ymax)
AND ...seu filtro...
Backend PostgreSQL (Já Rápido)
Problema: Lento apesar de usar PostgreSQL (raro).
Causas Possíveis:
- ❌ Índice espacial ausente
- ❌ Geometrias inválidas
- ❌ Latência de rede (banco de dados remoto)
Soluções:
-- 1. Verifique se o índice espacial existe
SELECT * FROM pg_indexes
WHERE tablename = 'sua_tabela'
AND indexdef LIKE '%GIST%';
-- 2. Crie índice se ausente
CREATE INDEX idx_geom ON sua_tabela USING GIST(geom);
-- 3. Corrija geometrias
UPDATE sua_tabela SET geom = ST_MakeValid(geom);
Benchmarks de Desempenho
| Backend | 10k feições | 50k feições | 100k feições |
|---|---|---|---|
| PostgreSQL | 0.1s ⚡ | 0.3s ⚡ | 0.8s ⚡ |
| Spatialite | 0.4s ✓ | 4.5s ⏱️ | 18s ⏱️ |
| OGR (GPKG) | 2.1s | 25s ⚠️ | 95s 🐌 |
| OGR (SHP) | 3.8s | 45s 🐌 | 180s 🐌 |
Recomendação: Use PostgreSQL para >50k feições.
4. Resultados Espaciais Incorretos
Sintoma: Feições distantes da geometria de referência estão incluídas nos resultados.