Skip to main content
The following content is a read-only preview of an executable Jupyter notebook.To run this notebook interactively:
  1. Go to Wherobots Cloud.
  2. Start a runtime.
  3. Open the notebook.
  4. In the Jupyter Launcher:
    1. Click File > Open Path.
    2. Paste the following path to access this notebook: examples/Open_Data_Connections/NOAA_SWDI.ipynb
    3. Click Enter.
This notebook introduces how to use the NOAA Severe Weather Data Inventory (SWDI) on Wherobots. We will:
  • Load CSV-formatted storm event data from an AWS S3 bucket.
  • Prepare the data for geospatial queries by converting lat/long columns into a single POINT column.
  • Load 2-dimensional geometry to use in a filter over the severe weather points.
  • Visualize the points and the surrounding geography on an interactive map using SedonaKepler.

Why use Wherobots for storm data?

The size and complexity of storm event data can make it hard or expensive to analyze. Wherobots helps you write fast and cost-efficient analytics with:
  • Lazy Loading → Data is pulled into memory only when needed to run a query.
  • Distributed Query Execution → Join and filter without moving large files.
  • Fast Geospatial Filtering → Quickly combine and compare just the relevant data based on its geography.
Wherobots also makes it easy to seamlessly combine vector and raster data. We can analyze the NOAA vector storm data along with:
  • Administrative boundaries (counties, states, etc.)
  • Critical infrastructure (power grids, highways, etc.)
  • Other meteorological data (temperature, precipitation, etc.)
This makes Wherobots ideal for storm tracking, risk assessment, and severe weather analytics.

What is NOAA SWDI?

The NOAA Severe Weather Data Inventory (SWDI) aggregates severe weather records from multiple sources, including:
  • NEXRAD Level-3 products (tornado vortex signatures, hail signatures, mesocyclones)
  • Storm warnings (severe thunderstorm, tornado, flash flood, and special marine warnings)
  • Vaisala’s National Lightning Detection Network (NLDN)
  • Storm cell structures (size, rotation, etc.)

How is this data useful?

The SWDI dataset can answer key public safety and business questions across many domains, including:
  • Insurance & Risk Analysis – Assessing hailstorm damage and storm frequency
  • Disaster Response Planning – Understanding severe storm patterns for emergency planning
  • Climate Change Studies – Analyzing shifts in extreme weather events
  • Storm Tracking & Forecasting – Validating storm prediction models

Data files

The SWDI dataset contains smaller datasets of different aspects of storm activity.

Data contents

  • Date range: 1995 to the present, updated monthly
  • Formats: CSV, Shapefiles, KMZ, JSON, XML
  • Open access on AWS Marketplace: s3://noaa-swdi-pds/
  • File granularity: Aggregated by year for past years and by month for the current year

Writing the code

Set up an Apache Sedona context

The context, sedona, is the machine that runs in the Wherobots Cloud compute environment. To connect to the SWDI data on AWS, we add anonymous S3 access credentials when we call SedonaContext.builder().getOrCreate(). You can read our documentation about how to further configure the Sedona context.

Load and prepare SWDI hailstorm data

We will load two types of storm data into Wherobots DataFrames. First, we will work with NEXRAD Level-3 Hail Signatures:
  1. Load 12.2M point locations of hail storm signatures from 2023.
  2. Use the ST_Intersects() spatial filter to find the storms contained within a region.
  3. Use Sedona Kepler to draw a map of those storms, coloring each storm by the size of the hail.

Read NEXRAD Level-3 Hail Signatures

Using PySpark, we will read the CSV file with 2023 hail signatures. The file starts like this:
We load and prepare the data by:
  • Skipping the comment lines in the header
  • Keeping the CSV file’s column names in our dataframe
  • Parsing the timestamp string
  • Converting the LON and LAT columns into a single Sedona point geometry column that can be used efficiently in geospatial queries

Filter to storms inside Texas on April 28th, 2023

To filter to Texas, we will first grab the geometry of Texas from the divisions_division_area table in the Overture Maps Foundation dataset, hosted in the Wherobots Open Data catalog.
Next, we will filter to a specific date and use the Wherobots ST_Intersects predicate function to find the points inside texas_geometry.

Visualize the hailstorms on a map

Finally, we create an interactive map using SedonaKepler. We pull the county boundaries from the open Overture Maps Foundation dataset to use as a layer on the map.
And configure the map with a JSON map config (docs) so that storms with larger hailstones have a darker color.
image.png

Read NEXRAD Level-3 storm cell data

Next, we’ll do a similar process for 38.8M points of storm data in Oklahoma for a single day from 2023.
image.png