NWS damage surveys
noaa:nws-damage-surveys, available since v0.34, reads the National Weather
Service Damage Assessment Toolkit
(DAT) through its public ArcGIS feature service, checked on 2026-09-29:
https://services.dat.noaa.gov/arcgis/rest/services/nws_damageassessmenttoolkit/DamageViewer/FeatureServer
After a tornado or a damaging wind event, NWS offices survey the damage and enter it in the DAT. The service holds three layers, and a query reads one:
layer |
Layer | Features on 2026-09-29 | What one feature is |
|---|---|---|---|
points |
0, Damage Points | 240,169 | One rated damage point: the damage indicator and degree of damage, an EF rating and wind estimate, often a photo |
lines |
1, Damage Lines | 12,965 | One tornado track, with start and end times and positions, length, width, and rating |
polygons |
2, Damage Polygons | 11,152 | One damage area, usually the extent of an EF rating along a track |
The service describes its data as preliminary: "While the data has been
quality controlled, it is still considered preliminary. Official statistics for
severe weather events can be found in the Storm Data publication." Storm Data
is noaa:storm-events; the SPC's database is
noaa:spc-tornado-reports. The photos attached to the
points are noaa:nws-damage-photos.
-p layer=points|lines|polygonsis required.- Both timestamps are required, in UTC. The window selects by storm time,
inclusive at both ends:
stormdateon points and polygons,starttimeon lines. See storm times. - A
bboxorlocationis sent to the service as an envelope, and features intersecting it are returned. A county's box is a rectangle, so it can reach past the county. -p office=TSA,OUNkeeps features surveyed by those offices. It works on points and lines; polygons record no office and refuse it. A track shared by offices lists them joined by commas (JAN,MOB) and matches each of them.-p efscale=EF4,EF5keeps those ratings. The toolkit writesEF0toEF5,EF3+,EFU,UNKNOWN,N/A,TSTM/Wind(straight-line wind), andTropical; case does not matter in the parameter.-p include_undated=trueadds the features with no storm time, which then match every window.-p as_of=2026-09-29T00:00Zreads the service as it stood at that instant. See pinning a live service.variablesis rejected: the attributes are fixed. Free text is rejected as everywhere.
usdata fetch noaa:nws-damage-surveys --start 2011-04-27 --end 2011-04-28T12:00Z -p layer=lines
usdata fetch noaa:nws-damage-surveys --location "Osage County, OK" \
--start 2024-05-06T12:00Z --end 2024-05-07T12:00Z -p layer=points -p efscale=EF3,EF4
usdata fetch noaa:nws-damage-surveys --start 2024-05-06T12:00Z --end 2024-05-07T12:00Z \
-p layer=lines -p as_of=2024-05-08T00:00Z
What arrives
GeoJSON, as the service writes it: one FeatureCollection per asset, WGS84
coordinates, every attribute of the layer under properties, and dates as
milliseconds since 1970 UTC. There is no bundled GeoJSON reader, so
open() refuses the file; json.load reads it, and geopandas.read_file
does too where it is installed. Sizes are not known before download.
Access was verified without credentials.
A layer serves at most 2000 features per request, so a query becomes one
asset per run of at most 2000 matching features: listing asks for every
matching object id, sorts them, and cuts them into runs, each asked for by its
first and last id, ...&where=<filters> AND objectid >= 2051923 AND objectid <=
2155170&orderByFields=objectid&f=geojson. The asset id carries the run:
nws_damage_lines_20240506_20240507_2051923-2155170_4361586bd656.geojson.
The busiest three days of 2025, 14 to 16 March, hold 4,720 points and list as
three pages.
The service reports its own failures as HTTP 200 with an error body; a
fetched page holding one, or one the service cut short at its record limit, is
refused and leaves no file.
Pinning a live service
The DAT is edited live. Surveys appear over days: the tracks for 6 May 2024 numbered 20 as of 8 May, 41 as of 12 May, 55 as of 1 June, and 58 now, and one was still being added on 21 May. Features are revised, and some are deleted: 27 April 2011's points numbered 1,402 on 26 November 2020 and number 1,397 now.
Paging by object-id range keeps that from disturbing more than it must. An edit changes only the page whose range holds the feature, and a feature added later takes a new, higher id that falls past every listed range, so it appears when the query is listed again rather than shifting the pages already pinned. A pinned page whose feature was edited still fails its checksum on restore.
as_of removes the drift. The service archives every edit since 25 November
2020 and answers any request as of an instant (historicMoment), so a query
that names one lists and fetches exactly what the service held then, and a
restore months later gets the same bytes. A request as of a recent instant
returned the live page byte for byte. The instant is recorded in each asset's
properties. An instant before the archive begins is refused, because the
service answers it with nothing rather than an error; an instant in the future
is refused too, since its pages would change until it arrived. The live test
pins the Barnsdall EF4 track this way.
Storm times
Times are UTC. The Barnsdall, Oklahoma EF4 of 6 May 2024 began at 9:12 PM CDT;
its track reads starttime 1715047920000, 02:12 UTC on 7 May, so a window over
an evening in the central U.S. crosses a UTC date.
- Tracks have both
stormdateandstarttime, equal wherever both are present.starttimeis never empty, while one track, a 27 April 2011 EF4 entered in June 2026, has nostormdate, so the window usesstarttimeon tracks. 81 tracks end before they start. - Undated features. 41 points (40 of them surveyed in 2010 to 2012) and
254 polygons have no
stormdate. They are outside every window unlessinclude_undated=true, which adds all of them, in the box and filters asked for, to any window. - Date-only stamps. Many older points record only the date, stamped at
00:00 UTC: 2,650 of 2011's 5,217, and more than 300 a year from 2011 to 2020,
against a few dozen a year since 2021. 27 April 2011's points in Alabama read
2011-04-27T00:00Zalthough the tornadoes struck that afternoon and evening, local time. For surveys before 2021, span whole UTC days, and reach back to 00:00 UTC on the local date of the storm. - Placeholders. Eleven points surveyed in 2013 to 2016 carry
1970-01-01T00:00Z, the epoch, as their storm time. - Historical reconstructions. Offices have entered surveys of past
tornadoes: the Des Plaines, Illinois tornado of 22 May 1855, the Rockford
tornado of 1928, the 1965 Palm Sunday and 1974 Super Outbreak tornadoes, and
others. The earliest storm time is 1855-05-22T23:59:24Z. The layers'
metadata advertises a time extent reaching back to the second century and
forward to 2029, which the data do not bear out; statistics over
stormdategive the real range, and the catalog uses it. Surveys become numerous in 2010.
Attributes
The layers do not share a schema. Points have office, damage and
damage_txt (the EF-scale damage indicator), dod and dod_txt (its degree of
damage), windspeed as text, injuries, deaths, lat, lon, image (the
file name of a photo, often empty), and surveydate. Lines have wfo,
starttime, endtime, start and end coordinates, length, width,
injuries, fatalities, efnum (-99 unknown), maxwind, and damage
estimates. Polygons have length, width, injuries, and fatalities, and
no office. All three have objectid, globalid, event_id (an office's own
label, empty on most points), efscale, comments, and edit stamps.
The service states no units. The lengths and widths read as miles and yards:
the Barnsdall track's length 40.8 and width 1700. The office on points is
not always clean: 384 are null, 7 empty, and a few mistyped (meg, OAXx),
which is why the office filter compares upper case. efscale on points also
holds a handful of junk values (Scripts disabled, Correction); the
parameter accepts only the ratings above.
Probes
Checked on 2026-09-29.
B='https://services.dat.noaa.gov/arcgis/rest/services/nws_damageassessmenttoolkit/DamageViewer/FeatureServer'
curl "$B/1?f=json" # maxRecordCount 2000, archivingInfo from 1606331043000
curl -G "$B/0/query" --data-urlencode 'where=1=1' -d returnCountOnly=true -d f=json # 240169
curl -G "$B/0/query" --data-urlencode 'where=stormdate IS NULL' -d returnCountOnly=true -d f=json # 41
curl -G "$B/1/query" --data-urlencode "where=starttime >= TIMESTAMP '2024-05-06 12:00:00' AND starttime <= TIMESTAMP '2024-05-07 12:00:00'" \
-d returnCountOnly=true -d f=json # 58
curl -G "$B/1/query" --data-urlencode "where=starttime >= TIMESTAMP '2024-05-06 12:00:00' AND starttime <= TIMESTAMP '2024-05-07 12:00:00'" \
-d returnCountOnly=true -d historicMoment=1715126400000 -d f=json # 20, as of 8 May 2024
curl -G "$B/0/query" --data-urlencode "where=stormdate >= TIMESTAMP '2011-04-27 00:00:00' AND stormdate <= TIMESTAMP '2011-04-28 12:00:00'" \
-d returnCountOnly=true -d historicMoment=1606262400000 -d f=json # 0: before the archive
curl -G "$B/0/query" --data-urlencode "where=stormdate >= TIMESTAMP '2025-03-14 00:00:00' AND stormdate <= TIMESTAMP '2025-03-17 00:00:00'" \
-d outFields=objectid -d f=geojson # 2000 features, exceededTransferLimit
Metadata sources
Every value in the catalog entry's resolution, cadence, citation, terms, variables, and extent comes from one of these. A field the agency does not publish is left empty rather than estimated.
- What the DAT is, and how data reach the public service ("Once quality-controlled, the data becomes available externally via a public web portal, as well as public Geographic Information System (GIS) services"): NWS Service Change Notice 22-84, which put the public portal into operation on or after 26 October 2022. The Product Description Document it links returned 404 on 2026-09-29.
- The preliminary-data statement and the layers, fields, record limit, archive
start, and time reference (UTC): the feature service
and its layers'
?f=jsondescriptions. - Temporal extent, counts, null and placeholder dates, and attribute values: statistics queries against the service on 2026-09-29, as in the probes above.
- Terms and license: the NWS disclaimer,
"The information on National Weather Service (NWS) Web pages are in the
public domain, unless specifically noted otherwise". The service's
copyrightTextis "NOAA National Weather Service". - Citation: the DAT publishes no citation form, so the entry uses the agency, product, and service.
- Latency is empty: the NWS states none, and surveys appear as offices finish them, days to weeks after a storm.
- No window limit is declared, because the adapter enforces none; listing every point ever surveyed takes one id request and makes 121 pages.
Reference
noaa:nws-damage-surveys · Released · Included since usdata 0.34. NWS Damage Survey Points, Tornado Tracks, and Damage Areas.
At a glance
- Files: GeoJSON
- Selection: One layer's features with storm time in an inclusive UTC window, optionally in a box; one page per object-id run
- Required inputs: Both timestamps and a layer; optionally a bbox, offices, EF ratings, undated features, or as_of
- Open locally: Local files; no bundled reader for this format
- On usdata.dev: NWS damage survey points, tornado tracks, and damage areas, with a walkthrough
Parameters
Pass these as --param name=value to the CLI, as params: entries in a manifest, or as keyword arguments to build_query.
| Parameter | Meaning |
|---|---|
as_of |
Read the service as it stood at this UTC instant, no earlier than its archive's start on 2020-11-25 and not in the future, so pages cannot drift; the live service by default. |
efscale |
Rating(s) as the toolkit writes them: EF0 to EF5, EF3+, EFU, UNKNOWN, N/A, TSTM/Wind, or Tropical; case does not matter. |
include_undated |
Also return features with no storm time, which match every window; false by default. |
layer |
Required layer: points (rated damage points), lines (tornado tracks), or polygons (damage areas). |
office |
NWS office code(s) that surveyed the damage, such as TSA or OUN; points and lines only, and a track shared by offices matches each of them. |
Variables
| Variable | Units | Meaning |
|---|---|---|
objectid |
— | Feature id, unique within its layer; pages are cut by it |
globalid |
— | Feature GUID, unique across the service |
stormdate |
milliseconds since 1970-01-01 UTC | Storm time; null on a few features, and the 1970-01-01T00:00Z placeholder on eleven points |
starttime |
milliseconds since 1970-01-01 UTC | Lines: when the tornado began; the window's field on lines |
endtime |
milliseconds since 1970-01-01 UTC | Lines: when the tornado ended |
efscale |
— | Rating as text: EF0 to EF5, EF3+, EFU, UNKNOWN, N/A, TSTM/Wind, or Tropical |
efnum |
— | Lines: EF number, -99 when unknown |
office |
— | Points: surveying NWS office code |
wfo |
— | Lines: surveying NWS office code, or several joined by commas |
event_id |
— | An office's label for the event; often empty |
damage_txt |
— | Points: EF-scale damage indicator, such as One- or Two-Family Residences (FR12) |
dod_txt |
— | Points: degree of damage to that indicator, in words |
windspeed |
— | Points: estimated wind speed as text; the service states no unit |
length |
— | Lines and polygons: path length; the service states no unit |
width |
— | Lines and polygons: path width; the service states no unit |
injuries |
count | Injuries |
fatalities |
count | Lines and polygons: fatalities; points call it deaths |
image |
— | Points: file name of a photo taken there, often empty; the photos are noaa:nws-damage-photos |
comments |
— | Surveyor's notes |
Catalog facts
- Availability: since 0.34
- Domain: Severe weather
- Spatial resolution: One feature per surveyed damage point, tornado track, or damage area
- Temporal resolution: Storm time to the minute, in UTC
- Updates: As offices finish surveys, with no schedule: "Once quality-controlled, the data becomes available externally via a public web portal, as well as public Geographic Information System (GIS) services"
- Terms of use: https://www.weather.gov/disclaimer
- Citation: NOAA National Weather Service, Damage Assessment Toolkit (DamageViewer feature service), accessed via usdata
- Catalog date range: 1855-05-22 to open-ended
- Coverage varies by station, product, and date; the range above does not guarantee observations.
- Upstream documentation
- License: US Government Work (public domain)
- Transport:
http - Adapter:
usdata.providers.noaa.nws_damage:NwsDamageSurveys