Nickel Plate Nordic Centre Snow Report | Ski Forecast & Snowfall Totals (2024)

Map Snow Flow Rivers Reservoirs Mountains Skiing Whitewater Fishing Camping

  • United States

View 3D Trailmap

NICKEL PLATE NORDIC CENTRE

  • Overview
  • Ski Resorts
  • State Snowpack
  • Avalanche

June 23, 2024

Weather today, light snow Up to 2" of more snowfall forecasted over the next 5 days.

Terrain Surface NA
Powder Score NA
Snowfall Next 24 Hours 1"
Snowfall Next 5 Days 2.36"

None Read More

Snowpack Depth (Past 7 Days)

Data sourced from


Snow Forecast




5 Day Snow Forecast

Weather into tomorrow, light snow


Hourly Forecast

Nickel Plate Nordic Centre Snow Report | Ski Forecast & Snowfall Totals (1)Start Your Free Trial

Long Term Outlook

Nickel Plate Nordic Centre Snow Report | Ski Forecast & Snowfall Totals (2)Start Your Free Trial


Seasonal Snow Comparison

Compare year over year snow water equivalency

Start Your Free Trial

Nickel Plate Nordic Centre Snow Report | Ski Forecast & Snowfall Totals (3)


Snowpack Density

Snowpack vs Snow Water Equivalent

Wet, heavy snowfall generally consists of atleast 12.5% water content or higher for every foot of snow.Lighter, drier snow might contain up to 1.0 inch of water for every foot of snow; up to 8.3% water.


Ski Area Summary

Nickel Plate Nordic Centre


Nickel Plate Nordic Centre in British Columbia offers over 56km of ski trails with stunning views of the Okanagan Valley. The best trails are said to be the Ponderosa Trail and the Snowshoe Trail. An interesting fact is that the resort was founded in 1978 by a group of Nordic enthusiasts who wanted to create a world-class cross-country ski facility. For beginners, the Discovery Trail is a great option. The best apres ski bar is the BullWheel Gastro Family Pub, which serves delicious food and drinks in a cozy atmosphere.


Terrain Overview

The Nickel Plate Nordic Centre ski resort in British Columbia is located in the interior of the province, near the town of Penticton. The resort is situated in the Okanagan Highlands, which is a region known for its rolling hills and scenic mountain views.

The pertinent mountain ranges near the Nickel Plate Nordic Centre include the Okanagan Range, which is a subrange of the Columbia Mountains. This range is characterized by rugged peaks and deep valleys, providing a stunning backdrop for skiing and other outdoor activities.

In terms of mountain aspects, the Nickel Plate Nordic Centre offers a variety of terrain for skiers of all levels. The resort has a mix of beginner, intermediate, and advanced trails, with some trails offering stunning views of the surrounding mountains and valleys.

Overall, the Nickel Plate Nordic Centre is a popular destination for cross-country skiing and snowshoeing, with its beautiful mountain surroundings and well-groomed trails attracting visitors from near and far.

Nickel Plate Nordic Centre Snow Report | Ski Forecast & Snowfall Totals (5)


Nearby Ski Areas5 day forecast
TELEMARK CROSS COUNTRY NA
NICKEL PLATE NORDIC CENTRE NA
APEX MOUNTAIN RESORT NA

View British-Columbia Ski Report

*
Snow Report Ski Report Avalanche Warnings Interactive Map

Main Menu

Flow Report Flood Monitor River Levels

River Recreation

Watershed Hydrology Interactive Map

Main Menu

River Recreation

Camping Parks Points of Interest Fishing Interactive Map

Main Menu

Snow Reports Flow Reports Mountains Rivers Reservoirs Ocean Buoys Hydrology Groundwater Climate Monitor

Natural Disasters

Interactive Map

Main Menu

Boat Launches

Flow

Fishing River Surfing Interactive Map

Main Menu

Interactive Map Eden Index Climate Monitor

Natural Disasters

Main Menu

Flood Wildfire Hurricane Earthquake Interactive Map

Main Menu

'; row += ''+data.forecast.daily[x].temp+'° '+data.forecast.daily[x].summary; row += '

'row += '

'all += row; row = '';row += '

'row += 'Nickel Plate Nordic Centre Snow Report | Ski Forecast & Snowfall Totals (6)'row += '

