The most viewed lightning strike?

6/10/2024

At 9pm (CET) On Saturday June 29th 2024, Germany play Denmark in the Euro 2024 Round of 16 at BVB Stadion Dortmund in Dortmund, Germany.

Play was stoped at the 35th minute by English referee Michael Oliver due to a lightning strike.

This was a pretty rare event as sporting events are often cancelled ahead of time if inclement weather is forecast. Companies often have to make decisions based on logistics of cancelling the event vs. confidence of the forecast, and they often err on the side of caution for public safety.

The UEFA European Championship (EURO 2024) is one of the largest watched sporting event in the world and has viewing figures of > 50 million people per game, making the lightning strike in this game potentially one of the most viewed lightning strike.

How close was the lightning strike to the stadium?

I am using lightning data from DTN.

To get the location of BVB Stadion Dortmund I simply typed it into google maps and looked at the values from the url:

https://www.google.com/maps/place/BVB+Stadion+Dortmund/@51.4926262,7.4516087,17.62z/data=!3m1!5s0x47b919d3ba62d2a3:0x64dca8536434a630!4m6!3m5!1s0x47b919d39230d60f:0x8fd9c195ad02eddf!8m2!3d51.4925888!4d7.4518574!16zL20vMDZkenRr?entry=ttu 

lat = 51.4926262

lon = 7.4516087

To codify this (and scale) you would want to use a geolocator such as:

from geopy.geocoders import Nominatim

geolocator = Nominatim(user_agent="_");

geocoded_location = geolocator.geocode("BVB Stadion Dortmund")

lat = geocoded_location.latitude

lon = geocoded_location.longitude

For a quick interactive visualization of this location I tend to use geopandas.explore:

from shapely.geometry import Point

import geopandas as gpd


gpd.GeoDataFrame({"geometry": [Point(7.4516087, 51.4926262)]}, geometry="geometry", crs="epsg:4326").explore()

although there are plenty of other python options (see https://pyviz.org/tools.html#geospatial).

To extract the lightning data you can make a request to https://lightning.api.dtn.com/v2/strikes. I'm not covering the ETL code here but the general ideas are:

The closest strike was 440 meters(!) and located at 7.451857 longitude and 51.492589 latitude at 9:34:55 (just before the 35th minute)

Can we visualize the strike data and geolocate the image above?

By plotting out all strikes we see there were a couple near the stadium. The second closest strike is likely the one in the image captured of the storm by a fan at the game:

This plot was generated with extra layers to the output of geopandas explore:

m = gdf.explore(

    marker_type="marker",

    marker_kwds={"icon": folium.Icon(color="red", icon="bolt-lightning", prefix="fa")},

)


folium.Marker(

    location=[51.4926262, 7.4516087],

    popup="Stadium",

    icon=folium.Icon(color="black", icon="futbol", prefix="fa"),

).add_to(m)


folium.Marker(

    location=[51.49247, 7.45262],

    popup="Approximate camera position",

    icon=folium.Icon(color="blue", icon="camera", prefix="fa"),

).add_to(m)


folium.PolyLine(

    locations=[(41.4932, 51.4437), (51.49247, 7.45262)], weight=5, color="blue"

).add_to(m)