Đây không hoàn toàn là một câu trả lời mới (nhưng), nhưng trình bày một bộ dữ liệu về các sân bay đối cực mà ai đó có thể sử dụng để tìm một tuyến đường tốt hơn. Đọc về các sân bay đối cực nhất và một tiết lộ gây sốc về tuyến đường Santiago-Xi'an.
Tiếp tục cuộc thám hiểm này, tôi chuyển sang công việc của một a3nm, người trước đây đã tham gia vào một số công cụ tomfoolery liên quan đến cực âm sân bay. Sử dụng con trỏ của anh ấy vào cơ sở dữ liệu OpenFlight (tất cả tín dụng được cấp theo giấy phép của họ), tôi có thể nhận được các tệp dữ liệu cho các sân bay và đường hàng không trên khắp thế giới.
Đầu tiên, tôi sẽ tải dữ liệu sân bay vào bảng PostgreSQL bằng quy trình này và kích hoạt bảng để hỗ trợ PostGIS để chúng tôi có thể thực hiện các phép tính không gian.
Chúng tôi sẽ thiết lập một vài cột đầu, tính toán cực âm cho mỗi sân bay và chuyển đổi nó thành hình học (có lẽ cách tốt hơn để làm điều này nếu bạn biết bạn đang làm gì. Một chủ đề phổ biến ở đây là chúng tôi không ' Trên thực tế, biết những gì chúng ta đang làm):
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);
Và sanity kiểm tra kết quả dựa trên một số trong những người chúng ta đã biết về:
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**
Ôi không! Chúng tôi đã tiết lộ một sự thật tàn khốc về câu trả lời trước đây của tôi. SCL-XIY thực sự là 24km quá xa để đủ điều kiện nghiêm ngặt. Điều này có thể được khắc phục bằng cách bắt đầu hành trình của bạn xa hơn một chút đến Santiago hoặc Xi'an và đi một số loại xe buýt sân bay (bạn sẽ có nhiều thời gian để làm nếu bạn thực hiện một chuyến khứ hồi 72 giờ), nhưng đó là một phát hiện buồn thực sự.
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
Tin tốt là kết quả có vẻ lành mạnh. Bây giờ chúng ta có thể tìm thấy các sân bay đối cực nhất, bởi vì tại sao không? Hãy tiếp tục xu hướng sử dụng cơ sở dữ liệu một cách ngu ngốc, bởi vì nó dễ dàng hơn một chút và tạo một bảng cào trùng lặp để chúng tôi có thể chạy truy vấn trên hai bảng. Chúng tôi cũng sẽ giới hạn tìm kiếm của chúng tôi tại các sân bay có mã IATA, để loại trừ hầu hết các ga tàu ngẫu nhiên trong bộ dữ liệu và cho chúng tôi cơ hội tốt nhất để tìm các sân bay có dịch vụ thương mại dễ tìm:
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
Và chắc chắn, PLM và NVA khá gần nhau:
Nếu bạn tò mò và tôi biết bạn là ai, PLM và NVA vẫn giành chiến thắng ngay cả khi bạn loại bỏ các hạn chế rằng các sân bay có mã IATA.
Bây giờ chúng tôi sẽ truy vấn tất cả các sân bay đối cực (có mã IATA) trong phạm vi 100km, cắt xén mọi mục nhập khác kể từ khi chúng được ghép cặp và tạo tệp dữ liệu liệt kê 366 cặp thành phố ứng cử viên để điều tra. Chúng ta cũng có thể làm một bộ lớn hơn một chút nếu chúng ta thư giãn giới hạn 100km một sợi tóc và hình chúng ta luôn có thể đi bộ một chút nếu không có gì khác.
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;
Trong phần tiếp theo của chúng tôi, chúng tôi sẽ xem liệu chúng tôi có thể tìm thấy một tuyến đường nhanh hơn.