'+data.forecast.daily[x].temp+'°

'row += '

'+data.forecast.daily[x].day+'

' if (x < 4) $("#panels").append(row)}} else { $("#skif").remove();}var acc = '

    'acc += allacc += '

'$("#acc").append(acc) $(document).ready(function () { $(document).foundation(); });$(function () { // On DOM ready... xml = data.meteo window.meteogram = new Meteogram(xml, 'forecast_chart');try{if (xml.forecast.tabular.time.length){try{ days = {} tot = 0 for (var row of xml.forecast.tabular.time){ var day = row['@attributes'].from.split('T')[0].split('-')[2]; if (day in days) days[day] += row.precipitation['@attributes'].value; else days[day] = row.precipitation['@attributes'].value; tot += row.precipitation['@attributes'].value }ct = [];ds = [];for (var row of Object.keys(days).sort()){ ct.push(row) ds.push(parseInt(days[row]))}//$("#metric_stats").append(' '+parseInt(tot)+'" Forecasted')Highcharts.chart('snow_col', { exporting: { enabled: false }, chart: { type: 'column', }, title: { text: '' }, credits: { text: '', }, xAxis: { categories: ct, crosshair: true, labels: { style: { color: '#495057',fontSize: "14px",fontWeight: 'bold', } } }, yAxis: { min: 0, title: { text: '' }, lineWidth: 0, gridLineWidth: 0, minorGridLineWidth: 0, lineColor: 'transparent', labels: { enabled: false }, minorTickLength: 0, tickLength: 0 }, legend: { enabled: false }, tooltip: { headerFormat: '{point.key}

', pointFormat: '' + '', footerFormat: '
{series.name}: {point.y:.1f}"

', shared: true,enabled: false, useHTML: true }, plotOptions: { column: { pointPadding: 0.05, groupPadding: 0, borderWidth: 0, shadow: false, dataLabels: { enabled: true, format: '{point.y}"', style: { color: '#495057',fontSize: "18px",fontWeight: 'bold', } } } }, series: [{ name: 'Forecast', data: ds, color: '#3BB9FF' }]});} catch(err) {}}} catch(err) {}});});var ct = [];var ds = []; ct.push("W"); ds.push(1); ct.push("T"); ds.push(1); ct.push("F"); ds.push(0); ct.push("S"); ds.push(1); ct.push("S"); ds.push(1); Highcharts.chart('snow_col', { exporting: { enabled: false }, chart: { type: 'column', }, title: { text: '' }, credits: { text: '', }, xAxis: { categories: ct, crosshair: true, labels: { style: { color: '#495057',fontSize: "14px",fontWeight: 'bold', } } }, yAxis: { min: 0, title: { text: '' }, lineWidth: 0, gridLineWidth: 0, minorGridLineWidth: 0, lineColor: 'transparent', labels: { enabled: false }, minorTickLength: 0, tickLength: 0 }, legend: { enabled: false }, tooltip: { headerFormat: '{point.key}

', pointFormat: '' + '', footerFormat: '
{series.name}: {point.y:.1f}"

