Hurricane Helene, after its devastating landfall in Florida as a Category 4 storm, continues to wreak havoc across the Southeastern US. The storm has left a trail of destruction, with millions without power, catastrophic flooding, and a rising death toll. As of now, Helene, downgraded to a tropical storm, is stalling over the Tennessee Valley, threatening further rainfall and potential landslides.
To track the development of this hurricane, I wrote some code that generate a video from NOAA satellite image data. You can easily import this image data with Wolfram Language from the NOAA web site. For example, this is around the time Helene made landfall:
In[]:=
Import["https://cdn.star.nesdis.noaa.gov/FLOATER/data/AL092024/GEOCOLOR/20242710230_GOES16-ABI-FL-GEOCOLOR-AL092024-1000x1000.jpg"]
Out[]=
The images are updated every ten minutes. To get an image for any time of day you can use StringTemplate to parameterize the date part:
In[]:=
template=StringTemplate["https://cdn.star.nesdis.noaa.gov/FLOATER/data/AL092024/GEOCOLOR/`date`_GOES16-ABI-FL-GEOCOLOR-AL092024-1000x1000.jpg"]
Out[]=
TemplateObject
​
Content: https://cdn.star.nesdis.noaa.gov/FLOATER/data/AL092024/GEOCOLOR/
"date"
_GOES16-ABI-FL-GEOCOLOR-AL092024-1000x1000.jpg
Parameters: "date"

You can then call this TemplateObject with an appropriately formatted DateString. Note that NOAA uses the “Zulu” time zone here:
In[]:=
date=DateObject[{2024,9,27,2,30,0},TimeZone->"Zulu"]​​dstring=DateString[date,{"Year","ISOYearDay","Hour","Minute"}]​​template[<|"date"->dstring|>]
Out[]=
Fri 27 Sep 2024 02:30:00UTC
Out[]=
20242710230
Out[]=
https://cdn.star.nesdis.noaa.gov/FLOATER/data/AL092024/GEOCOLOR/20242710230_GOES16-ABI-FL-GEOCOLOR-AL092024-1000x1000.jpg
We can wrap this functionality up into a function called “getSatelliteImage”. This function also uses URLDownload to locally cache downloaded images to avoid downloading the same image more than once:
In[]:=
getSatelliteImage[date_DateObject]:=Module[{template,dstring},​​template=StringTemplate["https://cdn.star.nesdis.noaa.gov/FLOATER/data/AL092024/GEOCOLOR/`date`_GOES16-ABI-FL-GEOCOLOR-AL092024-1000x1000.jpg"];​​dstring=DateString[​​date,​​{"Year","ISOYearDay","Hour","Minute"}];​​If[FileType["~/helene/"<>dstring<>".jpg"]=!=File,​​URLDownload[template[<|"date"->dstring|>],"~/helene/"<>dstring<>".jpg"]​​];​​Import["~/helene/"<>dstring<>".jpg"]​​]
We can now loop over multiple days/hours/minutes and use FrameListVideo to construct a video that shows Helene’s development over time:
video=FrameListVideo[​​Select[​​Flatten[​​Table[​​Table[​​Table[​​getSatelliteImage[DateObject[{2024,9,day,hour,min,00},TimeZone->"Zulu"]],​​{min,0,50,10}],​​{hour,0,23,1}],​​{day,23,27}]​​],​​ImageQ]];
Finally we can publish the video in the Wolfram Cloud:
In[]:=
CloudPublish[ExportForm[video,"MP4"],"helene.mp4"]
Out[]=
CloudObject[
https://www.wolframcloud.com/obj/arnoudbuzing/helene.mp4
]
Out[]=

CITE THIS NOTEBOOK

Tracking Hurricane Helene​
by Arnoud Buzing​
Wolfram Community, STAFF PICKS, September 27, 2024
​https://community.wolfram.com/groups/-/m/t/3286126