Landing configurations

A visualisation attempt at showing which landing configurations are the most commonly used at Zurich airport. The analysis uses one of the datasets made available in the traffic library.

flight_id stop ILS_max
1923 SWR177_15809_0 2019-10-01 04:05:11+00:00 34
1635 SWR139_15706_0 2019-10-01 04:07:24+00:00 34
2284 SWR296_13638_0 2019-10-01 04:09:53+00:00 34
2518 SWR55K_13535_0 2019-10-01 04:11:41+00:00 34
1763 SWR155_13346_0 2019-10-01 04:13:31+00:00 34
... ... ... ...
3031 TAP928_5353_0 2019-10-09 20:40:28+00:00 28
2319 SWR339_14452_0 2019-10-09 20:43:40+00:00 28
501 EDW201_8113_0 2019-10-09 20:47:33+00:00 28
2392 SWR40C_17396_0 2019-10-09 20:56:33+00:00 28
578 EDW399D_14044_0 2019-10-09 21:08:48+00:00 28

3196 rows × 3 columns

from traffic.data.datasets import landing_zurich_2019

import altair as alt

stats = (
    landing_zurich_2019.before("2019-10-10 00:00Z")
    .all("aligned_on_ils('LSZH')", flight_id="{self.flight_id}_{i}")
    .eval()
    .summary(["flight_id", "stop", "ILS_max"])
    .eval()
    .sort_values("stop")
)

chart = (
    alt.Chart(stats)
    .encode(
        alt.X("utchours(stop)", title=""),
        alt.Y("ILS_max", title=""),
        alt.Row("utcmonthdate(stop)", title=""),
        alt.Color("ILS_max", legend=None),
        alt.Size("count()", scale=alt.Scale(type="symlog"), title="Number of landings"),
    )
    .mark_circle()
    .properties(width=600, height=50)
    .configure_legend(orient="bottom")
    .configure_header(
        labelOrient="top", labelAnchor="start", labelFontWeight="bold", labelFontSize=12
    )
    .resolve_scale(x="independent", y="independent")
)

display(chart)
display(stats)