Erro de CRS no QGIS: Guia técnico

Diferença de precisão entre transformação de 3 parâmetros e grade NTv2 no Brasil

Se você chegou aqui porque sua camada aparece longe do lugar certo, ou simplesmente não aparece, o post anterior sobre esse assunto provavelmente já resolveu. Mas se você já atribuiu o CRS certo, já reprojetou, e a camada continua caindo alguns metros ou algumas dezenas de metros fora do lugar, o problema é outro, mais sutil, e é sobre isso que este texto trata: transformação de datum malfeita e ambiguidade na escolha da operação de transformação dentro do próprio PROJ.

Esse é o tipo de erro que passa despercebido em mapa de divulgação, porque ninguém nota um desvio de vinte metros olhando o Brasil inteiro na tela. Mas em trabalho de georreferenciamento de imóvel rural, cadastro territorial multifinalitário ou qualquer coisa com implicação legal, vinte metros é a diferença entre um laudo aceito e um processo questionado.

Causa 1: a camada não tem CRS definido (recapitulando rápido)

Só para não deixar nenhuma lacuna: se a camada aparece sem nenhuma relação espacial com o resto do projeto, ou o QGIS mostra “CRS desconhecido” em Propriedades, o problema é ausência de definição, não erro de transformação. Atribua o CRS correto (Camada, Propriedades, Fonte, Atribuir CRS) antes de qualquer outra coisa. Esse post assume que essa etapa já está resolvida.

Causa 2: confundir sistema geográfico com projetado

Também rápido, porque já foi tratado em detalhe antes: SIRGAS2000 geográfico (EPSG:4674) usa graus decimais, SIRGAS2000 UTM (EPSG:31981 a 31985, dependendo do fuso) usa metros. Coordenadas na casa de centenas de milhares a milhões são quase sempre UTM. Coordenadas entre -180 e 180 são graus. Se esse ainda for o seu problema, resolve com isso. O resto deste post é para quem já passou dessa etapa.

Causa 3: a transformação de datum errada, o problema que a maioria nem sabe que existe

Aqui está o ponto que faz esse post existir. No Brasil, dados antigos frequentemente estão em SAD69 ou em Córrego Alegre, datums anteriores ao SIRGAS2000 que ainda hoje aparecem em base cartográfica de prefeitura, cadastro rural antigo e levantamento topográfico de décadas passadas. Transformar coordenadas entre esses datums e o SIRGAS2000 não é uma simples troca de rótulo. É uma transformação geodésica real, porque os datums têm origem, orientação e elipsoide de referência diferentes.

Existem dois caminhos técnicos para essa transformação, e escolher o errado é exatamente o tipo de erro que produz aquele desvio de “quase certo, mas não exatamente” que é difícil de diagnosticar.

Janela de Transformações de Coordenadas do Projeto no QGIS mostrando operações candidatas
Janela de Transformações de Coordenadas do Projeto no QGIS mostrando operações candidatas

O primeiro caminho é a transformação de três parâmetros (translação geocêntrica, também chamada de Molodensky simplificado). O IBGE publicou os parâmetros oficiais para SAD69 vindo de posicionamento GNSS até SIRGAS2000 através da Resolução do Presidente do IBGE nº 1, de 25 de fevereiro de 2005: DX = -67,35 m, DY = +3,88 m, DZ = -38,22 m. Esse método é rápido e funciona bem para a maior parte dos usos, mas é uma aproximação. Ele assume que o deslocamento entre os dois sistemas é constante em toda a extensão do território, o que não é fisicamente verdade: as diferentes materializações históricas da rede geodésica brasileira acumularam distorções que variam de região para região.

