SIRGAS 2000 vs WGS 84 vs Córrego Alegre / SAD 69: quando a diferença importa
Resposta curta: SIRGAS 2000 e WGS 84 são o mesmo lugar a menos de um metro de distância, e a transformação entre os dois é nula — o PROJ seleciona EPSG:15894, "SIRGAS 2000 to WGS 84 (1)", um +proj=noop publicado com acurácia declarada de 1,0 m. Ou seja, o par sobre o qual todo mundo pergunta não é o que morde. O par que morde é o legado: em Brasília uma coordenada em SAD 69 fica a 68,530 m do mesmo ponto no terreno em SIRGAS 2000 (EPSG:15485), em Belo Horizonte uma coordenada em Córrego Alegre fica a 41,711 m de distância (EPSG:6193), e um arquivo rotulado como um enquanto carrega o outro põe a sua divisa no lote do vizinho.
Medido em 23 de setembro de 2026 com GDAL 3.13.3 e PROJ 9.8.1, contra o conversor de coordenadas em static-page-tools@79fc1f6. A versão dos dados do PROJ também conta: banco EPSG v12.029, PROJ_DATA.VERSION 1.24, com as grades de deslocamento br_ibge_CA7072_003.tif e br_ibge_SAD69_003.tif ausentes e a busca em rede desligada, então toda operação abaixo é um Helmert e não uma grade. Isso faz de cada uma a operação que o PROJ selecionou aqui, e não um fato universal: com as grades do proj-data instaladas, de EPSG:4618 para EPSG:4674 a seleção passa a ser DERIVED_FROM(EPSG):5528, de EPSG:4618 para EPSG:4326 passa a ser DERIVED_FROM(EPSG):5542, de EPSG:4225 para EPSG:4674 passa a ser DERIVED_FROM(EPSG):5526, e os metros seriam outros.
Os quatro pares, e qual deles de fato te move
Na Praça da Sé, em São Paulo (-23.550385, -46.633956), projinfo -s EPSG:4674 -t EPSG:4326 --summary devolve um único candidato, EPSG:15894, com acurácia de 1,0 m, e projinfo -k operation EPSG:15894 -o PROJ imprime +proj=noop. Nada é aplicado: o gdaltransform devolve a coordenada byte a byte igual e, com CPL_DEBUG=ON, não registra nenhuma linha de operação. O EPSG publica a identidade com uma incerteza de 1,0 m em vez de um deslocamento, porque os dois referenciais são definidos como sendo o mesmo referencial mais ou menos nessa ordem de grandeza. Não existe reprojeção entre eles para se errar.
Na Praça dos Três Poderes, em Brasília (-15.799800, -47.861000), de EPSG:4618 para EPSG:4674 a seleção é EPSG:15485, "SAD69 to SIRGAS 2000 (1)", 5,0 m, um Helmert de três parâmetros +x=-67.35 +y=3.88 +z=-38.22, e o ponto se desloca 68,530 m. Para EPSG:4326 a seleção é EPSG:5882, "SAD69 to WGS 84 (16)", também 5,0 m e o mesmo Helmert, e o deslocamento é os mesmos 68,530 m.
Na Praça da Liberdade, em Belo Horizonte (-19.932000, -43.937000), de EPSG:4225 para EPSG:4674 a seleção é EPSG:6193, "Corrego Alegre 1970-72 to SIRGAS 2000 (2)", 5,0 m, Helmert +x=-206.05 +y=168.28 +z=-3.82, e o ponto se desloca 41,711 m; para EPSG:4326 a seleção é EPSG:6194 e o deslocamento é os mesmos 41,711 m. Um dígito de diferença, e fáceis de trocar um pelo outro.
O comando projinfo puro conta outra história
Cheque o SAD 69 do jeito óbvio e o PROJ não te conta nada disso. projinfo -s EPSG:4618 -t EPSG:4326 --summary devolve um único candidato — unknown id, Ballpark geographic offset from SAD69 to WGS 84, unknown accuracy, extensão World — sob o aviso Note: using '--spatial-test intersects' would bring more results (20). Rode assim e voltam 20 candidatos no total, dezenove a mais que o único da rodada padrão; de EPSG:4618 para EPSG:4674 ele imprime (3) e devolve 3 no total, dois a mais. Um ballpark não é uma operação e não é um número para se citar. O padrão --spatial-test contains pergunta se a extensão de uma operação contém a extensão do CRS de origem inteiro, e o SAD 69 se estende por toda a América do Sul, então nenhuma operação restrita ao Brasil se qualifica.
Enquanto isso, o ogr2ogr na mesma máquina aplica EPSG:5882 e EPSG:15485 aos seus pontos de verdade, caladinho, porque transformar um ponto testa o ponto. Pergunte na escala daquilo que você está transformando: --spatial-test intersects, ou um --bbox justo em volta. A armadilha funciona nos dois sentidos — um --bbox do tamanho do Brasil faz o caminho de EPSG:4225 para EPSG:4674 virar um ballpark, porque a área de uso do próprio Córrego Alegre é menor que o Brasil.
Córrego Alegre: o conversor está rodando os próprios parâmetros do PROJ
O conversor do navegador não chama o PROJ. Ele usa o proj4 com strings +towgs84 fixas no código, e a definição dele para EPSG:4225 é +towgs84=-206.05,168.28,-3.82,0,0,0,0 sobre +ellps=intl. O EPSG:6193 e o EPSG:6194 do PROJ carregam os dois o passo Helmert +x=-206.05 +y=168.28 +z=-3.82 sobre esse mesmo elipsoide — os mesmos três números, byte a byte. Então não há nada a comparar neste datum: os dois usam parâmetros idênticos e por isso não têm como discordar, e qualquer número de concordância entre eles seria a mesma aritmética rodada duas vezes, e não uma conferência de um contra o outro. No Córrego Alegre o conversor é o EPSG:6194, por construção.
SAD 69: duas operações EPSG de mesma acurácia, e os metros entre elas
O SAD 69 é a comparação de verdade. A definição de EPSG:4618 no conversor carrega +towgs84=-66.87,4.37,-38.52,0,0,0,0 enquanto o EPSG:5882 carrega +x=-67.35 +y=3.88 +z=-38.22 — dois Helmerts diferentes sobre o mesmo elipsoide, então as respostas podem de fato divergir. O comentário ao lado desses parâmetros no código do conversor diz que eles estão a "menos de um metro" de distância, e ninguém tinha posto um número nisso.
Aqui está o número, e ele precisa dos dois códigos de operação ao lado, senão diz a coisa errada. A tripla -66.87,4.37,-38.52 do conversor não é uma aproximação do EPSG:5882: ela é o EPSG:1877, "SAD69 to WGS 84 (14)", byte a byte — publicada pelo EPSG com a mesma acurácia de 5,0 m e a mesma área de uso do EPSG:5882, e segunda colocada em toda execução do projinfo restrita ao Brasil. Passe o ponto de Brasília pelas duas e as respostas ficam a 0,747 m uma da outra, de 0,730 m a 0,747 m em cinco cidades brasileiras: é a distância entre duas operações publicadas de acurácia declarada igual, cada uma umas sete vezes dentro da própria incerteza declarada de 5,0 m. Não é erro do conversor, e não é nada perto dos 68,530 m que EPSG:15485 e EPSG:5882 deslocam o ponto já de saída.
Quando a diferença importa
Defina o limiar pelo que está em discussão. Uma divisa cadastral ou o levantamento de um lote se discute em centímetros, e pelo EPSG:5882 o deslocamento do SAD 69 mediu 63,015 m em Salvador, 68,530 m em Brasília, 69,291 m em Manaus, 71,403 m em São Paulo e 74,588 m em Porto Alegre — qualquer um deles põe um canto no lote de outra pessoa. É sistemático, não é ruído: cada vértice se move do mesmo jeito, então o lote mantém o formato e parece plausível. Em uma base cartográfica 1:250.000 o mesmo deslocamento é uma fração de milímetro e é invisível, que é como arquivos legados sobrevivem por décadas — mas o rótulo continua tendo que estar certo, porque o dia em que alguém reaproveitar esse arquivo para uma divisa é o dia em que ele deixa de ser invisível.
Como saber em que datum um arquivo está
Três grafias da mesma resposta, e qual delas você vê depende de como você olha. ogrinfo -so yourfile.shp yourlayer no GDAL 3.13.3 imprime WKT2, então a palavra-chave é GEOGCRS[ e os nomes aparecem como GEOGCRS["SIRGAS 2000",, GEOGCRS["WGS 84",, GEOGCRS["SAD69", e GEOGCRS["Corrego Alegre 1970-72",. Acrescente -wkt_format WKT1 e os mesmos quatro voltam sob a palavra-chave mais antiga GEOGCS[, a grafia que a maior parte da documentação ainda mostra. Abra o .prj num editor de texto e você tem uma terceira, WKT1 da ESRI com nomes próprios: GCS_SIRGAS_2000, GCS_WGS_1984, GCS_South_American_1969 e GCS_Corrego_Alegre.
O elipsoide resolve quando o nome vem deturpado: Córrego Alegre 1970-72 se apoia no International_1924 e o SAD 69 no GRS_1967_Truncated, enquanto SIRGAS 2000 e WGS 84 se apoiam no GRS_1980 e no WGS_1984, que compartilham o semieixo maior. Uma planilha não te dá nada para ler — um CSV não carrega sistema de coordenadas nenhum, então o datum tem que vir de quem exportou o arquivo (CSV com latitude e longitude no mapa).
Atribuir ou reprojetar: duas flags, dois verbos
ogr2ogr -a_srs EPSG:4674 relabel.shp fix4225.shp em um arquivo em Córrego Alegre escreve um .prj novo e não move nada: o ogrinfo -so agora diz GEOGCRS["SIRGAS 2000", enquanto o ogrinfo -al -geom=YES continua imprimindo POINT (-43.937 -19.932). Já ogr2ogr -s_srs EPSG:4225 -t_srs EPSG:4674 moved.shp fix4225.shp faz o outro serviço: o rótulo muda do mesmo jeito e a geometria vira POINT (-43.937208157368 -19.9323212697943), byte a byte igual ao que o EPSG:6193 produz, porque foi essa a operação que o ogr2ogr escolheu. O arquivo que só teve o rótulo trocado é a armadilha — ele abre, ele desenha, ele parece certo, e o ponto dele está agora os 41,711 m inteiros longe de onde deveria estar, com um .prj novinho dando fé disso.
-a_srs está certo em exatamente um caso: os números já estavam corretos e o rótulo estava faltando ou errado. -s_srs junto com -t_srs está certo sempre que os números precisam se mover. O post sobre o .prj ausente cobre o primeiro caso em detalhe.
No navegador
O conversor de coordenadas oferece os quatro no seletor Projeção de origem (CRS), e os rótulos das opções são inglês fixo no código em todos os idiomas, então eles aparecem iguais nas páginas em português e em espanhol — inclusive o título do grupo Brasil, escrito em português dentro da interface em inglês. Em Brasil: SIRGAS 2000 (EPSG:4674), SAD 69 — legacy (EPSG:4618) e Córrego Alegre 1970-72 — legacy (EPSG:4225), mais SAD 69 / Brazil Polyconic — legacy (EPSG:29101), SAD 69 / UTM 22S — legacy (EPSG:29192) e SAD 69 / UTM 23S — legacy (EPSG:29193). WGS 84 (EPSG:4326) está em Global.
Defina o destino antes de ler qualquer coisa: ele começa em SIRGAS 2000 / UTM 23S (EPSG:31983), então graus digitados na linha Graus decimais com a Projeção de destino (CRS) intocada voltam em metros. Escolha o mesmo CRS dos dois lados e não existe metade de resultado — a página imprime Escolha uma projeção de destino diferente para ver a conversão. Para os códigos em si, a seção "O conjunto legado que você herda" da cola de EPSG lista as entradas legadas brasileiras e o que substituiu cada uma, e a seção "O conjunto latino-americano" faz o mesmo para Colômbia, Argentina, Chile e México (códigos EPSG do Brasil e da América Latina).
Arquivos de teste que você pode usar
Nada para baixar: a fixture é um par de coordenadas. Converta os três pares acima, cada um no seu próprio datum — a Praça da Sé em SIRGAS 2000, a Praça dos Três Poderes em SAD 69, a Praça da Liberdade em Córrego Alegre 1970-72 — e veja cada um se mover. Cada ponto está dentro da área de uso declarada do seu datum, e é disso que as rodadas acima dependem: pergunte ao PROJ numa escala mais larga — sem área nenhuma, ou com um --bbox do tamanho do Brasil — e ele responde com um ballpark em vez de uma operação nomeada.
Para montar a variante quebrada, pegue um shapefile que você sabe estar em Córrego Alegre e rode ogr2ogr -a_srs EPSG:4674 relabel.shp fix4225.shp. O arquivo agora diz que é SIRGAS 2000, cada coordenada está exatamente onde estava, e nada dentro dele vai te avisar.
Para times
Um datum é um fato sobre um arquivo que costuma morar fora do arquivo — o nome de uma pasta, uma troca de e-mails, a lembrança de uma pessoa sobre quem entregou aquilo. O Geodocs mantém o sistema de coordenadas junto com os dados num mapa compartilhado, então um levantamento legado é reprojetado uma vez na entrada e todo mundo que desenha em cima trabalha no mesmo referencial.