Como calcular a distância da linha aérea entre dois lugares?


17

Na maioria das vezes, estou procurando uma maneira de calcular a distância da linha aérea entre dois lugares, na maioria das vezes centros da cidade.

Por exemplo, quando voei de Zurique para Helsinque, queria saber até que ponto era. Com o Google Maps, posso fazer isso, mas não pela distância da linha aérea.

Alguém conhece uma ferramenta para fazer isso ou pode me dar conselhos sobre como fazê-lo manualmente usando as coordenadas geográficas? Então eu poderia escrever minha própria pequena ferramenta.


1
A distância da linha aérea tem um significado quando viajar entre dois pequenos aeroportos é feito apenas através de um hub distante?
Mouviciel 9/10/11

1
Obviamente não ...
RoflcoptrException 9/11

3
Pensamento menor: os aviões menores precisam permanecer a uma certa distância do solo em caso de falha do motor? Eu pensei ter visto um site que dizia isso. Nesse caso, a grande distância do círculo nem sempre seria precisa.
Barrycarter #

@ barrycarter: os aviões se desviarão do caminho mais curto por todos os tipos de razões, como evitar tempestades e usar o jato para ir mais rápido. Portanto, nem sempre é possível saber sempre com antecedência.
precisa

Você já tem uma resposta abrangente, então é discutível agora, mas a "linha aérea" aparentemente gerou alguma confusão. Eu suspeito que você quis dizer Luftlinie ; nesse caso, "linha reta", "linha reta" ou "como o corvo voa" seriam maneiras mais idiomáticas de colocá-lo em inglês.
Descontraído

Respostas:


18

O melhor local para esses cálculos é o site "Great Circle Mapper".

http://www.gcmap.com/

Para encontrar a distância entre dois ou mais aeroportos, insira-os com traços entre eles. por exemplo, JFK-DFW ou SFO-IAD-LHR

Você pode fazer várias viagens ao mesmo tempo, separando-as com vírgulas. JKF-DFW, SFO-IAD-LHR


Observe que esses valores são um limite inferior da distância real que um avião percorrerá entre os aeroportos.
ESultanik 11/11/11

Observe o seguinte no regulamento da UE de retardo / cancelamento de voo (CE) no 261/2004: "As distâncias indicadas nos parágrafos 1 e 2 devem ser medidas pelo método da rota em círculo grande".
chx

12

Para todos os repetidores que recomendam a matemática do Grande Círculo, você está parcialmente certo.

A distância entre dois pontos em uma esfera é encontrada pelo GC Maths, no entanto, o OP solicitou especificamente a distância da linha aérea. Isso é encontrado primeiro pela localização de todos os pontos visitados no caminho para o destino e depois pelo cálculo das distâncias do GC para todos os pares de rotas.

Por exemplo, um voo de Londres para Nova York não segue o caminho do grande círculo entre os dois pontos. Ele segue um conjunto de pontos, que podem incluir Navaids, Waypoints, Vias Aéreas, rotas de partida, rotas de chegada, correções de latitude / longitude e pontos de rumo de alcance. consulte Plano de voo para mais informações.

Portanto, você precisaria entrar em contato com a companhia aérea envolvida, solicitar o plano de voo usado e encontrar os longos longos de cada um dos pontos visitados.


Era exatamente isso que eu estava pensando!
Ankur Banerjee

1
Acredito que o OP está realmente perguntando sobre a grande distância do círculo, "linha aérea" representa aqui a "Luftlinie" alemã e não tem nada a ver com "companhias aéreas".
Descontraído

11

Muitas companhias aéreas incluem essas informações em seus horários. Por exemplo, a Air Canada permite baixar um PDF de toda a programação. Aqui está um clipe:

insira a descrição da imagem aqui

Sugiro pesquisar no site da companhia aérea que você pretende usar. Qualquer ferramenta baseada na distância entre as cidades pode ser de 20 a 30 milhas diferente da distância da companhia aérea.


As distâncias nos catálogos (para milhas de passageiro frequente etc.) geralmente são as mesmas distâncias ótimas de círculo grande fornecidas pelo GCMap. Distâncias reais variam de dia para dia, com base em ventos, o controlo do tráfego aéreo, etc.
lambshaanxy

7

Se você deseja calcular por si mesmo, a lei esférica dos cossenos é provavelmente a maneira mais fácil de fazer isso. Provavelmente será preciso o suficiente para as suas necessidades e é realmente simples. Se você quiser em python, tente este código meu (você gostaria calculate_distance_and_bearing)

É provável que você também deseje as informações de localização para os vários aeroportos de interesse. Eu costumava usar o Global Airport Database no passado para esse tipo de coisa.


5

Se você deseja fazer esse cálculo para voos, teria que usar a lei esférica dos cossenos, como Gagravarr mencionou. No entanto, se você deseja escrever sua própria pequena ferramenta e deseja plotar uma linha em um mapa, fica um pouco complicado. Você teria que usar um mapa de projeção de Lambert para desenhar uma linha reta de A a B nele. O problema com a projeção cônica conforme Lambert é que esses mapas são precisos apenas nos dois paralelos de referência, e quanto mais você os afasta, menos precisos eles são. Isso geralmente não ocorre e é emitido em pequenos mapas que cobrem apenas 100x100 km, mas quanto maior o mapa, maior a margem de erro. Isso tem algo a ver com o fato de a Terra ser redonda, e você não pode fazer um mapeamento exato de 1: 1 de uma superfície redonda para uma plana.

Os mapas do Google (e todos os mapas náuticos) usam uma projeção de Mapa Cilíndrico . Isso significa que você teria que desenhar curvas no mapa para obter a mesma rota que faria com uma linha reta em uma projeção de Lambert.




3

Além das opções já mencionadas, o milecalc.com também fará esse cálculo, usando a distância do Grande Círculo, que é o valor normalmente usado para o cálculo de milhagem de passageiro frequente etc.


2

Veja aqui: http://www.movable-type.co.uk/scripts/latlong.html

var R = 6371; // Earth's average radius in km
var dLat = (lat2-lat1).toRad();
var dLon = (lon2-lon1).toRad();
var lat1 = lat1.toRad();
var lat2 = lat2.toRad();

var a = Math.sin(dLat/2) * Math.sin(dLat/2) +
        Math.sin(dLon/2) * Math.sin(dLon/2) * Math.cos(lat1) * Math.cos(lat2); 
var c = 2 * Math.atan2(Math.sqrt(a), Math.sqrt(1-a)); 
var d = R * c;


Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.