O segundo caminho é a transformação por grade NTv2, que o IBGE recomenda para trabalho de maior precisão. Em vez de um deslocamento fixo, a grade NTv2 modela como esse deslocamento varia espacialmente através do território, usando uma malha de correção. O IBGE disponibiliza essa grade através da ferramenta ProGriD, e é o método que bate com a solução oficial de ajustamento SIRGAS2000 usada como referência de validação em trabalhos técnicos do próprio instituto. A diferença entre os dois métodos, feita a comparação em campo, historicamente chegou à casa de dezenas de metros dependendo da região do país, o que é grande demais para qualquer coisa que envolva demarcação de imóvel ou cadastro legal.

O que isso significa na prática dentro do QGIS: durante muito tempo, a biblioteca PROJ usada por várias versões do QGIS trazia embutidos parâmetros de transformação entre datums brasileiros que não batiam exatamente com os valores oficiais do IBGE, e isso já foi documentado e discutido extensamente pela comunidade brasileira de usuários do QGIS. Nas versões atuais do QGIS, que usam versões recentes do PROJ com suporte a download automático de grades de transformação (a opção de “rede de grades” habilitada em Configurações, Opções, CRS), esse problema diminuiu bastante, porque o PROJ moderno já inclui ou consegue baixar as grades corretas para transformações brasileiras via a rede de distribuição do próprio projeto PROJ. Mas “diminuiu” não é “desapareceu”: se você está trabalhando offline, sem a rede de grades disponível, ou com uma instalação antiga do QGIS, o sistema pode silenciosamente cair para uma transformação de três parâmetros genérica em vez de usar a grade, sem avisar que fez essa escolha.

Como verificar qual transformação está sendo usada: vá em Projeto, Propriedades, aba Transformações. Ali o QGIS lista as operações de coordenadas candidatas disponíveis entre o CRS de origem e o CRS de destino, geralmente ordenadas por precisão estimada. Escolha explicitamente a operação baseada em grade (o nome costuma mencionar “NTv2” ou o nome do arquivo de grade) em vez de deixar o QGIS escolher automaticamente, principalmente se você está fazendo trabalho que depende de precisão métrica ou sub-métrica. Se a opção de grade não aparecer na lista, é sinal de que o arquivo de grade não está disponível localmente nem via rede, e você vai precisar habilitar o download automático de grades ou obter o arquivo manualmente através do ProGriD do IBGE.

Causa 4: área de uso e múltiplas transformações candidatas

Esse é o ponto mais técnico do post, e o que menos gente entende sobre como o PROJ moderno realmente funciona. Desde a versão 6 do PROJ (a biblioteca de transformação de coordenadas usada por baixo do QGIS), o sistema deixou de usar um único caminho fixo de transformação por par de datum (o antigo modelo chamado de “early binding”, baseado em um elipsoide intermediário WGS84 fixo para tudo) e passou a manter um banco de dados de operações de coordenadas específicas por par de CRS, cada uma com uma área de uso definida e uma precisão estimada associada. Isso é o chamado “late binding”.

Na prática, isso significa que existe mais de um jeito de transformar entre dois CRS, e o PROJ escolhe automaticamente com base na área de uso da sua geometria, a não ser que você force uma escolha específica. Se a sua área de trabalho está exatamente na borda entre duas áreas de uso, ou se o PROJ não tem certeza de qual operação priorizar, o resultado pode variar de forma sutil e inconsistente entre diferentes processamentos do mesmo dado, especialmente se a instalação do QGIS num computador tiver uma versão de PROJ diferente da instalação em outro computador da sua equipe. É por isso que dois analistas usando “o mesmo QGIS” às vezes obtêm resultados de reprojeção ligeiramente diferentes: nem sempre é o QGIS, às vezes é a versão do PROJ por baixo.

Como lidar com isso de forma robusta: para qualquer projeto onde a reprodutibilidade importa (perícia, trabalho acadêmico publicado, cadastro legal), documente explicitamente não só os códigos EPSG de origem e destino, mas a operação de transformação específica usada (o QGIS mostra o nome/código dessa operação na aba Transformações do projeto), e trave essa escolha manualmente em vez de deixar em automático. Isso é o equivalente, em geoprocessamento, de fixar a versão de uma biblioteca de software: sem isso, “funciona na minha máquina” pode significar literalmente uma transformação matemática diferente rodando em outra máquina.

