Transformando coordenadas geográficas em sistema cartesiano
O problema que a maioria das pessoas encontra é simples no papel e irritante na prática. Você tem uma série de pontos com latitude e longitude e precisa convertê-los para um sistema X e Y para plotar em um mapa plano ou processar em algum software. A primeira tentativa quase sempre gera distorções, principalmente se você não considerar o datum e o meridiano central corretos. Eu perdi uma manhã inteira com isso há uns dois anos. Estava trabalhando com dados de estações meteorológicas no interior de São Paulo e todas as coordenadas pareciam certos no shapefile, mas quando exportei para um sistema de projeção UTM zona 23S, os pontos pulavam cerca de 180 metros da posição real. O culpado era o datum: os dados originais estavam em SAD69 e eu tinha aplicado WGS84 sem fazer a transformação. A correção foi rodar um batch no QGIS usando o parâmetro "Datum shift" com os offsets específicos da Rede Geodésica Brasileira, o que ajustou a precisão para menos de 2 metros de erro.
Por que latitude e longitude x e y não são a mesma coisa
Latitude e longitude são ângulos medidos na superfície de um elipsoide. X e Y são distâncias lineares em metros ou pés sobre um plano. Converter de um para o outro exige uma projeção cartográfica, e cada projeção tem um custo de distorção. Não existe forma perfeita de transformar um globo em um plano sem perder algo — seja área, forma, distância ou direção. A regra básica é: use UTM para escalas locais e regionais, onde a precisão métrica importa. Use Mercadoro ou Web Mercator se o destino for visualização em tela, mas saiba que as distâncias vão mentir, especialmente fora do equador. Um grau de latitude varia aproximadamente 111 km em qualquer lugar. Um grau de longitude varia de 111 km no equador a zero nos polos. Isso significa que tratar latitude e longitude como se fossem X e Y puros e simples gera erros crescentes conforme você se afasta da linha do equador.
Como fazer a conversão na prática
A ferramenta mais acessível é o QGIS, que é gratuito e roda em Windows, Linux e macOS. Abaixo vai o passo a passo que eu uso quando preciso tratar lote de coordenadas. Comece importando sua tabela CSV ou Excel com as colunas de latitude e longitude. Garanta que os valores estão em graus decimais, não em graus minutos segundos. Se estiverem no formato DMS, converta antes com uma fórmula como =GRaus+(Minutos/60)+(Segundos/3600). Dados errados na entrada produzem resultados errados na saída, independente do resto do processo.
Defina o sistema de referência espacial (SRS) correto na camada. Para a maior parte do território brasileiro, WGS84 (EPSG:4326) é o padrão para coordenadas geográficas. Se seus dados originais forem de levantamentos topográficos antigos, verifique se usam SAD69 ou SIRGAS2000. A diferença entre eles pode chegar a dezenas de metros dependendo da região. Depois defina o SRS de destino. Para o Brasil, a zona UTM mais usada é a 23S (EPSG:29189 para SAD69 ou EPSG:78903 para SIRGAS2000). Escolha a zona que cobre sua área de interesse. A conversão pode ser feita direto no QGIS clicando com o botão direito na camada, depois "Definir referência espacial", exportando depois para o novo SRS. O campo resultado mostrará as coordenadas X e Y em metros.
👉 Clique no botão abaixo para saber mais sobre o assunto!
Se você precisa fazer isso programaticamente, a biblioteca Python pyproj resolve em duas linhas. Instale com pip install pyproj e use um código como Transformador de CRS=CRS.from_epsg(4326), crs=CRS.from_epsg(32723) e depois transformador.transform(lat, lon). O resultado são dois floats representando Easting e Northing.
O erro que ninguém conta sobre datum transformation
A maioria dos tutoriais trata a mudança de datum como algo automático e sem drama. Na prática, a transformação entre WGS84 e SAD69 não é um simples desvio constante. Ela depende da posição geográfica e usa parâmetros de sete elementos no modelo helmert. No Brasil, o IBGE disponibiliza uma tabela de correções regionais chamada "Shift Datum". Ignorar isso e aplicar uma transformação genérica pode introduzir erro de 5 a 30 metros em diferentes regiões do país. Outro ponto que pega muito gente é a confusão entre latitude/longitude como graus e como metros. Se você simplesmente multiplicar longitude por 111320 e latitude por 111320 para obter X e Y, estará assumindo uma projeção plana e retangular que só funciona para áreas muito pequenas, digamos menos de 10 km de extensão. Para Anything maior que isso, o erro de curvatura terrestre começa a se acumular de forma perceptível.
Quando a abordagem falha e o que usar no lugar
Se o seu objetivo é análise de redes, rotas ou buffers em escala continental, UTM não é a melhor escolha. O sistema quebra em zonas e cruzar o limite entre duas zonas gera descontinuidade nas coordenadas. Nesse caso, considere usar uma projeção conformal como a Albers Equal Area, que preserva áreas e funciona bem para o Brasil inteiro como um todo. Se você trabalha com drones ou levantamentos GNSS de alta precisão, o padrão Ouro é o SIRGAS2000 em UTM na zona correspondente. Evite continuar usando SAD69 em novos projetos a menos que tenha uma razão clara para isso, como compatibilidade com base de dados legada. A transição já foi oficialmente concluída pelo IBGE e a maioria dos softwares modernos trata SIRGAS2000 como padrão nativo.
Também vale mencionar que a precisão final nunca será melhor que a precisão dos dados de entrada. Coordenadas coletadas com GPS de consumo livre ficam na casa de 3 a 10 metros de erro. Mesmo convertendo perfeitamente para UTM, esse erro permanece. Topografia profissional com estação total ou RTK chega a centímetros, mas custa muito mais e exige equipamento específico. Se quiser testar rapidamente sem instalar nada, existe uma página online que aceita coordenadas geográficas e devolve UTM: o site da NASA EOSDIS faz a conversão direta para diversos sistemas. Para processamento em lote recorrente, montar um script Python com pyproj e salvar os resultados em CSV é mais rápido e reproduzível do que depender de ferramentas online.