Come calcolare la distanza della linea aerea tra due punti?


17

Molte volte cerco un modo per calcolare la distanza della linea aerea tra due posti, il più delle volte centri città.

Ad esempio, quando ho volato da Zurigo a Helsinki, volevo sapere quanto lontano fosse. Con Google Maps posso farlo, ma non per la distanza della linea aerea.

Quindi qualcuno conosce uno strumento per farlo o può darmi consigli su come farlo manualmente usando le coordinate geografiche? Quindi potrei scrivere il mio piccolo strumento.


1
La distanza della linea aerea ha un significato quando si viaggia tra due piccoli aeroporti solo attraverso un hub distante?
mouviciel,

1
Ovviamente no ...
RoflcoptrException il

3
Pensieri minori: gli aerei più piccoli devono rimanere a una certa distanza da terra in caso di avaria del motore? Pensavo di aver visto un sito che lo diceva. In tal caso, la grande distanza del cerchio non sarebbe sempre precisa.
Barrycarter,

@barrycarter: gli aerei si discosteranno dal percorso più breve per tutti i tipi di motivi, come evitare i temporali e utilizzare il flusso del jet per andare più veloce. Quindi non è nemmeno possibile sapere sempre in anticipo.
Michael Borgwardt,

Hai già ottenuto una risposta esaustiva, quindi adesso è discutibile, ma la "linea aerea" sembra aver creato confusione. Sospetto che tu intendessi Luftlinie , nel qual caso "linea retta", "beeline" o "in linea d'aria" sarebbero modi più idiomatici per dirlo in inglese.
Rilassato il

Risposte:


18

Il posto migliore per questi calcoli è il sito Web "Great Circle Mapper".

http://www.gcmap.com/

Per trovare la distanza tra due o più aeroporti basta inserirli con trattini tra di loro. ad es. JFK-DFW o SFO-IAD-LHR

Puoi fare più viaggi contemporaneamente separandoli con virgole. JKF-DFW, SFO-IAD-LHR


Si noti che questi valori hanno un limite inferiore sulla distanza effettiva che un aereo percorrerà tra gli aeroporti.
ESultanik,

Nota questo nel regolamento di ritardo / cancellazione (CE) n. 261/2004 del volo dell'UE: "Le distanze indicate ai paragrafi 1 e 2 devono essere misurate con il metodo della rotta circolare grande".
chx,

13

A tutti i ripetitori che raccomandano la matematica del Grande Cerchio, hai ragione solo in parte.

La distanza tra due punti su una sfera viene rilevata da GC Maths, tuttavia l'OP ha specificamente richiesto la distanza della linea aerea. Ciò si ottiene trovando prima tutti i punti visitati lungo il percorso verso la destinazione e quindi calcolando le distanze GC per tutte le coppie di percorso.

Ad esempio, un volo da Londra a New York non segue il grande percorso circolare tra i due punti. Segue una serie di punti, che possono includere Navaids, Waypoint, Airways, rotte di partenza, rotte di arrivo, correzioni lat / long e punti di rilevamento della portata. vedi Piano di volo per maggiori informazioni.

Quindi dovresti contattare la compagnia aerea coinvolta e chiedere bene il piano di volo utilizzato e trovare i long long per ciascuno dei punti visitati.


Questo è esattamente quello che stavo pensando!
Ankur Banerjee

1
Credo che l'OP stia davvero chiedendo una grande distanza del cerchio, "air-line" sta qui per la "Luftlinie" tedesca e non ha nulla a che fare con le "compagnie aeree".
Rilassato il

11

Molte compagnie aeree includono queste informazioni nei loro orari. Ad esempio, Air Canada ti consente di scaricare un PDF dell'intero programma. Ecco una clip da esso:

inserisci qui la descrizione dell'immagine

Suggerisco di cercare nel sito Web della compagnia aerea che si intende utilizzare. Qualsiasi strumento basato sulla distanza effettiva tra le città può differire di 20-30 miglia dalla distanza della compagnia aerea.


Le distanze nei cataloghi (per miglia frequent flyer ecc.) Sono in genere le stesse distanze ottimali del cerchio grande fornite da GCMap. Le distanze effettive variano di giorno in giorno in base a venti, controllo del traffico aereo, ecc.
lambshaanxy,

7

Se vuoi calcolarlo da solo, allora la legge sferica dei coseni è probabilmente il modo più semplice per farlo. Sarà probabilmente abbastanza preciso per le tue esigenze ed è davvero semplice. Se lo vuoi in Python, prova questo mio codice (vorresti calculate_distance_and_bearing)

Probabilmente vorrai anche le informazioni sulla posizione per i vari aeroporti di interesse. In passato ho avuto la tendenza a utilizzare il Database degli aeroporti globali per questo genere di cose.


5

Se vuoi fare questo calcolo per i voli, dovresti usare la legge sferica dei coseni come menzionato da Gagravarr. Tuttavia, se vuoi scrivere il tuo piccolo strumento e vuoi tracciare una linea su una mappa, diventa un po 'complicato. Dovresti usare una mappa di proiezione di Lambert per tracciare una linea retta da A a B su di essa. Il problema con la proiezione conica conforme di Lambert è che quelle mappe sono accurate solo lungo i due paralleli di riferimento e più si allontana da esse, meno sono precise. Questo di solito non è e si presenta su piccole mappe che coprono solo 100x100 km, ma più grande è la mappa, maggiore è il margine di errore. Ciò ha a che fare con il fatto che la terra è rotonda e non è possibile eseguire una mappatura 1: 1 esatta da una superficie rotonda a una superficie piana.

Le mappe di Google (e tutte le mappe nautiche) utilizzano una proiezione Mappa cilindrica , ciò significa che dovresti disegnare curve sulla mappa per ottenere lo stesso percorso che avresti con una linea retta su una proiezione Lambert.




3

Oltre alle opzioni già menzionate, milecalc.com eseguirà anche questo calcolo, utilizzando la distanza del Grande Cerchio, che è il valore generalmente utilizzato per il calcolo del chilometraggio frequent flyer ecc.


2

Vedi qui: 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;


Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.