', shared: true,enabled: false, useHTML: true }, plotOptions: { column: { pointPadding: 0.05, groupPadding: 0, borderWidth: 0, shadow: false, dataLabels: { enabled: true, format: '{point.y}"', style: { color: '#495057',fontSize: "18px",fontWeight: 'bold', } } } }, series: [{ name: 'Forecast', data: ds, color: '#3BB9FF' }]});function timeSince(date) { var seconds = Math.floor((new Date() - date) / 1000); var interval = seconds / 31536000; if (interval > 1) { return Math.floor(interval) + " years"; } interval = seconds / 2592000; if (interval > 1) { return Math.floor(interval) + " months"; } interval = seconds / 86400; if (interval > 1) { return Math.floor(interval) + " days"; } interval = seconds / 3600; if (interval > 1) { return Math.floor(interval) + " hours"; } interval = seconds / 60; if (interval > 1) { return Math.floor(interval) + " minutes"; } return Math.floor(seconds) + " seconds";}var ft = {"geometry": {"type": "Point", "coordinates": [-119.95433092117, 49.383755709583]}, "_rev": "16-691744835ee9f60bf6b94e2c775a8137", "_id": "nickel-plate-nordic-centre", "type": "Feature", "properties": {"website": "http://www.nickelplatenordic.org", "ratings": [], "ai_description": "Nickel Plate Nordic Centre in British Columbia offers over 56km of ski trails with stunning views of the Okanagan Valley. The best trails are said to be the Ponderosa Trail and the Snowshoe Trail. An interesting fact is that the resort was founded in 1978 by a group of Nordic enthusiasts who wanted to create a world-class cross-country ski facility. For beginners, the Discovery Trail is a great option. The best apres ski bar is the BullWheel Gastro Family Pub, which serves delicious food and drinks in a cozy atmosphere.", "last": "2020-02-24", "aggregate_score": 0, "title": "Nickel Plate Nordic Centre", "trailmaps": ["nickel-plate-nordic-centre0", "nickel-plate-nordic-centre1", "nickel-plate-nordic-centre2", "nickel-plate-nordic-centre3"], "country": "Canada", "forecast": {"hourly": {"120": 2.36, "24": 0.93, "72": 2.02}, "daily": [{"wind_speed": 1.92, "temp": 20.58, "snow": 0.93, "summary": "light snow", "details": "light snow", "type": "snow", "day": "Wed", "wind_dir": 131, "icon": "Snow"}, {"wind_speed": 1.61, "temp": 22.33, "snow": 0.6300000000000001, "summary": "light snow", "details": "light snow", "type": "snow", "day": "Thu", "wind_dir": 161.007, "icon": "Snow"}, {"wind_speed": 2.01, "temp": 24.98, "snow": 0, "summary": "light snow", "details": "light snow", "type": "snow", "day": "Fri", "wind_dir": 130.503, "icon": "Snow"}, {"wind_speed": 1.59, "temp": 24.85, "snow": 0.01, "summary": "clear sky", "details": "clear sky", "type": "snow", "day": "Sat", "wind_dir": 155.503, "icon": "Clear"}, {"wind_speed": 1.63, "temp": 26.71, "snow": 0.2, "summary": "light snow", "details": "light snow", "type": "snow", "day": "Sun", "wind_dir": 120.003, "icon": "Snow"}]}, "metrics": {"terrain_park": "Unknown", "night_skiing": "Unknown"}, "state": "WA", "tag": "ski-area", "location": "Hedley", "ai_aspects": "The Nickel Plate Nordic Centre ski resort in British Columbia is located in the interior of the province, near the town of Penticton. The resort is situated in the Okanagan Highlands, which is a region known for its rolling hills and scenic mountain views.\n\nThe pertinent mountain ranges near the Nickel Plate Nordic Centre include the Okanagan Range, which is a subrange of the Columbia Mountains. This range is characterized by rugged peaks and deep valleys, providing a stunning backdrop for skiing and other outdoor activities.\n\nIn terms of mountain aspects, the Nickel Plate Nordic Centre offers a variety of terrain for skiers of all levels. The resort has a mix of beginner, intermediate, and advanced trails, with some trails offering stunning views of the surrounding mountains and valleys.\n\nOverall, the Nickel Plate Nordic Centre is a popular destination for cross-country skiing and snowshoeing, with its beautiful mountain surroundings and well-groomed trails attracting visitors from near and far.", "owner": "", "loc": ["british-columbia", "canada"]}}try{ var uuid = ft.properties.snow_data.uuid;$.getJSON("https://snoflo.org/get_realtime/?callback=?&type=snow&uuid="+uuid,function(data){ data = data.datasetvar instant_data = data[0]; var mycol = instant_data;if (mycol.length > 0 || 1 ){Highcharts.setOptions({ global: { useUTC: false }}); var col_data = [] for (var x = 1; x < mycol.length; x++){var s = mycol[x][0];var a = s.split(/[^0-9]/);var d=new Date (a[0],a[1]-1,a[2],a[3],a[4] ).getTime(); if (parseFloat(mycol[x][1]) >= 0)col_data.push([d, parseFloat(mycol[x][1]) ]) } if (col_data.length == 0) $("#tabz").remove(); if (col_data.length > 1 && 0 ){Highcharts.chart('instant_chart1', { exporting: { enabled: false,}, chart: { backgroundColor: 'rgba(0,0,0,0)', type: 'areaspline' }, credits: { text: '', style: { color: '#1779ba', fontWeight: 'bold' }, href: 'https://snoflo.org/report////history', },global: {timezoneOffset: -280}, title: { text: '', }, xAxis: { crosshair: true, type: 'datetime', dateTimeLabelFormats: { day: '%b %e' }, }, yAxis: {// min: 0, title: { style: { fontSize:'16px', fontWeight: 'bold', }, text: '' }, labels: { format: '{value}"' }, }, legend: { enabled: false }, plotOptions: { series: { pointWidth: 0 }, }, series: [{ type: 'areaspline', name: 'Snow Water Equivalent', color: 'rgb(84, 210, 255)', data: col_data, }] }); }const average = array => array.reduce((a, b) => a + b) / array.length;var instant_data = data[1]; var mycol = instant_data; var col_data = [] var prev = -1; var diff = 0; for (var x = 1; x < mycol.length; x++){var s = mycol[x][0];var a = s.split(/[^0-9]/);var d=new Date (a[0],a[1]-1,a[2],a[3],a[4] ).getTime(); if (parseFloat(mycol[x][1]) >= 0){ if(prev == -1) {prev = parseFloat(mycol[x][1]); } diff = parseFloat(mycol[x][1]) - prev; if (diff < 25){ col_data.push([d, parseFloat(mycol[x][1]) ]); prev = parseFloat(mycol[x][1]); } } } if (col_data.length > 1){ $('#instant_chart2').highcharts({ chart: {type: "areaspline", backgroundColor: 'rgba(0,0,0,0)', }, credits: { text: '', style: { color: '#1779ba', fontWeight: 'bold' }, href: 'https://snoflo.org/report////history', }, exporting: { enabled: false },global: {timezoneOffset: -280}, title: { text: '', }, xAxis: { crosshair: true, type: 'datetime', dateTimeLabelFormats: { day: '%b %e' }, }, yAxis: { title: { style: { fontSize:'16px', fontWeight: 'bold', }, text: '', }, labels: { format: '{value}"' }, }, legend: { enabled: false }, plotOptions: { series: { connectNulls: true, animation: { duration: 3200 }, marker: { enabled: false }, series: { lineWidth: 5 }, } }, series: [{ name: 'Snowpack', type: 'areaspline', color: 'rgb(84, 210, 255)', data: col_data, lineWidth: 5 }] });} else { $("#insta2").remove()}var instant_data = data[2]; var mycol = instant_data; var col_data = [] for (var x = 1; x < mycol.length; x++){var s = mycol[x][0];var a = s.split(/[^0-9]/);var d=new Date (a[0],a[1]-1,a[2],a[3],a[4] ).getTime(); col_data.push([d, parseFloat(mycol[x][1]) ]) } if (col_data.length > 1){Highcharts.chart('instant_chart3', { chart: { type: 'areaspline', backgroundColor: 'rgba(0,0,0,0)', }, credits: { text: '', style: { color: '#1779ba', fontWeight: 'bold' }, href: 'https://snoflo.org/report////history', }, exporting: { buttons: { contextButton: { symbol: 'menu', symbolStrokeWidth: 1, symbolFill: '#a4edba', symbolStroke: '#330033' } }, enabled: false, chartOptions:{ subtitle: { text:' | ' }, plotOptions: { areaspline: { animation: { duration: 3200 }, dataLabels: { enabled: false, borderRadius: 5, backgroundColor: 'rgba(252, 255, 197, 0.7)', borderWidth: 1, borderColor: '#AAA', y: -6 }, } }, } },global: {timezoneOffset: -280}, title: { text: '', }, xAxis: { crosshair: true, type: 'datetime', dateTimeLabelFormats: { day: '%b %e' }, }, yAxis: { title: { style: { fontSize:'16px', fontWeight: 'bold', }, text: "", }, labels: { format: '{value}°' }, }, legend: { enabled: false }, series: [{ type: 'areaspline', name: 'Air Temperature', threshold: 32, negativeColor: 'rgb(84, 210, 255)', color: '#FF3333', marker : { enabled: false }, lineWidth: 5, data: col_data }] });} else { $("#ttemp").remove()}} else { $("#conds").remove()}});} catch(err){ $("#conds").remove()}function Meteogram(xml, container) { this.symbols = []; this.symbolNames = []; this.precipitations = []; this.rains = []; this.windDirections = []; this.windDirectionNames = []; this.windSpeeds = []; this.windSpeedNames = []; this.temperatures = []; this.pressures = []; // Initialize this.xml = xml; this.container = container; // Run this.parseYrData();}Meteogram.prototype.getSymbolSprites = function (symbolSize) { return { '01d': { x: 0, y: 0 }, '01n': { x: symbolSize, y: 0 }, '16': { x: 2 * symbolSize, y: 0 }, '02d': { x: 0, y: symbolSize }, '02n': { x: symbolSize, y: symbolSize }, '03d': { x: 0, y: 2 * symbolSize }, '03n': { x: symbolSize, y: 2 * symbolSize }, '17': { x: 2 * symbolSize, y: 2 * symbolSize }, '04': { x: 0, y: 3 * symbolSize }, '05d': { x: 0, y: 4 * symbolSize }, '05n': { x: symbolSize, y: 4 * symbolSize }, '18': { x: 2 * symbolSize, y: 4 * symbolSize }, '06d': { x: 0, y: 5 * symbolSize }, '06n': { x: symbolSize, y: 5 * symbolSize }, '07d': { x: 0, y: 6 * symbolSize }, '07n': { x: symbolSize, y: 6 * symbolSize }, '08d': { x: 0, y: 7 * symbolSize }, '08n': { x: symbolSize, y: 7 * symbolSize }, '19': { x: 2 * symbolSize, y: 7 * symbolSize }, '09': { x: 0, y: 8 * symbolSize }, '10': { x: 0, y: 9 * symbolSize }, '11': { x: 0, y: 10 * symbolSize }, '12': { x: 0, y: 11 * symbolSize }, '13': { x: 0, y: 12 * symbolSize }, '14': { x: 0, y: 13 * symbolSize }, '15': { x: 0, y: 14 * symbolSize }, '20d': { x: 0, y: 15 * symbolSize }, '20n': { x: symbolSize, y: 15 * symbolSize }, '20m': { x: 2 * symbolSize, y: 15 * symbolSize }, '21d': { x: 0, y: 16 * symbolSize }, '21n': { x: symbolSize, y: 16 * symbolSize }, '21m': { x: 2 * symbolSize, y: 16 * symbolSize }, '22': { x: 0, y: 17 * symbolSize }, '23': { x: 0, y: 18 * symbolSize } };};/** * Function to smooth the temperature line. The original data provides only whole degrees, * which makes the line graph look jagged. So we apply a running mean on it, but preserve * the unaltered value in the tooltip. */Meteogram.prototype.smoothLine = function (data) { var i = data.length, sum, value; while (i--) { data[i].value = value = data[i].y; // preserve value for tooltip // Set the smoothed value to the average of the closest points, but don't allow // it to differ more than 0.5 degrees from the given value sum = (data[i - 1] || data[i]).y + value + (data[i + 1] || data[i]).y; data[i].y = Math.max(value - 0.5, Math.min(sum / 3, value + 0.5)); }};/** * Callback function that is called from Highcharts on hovering each point and returns * HTML for the tooltip. */Meteogram.prototype.tooltipFormatter = function (tooltip) { // Create the header with reference to the time interval var index = tooltip.points[0].point.index, ret = '' + Highcharts.dateFormat('%A, %b %e, %H:%M', tooltip.x) + '-' + Highcharts.dateFormat('%H:%M', tooltip.points[0].point.to) + '
'; // Symbol text ret += '' + this.symbolNames[index] + ''; ret += '

