Mapping the orientation of 28,000+ airport runways worldwide, revealing prevailing wind patterns and geographic conventions.
Airport and runway data from OurAirports (public domain). The dataset covers large, medium, and small airports globally. Only the longest runway per airport is used, with heading derived from the published true heading or parsed from the runway identifier.
- Clustering — Nearby airports are grouped using hierarchical clustering (complete linkage with a distance cutoff in degrees). Each cluster's orientation is computed as a circular mean heading using the doubled-angle method for bidirectional data.
- Adaptive line length — Line length scales with nearest-neighbour distance between cluster centroids, so dense regions stay readable while sparse regions fill the space.
- Visual encoding — Line thickness and opacity scale with cluster size (number of airports), highlighting major aviation corridors.
Two scripts are included:
plot_runways.py— draws individual runway lines at each airport locationplot_runways_field.py— draws clustered orientation field lines (shown above)
Regional views are generated for World, CONUS, Europe, and Australia.
Built with Python, Matplotlib, Cartopy, SciPy, and Claude Code.
