In order to understand ice formation and the types of ice in the Great Lakes, the NOAA Great Lakes Environmental Research Laboratory (GLERL) and the U.S. Coast Guard use Synthetic Aperture Radar (SAR) data from the NOAA CoastWatch Great Lakes Node to monitor six different types of ice, ice thickness, and ice cover. This risk assessment tool is known as the Ice Condition Index (ICECON). The U.S. Coast Guard uses ICECON to identify areas that require ice breaking operations and ship transit assistance. These ice breaking operations allow government and commercial ships to travel through the Great Lakes unobstructed.
Satellite SAR Ice Type ICECON Scale
ICECON Categories | Description Example Ice Types | Thickness | Color | Impacts to Vessels |
---|---|---|---|---|
0 | Calm Water (or below noise floor) | 0″ | Blue | No Ice present or imminent. |
1 | New Lake Ice | <2″ | Green | Minimum ice concentrations and thickness, Does not present hindrance to commercial navigation. |
2 | Pancake Ice | 2″ – 6″ | Yellow | Light Ice conditions present. Still open water areas. May be some hindrance to less ice-capable ships. |
3 | Consolidated Flows | 6″ – 12″ | Orange | Light-to-moderate ice conditions present. Less ice-capable ships may need icebreaker assistance for transit and /or be at risk for damage. |
4 | Lake Ice w/patchy crusted snow Snow/SnowIce/LakeIce | Up to 28″ | Moderate-to-Heavy Ice conditions present. All Commercial ships may require ice breaker assistance for transit. | |
5 | Brash | >28″ Up to 9-11m | Red | Heavy-to-extreme ice conditions. All transits require icebreaker escort. Approaching or exceeds capabilities of light icebreaker assets. Increased risk of damage to vessels. |
`; } }, { // Column 1 // Date, data[1] // Card Title title: '', data: 1, className: 'usa-card__header usa-card__heading', render: DataTable.render.date(), }, { // Column 2 // Content, data[2] // Card Body data: 2, orderable: false, searchable: false, className: 'usa-card__body', render: function (data, type, row) { let date = new Date(row[1]); return `
Time: ${date.toLocaleTimeString('en-US', {hour: '2-digit', minute: '2-digit'})}
File size: ${data} bytes
`; } }, { // Column 3 // Card Footer // Buttons data: null, orderable: false, searchable: false, className: 'usa-card__footer', render: function (data, type, row) { return `
- Save
- Files
`; } }, { // Column 4 // Hidden Date, data[1] // Used for search title: '', data: 1, visible: false, } ], order: [[4, 'desc']], responsive: true, paging: true, pagingType: 'numbers', pageLength: 12, searching: true, info: true, autoWidth: false, deferRender: true, processing: true, // language: { emptyTable: 'No results found.', // TODO: zerRecords should use the addErrorMessage function to display a message to the user zeroRecords: 'This dataset did not return any results for the selected date. Please try a different combination.', loadingRecords: 'Loading...', processing: 'Loading...', }, createdRow: function (row, data, index) { $(row).addClass('usa-card grid-col-12 tablet:grid-col-4').wrapInner( '
'); }, drawCallback: function (settings) { // PAGINATION // Add classes to pagination: $('.dataTables_paginate').addClass('usa-pagination'); $('.dataTables_paginate > span').addClass('usa-pagination__list'); $('.dataTables_paginate span.ellipsis').wrap('
').addClass('usa-pagination__overflow'); $('.dataTables_paginate span a').addClass('usa-pagination__button'); // Wrap pagination anchors in list items: $('.dataTables_paginate span a').wrap('
'); // Add class to active page $('.dataTables_paginate a.paginate_button.current').addClass('usa-current'); } }); } else { // Update DataTables if it already exists $('#huron-json-render-table').DataTable() .search( '' ) .columns().search( '' ) .column(4).search(yearSelect.value + '-' + monthSelect.value) .clear() .rows.add(result['table']['rows']) .draw(); } } // END loadDataTables() // Define a function which accepts a URL to a file, strips everything except the filename, removes the file extension, and then returns a new URL to the ERDDAP data function getErddapButton(date) { // Get filename from url // let filename = url.split('/').pop(); // Remove file extension // filename = filename.replace(/(\.[\w\d_-]+)$/i, ''); // Return new URL return 'https://apps.glerl.noaa.gov/erddap/tabledap/' + datasetSelect.value + '.htmlTable?url%2Cname%2CfileType%2Ctime%2ClastModified%2Csize&time=%22' + date + '%22'; // Use regex to return all related files } // END getErddapButton() // Define a function to get the name of a month from its number function getMonthName(monthNum) { const monthNames = ['January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', 'October', 'November', 'December']; return monthNames[monthNum - 1]; } // END getMonthName() // Define a function to update the month select field from uniqueYearsAndMonths' function updateMonthSelect(selectedYear) { // Extract the months for the selected year let months = uniqueYearsAndMonths[selectedYear]; // Populate the month select dropdown with the available months for the selected year months.forEach(month => { const monthNum = month.toString().padStart(2, '0'); const monthName = getMonthName(month); const option = document.createElement('option'); option.value = monthNum; option.text = `${monthNum} - ${monthName}`; monthSelect.appendChild(option); }); } // END updateMonthSelect() // Define function to return true/false if datatables has been initiated function isDataTablesInit() { if ($.fn.DataTable.isDataTable('#huron-json-render-table')) { return true; } else { return false; } } // END isDataTablesInitiated() // Define function which adds an error message to the tbody #huron-json-render-table-body function addErrorMessage(title, message, style) { let errorHtml = `
${title}
${message}
`; $('#huron-json-render-table-body').html(errorHtml); if (isDataTablesInit()) { $('#huron-json-render-table').DataTable().destroy(); $('#huron-json-render-table-body').html(errorHtml); } else { $('#huron-json-render-table-body').html(errorHtml); } } // END addErrorMessage() // Define function which clears the error message from the tbody #huron-json-render-table-body function clearTableBody() { $('#huron-json-render-table-body').html(''); } // END clearErrorMessage() // Define function for combobox to filter list // Combobox Filter: Use datasetsParam to filter #huronDatatablesSelect options // TODO: Integrate USWDS combobox when updated for accessibility function filterDatasets() { const urlParams = new URLSearchParams(window.location.search); const datasetsParam = urlParams.get('datasets'); const datasetsTitle = urlParams.get('datasetsTitle') ? urlParams.get('datasetsTitle') : datasetsParam; if (datasetsParam) { // Add "clear filters" button in div#tag-container const clearBtn = $('').on('click', function() { console.log('clear filters'); // Clear datasetsParam from URL urlParams.delete('datasets'); urlParams.delete('datasetsTitle'); // Update URL window.history.replaceState({}, '', `${location.pathname}`); // remove all tags / clear buttons $('#tag-container').empty(); // Refilter options $('#huron-datatables-dataset option').each(function() { $(this).removeAttr('hidden'); }); }); $('#tag-container').append('The datasets have been filtered to these search terms: ' + datasetsTitle + '
'); $('#tag-container').append(clearBtn); // Split datasetsParam into array const datasetsParamArray = datasetsParam.split(','); // Loop through each option in #huronDatatablesSelect $('#huron-datatables-dataset option').each(function() { let optionValue = $(this).val().toLowerCase(); let optionTitle = $(this).text().toLowerCase(); let hasMatch = datasetsParamArray.some(substring => { return optionValue.includes(substring) || optionTitle.includes(substring); }); // If option does not match any of the substrings in datasetsParamArray, apply hidden attribute if (!hasMatch) { $(this).attr('hidden', true); } else { $(this).removeAttr('hidden'); } }); } } // Combobox Filter: Run filterDatasets(); })(jQuery); // END jQuery no conflict wrapper