Questa non è rigorosamente una nuova risposta (ancora), ma presenta un set di dati di aeroporti antipodi che qualcuno potrebbe usare per trovare un percorso migliore. Continua a leggere per gli aeroporti più antipodi e una rivelazione scioccante sulla rotta Santiago-Xi'an.
Continuando questa esplorazione, mi rivolgo al lavoro di un a3nm, che in precedenza si era impegnato in alcuni sciocchi in aeroporto relativi agli antipodi. Usando il suo puntatore al database OpenFlights (al quale viene dato tutto il credito per la loro licenza), posso ottenere file di dati per aeroporti e rotte aeree di tutto il mondo.
In primo luogo, caricherò i dati dell'aeroporto in una tabella PostgreSQL usando questa procedura e abiliterò la tabella per il supporto PostGIS in modo da poter eseguire calcoli spaziali.
Installeremo un paio di colonne scratch, calcoleremo l'antipode per ciascun aeroporto e lo convertiremo in una geometria (probabilmente c'è un modo migliore per farlo se sai cosa stai facendo. Un tema comune qui è che non t, infatti, so cosa stiamo facendo):
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);
E la sanità mentale controlla i risultati in base ad alcuni di quelli che già conosciamo:
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**
Oh no! Abbiamo svelato una verità devastante sulla mia risposta precedente. SCL-XIY è in realtà 24 km troppo lontano per qualificarsi rigorosamente. Questo probabilmente può essere corretto iniziando il tuo viaggio un po 'più avanti a Santiago o Xi'an e prendendo una specie di autobus per l'aeroporto (che avrai un sacco di tempo da fare se stai facendo un viaggio di andata e ritorno di 72 ore), ma è una scoperta davvero triste.
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
La buona notizia è che i risultati sembrano sani. Ora possiamo trovare gli aeroporti più antipodi, perché perché no? Continuiamo la nostra tendenza a utilizzare il database in modo stupido, perché è leggermente più semplice e creiamo una tabella scratch duplicata in modo da poter eseguire la query tra le due tabelle. Limiteremo anche la nostra ricerca agli aeroporti con codici IATA, per escludere la maggior parte delle stazioni ferroviarie casuali nel set di dati e darci le migliori possibilità di trovare aeroporti con un servizio commerciale facile da trovare:
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
E abbastanza sicuro, PLM e NVA sono abbastanza vicini:
Se sei curioso, e so che lo sei, PLM e NVA continuano a vincere anche se rimuovi la restrizione che gli aeroporti hanno codici IATA.
Ora eseguiremo una query per tutti gli aeroporti di antipodi (con codici IATA) entro un raggio di 100 km, tracceremo ogni altra voce poiché sono coppie abbinate e produrremo un file di dati che elenca 366 coppie di città candidate da investigare. Possiamo anche fare un set leggermente più grande se rilassiamo un limite di 100 km e capiamo che possiamo sempre camminare un po 'se non altro.
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;
Nella prossima puntata vedremo se riusciremo a trovare un percorso più veloce.