Essa ainda não é uma resposta estritamente nova, mas apresenta um conjunto de dados de aeroportos antipodais que alguém pode usar para encontrar uma rota melhor. Leia sobre os aeroportos mais antipodais e uma revelação chocante sobre a rota Santiago-Xi'an.
Continuando essa exploração, volto-me ao trabalho de um a3nm, que anteriormente se engajou em algumas bobagens relacionadas a antipodes de aeroportos. Usando seu ponteiro para o banco de dados OpenFlights (para quem todo o crédito é concedido por sua licença), posso obter arquivos de dados para aeroportos e rotas aéreas em todo o mundo.
Primeiro, carregarei os dados do aeroporto em uma tabela do PostgreSQL usando este procedimento e habilitarei a tabela para suporte ao PostGIS para que possamos fazer cálculos espaciais.
Vamos configurar algumas colunas, calcular o antípode para cada aeroporto e convertê-lo em uma geometria (provavelmente existe uma maneira melhor de fazer isso se você souber o que está fazendo. Um tema comum aqui é que não sabemos " de fato, sabemos o que estamos fazendo):
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 sanidade checa os resultados com base em alguns dos que já conhecemos:
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**
Ah não! Revelamos uma verdade devastadora sobre a minha resposta anterior. Na verdade, o SCL-XIY está 24 km longe demais para se qualificar estritamente. Provavelmente, isso pode ser corrigido iniciando sua jornada um pouco mais para Santiago ou Xi'an e pegando algum tipo de ônibus do aeroporto (que você terá muito tempo para fazer se estiver fazendo uma viagem de ida e volta de 72 horas), mas é uma descoberta triste, de fato.
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
A boa notícia é que os resultados parecem sensatos. Agora podemos encontrar os aeroportos mais antipodais, porque não? Vamos continuar nossa tendência de usar o banco de dados estupidamente, porque é um pouco mais fácil, e criar uma tabela de rascunho duplicada para que possamos executar a consulta nas duas tabelas. Também limitaremos nossa pesquisa a aeroportos com códigos IATA, para excluir a maioria das estações de trem aleatórias no conjunto de dados e nos dar a melhor chance de encontrar aeroportos com serviço 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
E com certeza, PLM e NVA estão bem próximos:
Se você estiver curioso, e eu sei que você é, o PLM e o NVA ainda vencem, mesmo se você remover a restrição de que os aeroportos têm códigos IATA.
Agora, procuraremos todos os aeroportos antipodais (com códigos IATA) dentro dos 100 km, apararemos todas as outras entradas porque eles são pares correspondentes e produziremos um arquivo de dados listando 366 pares de cidades candidatos a serem investigados. Também podemos fazer um conjunto um pouco maior se relaxarmos os 100 km, limitar um fio de cabelo e descobrir que sempre podemos andar um pouco, se nada mais.
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;
Em nossa próxima edição, veremos se conseguimos encontrar uma rota mais rápida.