Florida Storm Tracker and Model Mixer

Storm Tracker

Map

View the map of

See Legend
Source: National Oceanic and Atmospheric Administration

Find hurricanes passed near me

Storm Forecast Tools and Spaghetti Models

Hurricane forecast model explanation: Ryan Truchelut, a meteorologist with the Tallahassee-based startup, offers this explainer of the science behind the spaghetti models.

More

Watch storm through webcams

A number of cameras are showing live feeds as storm approaches.

Florida Gridlock Guide

Here's the latest traffic reports and live views from the state's highways.

OFF THE GRID: Power Outage Tracker

As severe weather or blizzards threaten, this database scrapes power outage information from more than 1,000 companies nationwide. It will automatically update every 15 minutes.

Weather Alerts: Warnings, Watches and Advisories

Track all current severe weather warnings, watches and advisories for West Palm Beach, Florida and other areas in the United States on the interactive weather alerts page. This data is updated every 5 minutes.

Rolling Storm Damage Reports

As storms strike, this interactive map is your guide to impacts and damage reports coming into National Weather Service stations nationwide.

A history of twisters: Tornadoes in Florida since 1950s

This interactive map, which contains data from January 1950, pinpoints where a cyclone touched down and traces its path of destruction. For more recent tornadoes, clicking deeper provides more details, damage estimates and whether someone was injured or killed in the storm.

Real-time Streamflow Map: River Water Level

Current data typically are recorded at 15- to 60-minute intervals.

Excessive Rainfall Forecast

Weather Prediction Center forecasts the probability that rainfall will exceed flash flood guidance within 25 miles of a point.

Maximum Heat Index Forecast

Maximum heat index forecast for next 7 days. Updated daily from May 1 through Sept. 30

Drought Monitor and History

Data shows the location and intensity of drought across the country.

Wildfire and Smoke Tracker

Fire data is updated hourly based upon input from incident intelligence sources, GPS data, infrared (IR) imagery from fixed wing and satellite platforms.

Wildfire History

See a map of wildfires since 2017

Air Quality Index (AQI) Forecasts and Current Conditions

The Air Quality Index (AQI) translates air quality data into numbers and colors that help people understand when to take action to protect their health.

Snow & Ice: Winter Weather Forecasts

Map indicates the probability of accumulated snow or ices for next 3 days

Weather Data since 1895

County-level monthly precipitation and temperature data since 1895 provieded by National Centers for Environmental Information (NCEI). The data is updated every month.

'; //popupContent += '
'+new Date(feature.properties.ts*1000).toLocaleString("en-US",{month:"long", day:"numeric", year:"numeric", hour:"numeric", minute:"numeric", timeZoneName:"short"})+'
'; popupContent += ''; //popupContent += ''; popupContent += ''; if (feature.properties.udt == feature.properties.ldt ){ popupContent += ''; } else { if (feature.properties.udt) {popupContent += '';} popupContent += ''; } if (feature.properties.knt) {popupContent += '';} if (feature.properties.pres) {popupContent += '';} popupContent += '
Name:'+feature.properties.sname+'
Type:'+feature.properties.st+'
Time:'+feature.properties.udt+'
UTC Time:'+feature.properties.udt+'
Local Time:'+feature.properties.ldt+'
Wind:'+Math.round(feature.properties.knt*1.152)+' mph
Pressure:'+intComma(feature.properties.pres)+'MB
'; return popupContent; } function onPntTrackFeature(feature) { var popupContent = ""; popupContent += '
'+feature.properties.sname+'
'; popupContent += '

Advisory '+feature.properties.adn+'

