Dies ist (noch) keine neue Antwort, sondern stellt einen Datensatz von antipodalen Flughäfen dar, mit denen jemand eine bessere Route finden könnte. Lesen Sie weiter für die antipodalsten Flughäfen und eine schockierende Enthüllung über die Santiago-Xi'an-Route.
Ich setze diese Erkundung fort und wende mich der Arbeit eines a3nm zu, der sich zuvor mit Antipoden-Dummköpfen auf Flughäfen befasst hat. Unter Verwendung seines Zeigers auf die OpenFlights-Datenbank (der alle Lizenzen zugeordnet sind) kann ich Datendateien für Flughäfen und Flugrouten auf der ganzen Welt abrufen.
Zuerst lade ich die Flughafendaten mit diesem Verfahren in eine PostgreSQL-Tabelle und aktiviere die Tabelle für die PostGIS-Unterstützung, damit wir räumliche Berechnungen durchführen können.
Wir richten ein paar Rubbelspalten ein, berechnen den Antipode für jeden Flughafen und konvertieren ihn in eine Geometrie (es gibt wahrscheinlich einen besseren Weg, dies zu tun, wenn Sie wissen, was Sie tun. Ein häufiges Thema hier ist, dass wir nicht ' t, in der Tat wissen, was wir tun):
update airports set antipode_latitude = -latitude;
update airports set antipode_longitude = 180+longitude;
update airports set antipode_longitude = antipode_longitude-360 where antipode_longitude > 180;
update airports SET antipode = ST_SetSRID(ST_MakePoint(antipode_longitude,antipode_latitude),4326);
Und prüfen Sie die Ergebnisse auf der Grundlage einiger Ergebnisse, die wir bereits kennen:
select airports.name, city, country, iata, ST_Distance_Sphere(airports.antipode, (select airports.geom from airports where iata='SCL')) as distance from airports order by distance limit 3;
Ankang Airport Ankang China AKA 80599.02914563
Xi\\'An Xiguan Xi\\'AN China SIA 109730.42018116
Xianyang Xi'an China XIY **124745.39283865**
Ach nein! Wir haben eine verheerende Wahrheit über meine vorherige Antwort gelüftet. SCL-XIY ist eigentlich 24 km zu weit, um sich strikt zu qualifizieren. Dies kann möglicherweise behoben werden, indem Sie Ihre Reise etwas weiter nach Santiago oder Xi'an starten und einen Flughafenbus nehmen (für eine 72-stündige Hin- und Rückfahrt haben Sie ausreichend Zeit) Eine traurige Entdeckung.
select airports.name, city, country, iata, ST_Distance_Sphere(airports.antipode, (select airports.geom from airports where iata='AKL')) as distance from airports order by distance limit 5;
Ronda Airport Ronda Spain RRA 28932.88795948
Ronda Ronda Spain 30772.20555266
Moron Ab Sevilla Spain OZP 40636.98417791
Malaga Malaga Spain AGP 73182.10790714
Sevilla Sevilla Spain SVQ 75861.92508438
Die gute Nachricht ist, dass die Ergebnisse vernünftig erscheinen. Jetzt können wir die antipodalsten Flughäfen finden, denn warum nicht? Setzen wir unseren Trend fort, die Datenbank dumm zu verwenden, weil es etwas einfacher ist, und erstellen Sie eine doppelte Arbeitstabelle, damit wir die Abfrage über die beiden Tabellen ausführen können. Wir beschränken unsere Suche auch auf Flughäfen mit IATA-Codes, um die meisten zufälligen Bahnhöfe im Datensatz auszuschließen und die besten Chancen zu haben, Flughäfen mit einfach zu findendem kommerziellen Service zu finden:
create table airports2 (like airports including all);
insert into airports2 select * from airports;
select airports.name, airports.city, airports.country, airports.iata, airports2.name, airports2.city, airports2.country, airports2.iata, st_distance_sphere(airports.antipode, airports2.geom) as distance from airports, airports2 where airports.geom && ST_Expand(airports2.antipode, 25) and airports.iata <> '' and airports2.iata <> '' order by ST_DISTANCE(airports.geom, airports2.antipode) asc limit 1;
Sultan Mahmud Badaruddin Ii Palembang Indonesia PLM Benito Salas Neiva Colombia NVA 5810.60702928
Und PLM und NVA sind sich ganz nah:
Wenn Sie neugierig sind und ich weiß, dass Sie es sind, gewinnen PLM und NVA immer noch, selbst wenn Sie die Einschränkung aufheben, dass Flughäfen IATA-Codes haben.
Jetzt werden alle antipodalen Flughäfen (mit IATA-Codes) im Umkreis von 100 km abgefragt, alle anderen Einträge abgeschnitten, da sie paarweise übereinstimmen, und eine Datendatei erstellt, in der 366 mögliche Städtepaare aufgeführt sind, die untersucht werden sollen. Wir können auch ein etwas größeres Set machen, wenn wir uns nach 100 km entspannen und uns vorstellen, dass wir immer ein bisschen laufen können, wenn nichts anderes.
select airports.name, airports.city, airports.country, airports.iata, airports2.name, airports2.city, airports2.country, airports2.iata, st_distance_sphere(airports.antipode, airports2.geom) as error from airports, airports2 where airports.geom && ST_Expand(airports2.antipode, 25) and airports.iata <> '' and airports2.iata <> '' order by ST_DISTANCE_sphere(airports.antipode, airports2.geom) asc limit 1000;
In unserer nächsten Folge werden wir sehen, ob wir eine schnellere Route finden können.