The world’s leading publication for data science, AI, and ML professionals.

Creating a Video of Hurricane from NOAA Satellite Images

Using the Wolfram Language

(image by NOAA, public domain)
(image by NOAA, public domain)

The National Weather Service provides detailed satellite images from a number of its satellites operated by the NOAA. When there is a serious weather event, like Hurricane Ida, they train one of their satellites on that event to track it during its lifetime. This post shows how you can use the Wolfram Language to turn these images into a single video. This video gives an interesting insight into the evolution of Ida, from a small tropical depression, to a major hurricane, to a major rainmaker in the north-east of the United States:

The images used to generate the video shown above are stored on a NOAA web server. The following code sets the base URL for these Noaa images:

base = "https://cdn.star.nesdis.noaa.gov/FLOATER/data/AL092021/GEOCOLOR/"

This web page has a lot of hyperlinks to specific images at different sizes (250×250, 500×500, 1000×1000, and 2000×2000):

(image by author)
(image by author)

To get the image links from this page we import the page with the Wolfram Language as an XMLObject:

xml = Import[base, "XMLObject"];

Using this xml object we can use Cases and Select to extract the images we are interested in (in this case we want the 2000 x 2000 pixel images):

files = Select[
  Cases[
    xml,
    XMLElement["a", {_, "href" -> href_}, _] :> href, 
    [Infinity]
  ],
  StringContainsQ["_GOES16-ABI-FL-GEOCOLOR-AL092021-2000x2000.jpg"]
]

The files variable is a list with all the image files we’re interested in.

Next we use CreateDirectory to create a directory to store the downloaded images:

CreateDirectory["ida-images"]

Using URLDownload we can download the images to the local hard drive:

downloads = URLDownload[
  URLBuild[{base, #}],
  FileNameJoin[{"ida-images", #}]
] & /@ files;

The downloads variable is a list to all the local image files.

Using SlideShowVideo, we can now create a video from the list of images. We give each image a display time of 0.3 seconds, or three images per second:

video = SlideShowVideo[downloads -> 0.3]

The generated video is stored as a file on the local computer and is ready for upload to YouTube:

So what can we learn now that we have this video and can play back the whole event? The thing that struck me was how early the National Weather Service was able to detect this tropical depression and that it would turn into a hurricane. They pointed one of their satellites and focused on this depression very early on: three days before landfall.

I find the early sequence of images, up to the formation of the eyewall, the most interesting to watch. Especially about 45 seconds into this video the tropical system seems to explode right during sunset. By the end of the night, in the early morning hours this system has transformed into a spinning monster just north of Cuba.

The eyewall is also fascinating to watch and it is surprising how long it holds up while located over land. The coast of Louisiana is mostly marshes with very warm water, which likely contributed to this staying power.

The system keeps spinning until it is well over Tennessee, after which it becomes a major rainmaker for the northeastern states. New York City reported a record 5 inches of rainfall in just 3 hours, shutting down the subway system for the second time this year.

The system will eventually dissipate, although it would be interesting to track it all the way into Europe and see if it causes problems there as well.


For some additional details and a Wolfram Notebook with complete code, please see this post: https://community.wolfram.com/groups/-/m/t/2358543


Related Articles