'; // Add all series Highcharts.each(tooltip.points, function (point) { var series = point.series; ret += ''; }); // Add wind ret += ''; // Close ret += '
\u25CF ' + series.name + ': ' + Highcharts.pick(point.point.value, point.y) + series.options.tooltip.valueSuffix + '
\u25CF Wind' + this.windDirectionNames[index] + '°
' + this.windSpeedNames[index] + ' (' + Highcharts.numberFormat(this.windSpeeds[index], 1) + ' mph)

'; return ret;};/** * Draw the weather symbols on top of the temperature series. The symbols are sprites of a single * file, defined in the getSymbolSprites function above. */Meteogram.prototype.drawWeatherSymbols = function (chart) { var meteogram = this, symbolSprites = this.getSymbolSprites(30); $.each(chart.series[0].data, function (i, point) { var sprite, group; if (meteogram.resolution > 36e5 || i % 2 === 0) { sprite = symbolSprites[meteogram.symbols[i]]; if (sprite && !0) { // Create a group element that is positioned and clipped at 30 pixels width and height group = chart.renderer.g() .attr({ translateX: point.plotX + chart.plotLeft - 15, translateY: point.plotY + chart.plotTop - 30, zIndex: 5 }) .clip(chart.renderer.clipRect(0, 0, 30, 30)) .add(); // Position the image inside it at the sprite position chart.renderer.image( //'https://www.highcharts.com/samples/graphics/meteogram-symbols-30px.png', 'https://snoflo.org/static/images/meteogram-symbols-30px.png', -sprite.x, -sprite.y, 90, 570 ) .add(group); } } });};/** * Create wind speed symbols for the Beaufort wind scale. The symbols are rotated * around the zero centerpoint. */Meteogram.prototype.windArrow = function (name) { var level, path; // The stem and the arrow head path = [ 'M', 0, 7, // base of arrow 'L', -1.5, 7, 0, 10, 1.5, 7, 0, 7, 0, -10 // top ]; level = $.inArray(name, ['Calm', 'Light air', 'Light breeze', 'Gentle breeze', 'Moderate breeze', 'Fresh breeze', 'Strong breeze', 'Near gale', 'Gale', 'Strong gale', 'Storm', 'Violent storm', 'Hurricane']); if (level === 0) { path = []; } if (level === 2) { path.push('M', 0, -8, 'L', 4, -8); // short line } else if (level >= 3) { path.push(0, -10, 7, -10); // long line } if (level === 4) { path.push('M', 0, -7, 'L', 4, -7); } else if (level >= 5) { path.push('M', 0, -7, 'L', 7, -7); } if (level === 5) { path.push('M', 0, -4, 'L', 4, -4); } else if (level >= 6) { path.push('M', 0, -4, 'L', 7, -4); } if (level === 7) { path.push('M', 0, -1, 'L', 4, -1); } else if (level >= 8) { path.push('M', 0, -1, 'L', 7, -1); } return path;};///**// * Draw the wind arrows. Each arrow path is generated by the windArrow function above.// *///Meteogram.prototype.drawWindArrows = function (chart) {// var meteogram = this;//// $.each(chart.series[0].data, function (i, point) {// var arrow, x, y;//// if (meteogram.resolution > 36e5 || i % 2 === 0) {//// // Draw the wind arrows// x = point.plotX + chart.plotLeft + 0;// y = 340;// if (meteogram.windSpeedNames[i] === 'Calm') {// arrow = chart.renderer.circle(x, y, 10).attr({// fill: 'none'// });// } else {// arrow = chart.renderer.path(// meteogram.windArrow(meteogram.windSpeedNames[i])// ).attr({// rotation: parseInt(meteogram.windDirections[i], 10),// translateX: x, // rotation center// translateY: y // rotation center// });// }// arrow.attr({// stroke: (Highcharts.theme && Highcharts.theme.contrastTextColor) || 'black',// 'stroke-width': 1.5,// zIndex: 5// })// .add();//// }// });//};/////**// * Draw blocks around wind arrows, below the plot area// *///Meteogram.prototype.drawBlocksForWindArrows = function (chart) {// var xAxis = chart.xAxis[0],// x,// pos,// max,// isLong,// isLast,// i;//// for (pos = xAxis.min, max = xAxis.max, i = 0; pos <= max + 36e5; pos += 36e5, i += 1) {//// // Get the X position// isLast = pos === max + 36e5;// x = Math.round(xAxis.toPixels(pos)) + (isLast ? 0.5 : -0.5);//// // Draw the vertical dividers and ticks// if (this.resolution > 36e5) {// isLong = pos % this.resolution === 0;// } else {// isLong = i % 2 === 0;// }// chart.renderer.path(['M', x, chart.plotTop + chart.plotHeight + (isLong ? 0 : 28),// 'L', x, chart.plotTop + chart.plotHeight + 32, 'Z'])// .attr({// 'stroke': chart.options.chart.plotBorderColor,// 'stroke-width': 1// })// .add();// }//};/** * Get the title based on the XML data */Meteogram.prototype.getTitle = function () { return ''; if (0 == 0){ return 'Meteogram Forecast for '; } else { return ''; }};/** * Build and return the Highcharts options structure */Meteogram.prototype.getChartOptions = function () { var meteogram = this; return { chart: { backgroundColor: 'rgba(0,0,0,0)', renderTo: this.container, marginBottom: 0, marginRight: 0, marginLeft: 0, //height: 400, plotBorderWidth: 0, /* events: { load: function() {// this.renderer.image('https://snoflo.org:5984/sentimap_icons/general/snoflo_error.png', 00, 00, 80, 60)// .add(); } }, */ events: { load: function() {// this.renderer.image('https://snoflo.org/static/images/logo_snoflo_hydroanalytics.png', 30, 25, 40, 40)// .add(); } }, }, title: { text: "", align: 'left', style: { color: 'lightgrey', } }, credits: { text: '', href: 'https://snoflo.org', position: { x: -20 } }, global: { useUTC: false }, tooltip: { shared: true, useHTML: true, formatter: function () { return meteogram.tooltipFormatter(this); } }, xAxis: [{ // Bottom X axis type: 'datetime', tickLength: 0, labels: {enabled:false, format: '{value:%H}' } }, { // Top X axis linkedTo: 0, type: 'datetime', tickInterval: 24 * 3600 * 1000, labels: { format: '{value:%a %b %e}', align: 'left', x: 3, y: -5 }, opposite: true, tickLength: 0,// gridLineWidth: 0 }], yAxis: [{ // temperature axis title: { style: { fontSize: '16px', fontWeight: 'bold', color: 'grey', }, text: null }, labels: { format: '{value}°', style: { fontSize: '10px', fontWeight: 'bold', color: 'grey', }, x: 25, y: -2, align: 'right', },min: 0, plotLines: [{ // zero plane value: 32, color: '#BBBBBB', width: 2, dashStyle: 'shortdot', zIndex: 2 }], showLastLabel: false, //showFirstLabel: false, // Custom positioner to provide even temperature ticks from top down tickPositioner: function () { var max = Math.ceil(this.max) + 1, pos = max - 12, // start ret; if (pos < this.min) { ret = []; while (pos <= max) { ret.push(pos += 1); } } // else return undefined and go auto return ret; }, maxPadding: 0.3, tickInterval: 1, gridLineColor: (Highcharts.theme && Highcharts.theme.background2) || 'white' }, { // precipitation axis title: { text: null }, labels: { enabled: false }, gridLineWidth: 0, tickLength: 0 }, { // Air pressure allowDecimals: false, title: { // Title on top of axis// text: 'hPa', text: 'humidity', offset: 0, align: 'low', rotation: 0, style: { fontSize: '10px', color: 'grey', }, textAlign: 'right', x: -3, x: -2, }, labels: { format: '{value}%', style: { fontSize: '10px', fontWeight: 'bold', color: 'grey', }, x: -3, y: -2, align: 'right', }, gridLineWidth: 0, opposite: true, showFirstLabel: false, showLastLabel: false, }], legend: {enabled: false, }, plotOptions: { series: { animation: { duration: 3200 }, pointPlacement: 'between' } }, series: [{ name: 'Temperature', data: this.temperatures, type: 'spline', marker: { enabled: false, states: { hover: { enabled: true } } }, tooltip: { valueSuffix: '°F' }, zIndex: 1, color: '#FF3333', threshold: 32, negativeColor: '#48AFE8' }, {// name: 'Precipitation', name: 'Snow', data: this.precipitations, type: 'column',// color: '#68CFE8', color: 'purple', yAxis: 1, groupPadding: 0, pointPadding: 0, borderWidth: 0, shadow: false, dataLabels: { enabled: true, formatter: function () { if (this.y > 0) { return this.y+'"'; } }, style: { fontSize: '10px' } }, tooltip: { valueSuffix: '"' } }, { name: 'Rain', data: this.rains, type: 'column', color: 'lightblue', yAxis: 1, groupPadding: 0, pointPadding: 0, borderWidth: 0, shadow: false, dataLabels: { enabled: true, formatter: function () { if (this.y > 0) { return this.y+'"'; } }, style: { fontSize: '10px' } }, tooltip: { valueSuffix: '"' } }, {// name: 'Air pressure', name: 'Humidity', color: 'grey', data: this.pressures, marker: { enabled: false }, shadow: false, tooltip: { // valueSuffix: ' hPa' valueSuffix: ' %' }, dashStyle: 'shortdot', yAxis: 2 }] };};/** * Post-process the chart from the callback function, the second argument to Highcharts.Chart. */Meteogram.prototype.onChartLoad = function (chart) { this.drawWeatherSymbols(chart);// this.drawWindArrows(chart);// this.drawBlocksForWindArrows(chart);};/** * Create the chart. This function is called async when the data file is loaded and parsed. */Meteogram.prototype.createChart = function () { var meteogram = this; this.chart = new Highcharts.Chart(this.getChartOptions(), function (chart) { meteogram.onChartLoad(chart); });};/** * Handle the data. This part of the code is not Highcharts specific, but deals with yr.no's * specific data format */Meteogram.prototype.parseYrData = function () { var meteogram = this, xml = this.xml, pointStart; if (!xml || !xml.forecast) { $('#loading').html(' Failed loading data, please try again later'); return; } // The returned xml variable is a JavaScript representation of the provided XML, // generated on the server by running PHP simple_load_xml and converting it to // JavaScript by json_encode. $.each(xml.forecast.tabular.time, function (i, time) { // Get the times - only Safari can't parse ISO8601 so we need to do some replacements var from = time['@attributes'].from + ' CDT', to = time['@attributes'].to + ' CDT'; from = from.replace(/-/g, '/').replace('T', ' '); from = Date.parse(from); to = to.replace(/-/g, '/').replace('T', ' '); to = Date.parse(to);// if (to > pointStart + 16 * 24 * 36e5) {// return;// } // If it is more than an hour between points, show all symbols if (i === 0) { meteogram.resolution = to - from; } // Populate the parallel arrays meteogram.symbols.push(time.symbol['@attributes']['var'].match(/[0-9]{2}[dnm]?/)[0]); // eslint-disable-line dot-notation meteogram.symbolNames.push(time.symbol['@attributes'].name); meteogram.temperatures.push({ x: from, y: parseInt(time.temperature['@attributes'].value, 10), // custom options used in the tooltip formatter to: to, index: i }); meteogram.precipitations.push({ x: from, y: parseFloat(time.precipitation['@attributes'].value) }); meteogram.rains.push({ x: from, y: parseFloat(time.rain['@attributes'].value) }); meteogram.windDirections.push(parseFloat(time.windDirection['@attributes'].deg)); meteogram.windDirectionNames.push(time.windDirection['@attributes'].name); meteogram.windSpeeds.push(parseFloat(time.windSpeed['@attributes'].mps)); meteogram.windSpeedNames.push(time.windSpeed['@attributes'].name); meteogram.pressures.push({ x: from, y: parseFloat(time.pressure['@attributes'].value) }); if (i === 0) { pointStart = (from + to) / 2; } }); // Smooth the line this.smoothLine(this.temperatures); // Create the chart when the data is loaded this.createChart();};// End of the Meteogram protype

Nickel Plate Nordic Centre Snow Report | Ski Forecast & Snowfall Totals (2024)
Top Articles
Latest Posts
Article information

Author: Neely Ledner

Last Updated:

Views: 5708

Rating: 4.1 / 5 (42 voted)

Reviews: 89% of readers found this page helpful

Author information

Name: Neely Ledner

Birthday: 1998-06-09

Address: 443 Barrows Terrace, New Jodyberg, CO 57462-5329

Phone: +2433516856029

Job: Central Legal Facilitator

Hobby: Backpacking, Jogging, Magic, Driving, Macrame, Embroidery, Foraging

Introduction: My name is Neely Ledner, I am a bright, determined, beautiful, adventurous, adventurous, spotless, calm person who loves writing and wants to share my knowledge and understanding with you.