Ce n'est pas strictement une nouvelle réponse (encore), mais présente un ensemble de données sur les aéroports antipodaux que quelqu'un pourrait utiliser pour trouver un meilleur itinéraire. Lisez la suite pour les aéroports les plus antipodes et une révélation choquante sur la route Santiago-Xi'an.
Poursuivant cette exploration, je me tourne vers le travail d'un a3nm, qui se livrait auparavant à des tromperies liées aux antipodes des aéroports. En utilisant son pointeur vers la base de données OpenFlights (à qui tout le crédit est accordé par leur licence), je peux obtenir des fichiers de données pour les aéroports et les routes aériennes du monde entier.
Tout d'abord, je vais charger les données de l'aéroport dans une table PostgreSQL à l'aide de cette procédure et activer la table pour la prise en charge PostGIS afin que nous puissions faire des calculs spatiaux.
Nous allons configurer quelques colonnes de travail, calculer l'antipode pour chaque aéroport et le convertir en géométrie (il y a probablement une meilleure façon de le faire si vous savez ce que vous faites. Un thème commun ici est que nous ne ' t, en fait, je sais ce que nous faisons):
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);
Et vérifiez les résultats sur la base de certains de ceux que nous connaissons déjà:
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 non! Nous avons révélé une vérité dévastatrice sur ma réponse précédente. SCL-XIY est en fait 24 km trop loin pour se qualifier strictement. Cela peut probablement être corrigé en commençant votre voyage un peu plus loin à Santiago ou Xi'an et en prenant une sorte de bus pour l'aéroport (que vous aurez beaucoup de temps à faire si vous faites un aller-retour de 72 heures), mais c'est une triste conclusion en effet.
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 bonne nouvelle est que les résultats semblent sains. Maintenant, nous pouvons trouver les aéroports les plus antipodes, car pourquoi pas? Continuons notre tendance à utiliser la base de données stupidement, car c'est un peu plus facile, et créons une table de travail en double pour que nous puissions exécuter la requête sur les deux tables. Nous limiterons également notre recherche aux aéroports avec des codes IATA, pour exclure la plupart des gares au hasard dans l'ensemble de données et nous donner les meilleures chances de trouver des aéroports avec un service commercial facile à trouver:
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
Et bien sûr, PLM et NVA sont assez proches:
Si vous êtes curieux, et je sais que vous l'êtes, PLM et NVA gagnent toujours même si vous supprimez la restriction selon laquelle les aéroports ont des codes IATA.
Nous allons maintenant interroger tous les aéroports antipodes (avec les codes IATA) dans la plage de 100 km, couper toutes les autres entrées car elles correspondent, et produire un fichier de données répertoriant 366 paires de villes candidates à étudier. Nous pouvons également faire un ensemble un peu plus grand si nous relaxons la limite de 100 km sur un cheveu et que nous pouvons toujours marcher un peu si rien d'autre.
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;
Dans notre prochain épisode, nous verrons si nous pouvons trouver un itinéraire plus rapide.