Comparação de deslocamento entre SAD69 e SIRGAS2000 em uma mesma feição
Comparação de deslocamento entre SAD69 e SIRGAS2000 em uma mesma feição

Checklist técnico completo

  • Confirme que a camada tem CRS definido (Propriedades, Fonte).
  • Confirme se o CRS é geográfico ou projetado pela magnitude das coordenadas.
  • Se envolver conversão entre datums antigos (SAD69, Córrego Alegre) e SIRGAS2000, verifique em Projeto, Propriedades, Transformações qual operação está sendo usada, e prefira a baseada em grade NTv2 sobre a de três parâmetros sempre que precisão métrica importar.
  • Confirme se a rede de grades de transformação do PROJ está habilitada (Configurações, Opções, CRS) para garantir acesso às grades mais atualizadas.
  • Para trabalho que exige reprodutibilidade formal, documente a operação de transformação exata usada, não só os códigos EPSG de origem e destino.
  • Se dois computadores da mesma equipe produzem resultados de reprojeção ligeiramente diferentes para o mesmo dado, compare as versões do PROJ instaladas antes de suspeitar de erro humano.

Perguntas frequentes

Por que minha camada em SAD69 fica “quase certa” depois de reprojetar para SIRGAS2000, mas não exatamente no lugar?

Provavelmente o QGIS usou uma transformação de três parâmetros genérica em vez da grade NTv2 oficial do IBGE. Verifique em Projeto, Propriedades, Transformações qual operação foi aplicada, e force a opção baseada em grade se ela estiver disponível.

Isso importa para um mapa de divulgação simples, sem uso legal?

Na prática, um desvio de poucos metros a algumas dezenas de metros geralmente não é perceptível num mapa de escala municipal ou regional usado para comunicação. O cuidado descrito aqui importa de verdade para trabalho de precisão: georreferenciamento de imóvel, cadastro territorial multifinalitário, perícia técnica ou qualquer publicação acadêmica que declare precisão métrica.

O QGIS baixa a grade de transformação automaticamente?

Depende da configuração. Em Configurações, Opções, CRS, existe uma opção para habilitar a rede de grades do PROJ, que permite o download automático das grades necessárias quando disponíveis. Sem isso habilitado, e sem o arquivo de grade já presente localmente, o QGIS pode cair para uma transformação sem grade sem deixar isso óbvio para quem está operando.

Onde eu consigo a grade oficial de transformação do IBGE?

Através da ferramenta ProGriD, disponibilizada pelo próprio IBGE, que reúne os arquivos de grade oficiais para transformação entre Córrego Alegre, SAD69 e SIRGAS2000.

Por que dois colegas usando QGIS reprojetam o mesmo shapefile e obtêm coordenadas ligeiramente diferentes?

O motivo mais comum é versão diferente da biblioteca PROJ entre as duas instalações, resultando em escolha automática de operações de transformação diferentes. Force a mesma operação manualmente nos dois computadores, ou padronize a versão do QGIS (e do PROJ embutido) usada pela equipe em projetos onde isso importa.

Fontes citadas neste post

  • IBGE. Resolução do Presidente do IBGE nº 1, de 25 de fevereiro de 2005. Parâmetros oficiais de transformação entre SAD69 e SIRGAS2000 por translação geocêntrica.
  • IBGE. Documentação técnica do ProGriD, ferramenta oficial de transformação de coordenadas entre Córrego Alegre, SAD69 e SIRGAS2000 por grade NTv2.
  • PROJ. Documentação oficial sobre o modelo de operações de coordenadas, área de uso e o conceito de late binding a partir da versão 6 da biblioteca.

Preencha os dados a seguir e entraremos em contato o mais breve possível

Preencha os dados a seguir para liberar o download do QGIS