NAME
Weather::NHC::TropicalCyclone::StormTable - convenient access to the list of historical storms https://ftp.nhc.noaa.gov/atcf/archive/storm.table, which is in ATCF format. Although it looks like and can be treated in many cases as CSV, field width is importan when considering this type of data operationally.
DESCRIPTION
The NHC maintains a table of all past storms going back to 1851. Information is added at the end of each year. So during an active season, the historical information for the current season will not be known this module. However, one may use the get_latest_table
to retrieve the latest state of the storm.table
if the data seems to be out of date.
SYNOPSIS
my
$obj
= Weather::NHC::TropicalCyclone::StormTable->new;
foreach
my
$year
( @{
$obj
->years } ) {
qq{$year\n}
;
}
foreach
my
$basin
( @{
$obj
->basins } ) {
qq{$basin\n}
;
}}
foreach
my
$name
( @{
$obj
->names } ) {
qq{$name\n}
;
}
foreach
my
$kind
( @{
$obj
->storm_kinds } ) {
qq{$kind\n}
;
}
foreach
my
$nhc_designation
( @{
$obj
->nhc_designations } ) {
qq{$nhc_designation\n}
;
}
$obj
->get_history_archive_url(2012,
q{al}
,
q{01}
),
qq{\n}
;
$obj
->get_best_track_archive_url(2012,
q{al}
,
q{01}
),
qq{\n}
;
$obj
->get_fixes_archive_url(2012,
q{al}
,
q{01}
),
qq{\n}
;
$obj
->get_archive_url(2012,
q{al}
,
q{01}
),
qq{\n}
;
METHODS
new
-
Constructor.
years
-
Returns a list of all years in the history file.
by_year
-
Accessor for all storm records for the provided year, all basins.
names
-
Returns a list of all storm names in the history file.
by_name
-
Accessor for all storm records for the provided name, all basins.
basins
-
Returns a list of all basis in the history file.
by_basin
-
Accessor for all storm records for the provided basin.
get_by_year_basin
-
Accessor for all storm records for the provided basin and year.
nhc_designations
-
Returns a list of all full NHC storm designations, e.g.
al222020
. by_nhc_designation
-
Returns the storm record for the provided year, basin, and storm number.
storm_kinds
-
Returns a list of all kinds of storms in the history file, e.g.
HU
,TD
, etc. by_storm_kind
-
Accessor for all storms of the povided kind.
get_storm_numbers
-
Given the year and basin, returns the storm numbers for that year.
get_history_archive_url
-
For the given year, basin, and storm number; returns the full URL including file name for the archived history file; e.g.,
aal112019.dat.gz
. get_best_track_archive_url
-
For the given year, basin, and storm number; returns the full URL including file name for the archived best track file; e.g.,
bal112019.dat.gz
. get_fixes_archive_url
-
For the given year, basin, and storm number; returns the full URL including file name for the archived fixes file; e.g.,
fal112019.dat.gz
. get_archive_url
-
For the given year, returns the URL for the directory containing all archived files and subdirectories.
storm_table
-
Returns the entire text of the NHC
storm.history
file being used by this module. get_latest_table
-
Updates the data used for the query methods with the latest version of the table being hosted by the NHC at https://ftp.nhc.noaa.gov/atcf/archive/storm.table, underneath utilizes
HTTP::Tiny
.
Internal Methods
_ingest_storm_table
-
Takes
storm.table
in raw text and shoves it into the reference fields that support the other methods. Used bynew
andget_latest_table
. _return_arrayref
-
Helper method for converting interal data representation into array references.
_get_storm_designation
-
Helper method to format provided year, basin, and storm number into the designation format.
_data
-
Internal method that encapsulates the raw storm.history file.
_parse_line
-
Parses a storm record and returns an array ref.
ADDITIONAL INFORMATION
ATCF Storm Archive Information
storm.table
format description-
https://www.nrlmry.navy.mil/atcf_web/docs/database/new/abdeck.txt
storm.table
ATCF Data Format Description
Presented here from https://www.nrlmry.navy.mil/atcf_web/docs/database/new/abdeck.txt for convenience.
ATCF best track, aids, bogus
format
8/31/2016
See the notes on missing and deprecated data at the end of this document.
Common section, fields 1-36, followed by user-data section which is not predefined.
BASIN, CY, YYYYMMDDHH, TECHNUM/MIN, TECH, TAU, LatN/S, LonE/W, VMAX, MSLP, TY, RAD, WINDCODE, RAD1, RAD2, RAD3, RAD4, POUTER, ROUTER, RMW, GUSTS, EYE, SUBREGION, MAXSEAS, INITIALS, DIR, SPEED, STORMNAME, DEPTH, SEAS, SEASCODE, SEAS1, SEAS2, SEAS3, SEAS4, USERDEFINED, userdata
COMMON FIELDS
BASIN - basin, e.g. WP, IO, SH, CP, EP, AL, LS
CY - annual cyclone number: 1 - 99
YYYYMMDDHH - Warning Date-Time-Group, yyyymmddhh: 0000010100 through 9999123123.
TECHNUM/MIN- objective technique sorting number, minutes
for
best track: 00 - 99
TECH - acronym
for
each
objective technique or CARQ or WRNG,
BEST
for
best track, up to 4 chars.
TAU - forecast period: -24 through 240 hours, 0
for
best-track,
negative taus used
for
CARQ and WRNG records.
LatN/S - Latitude
for
the DTG: 0 - 900 tenths of degrees,
N/S is the hemispheric
index
.
LonE/W - Longitude
for
the DTG: 0 - 1800 tenths of degrees,
E/W is the hemispheric
index
.
VMAX - Maximum sustained wind speed in knots: 0 - 300 kts.
MSLP - Minimum sea level pressure, 850 - 1050 mb.
TY - Highest level of tc development:
DB - disturbance,
TD - tropical depression,
TS - tropical storm,
TY - typhoon,
ST - super typhoon,
TC - tropical cyclone,
HU - hurricane,
SD - subtropical depression,
SS - subtropical storm,
EX - extratropical systems,
PT - post tropical,
IN - inland,
DS - dissipating,
LO - low,
WV - tropical wave,
ET - extrapolated,
MD - monsoon depression,
XX - unknown.
RAD - Wind intensity
for
the radii
defined
in this record: 34, 50 or 64 kt.
WINDCODE - Radius code:
AAA - full circle
NEQ, SEQ, SWQ, NWQ - quadrant
RAD1 - If full circle, radius of specified wind intensity, or radius of
first quadrant wind intensity as specified by WINDCODE. 0 - 999 n mi
RAD2 - If full circle this field not used, or radius of 2nd quadrant wind
intensity as specified by WINDCODE. 0 - 999 n mi.
RAD3 - If full circle this field not used, or radius of 3rd quadrant wind
intensity as specified by WINDCODE. 0 - 999 n mi.
RAD4 - If full circle this field not used, or radius of 4th quadrant wind
intensity as specified by WINDCODE. 0 - 999 n mi.
POUTER - pressure in millibars of the
last
closed isobar, 900 - 1050 mb.
ROUTER - radius of the
last
closed isobar, 0 - 999 n mi.
RMW - radius of max winds, 0 - 999 n mi.
GUSTS - gusts, 0 - 999 kt.
EYE - eye diameter, 0 - 120 n mi.
SUBREGION - subregion code: W,A,B,S,P,C,E,L,Q.
A - Arabian Sea
B - Bay of Bengal
C - Central Pacific
E - Eastern Pacific
L - Atlantic
P - South Pacific (135E - 120W)
Q - South Atlantic
S - South IO (20E - 135E)
W - Western Pacific
MAXSEAS - max seas: 0 - 999 ft.
INITIALS - Forecaster's initials used
for
tau 0 WRNG or OFCL, up to 3 chars.
DIR - storm direction, 0 - 359 degrees.
SPEED - storm speed, 0 - 999 kts.
STORMNAME - literal storm name, number, NONAME or INVEST, or TCcyx where:
cy = Annual cyclone number 01 - 99
x = Subregion code: W,A,B,S,P,C,E,L,Q.
DEPTH -
system
depth,
D - deep,
M - medium,
S - shallow,
X - unknown
SEAS - Wave height
for
radii
defined
in SEAS1 - SEAS4, 0 - 99 ft.
SEASCODE - Radius code:
AAA - full circle
NEQ, SEQ, SWQ, NWQ - quadrant
SEAS1 - first quadrant seas radius as
defined
by SEASCODE, 0 - 999 n mi.
SEAS2 - second quadrant seas radius as
defined
by SEASCODE, 0 - 999 n mi.
SEAS3 - third quadrant seas radius as
defined
by SEASCODE, 0 - 999 n mi.
SEAS4 - fourth quadrant seas radius as
defined
by SEASCODE, 0 - 999 n mi.
USERDEFINE1- 1 to 20 character description of user data to follow.
userdata1 - user data section as indicated by USERDEFINED parameter (up to 100 char).
USERDEFINE2- 1 to 20 character description of user data to follow.
userdata2 - user data section as indicated by USERDEFINED parameter (up to 100 char).
USERDEFINE3- 1 to 20 character description of user data to follow.
userdata3 - user data section as indicated by USERDEFINED parameter (up to 100 char).
USERDEFINE4- 1 to 20 character description of user data to follow.
userdata4 - user data section as indicated by USERDEFINED parameter (up to 100 char).
USERDEFINE5- 1 to 20 character description of user data to follow.
userdata5 - user data section as indicated by USERDEFINED parameter (up to 100 char).
------------------------------------------------------------------------------
userdata - user data section as indicated by USERDEFINED parameter.
Examples of USERDEFINED/userdata pairs:
- An invest spawned from a genesis area:
SPAWNINVEST, wp712015 to wp902015
- An invest area transitioning to a TC:
TRANSITIONED, shE92015 to sh152015
- A TC dissipated to an invest area:
DISSIPATED, sh162015 sh982015
- A genesis area number:
genesis-num, 001
------------------------------------------------------------------------------
Notes:
1) No missing data allowed
for
first eight common fields. Missing data
for
other fields are expected to be blank characters between the comma delimiters. Although the files are not column dependent please insure that the proper number of blank characters is included in missing data so the columns line up. This makes the files easier to
read
and troubleshoot.
2) The USERDEFINED section is
for
inclusion of items not already in the common fields. The USERDEFINED parameter is 1 to 20 characters, so there should be sufficient space to include some text describing what comes
next
.
3) Wind records merged in from preexisting wind files (r-decks) were assigned a TECH of CNTR. Wind records created during normal
use
of this combined data
format
are assigned the TECH corresponding to the center name as
defined
in
$ATCFINC
/atcfsite.nam.
4) WINDCODE and SEASCODE other than AAA, NEQ, SEQ, SWQ and NWQ exist in older data but have been deprecated.
5) RAD
values
of 100 exist in old data (earlier than 2005) but have been deprecated. Currently only 34, 50 and 64 are valid
for
RAD.
6) The fields are not column dependent, but the files are easier to
read
and troubleshoot
if
the columns line up. The fields are comma and space delimited.
The desired field widths and preferred ATCF application ranges are as follows:
field number of chars range
----- --------------- -----
BASIN 2 WP, EP, CP, IO, SH, AL, SL as
defined
in basin.dat
CY 2 01 to 99, 01 to 49 are real storms, 80 to 89 are test storms, 90 to 99 are INVESTS
YYYYMMDDHH 10 only valid DTGs
TECHNUM/MIN 2 00 <= TECHNUM <= 99, 00 <= MIN < 60
TECH 4 up to four alphanumeric characters
TAU 3 -24 <= TAU <= 240 hours
LatN/S 4 0 <= Lat <= 900 N/S, in tenths of degrees
LonE/W 5 0 <= Lon <=1800 E/W, in tenths of degrees
VMAX 3 10 <= VMAX <= 250 kt
MSLP 4 850 to 1050 mb
TY 2 as
defined
in tcdevel.dat
RAD 3 34, 50, 64 kt
WINDCODE 3 AAA, NEW, SEQ, SWQ, NWQ
RAD1 4 MRD < RAD1 <= 999 n mi,
64 kt RAD1 < 50 kt RAD1 < 34 kt RAD1
0
for
no
radius in quadrant, blank
for
unknown
RAD2 4 See RAD1
RAD3 4 See RAD1
RAD4 4 See RAD1
POUTER 4 MSLP < RADP < 1050 mb
ROUTER 4 EYE < RRP <= 999 n mi
RMW 3 0 < MRD <= RAD1, RAD2, RAD3, and RAD4
GUSTS 3 VMAX < GUSTS < 300 kt
EYE 3 RRP < EYE < 120 n mi
SUBREGION 3 W,E,C,A,B,S,P,L,Q - basin.dat
MAXSEAS 3 0 < MAXSEAS < 200 ft
INITIALS 3
DIR 3 0 <= DIR < 360
SPEED 3 0 <= SPEED < 100 kt
STORMNAME 10
DEPTH 1 D, M, S, X
SEAS 2 0 < SEAS < 100 ft
SEASCODE 3 AAA, NEW, SEQ, SWQ, NWQ
SEAS1 4 0 < SEAS1 <= 999 n mi
SEAS2 4 See SEAS1
SEAS3 4 See SEAS1
SEAS4 4 See SEAS1
USERDEFINED up to 20 1 to 20 characters of alphanumeric data
userdata up to 200