Show wind and waves on the chart
SoundCharts can draw forecast wind and waves, sea surface temperature,
surface currents, marine weather warnings and live observations over your
charts. This page covers which files it reads,
where to get them, how to show them in SoundCharts and s100, and what isn't
supported.
Warning
Weather data isn't S-100 data and isn't for navigation. SoundCharts says so
in the Datasets panel, in every pick report and in s100 info and
s100 identify output. Use official forecasts and warnings to plan and make
a passage.
Supported data
| Data | Formats | What's drawn |
|---|---|---|
| Forecast and analysis grids | GRIB2, NetCDF-3 and NetCDF-4 with CF conventions | Wave height fill, wind barbs, isobars, a sea surface temperature fill and current arrows; optionally a wind speed fill, wave arrows and isotherms |
| Marine weather warnings | CAP 1.2 XML (one alert or an Atom feed of them), NWS alerts GeoJSON | Warning areas, hatched by severity and labelled with the event, while they're in force |
| Buoy and coastal station observations | NOAA NDBC, fetched live | A wind barb and wave height at each station |
| Own-ship wind | NMEA 0183 from your instruments | True wind as a barb beside own ship, with water and air temperature |
Grids
Both grid formats must use a regular latitude/longitude grid. The parameters drawn or sampled are:
| Parameter | GRIB2 (NCEP name) | CF standard_name |
|---|---|---|
| Wind at 10 m: U, V, speed, direction | UGRD, VGRD, WIND, WDIR | eastward_wind, northward_wind, wind_speed, wind_from_direction |
| Wind gust | GUST | wind_speed_of_gust |
| Significant wave height | HTSGW | sea_surface_wave_significant_height |
| Wave direction | DIRPW, MWD | sea_surface_wave_from_direction |
| Wave period | PERPW, MWP, PP1D | sea_surface_wave_period_at_variance_spectral_density_maximum, sea_surface_wave_mean_period |
| Wind sea and swell height | WVHGT, SWELL (first partition) | sea_surface_wind_wave_significant_height, sea_surface_swell_wave_significant_height |
| Mean sea level pressure | PRMSL, MSL | air_pressure_at_mean_sea_level |
| Sea surface temperature | WTMP | sea_surface_temperature, sea_surface_foundation_temperature, sea_surface_subskin_temperature, sea_surface_skin_temperature |
| Surface current: U, V, speed, direction | UOGRD, VOGRD, SPC, DIRC | eastward_sea_water_velocity, northward_sea_water_velocity (or their surface_ forms), sea_water_speed, sea_water_velocity_to_direction |
When a file has only U and V, wind or current speed and direction are worked
out from them. Wind and wave directions are the direction they come from;
current directions are the direction the water flows to, as in S-111.
Currents are read at whatever depth the file gives them, which is the
model's top layer: 0 m for HYCOM, about 0.5 m for Copernicus Marine. Sea surface
temperature can be in kelvin, degrees Celsius or degrees Fahrenheit. GFS's
surface temperature (TMP) isn't read as sea temperature, because over land
it's the temperature of the ground. Other
parameters are listed by s100 info but not drawn.
GRIB2 files can hold many messages, and you can append several files, such as one per forecast hour, into one. These data packings are read: simple (5.0), complex (5.2), complex with spatial differencing (5.3), JPEG 2000 (5.40) and PNG (5.41). GFS-Wave is served as JPEG 2000. The GRIB2 reader's README lists the templates in full.
NetCDF-4 files may use deflate and shuffle compression. Each variable must be on time, latitude and longitude, with at most one height or depth level. The NetCDF reader's README gives the CF rules.
Warnings
A CAP warning area is drawn from its polygon or circle. An area that gives
only NWS zone codes (UGC codes such as ANZ535) is drawn from the NWS
coastal and offshore marine zones, which SoundCharts includes. A warning is
drawn from its onset until its hazard ends, and an update or cancellation in
the same file replaces it.
Get the data
These sources are public. Check each provider's terms before you share images made from its data. The Library can fetch some of these sources for you.
GRIB2
NOAA NOMADS GRIB filter. The GRIB filter pages on nomads.ncep.noaa.gov cut GFS and GFS-Wave to the variables, area and forecast hours you choose, and return one file. For waves choose HTSGW, PERPW and DIRPW; for wind and pressure choose UGRD and VGRD at 10 m above ground and PRMSL. The download has no file extension.
NOAA on AWS. The
noaa-gfs-bdp-pdsbucket holds every GFS and GFS-Wave run as whole files, for examplegfs.YYYYMMDD/HH/wave/gridded/gfswave.tHHz.atlocn.0p16.f003.grib2for the Atlantic wave grid. A GFS atmosphere file (gfs.YYYYMMDD/HH/atmos/gfs.tHHz.pgrb2.0p25.f003) is about 500 MB; its.idxfile gives the byte range of each field, so you can download only the wind and pressure.ECMWF Open Data. data.ecmwf.int publishes the IFS and wave model at 0.25° under CC BY 4.0. Its files use CCSDS packing, which SoundCharts can't read yet, so repack them first, for example with ecCodes:
grib_set -r -s packingType=grid_simple ecmwf-wave.grib2 ecmwf-wave-simple.grib2DWD Open Data. opendata.dwd.de publishes ICON and wave model output as GRIB2. Use the regular latitude/longitude grids, not the icosahedral ones.
NetCDF
Copernicus Marine. The Copernicus Marine Service publishes global and regional wave forecasts as NetCDF-4. It needs a free account. Its toolbox's
copernicusmarine subsetcommand downloads an area and time range; the wave variablesVHM0,VMDRandVTPKare drawn.NOAA ERDDAP. ERDDAP servers, such as NOAA CoastWatch's, subset gridded datasets by URL. Choose the
.ncfile type, which is NetCDF-3, and a dataset whose variables have CF standard names. The Library's Sea surface temperature — NOAA ERDDAP source fetches the latest daily analysis for the map view from one of these CoastWatch datasets:Dataset Resolution ERDDAP id NASA JPL MUR SST (default) 1 km jplMURSST41NOAA OISST v2.1, near real time 0.25° ncdcOisst21NrtAgg_LonPM180NOAA Geo-polar Blended SST 5 km nesdisBLENDEDsstDNDailyThese are analyses of the day before, not forecasts. CoastWatch serves the Blended analysis from its central ERDDAP at
coastwatch.noaa.gov, so it's unavailable when that server is. Over a large area the Library asks ERDDAP for every second or third point, so that no download has more than 1500 points across or down.Two more Library sources fetch surface currents for the map view:
Source Data ERDDAP id Surface currents, altimetry — NOAA AOML ERDDAP Geostrophic currents from satellite altimetry, 0.2°, daily, the latest day miamicurrentsSurface currents, HF radar — NOAA ERDDAP Currents measured by the US coastal HF radars, hourly, the last day ucsdHfrE2(US East Coast and Gulf of Mexico, 2 km, the default),ucsdHfrE6(the same coasts at 6 km, with a longer range),ucsdHfrW6(West Coast),ucsdHfrH1(Hawaiʻi),ucsdHfrP6(Puerto Rico)Geostrophic currents show the large ocean currents and eddies, such as the Gulf Stream, but not wind-driven or tidal flow. HF radar sees the top metre of the sea out to about 150 km from the radars, and its coverage changes from hour to hour. Neither is a forecast.
HYCOM. The global HYCOM ocean model's 8-day current forecast is on ncss.hycom.org. Its NetCDF Subset Service cuts an area, time range and depth by URL, for example
…/ncss/grid/FMRC_ESPC-D-V02_uv3z/FMRC_ESPC-D-V02_uv3z_best.ncd?var=water_u&var=water_v&north=40&south=33&west=-76&east=-68&vertCoord=0&time_start=…&time_end=…&accept=netcdf4. Requests can take a minute.
Warnings and observations
- CAP warnings. The National Weather Service API returns active alerts,
for example
https://api.weather.gov/alerts/active?area=ANfor the western North Atlantic marine area. Save the GeoJSON it returns, or requestapplication/cap+xmlfor a CAP Atom feed. The API asks callers to send aUser-Agentheader that identifies them. - NDBC buoys. There's nothing to download. SoundCharts fetches the latest observations from NDBC for the stations in view; see Show buoy observations.
Show a forecast in SoundCharts
Choose File > Open Dataset... and pick the file. Choose the Weather Data (GRIB2, NetCDF, CAP) file type to see weather files, or All files for a GRIB2 file with no extension.
The Datasets panel lists it, and the Layer stack lists the layers it draws; the wave height fill's entry shows a colour legend.
Open Display controls. While a GRIB2 or NetCDF dataset is loaded, its Weather section has five switches for every weather dataset:
Switch Default Draws Isobars On Mean sea level pressure every 4 hPa Wind speed fill Off Wind speed in Beaufort bands Wave arrows Off Arrows the way the waves travel, sized by height Isotherms Off Sea surface temperature every 2 °C Currents On Surface current arrows, coloured by speed The wave height and sea surface temperature fills and the wind barbs are always drawn; hide them for one dataset with its eye in the Datasets panel. The sea surface temperature fill has a band for each degree from 0 °C to 30 °C, so fronts such as the edge of the Gulf Stream show as closely spaced bands.
Use the Timeline to step through the forecast. Each time step is a valid time of the run.
Click the map to pick. Object information starts with "Weather model data, not for navigation." and lists each parameter at the nearest grid point and time step, in knots, metres and degrees Celsius.
Current arrows point the way the water flows. They use S-111's nine speed bands, colours and sizes, from purple under 0.5 kn to red at 13 kn and faster, so a current reads the same as in an S-111 dataset. Where an S-111 grid is loaded and shown, only its arrows are drawn inside its area; S-111 station and mesh datasets don't hide model currents.
The wave height and sea surface temperature fills are clipped to water when an S-101 chart is loaded. Wind barbs south of the equator are drawn mirrored, as the convention is.
Show warnings
Open a CAP or NWS GeoJSON file as you would a grid. The Timeline steps are when warnings start and end, so moving the time shows what's in force then. Pick an area to see its headline, severity, times, sender and description.
Show buoy observations
Turn on NDBC buoy observations in the Layer stack. It's off when you first run SoundCharts. Observations are fetched only while the layer is on and the view is less than 25° wide, and are refreshed every 10 minutes. A station's symbol turns grey when its observation is more than 3 hours old.
Show own-ship wind
SoundCharts reads wind, heading, motion and temperature sentences (MWV,
MWD, HDT, HDG, VHW, RMC, VTG, MTW, XDR) from an NMEA 0183
stream. Set the SOUNDCHARTS_NMEA_INPUT environment variable before you
start SoundCharts:
| Value | Input |
|---|---|
udp or udp:10110 |
UDP broadcast on a port (10110 by default) |
tcp://host:10110 |
A TCP server, such as a multiplexer |
path/to/recording.nmea |
A recorded file, replayed in a loop |
Own-ship wind and weather (NMEA) then appears in the Layer stack. True wind is drawn as a barb beside own ship. Without a heading, the relative wind is shown in grey. See the DynamicSources.Nmea README for how true wind is found.
Use the command line
s100 reads the same files. info lists a grid's model, run, grid,
parameters, levels and time steps, or a CAP file's warnings:
s100 info filter_gfswave.pl
s100 info alerts.atom
render draws the default layers (wave height fill, wind barbs and isobars)
at a time step, alone or over a chart:
s100 render gfswave.grib2 waves.png --time-step 2
s100 render --layer chart.000 --layer gfswave.grib2 --layer gfs.grib2 chart.png --time-step 1
identify samples the grids and finds the warning areas at a point:
s100 identify --layer gfswave.grib2 --layer alerts.atom --lat 38.5 --lon -74.5 --time 2026-10-25T03:00Z
See info, render and
identify for their options. Over MCP, list_time_steps,
sample_coverage and sample_coverage_along work on the grids, and
identify_features on the warnings; see the MCP server.
What isn't supported
- Other grids. Lambert conformal (such as NWS NDFD), polar stereographic
(such as GFS-Wave
arctic.9km), Gaussian, rotated and curvilinear grids, and regional grids that cross 180° longitude. The file fails with a message naming the grid. - GRIB edition 1, and GRIB2 CCSDS packing (5.42), which ECMWF Open Data uses. Repack those files as shown above.
- Ensembles and probabilities (GRIB2 product templates 4.1, 4.2, 4.11 and 4.12).
- NetCDF files whose variables are in groups, CDF-5 files, variables with several levels, and compression filters other than deflate and shuffle (such as Zstandard).
- BUFR observations.
- Weather in route checks. A route check doesn't consider wind, waves or model currents.
- Ocean model servers. The Library fetches currents only from ERDDAP. NOAA RTOFS is published only as whole-globe files on a curvilinear grid, and HYCOM's subset service isn't a Library source yet; download from it as shown above.
- The S-100 weather products S-412, S-413 and S-414 aren't published yet.
The design note explains these choices.