Jak obliczyć odległość linii lotniczej między dwoma miejscami?


17

Dużo czasu szukam sposobu na obliczenie odległości linii lotniczej między dwoma miejscami, najczęściej centrami miast.

Na przykład, kiedy leciałem z Zurychu do Helsinek, chciałem wiedzieć, jak daleko jest. Z Google Maps mogę to zrobić, ale nie na odległość linii lotniczej.

Czy ktoś wie, jak to zrobić, czy może udzielić porady, jak to zrobić ręcznie, używając współrzędnych geograficznych? Wtedy mógłbym napisać własne małe narzędzie.


1
Czy odległość między liniami lotniczymi ma znaczenie podczas podróży między dwoma małymi lotniskami tylko przez odległe centrum?
mouviciel

1
Oczywiście, że nie ...
RoflcoptrException

3
Drobna myśl: czy mniejsze samoloty muszą pozostać w pewnej odległości od lądu w przypadku awarii silnika? Myślałem, że widziałem witrynę, która tak mówi. Jeśli tak, to duża odległość od okręgu nie zawsze byłaby dokładna.
barrycarter 10.10.11

@barrycarter: Samoloty zboczą z najkrótszej ścieżki z różnych powodów, takich jak unikanie burz i używanie strumienia odrzutowego do szybszego lotu. Dlatego nie można nawet zawsze wiedzieć z góry.
Michael Borgwardt,

Masz już wyczerpującą odpowiedź, więc jest teraz dyskusyjny, ale „linia lotnicza” najwyraźniej wywołała pewne zamieszanie. Podejrzewam, że miałeś na myśli Luftlinie , w którym to przypadku „prosta linia”, „beeline” lub „as wrona muchy” byłyby bardziej idiomatycznymi sposobami umieszczenia go w języku angielskim.
Zrelaksowany

Odpowiedzi:


18

Najlepszym miejscem do tych obliczeń jest strona internetowa „Great Circle Mapper”.

http://www.gcmap.com/

Aby znaleźć odległość między dwoma lub więcej lotniskami, po prostu wprowadź je z myślnikami między nimi. np. JFK-DFW lub SFO-IAD-LHR

Możesz zrobić wiele podróży jednocześnie, oddzielając je przecinkami. JKF-DFW, SFO-IAD-LHR


Pamiętaj, że te wartości są dolną granicą rzeczywistej odległości, jaką samolot pokona między lotniskami.
ESultanik,

Należy zwrócić uwagę na to w rozporządzeniu UE w sprawie opóźnienia / odwołania lotu (WE) nr 261/2004: „Odległości podane w ust. 1 i 2 mierzy się metodą trasy po ortodromie”.
chx

13

Do wszystkich respondentów, którzy zalecają matematykę Wielkiego Kręgu, masz tylko częściowo rację.

Odległość między dwoma punktami na kuli została ustalona przez GC Maths, jednak OP konkretnie poprosił o odległość linii lotniczej. Można to znaleźć, najpierw znajdując wszystkie punkty odwiedzone na trasie do celu, a następnie obliczając odległości GC dla wszystkich par tras.

Na przykład lot z Londynu do Nowego Jorku nie odbywa się po wielkiej ścieżce koła między dwoma punktami. Podąża za zestawem punktów, które mogą obejmować Navaids, Waypoints, Airways, trasy odlotu, trasy przylotu, poprawki długości / długości i punkty namiaru zasięgu. zobacz Plan lotu, aby uzyskać więcej informacji.

Musisz więc skontaktować się z zaangażowaną linią lotniczą i zapytać ładnie o zastosowany plan lotu, i znaleźć najdłuższe czasy dla każdego z odwiedzanych punktów.


Właśnie o tym myślałem!
Ankur Banerjee

1
Uważam, że OP tak naprawdę pyta o dużą odległość dookoła, „linia lotnicza” oznacza tutaj niemiecką „Luftlinie” i nie ma nic wspólnego z „liniami lotniczymi”.
Zrelaksowany

11

Wiele linii lotniczych umieszcza te informacje w swoich rozkładach. Na przykład Air Canada umożliwia pobranie pliku PDF całego harmonogramu. Oto klip z tego:

wprowadź opis zdjęcia tutaj

Sugeruję przeszukanie strony internetowej linii lotniczej, z której zamierzasz korzystać. Każde narzędzie oparte na faktycznej odległości między miastami może różnić się o 20-30 mil od odległości linii lotniczej.


Odległości w katalogach (dla częstych mil ulotek itp.) Są zwykle tymi samymi optymalnymi odległościami w wielkim okręgu, jakie zapewnia GCMap. Rzeczywiste odległości różnią się z dnia na dzień w zależności od wiatrów, kontroli ruchu lotniczego itp.
lambshaanxy

7

Jeśli chcesz to obliczyć sam, to sferyczne prawo cosinusów jest prawdopodobnie najłatwiejszym sposobem na zrobienie tego. Prawdopodobnie będzie wystarczająco dokładny dla twoich potrzeb i jest naprawdę prosty. Jeśli chcesz w Pythonie, wypróbuj mój kod (chcesz calculate_distance_and_bearing)

Prawdopodobnie będziesz także potrzebować informacji o lokalizacji dla różnych interesujących lotnisk. W przeszłości do takich celów korzystałem z globalnej bazy danych portów lotniczych .


5

Jeśli chcesz wykonać te obliczenia dla lotów, musisz użyć sferycznego prawa cosinusów, jak wspomniał Gagravarr. Jeśli jednak chcesz napisać własne małe narzędzie i chcesz narysować linię na mapie, staje się to nieco trudne. Będziesz musiał użyć mapy projekcji Lamberta, aby narysować na niej linię prostą od A do B. Problem z konformalną projekcją stożkową Lamberta polega na tym, że te mapy są dokładne tylko na dwóch równoległych referencjach, a im dalej od nich odchodzisz, tym są one mniej precyzyjne. Zwykle tak nie jest i problem występuje na małych mapach, które obejmują jedynie 100 x 100 km, ale im większa mapa, tym większy margines błędu. Ma to coś wspólnego z faktem, że Ziemia jest okrągła i nie można wykonać dokładnego odwzorowania 1: 1 z okrągłej na płaską powierzchnię.

Mapy Google (i wszystkie mapy morskie) wykorzystują odwzorowanie mapy cylindrycznej , co oznacza, że ​​musisz narysować krzywe na mapie, aby uzyskać tę samą trasę, jak w przypadku linii prostej na rzucie Lamberta.




3

Oprócz wspomnianych już opcji, milecalc.com wykona te obliczenia, wykorzystując odległość Wielkiego Kręgu, która jest wartością zwykle stosowaną do obliczania przebiegu częstych lotów itp.


2

Zobacz tutaj: 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;


Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.