Ini bukan jawaban yang benar-benar baru (belum), tetapi menyajikan dataset bandara antipodal yang mungkin digunakan seseorang untuk menemukan rute yang lebih baik. Baca terus untuk bandara paling antipodal dan mengungkapkan mengejutkan tentang rute Santiago-Xi'an.
Melanjutkan eksplorasi ini, saya beralih ke karya a3nm, yang sebelumnya terlibat dalam beberapa tindakan buruk terkait antipode bandara. Dengan menggunakan penunjuknya ke basis data OpenFlight (kepada siapa semua kredit diberikan per lisensi mereka), saya bisa mendapatkan datafile untuk bandara dan rute udara di seluruh dunia.
Pertama, saya akan memuat data bandara ke tabel PostgreSQL menggunakan prosedur ini , dan mengaktifkan tabel untuk dukungan PostGIS sehingga kami dapat melakukan perhitungan spasial.
Kami akan menyiapkan beberapa kolom awal, menghitung antipode untuk setiap bandara, dan mengubahnya menjadi geometri (mungkin ada cara yang lebih baik untuk melakukan ini jika Anda tahu apa yang Anda lakukan. Tema umum di sini adalah bahwa kami tidak t, pada kenyataannya, tahu apa yang kami lakukan):
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);
Dan kewarasan memeriksa hasilnya berdasarkan pada beberapa yang sudah kita ketahui:
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 tidak! Kami telah menikmati kebenaran yang menghancurkan tentang jawaban saya sebelumnya. SCL-XIY sebenarnya 24km terlalu jauh untuk memenuhi syarat ketat. Ini mungkin dapat diperbaiki dengan memulai perjalanan Anda sedikit lebih jauh ke Santiago atau Xi'an dan mengambil beberapa jenis bis bandara (yang akan memiliki banyak waktu untuk dilakukan jika Anda melakukan perjalanan pulang-pergi 72 jam), tetapi memang penemuan yang menyedihkan.
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
Berita baiknya adalah hasilnya tampak waras. Sekarang kita dapat menemukan bandara paling antipodal, karena mengapa tidak? Mari kita lanjutkan tren kita menggunakan database secara bodoh, karena ini sedikit lebih mudah, dan membuat tabel awal duplikat sehingga kita dapat menjalankan kueri di dua tabel. Kami juga akan membatasi pencarian kami ke bandara dengan kode IATA, untuk mengecualikan sebagian besar stasiun kereta api acak dalam dataset dan memberi kami peluang terbaik untuk menemukan bandara dengan layanan komersial yang mudah ditemukan:
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
Dan tentu saja, PLM dan NVA cukup dekat:
Jika Anda penasaran, dan saya tahu Anda, PLM dan NVA tetap menang meskipun Anda menghilangkan batasan bahwa bandara memiliki kode IATA.
Sekarang kami akan meminta semua bandara antipodal (dengan kode IATA) dalam jarak 100 km, memotong setiap entri lainnya karena mereka pasangan yang cocok, dan menghasilkan file data yang mencantumkan 366 kandidat pasangan kota untuk diselidiki. Kita juga bisa melakukan set yang sedikit lebih besar jika kita rileks pada batas 100 km rambut dan angka kita selalu bisa berjalan sedikit jika tidak ada yang lain.
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;
Dalam cicilan kami berikutnya, kami akan melihat apakah kami dapat menemukan rute yang lebih cepat.