Conversor de ECEF para ENU local
Este conversor de ECEF para ENU transforma uma posição XYZ centrada e fixa na Terra em distâncias para leste, norte e cima relativas a uma origem local escolhida.
Executar grátis
Informe as coordenadas ECEF do alvo e a latitude geodésica, longitude e altura elipsoidal opcional do ponto de referência. A calculadora determina a posição ECEF da origem no WGS 84, subtrai essa posição do alvo e gira o vetor resultante para o referencial tangente local. Você também pode fornecer outro elipsoide e escolher a precisão da saída.
Defina o ponto ECEF e a origem local de modo consistente
Uma coordenada ECEF descreve uma posição em um referencial cartesiano preso à Terra em rotação. O eixo X passa pela latitude zero e longitude zero, o eixo Y passa pela latitude zero e longitude 90 graus leste, e o eixo Z aponta para o Polo Norte. Informe as três coordenadas do alvo em metros. O referencial local também requer uma origem, representada aqui por latitude geodésica, longitude e altura elipsoidal. Latitude e longitude são expressas em graus decimais, enquanto a altura é medida ao longo da normal ao elipsoide, e não acima do nível médio do mar. Essa diferença importa: uma altitude ortométrica de um mapa não é automaticamente uma altura elipsoidal, pois o geoide e o elipsoide de referência são diferentes. Mantenha o alvo ECEF e a origem vinculados ao mesmo datum. Os padrões usam o semieixo maior e o achatamento inverso do WGS 84, adequados para coordenadas GNSS comuns. Se a sua fonte usar um datum regional ou outro elipsoide de referência, informe os parâmetros correspondentes antes de interpretar o deslocamento local.
Entenda a rotação para leste, norte e cima
A conversão possui duas etapas determinísticas. Primeiro, a calculadora converte a posição geodésica de referência em ECEF com o elipsoide selecionado e subtrai essa origem da posição XYZ do alvo. Isso produz um vetor de deslocamento, não outra posição absoluta. Em seguida, o vetor é girado usando a latitude e a longitude de referência. Leste é tangente ao paralelo e positivo no sentido de aumento da longitude. Norte é tangente ao meridiano e positivo no sentido de aumento da latitude geodésica. Cima é normal ao elipsoide de referência e positivo para fora dele. Portanto, os três valores retornados são distâncias com sinal em metros. Um valor leste negativo significa oeste da origem local, norte negativo significa sul e cima negativo significa abaixo do plano tangente da origem. ENU é um referencial linear local, e seus componentes são especialmente intuitivos em áreas limitadas. Em longas distâncias, cima pode diferir bastante de uma simples diferença de alturas, porque a curvatura da Terra altera a direção da vertical local.
Aplique o resultado em posicionamento e engenharia
Coordenadas ENU locais são úteis quando uma aplicação precisa de movimento ou geometria relativos em vez de números XYZ em escala planetária. Um software de topografia pode expressar observações ao redor de uma estação, sistemas robóticos podem posicionar detecções em um mapa centrado em uma base e análises GNSS podem comparar uma antena medida com uma referência conhecida. Escolha a origem cuidadosamente e mantenha sua latitude, longitude, altura, elipsoide e datum junto ao resultado; sem esses metadados, uma tripla ENU não pode ser reconstruída como posição global. A opção de casas decimais controla o arredondamento exibido entre zero e doze posições, embora todos os cálculos usem aritmética de ponto flutuante antes do arredondamento. Mais casas não criam uma exatidão ausente nos dados de entrada. Para controle de qualidade, converta as coordenadas ECEF exatas da origem e confirme que leste, norte e cima são zero na precisão solicitada. Teste também um deslocamento conhecido perto da origem e confira os sinais. O cálculo é puro, não acessa a rede e sempre retorna a mesma saída para a mesma entrada.
Casos de uso
Centralizar um levantamento GNSS
Expresse posições de receptores como deslocamentos locais intuitivos a partir de um marco de referência levantado.
Criar um referencial robótico local
Transforme posições fixas à Terra em coordenadas leste, norte e cima ao redor de uma base veicular ou estação de campo.
Analisar o deslocamento de uma antena
Compare a posição ECEF de uma antena com uma origem conhecida e examine separadamente os componentes horizontal e vertical.
Perguntas frequentes
Quanto custa a conversão?
Cada solicitação à API custa US$ 0,002. A versão no navegador pode ser executada localmente sem cálculo pela rede.
Qual modelo da Terra é usado por padrão?
Os padrões são o semieixo maior do WGS 84 de 6378137 metros e o achatamento inverso de 298.257223563.
A altura de referência é opcional?
Sim. O valor padrão é zero metros acima do elipsoide de referência selecionado.
Posso informar altitude acima do nível médio do mar?
Não diretamente, a menos que ela corresponda à altura elipsoidal do seu fluxo. Primeiro converta a altitude ortométrica com um modelo de geoide adequado.
Por que cima não é apenas a diferença de alturas?
Cima é o componente ao longo da normal ao elipsoide na origem. Para pontos separados, a curvatura terrestre o torna diferente de uma simples subtração de alturas.
Quais unidades a saída utiliza?
Leste, norte e cima são retornados em metros, em conformidade com as coordenadas ECEF e as dimensões do elipsoide.
Para desenvolvedores — acesso via API
Tudo nesta página está disponível via API. Esta seção é para equipes que querem integrar a ferramenta aos próprios sistemas; quem não precisa disso pode simplesmente usar a ferramenta acima.
Endpoint
Autenticação por token Bearer. Um único POST coloca a tarefa na fila; o resultado chega por webhook ou link assinado.
Chame do seu código
curl -X POST https://api.kit.forhosting.com/geo/ecef-to-enu \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"x":6378137,"y":100,"z":50,"ref_lat_deg":0,"ref_lon_deg":0}'const res = await fetch("https://api.kit.forhosting.com/geo/ecef-to-enu", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"x": 6378137,
"y": 100,
"z": 50,
"ref_lat_deg": 0,
"ref_lon_deg": 0
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/geo/ecef-to-enu",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"x": 6378137,
"y": 100,
"z": 50,
"ref_lat_deg": 0,
"ref_lon_deg": 0
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/geo/ecef-to-enu", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"x":6378137,"y":100,"z":50,"ref_lat_deg":0,"ref_lon_deg":0}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"x":6378137,"y":100,"z":50,"ref_lat_deg":0,"ref_lon_deg":0}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/geo/ecef-to-enu", body)
req.Header.Set("Authorization", "Bearer "+os.Getenv("KIT_KEY"))
req.Header.Set("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)Exemplo de requisição
{
"x": 6378137,
"y": 100,
"z": 50,
"ref_lat_deg": 0,
"ref_lon_deg": 0
}Exemplo de resposta
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "geo.ecef_to_enu",
"status": "queued",
"_links": {
"result": "/tasks/tsk_…/result"
}
}A API é assíncrona: cada chamada devolve um task_id na hora. Se preferir polling, consulte o status a até 1 requisição por segundo.
Preço
Preço publicado, sem tokens nem créditos escondidos. Tarefa que falha não é cobrada.
Erros
| HTTP | Código | O que significa |
|---|---|---|
401 | unauthorized | Token ausente ou inválido. Confira o header Authorization. |
402 | insufficient_balance | Saldo insuficiente para esta tarefa. Faça uma recarga e tente de novo. |
404 | unknown_type | Esse tipo de tarefa não existe. Confira o campo type no catálogo. |
429 | rate_limited | Muitas requisições em pouco tempo. Espere um instante e tente de novo. |