Esta no es estrictamente una respuesta nueva (todavía), pero presenta un conjunto de datos de aeropuertos antipodales que alguien podría usar para encontrar una ruta mejor. Siga leyendo para conocer los aeropuertos más antipodales y una revelación impactante sobre la ruta Santiago-Xi'an.
Continuando con esta exploración, me dirijo al trabajo de un a3nm, que anteriormente participó en algunas tonterías relacionadas con antípodas del aeropuerto. Usando su puntero a la base de datos OpenFlights (a quien se le otorga todo el crédito por su licencia), puedo obtener archivos de datos para aeropuertos y rutas aéreas en todo el mundo.
Primero, cargaré los datos del aeropuerto en una tabla PostgreSQL usando este procedimiento , y habilitaré la tabla para el soporte de PostGIS para que podamos hacer cálculos espaciales.
Configuraremos un par de columnas reutilizables, calcularemos la antípoda para cada aeropuerto y la convertiremos en una geometría (probablemente haya una mejor manera de hacerlo si sabes lo que estás haciendo. Un tema común aquí es que no lo hacemos) t, de hecho, sabemos lo que estamos haciendo):
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);
Y compruebe los resultados con base en algunos de los que ya conocemos:
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! Hemos revelado una verdad devastadora sobre mi respuesta anterior. SCL-XIY está en realidad 24 km demasiado lejos para calificar estrictamente. Probablemente esto se pueda rectificar comenzando su viaje un poco más lejos en Santiago o Xi'an y tomando algún tipo de autobús del aeropuerto (que tendrá mucho tiempo para hacer si está haciendo un viaje de ida y vuelta de 72 horas), pero es un hallazgo triste de hecho.
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 buena noticia es que los resultados parecen sanos. Ahora podemos encontrar los aeropuertos más antipodales, porque ¿por qué no? Continuemos con nuestra tendencia de usar la base de datos estúpidamente, porque es un poco más fácil, y creemos una tabla de scratch duplicada para que podamos ejecutar la consulta en las dos tablas. También limitaremos nuestra búsqueda a aeropuertos con códigos IATA, para excluir la mayoría de las estaciones de tren aleatorias en el conjunto de datos y darnos la mejor oportunidad de encontrar aeropuertos con un servicio comercial fácil de encontrar:
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
Y efectivamente, PLM y NVA están bastante cerca:
Si tiene curiosidad, y sé que lo tiene, PLM y NVA aún ganan incluso si elimina la restricción de que los aeropuertos tienen códigos IATA.
Ahora preguntaremos por todos los aeropuertos antipodales (con códigos IATA) dentro del rango de 100 km, recortaremos cualquier otra entrada ya que son pares coincidentes y produciremos un archivo de datos con 366 pares de ciudades candidatas para investigar. También podemos hacer un conjunto un poco más grande si relajamos los 100 km, limitamos un cabello y creemos que siempre podemos caminar un poco, si nada más.
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;
En nuestra próxima entrega, veremos si podemos encontrar una ruta más rápida.