'; popupContent += ''; if (feature.properties.st) {popupContent += '';} popupContent += ''; if (feature.properties.knt) {popupContent += '';} if (feature.properties.gust) {popupContent += '';} if (feature.properties.pres) {popupContent += '';} popupContent += '
Type:'+feature.properties.st+'
Time:'+feature.properties.time+'
Maximum Wind:'+Math.round(feature.properties.knt*1.152)+' mph
Wind Gusts:'+Math.round(feature.properties.gust*1.152)+' mph
Pressure:'+intComma(feature.properties.pres)+'MB
'; return popupContent; } function onWWFeature(feature) { var popupContent = '
'+feature.properties.name+'
'; popupContent += ''; popupContent += ''; popupContent += ''; popupContent += '
'+feature.properties.storm+'
Time'+feature.properties.time+'
'; return popupContent; } function onCWWFeature(feature) { const options = { dateStyle: 'full', timeStyle: 'long', timeZone: "America/New_York" }; var dlink = '/severe-weather-alerts-warnings-watches/detail/'+slugify(feature.properties.p+' '+feature.properties.s+' '+feature.properties.ex)+'/'+feature.properties.id+'/' if (feature.properties.d != null) { var wwadesc = truncate(feature.properties.d, 15); if (feature.properties.d != wwadesc) { wwadesc += '...... VIEW MORE ' } } else { var wwadesc = '' } var popupContent = '
'+feature.properties.p+' '+feature.properties.s+'
'; popupContent += '
'; popupContent += ''; if (feature.properties.d != null){popupContent += '';} if (feature.properties.is != null){popupContent += '';} if (feature.properties.ex != null){popupContent += '';} if (feature.properties.h != null && feature.properties.h != 'None'){popupContent += '';} popupContent += '
Status'+feature.properties.t+'
'+wwadesc+'
Initially Issued'+new Intl.DateTimeFormat('en-us', options).format(new Date(feature.properties.is*1000))+'
Expires'+new Intl.DateTimeFormat('en-us', options).format(new Date(feature.properties.ex*1000))+'
Population'+feature.properties.h+'
'; return popupContent; } function onPAvFeature(feature) { var popupContent = '
'+feature.properties.name+'
'; popupContent += '
'+feature.properties.st+'
'; popupContent += '
'; popupContent += '
'+feature.properties.description+'
'; popupContent += '
'; return popupContent; } function onDescFeature(feature) { var popupContent = ''+feature.properties.description+'
'; return popupContent; } function onMLAFeature(feature) { var popupContent = '
Arrival Time of Possible Tropical Storm Force Winds
'+feature.properties.description+'
'; return popupContent; } function onGTWOFeature(feature) { if (feature.properties.BASIN == 'Pacific') { if (gtwotext.hasOwnProperty("Pacific") ) { var gtwodesc = gtwotext[feature.properties.BASIN][feature.properties.AREA]; } else { var gtwodesc = gtwotext['East Pacific'][feature.properties.AREA]; } } else { var gtwodesc = gtwotext[feature.properties.BASIN][feature.properties.AREA]; } var popupContent = ''+gtwodesc+'
'; return popupContent; } function onSurgeFeature(feature) { var popupContent = ""; popupContent += '
Peak Storm Surge: '+feature.properties.name+'
'; return popupContent; } function onLAEVACFeature(feature) { var popupContent = '
'+feature.properties.Type+' Evacuation
'; popupContent += ''; popupContent += ''; if(feature.properties.Description != null){popupContent += '';} popupContent += '
Parish'+feature.properties.Parish+'
Area'+feature.properties.Name+'
'+feature.properties.Description+'
'; return popupContent; } var gtwoColor = {'high':'#E80000','medium':'#FF9200','low':'#FFFF00','High':'#E80000','Medium':'#FF9200','Low':'#FFFF00'}; var bF = {'al':'Atlantic', 'ep':'East Pacific', 'cp':'Central Pacific'}; mapboxgl.accessToken = 'pk.eyJ1IjoieXB5dW4iLCJhIjoiY2oxcW4ybWhxMDBkMjJxcGVhbDV5cnpzYyJ9.oFQSnOc57xCR7A51OR6-3w'; //ck0flqufl2k1x1cpmupm5sl2y var map = new mapboxgl.Map({container: 'stormtrackingmap', style: 'mapbox://styles/ypyun/ck0flqufl2k1x1cpmupm5sl2y', center: [-80.0585,26.6696], zoom: 6, attributionControl: false, }); map.addControl(new mapboxgl.AttributionControl({ compact: true, customAttribution:[''] })); var bounds = new mapboxgl.LngLatBounds(); var showWWXGT = 'yes'; map.on('load', function () { var layers = map.getStyle().layers; var firstSymbolId; for (var i = 0; i < layers.length; i++) { if (layers[i].type === 'symbol') { firstSymbolId = layers[i].id; break; } } var icsize = ['interpolate', ['linear'], ['zoom'], 1, 0.4, 3, 0.6, 6, 0.8, 8, 1.0,]; var storm_radius = ["match",["get","c"],"c1",6,"c2",7.5,"c3",9,"c4",10.5,"c5",12, 4]; var line_width = ["match",["get","c"],"c1",6,"c2",7.5,"c3",9,"c4",10.5,"c5",12,4]; var storm_color = ["match",["get","c"],"td","#F0C889","ts","#E07D56","c1","#DA6445","c2","#D54B33","c3","#CF3222","c4","#CA1911","c5","#C40000","ex","#F0C889","#CCC"]; var line_color = ["match",["get","c"],"td","#F0C889","ts","#E07D56","c1","#DA6445","c2","#D54B33","c3","#CF3222","c4","#CA1911","c5","#C40000","ex","#F0C889","#CCC"]; var risk_color = ["match",["get","RISK7DAY"],"Low","#e1e12a","Medium","#ff9200","Med","#ff9200","High","#e80000","#CCC"]; if (showWWXGT == 'yes') { map.addSource('cww', {type: 'geojson', data: '/media/jsons/weather/wwa/current_ww_crh.json?v='+rnna }); map.addLayer({ "id": "CCWW", "type": "fill", "source":"cww", "layout":{"visibility": "none"}, "filter":["any",['==','p','Severe Thunderstorm'],['==','p','Tornado'],['==','p','Marine'],['==','p','Beach Hazard'],['==','p','Coastal Flood'],['==','p','Extreme Wind'],['==','p','Flood'],['==','p','Flash Flood'],['==','p','Flood (Forecast)'],['==','p','Gale'],['==','p','Hurricane Force Wind'],['==','p','Inland Hurricane Wind'],['==','p','Hurricane'],['==','p','High Wind'],['==','p','Hydrologic'],['==','p','Lakeshore Flood'],['==','p','Lake Wind'],['==','p','Marine Dense Fog' ],['==','p','Small Craft for Rough Bar'],['==','p','Rip Currents'],['==','p','Small Craft'],['==','p','Hazardous Seas'],['==','p','Small Craft for Winds'],['==','p','Storm'],['==','p','Storm Surge'],['==','p','High Surf'],['==','p','Small Craft for Hazardous Seas'],['==','p','Inland Tropical Storm Wind'],['==','p','Tropical Storm'],['==','p','Tsunami'],['==','p','Typhoon'],['==','p','Wind']], "paint": {'fill-color': {type:'identity', property:'c'}, 'fill-opacity':0.6, 'fill-outline-color': '#CCC', }}, firstSymbolId); // "filter":["==","$type","Polygon"] map.on('click', 'CCWW', function (e) {new mapboxgl.Popup({ offset: 14 }).setLngLat(e.lngLat).setHTML(onCWWFeature(e.features[0])).addTo(map);}); map.on('mouseenter', 'CCWW', function () {map.getCanvas().style.cursor = 'pointer'; }); map.on('mouseleave', 'CCWW', function () {map.getCanvas().style.cursor = '';}); if(klen > 0){ map.addLayer({ "id": "gtwoLine", "type": "line", "source": { "type": "geojson", "data":gtwolin }, "paint": {'line-color': risk_color, 'line-opacity':0.7, 'line-width': 3.2, }},firstSymbolId); map.addLayer({ "id": "gtwoGonOutline", "type": "line", "source": { "type": "geojson", "data":gtwogon }, "paint": {'line-color':risk_color, 'line-opacity':0.7, 'line-width': 3.2, }},firstSymbolId); map.addLayer({ "id": "gtowGon", "type": "fill", "source": { "type": "geojson", "data":gtwogon }, "paint": {'fill-color': risk_color, 'fill-opacity':0.3, 'fill-outline-color': {type:'identity', property:'color'}, }, "filter":["==","$type","Polygon"]}, firstSymbolId); map.on('click', 'gtowGon', function (e) {new mapboxgl.Popup({ offset: 14 }).setLngLat(e.lngLat).setHTML(onGTWOFeature(e.features[0])).addTo(map);}); map.on('mouseenter', 'gtowGon', function () {map.getCanvas().style.cursor = 'pointer'; }); map.on('mouseleave', 'gtowGon', function () {map.getCanvas().style.cursor = '';}); gtwopnt.features.forEach(function(gtmarker) { var el = document.createElement('div'); el.className = 'glIcon'; el.style.backgroundImage = 'url("/media/storm/icons/gtwo'+gtmarker.properties.RISK7DAY.toLowerCase()+'.png")'; new mapboxgl.Marker(el).setLngLat(gtmarker.geometry.coordinates).setPopup(new mapboxgl.Popup({ offset: 14 }).setHTML(onGTWOFeature(gtmarker))).addTo(map); if (gtmarker.properties.BASIN == 'Atlantic'){bounds.extend(gtmarker.geometry.coordinates);} }); } } }); // active no if(klen > 0){ var gtwpntlen = Object.size(gtwopnt['features']); var gtwgonlen = Object.size(gtwogon['features']); if(gtwpntlen > 0){gtwopnt.features.forEach(function(gtmarker) { if (gtmarker.properties.BASIN == 'Atlantic'){ bounds.extend(gtmarker.geometry.coordinates);} }); } if(gtwgonlen > 0){gtwogon.features.forEach(function(gtmarker) { if (gtmarker.properties.BASIN == 'Atlantic'){ gtmarker.geometry.coordinates[0].forEach(function(gcoord){ bounds.extend(gcoord);}) } }); } } map.addControl(new mapboxgl.NavigationControl(), 'top-left');