Repository files navigation

WeatherTileExamples

Simple examples to make tilesets for your favorite mapping system.

This is a simple set of examples that will show you how to take some of the newest, coolest NOAA products and turn them into tile sets for use in a web map mashup, or with WhirlyGlobe-Maply.

These examples rely on Vagrant and VirtualBox to run a Centos 7 environment which we will use yum to install gdal. Centos 7 with the epel gives us a reasonable install of gdal (version >= 1.11.2). We need this new of a version to handle opening the MRMS gz file without gzipping them (using a virtual file system) and for the alpha to work correctly with our palette.

About the data

Multi Radar Multi Sensor (MRMS)

MRMS is a software product built by the University of Oklahoma that is now being run in real time by the National Weather Service. The data can be retrieved by LDM or HTTP.

There are a number of interesting data products with MRMS including 3D slices of the atmosphere, lightning, hail, etc. We will show how to plot Reflectivity (Radar).

High Resolution Rapid Refresh (HRRR)

HRRR is a high resolution model that is run by NCEP and is updated very often. It can be found via NCEP NOMADS HTTP. We will look at the wind forecast, and composite reflectivity forecast (simulated Radar)

Steps to convert the data

  1. Install Vagrant and VirtualBox
  2. clone this repository
  3. cd into the directory with the VagrantFile and type vagrant up
  4. vagrant will load a centos image, and boot it. It will run the shell provisioner noaatiles.sh to install gdal, python bindings, and wgrib2
  5. type vagrant ssh to get into the VM
  6. type cd vagrant_data - this will put you in the scripts directory
  7. type ./download_latest_hrrr.sh to download and create 3 tile sets from the latest HRRR model
  8. type ./download_latest_mrms.sh to download and create a tile set from the latest MRMS

What do you end up with?

data directory
  • MRMS and HRRR model files

output directory

  • hrrr - a directory that has a tileset of the composite reflectivity plotted with alpha, that looks like future radar HRR Wind ScreenShot
  • wind vectors split by component. Take a look at this page for more information: Wind: u and v Components
  • hrrr_u_tiles - a tileset of the u vector of the wind HRR Wind ScreenShot
  • hrrr_v_tiles - a tileset of the v vector of the wind
  • hrrr_speed_tiles - a tileset of the speed of the wind HRR Wind ScreenShot
  • mrms - a radar tileset from mrms data MRMS Radar ScreenShot

Advanced modifications

More tile levels

Modify this line in create_hrrr_radar.sh:

 python ./gdal2tiles.py -r bilinear -z 0-9 output/hrrr.vrt output/hrrr

z is the number of z levels for the tiles. If you want it to create a higher resolution set of tiles, try this command instead.

####Change the Palettes This is inside palettes/radar_pal.txt

nv 0 255 0 0
0% 0 0 0 0
-30 255 255 255 0
-25 0 0 0 255
-20 255 255 255 255
-15 233 204 249 255
-10 207 128 223 255
-05 131 51 147 255
00 58 0 176 255
05 29 0 215 255
10 0 0 255 255
15 3 60 175 255
20 5 119 95 255
25 8 179 15 255
30 132 217 8 255
35 255 255 0 255
40 255 170 0 255
45 255 85 0 255
50 255 0 0 255
55 179 0 0 255
60 102 0 0 255
65 51 0 0 255
70 0 0 0 255
75 250 197 250 255
80 255 255 255 255
100% 255 255 255 255

About

Simple examples to make weather tilesets for your favorite mapping system.

Topics

Resources

Stars

23 stars

Watchers

5 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Add copy buttons to all
 blocks\n(function() {\n function addCopyButtons() {\n document.querySelectorAll('pre code').forEach(function(codeBlock) {\n if (codeBlock.parentElement.hasAttribute('data-copy-added')) return;\n codeBlock.parentElement.setAttribute('data-copy-added', 'true');\n \n var btn = document.createElement('button');\n btn.textContent = 'Copy';\n btn.style.cssText = 'position:absolute;top:4px;right:4px;padding:2px 8px;font-size:11px;background:#4ecdc4;border:none;border-radius:4px;color:#1a1a2e;cursor:pointer;opacity:0.7;transition:opacity 0.2s;';\n btn.onmouseover = function() { this.style.opacity = '1'; };\n btn.onmouseout = function() { this.style.opacity = '0.7'; };\n btn.onclick = function() {\n navigator.clipboard.writeText(codeBlock.textContent).then(function() {\n btn.textContent = 'Copied!';\n setTimeout(function() { btn.textContent = 'Copy'; }, 1500);\n });\n };\n codeBlock.parentElement.style.position = 'relative';\n codeBlock.parentElement.appendChild(btn);\n });\n }\n \n addCopyButtons();\n \n // Re-run on dynamic content\n var observer = new MutationObserver(addCopyButtons);\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Add Copy Buttons to Code Blocks");
}
} catch(__e) { console.warn('[Userscript:Add Copy Buttons to Code Blocks]', __e); }
})();
(function(){
try {
var __m = "github.com";
var __re = new RegExp('^' + "github\\.com" + '
Skip to content

Repository files navigation

WeatherTileExamples

Simple examples to make tilesets for your favorite mapping system.

This is a simple set of examples that will show you how to take some of the newest, coolest NOAA products and turn them into tile sets for use in a web map mashup, or with WhirlyGlobe-Maply.

These examples rely on Vagrant and VirtualBox to run a Centos 7 environment which we will use yum to install gdal. Centos 7 with the epel gives us a reasonable install of gdal (version >= 1.11.2). We need this new of a version to handle opening the MRMS gz file without gzipping them (using a virtual file system) and for the alpha to work correctly with our palette.

About the data

Multi Radar Multi Sensor (MRMS)

MRMS is a software product built by the University of Oklahoma that is now being run in real time by the National Weather Service. The data can be retrieved by LDM or HTTP.

There are a number of interesting data products with MRMS including 3D slices of the atmosphere, lightning, hail, etc. We will show how to plot Reflectivity (Radar).

High Resolution Rapid Refresh (HRRR)

HRRR is a high resolution model that is run by NCEP and is updated very often. It can be found via NCEP NOMADS HTTP. We will look at the wind forecast, and composite reflectivity forecast (simulated Radar)

Steps to convert the data

  1. Install Vagrant and VirtualBox
  2. clone this repository
  3. cd into the directory with the VagrantFile and type vagrant up
  4. vagrant will load a centos image, and boot it. It will run the shell provisioner noaatiles.sh to install gdal, python bindings, and wgrib2
  5. type vagrant ssh to get into the VM
  6. type cd vagrant_data - this will put you in the scripts directory
  7. type ./download_latest_hrrr.sh to download and create 3 tile sets from the latest HRRR model
  8. type ./download_latest_mrms.sh to download and create a tile set from the latest MRMS

What do you end up with?

data directory
  • MRMS and HRRR model files

output directory

  • hrrr - a directory that has a tileset of the composite reflectivity plotted with alpha, that looks like future radar HRR Wind ScreenShot
  • wind vectors split by component. Take a look at this page for more information: Wind: u and v Components
  • hrrr_u_tiles - a tileset of the u vector of the wind HRR Wind ScreenShot
  • hrrr_v_tiles - a tileset of the v vector of the wind
  • hrrr_speed_tiles - a tileset of the speed of the wind HRR Wind ScreenShot
  • mrms - a radar tileset from mrms data MRMS Radar ScreenShot

Advanced modifications

More tile levels

Modify this line in create_hrrr_radar.sh:

 python ./gdal2tiles.py -r bilinear -z 0-9 output/hrrr.vrt output/hrrr

z is the number of z levels for the tiles. If you want it to create a higher resolution set of tiles, try this command instead.

####Change the Palettes This is inside palettes/radar_pal.txt

nv 0 255 0 0
0% 0 0 0 0
-30 255 255 255 0
-25 0 0 0 255
-20 255 255 255 255
-15 233 204 249 255
-10 207 128 223 255
-05 131 51 147 255
00 58 0 176 255
05 29 0 215 255
10 0 0 255 255
15 3 60 175 255
20 5 119 95 255
25 8 179 15 255
30 132 217 8 255
35 255 255 0 255
40 255 170 0 255
45 255 85 0 255
50 255 0 0 255
55 179 0 0 255
60 102 0 0 255
65 51 0 0 255
70 0 0 0 255
75 250 197 250 255
80 255 255 255 255
100% 255 255 255 255

About

Simple examples to make weather tilesets for your favorite mapping system.

Topics

Resources

Stars

23 stars

Watchers

5 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Force GitHub README to respect dark mode\n(function() {\n var style = document.createElement('style');\n style.textContent = '\n .markdown-body {\n color-scheme: dark light;\n }\n .markdown-body pre { background: #161b22 !important; }\n .markdown-body code { background: rgba(110, 118, 129, 0.4) !important; }\n .markdown-body table th, .markdown-body table td { border-color: #30363d !important; }\n .markdown-body img { background: #0d1117; }\n .markdown-body blockquote { border-left-color: #8b949e; }\n .markdown-body hr { border-color: #30363d; }\n ';\n document.head.appendChild(style);\n})();", "GitHub Dark Mode README Fix"); } } catch(__e) { console.warn('[Userscript:GitHub Dark Mode README Fix]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Repository files navigation

WeatherTileExamples

Simple examples to make tilesets for your favorite mapping system.

This is a simple set of examples that will show you how to take some of the newest, coolest NOAA products and turn them into tile sets for use in a web map mashup, or with WhirlyGlobe-Maply.

These examples rely on Vagrant and VirtualBox to run a Centos 7 environment which we will use yum to install gdal. Centos 7 with the epel gives us a reasonable install of gdal (version >= 1.11.2). We need this new of a version to handle opening the MRMS gz file without gzipping them (using a virtual file system) and for the alpha to work correctly with our palette.

About the data

Multi Radar Multi Sensor (MRMS)

MRMS is a software product built by the University of Oklahoma that is now being run in real time by the National Weather Service. The data can be retrieved by LDM or HTTP.

There are a number of interesting data products with MRMS including 3D slices of the atmosphere, lightning, hail, etc. We will show how to plot Reflectivity (Radar).

High Resolution Rapid Refresh (HRRR)

HRRR is a high resolution model that is run by NCEP and is updated very often. It can be found via NCEP NOMADS HTTP. We will look at the wind forecast, and composite reflectivity forecast (simulated Radar)

Steps to convert the data

  1. Install Vagrant and VirtualBox
  2. clone this repository
  3. cd into the directory with the VagrantFile and type vagrant up
  4. vagrant will load a centos image, and boot it. It will run the shell provisioner noaatiles.sh to install gdal, python bindings, and wgrib2
  5. type vagrant ssh to get into the VM
  6. type cd vagrant_data - this will put you in the scripts directory
  7. type ./download_latest_hrrr.sh to download and create 3 tile sets from the latest HRRR model
  8. type ./download_latest_mrms.sh to download and create a tile set from the latest MRMS

What do you end up with?

data directory
  • MRMS and HRRR model files

output directory

  • hrrr - a directory that has a tileset of the composite reflectivity plotted with alpha, that looks like future radar HRR Wind ScreenShot
  • wind vectors split by component. Take a look at this page for more information: Wind: u and v Components
  • hrrr_u_tiles - a tileset of the u vector of the wind HRR Wind ScreenShot
  • hrrr_v_tiles - a tileset of the v vector of the wind
  • hrrr_speed_tiles - a tileset of the speed of the wind HRR Wind ScreenShot
  • mrms - a radar tileset from mrms data MRMS Radar ScreenShot

Advanced modifications

More tile levels

Modify this line in create_hrrr_radar.sh:

 python ./gdal2tiles.py -r bilinear -z 0-9 output/hrrr.vrt output/hrrr

z is the number of z levels for the tiles. If you want it to create a higher resolution set of tiles, try this command instead.

####Change the Palettes This is inside palettes/radar_pal.txt

nv 0 255 0 0
0% 0 0 0 0
-30 255 255 255 0
-25 0 0 0 255
-20 255 255 255 255
-15 233 204 249 255
-10 207 128 223 255
-05 131 51 147 255
00 58 0 176 255
05 29 0 215 255
10 0 0 255 255
15 3 60 175 255
20 5 119 95 255
25 8 179 15 255
30 132 217 8 255
35 255 255 0 255
40 255 170 0 255
45 255 85 0 255
50 255 0 0 255
55 179 0 0 255
60 102 0 0 255
65 51 0 0 255
70 0 0 0 255
75 250 197 250 255
80 255 255 255 255
100% 255 255 255 255

About

Simple examples to make weather tilesets for your favorite mapping system.

Topics

Resources

Stars

23 stars

Watchers

5 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Highlight search terms from Google/DuckDuckGo/Bing referrer\n(function() {\n var ref = document.referrer;\n var terms = [];\n \n if (ref.includes('google.com') || ref.includes('duckduckgo.com') || ref.includes('bing.com')) {\n var url = new URL(ref);\n var q = url.searchParams.get('q') || url.searchParams.get('p');\n if (q) {\n terms = q.split(/\\s+/).filter(function(t) { return t.length > 2; });\n }\n }\n \n if (terms.length === 0) return;\n \n var style = document.createElement('style');\n style.textContent = '.userscript-highlight { background: #fbbf24; color: #1a1a2e; padding: 1px 3px; border-radius: 2px; }';\n document.head.appendChild(style);\n \n function highlight(node) {\n if (node.nodeType === 3) { // text node\n var text = node.textContent;\n var found = false;\n terms.forEach(function(term) {\n var regex = new RegExp('(' + term.replace(/[.*+?^${}()|[\\]\\\\]/g, '\\\\') + ')', 'gi');\n if (regex.test(text)) {\n found = true;\n var frag = document.createDocumentFragment();\n var parts = text.split(regex);\n parts.forEach(function(part, i) {\n if (i % 2 === 0) {\n frag.appendChild(document.createTextNode(part));\n } else {\n var span = document.createElement('span');\n span.className = 'userscript-highlight';\n span.textContent = part;\n frag.appendChild(span);\n }\n });\n node.parentNode.replaceChild(frag, node);\n }\n });\n } else if (node.nodeType === 1 && node.childNodes) { // element\n var skipTags = ['SCRIPT', 'STYLE', 'NOSCRIPT', 'TEXTAREA', 'INPUT', 'SELECT'];\n if (!skipTags.includes(node.tagName)) {\n Array.from(node.childNodes).forEach(highlight);\n }\n }\n }\n \n highlight(document.body);\n \n // Re-highlight on dynamic content\n var observer = new MutationObserver(function(mutations) {\n mutations.forEach(function(m) {\n m.addedNodes.forEach(function(node) {\n if (node.nodeType === 1 || node.nodeType === 3) highlight(node);\n });\n });\n });\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Highlight Search Terms"); } } catch(__e) { console.warn('[Userscript:Highlight Search Terms]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Repository files navigation

WeatherTileExamples

Simple examples to make tilesets for your favorite mapping system.

This is a simple set of examples that will show you how to take some of the newest, coolest NOAA products and turn them into tile sets for use in a web map mashup, or with WhirlyGlobe-Maply.

These examples rely on Vagrant and VirtualBox to run a Centos 7 environment which we will use yum to install gdal. Centos 7 with the epel gives us a reasonable install of gdal (version >= 1.11.2). We need this new of a version to handle opening the MRMS gz file without gzipping them (using a virtual file system) and for the alpha to work correctly with our palette.

About the data

Multi Radar Multi Sensor (MRMS)

MRMS is a software product built by the University of Oklahoma that is now being run in real time by the National Weather Service. The data can be retrieved by LDM or HTTP.

There are a number of interesting data products with MRMS including 3D slices of the atmosphere, lightning, hail, etc. We will show how to plot Reflectivity (Radar).

High Resolution Rapid Refresh (HRRR)

HRRR is a high resolution model that is run by NCEP and is updated very often. It can be found via NCEP NOMADS HTTP. We will look at the wind forecast, and composite reflectivity forecast (simulated Radar)

Steps to convert the data

  1. Install Vagrant and VirtualBox
  2. clone this repository
  3. cd into the directory with the VagrantFile and type vagrant up
  4. vagrant will load a centos image, and boot it. It will run the shell provisioner noaatiles.sh to install gdal, python bindings, and wgrib2
  5. type vagrant ssh to get into the VM
  6. type cd vagrant_data - this will put you in the scripts directory
  7. type ./download_latest_hrrr.sh to download and create 3 tile sets from the latest HRRR model
  8. type ./download_latest_mrms.sh to download and create a tile set from the latest MRMS

What do you end up with?

data directory
  • MRMS and HRRR model files

output directory

  • hrrr - a directory that has a tileset of the composite reflectivity plotted with alpha, that looks like future radar HRR Wind ScreenShot
  • wind vectors split by component. Take a look at this page for more information: Wind: u and v Components
  • hrrr_u_tiles - a tileset of the u vector of the wind HRR Wind ScreenShot
  • hrrr_v_tiles - a tileset of the v vector of the wind
  • hrrr_speed_tiles - a tileset of the speed of the wind HRR Wind ScreenShot
  • mrms - a radar tileset from mrms data MRMS Radar ScreenShot

Advanced modifications

More tile levels

Modify this line in create_hrrr_radar.sh:

 python ./gdal2tiles.py -r bilinear -z 0-9 output/hrrr.vrt output/hrrr

z is the number of z levels for the tiles. If you want it to create a higher resolution set of tiles, try this command instead.

####Change the Palettes This is inside palettes/radar_pal.txt

nv 0 255 0 0
0% 0 0 0 0
-30 255 255 255 0
-25 0 0 0 255
-20 255 255 255 255
-15 233 204 249 255
-10 207 128 223 255
-05 131 51 147 255
00 58 0 176 255
05 29 0 215 255
10 0 0 255 255
15 3 60 175 255
20 5 119 95 255
25 8 179 15 255
30 132 217 8 255
35 255 255 0 255
40 255 170 0 255
45 255 85 0 255
50 255 0 0 255
55 179 0 0 255
60 102 0 0 255
65 51 0 0 255
70 0 0 0 255
75 250 197 250 255
80 255 255 255 255
100% 255 255 255 255

About

Simple examples to make weather tilesets for your favorite mapping system.

Topics

Resources

Stars

23 stars

Watchers

5 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Strip utm_, fbclid, gclid, etc. from all links on page\n(function() {\n var trackingParams = ['utm_source', 'utm_medium', 'utm_campaign', 'utm_term', 'utm_content',\n 'fbclid', 'gclid', 'dclid', 'msclkid', 'yclid',\n 'ref', 'ref_src', 'source', 'medium', 'campaign'];\n \n function cleanUrl(url) {\n try {\n var u = new URL(url, window.location.origin);\n var changed = false;\n trackingParams.forEach(function(p) {\n if (u.searchParams.has(p)) {\n u.searchParams.delete(p);\n changed = true;\n }\n });\n return changed ? u.toString() : url;\n } catch (e) {\n return url;\n }\n }\n \n function cleanLinks() {\n document.querySelectorAll('a[href]').forEach(function(a) {\n var clean = cleanUrl(a.href);\n if (clean !== a.href) a.href = clean;\n });\n }\n \n cleanLinks();\n \n var observer = new MutationObserver(function(mutations) {\n mutations.forEach(function(m) {\n m.addedNodes.forEach(function(node) {\n if (node.nodeType === 1) {\n if (node.tagName === 'A') cleanLinks();\n node.querySelectorAll('a[href]').forEach(function(a) {\n var clean = cleanUrl(a.href);\n if (clean !== a.href) a.href = clean;\n });\n }\n });\n });\n });\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Remove Tracking Parameters from Links"); } } catch(__e) { console.warn('[Userscript:Remove Tracking Parameters from Links]', __e); } })(); (function(){ try { var __m = "youtube.com"; var __re = new RegExp('^' + "youtube\\.com" + '
Skip to content

Repository files navigation

WeatherTileExamples

Simple examples to make tilesets for your favorite mapping system.

This is a simple set of examples that will show you how to take some of the newest, coolest NOAA products and turn them into tile sets for use in a web map mashup, or with WhirlyGlobe-Maply.

These examples rely on Vagrant and VirtualBox to run a Centos 7 environment which we will use yum to install gdal. Centos 7 with the epel gives us a reasonable install of gdal (version >= 1.11.2). We need this new of a version to handle opening the MRMS gz file without gzipping them (using a virtual file system) and for the alpha to work correctly with our palette.

About the data

Multi Radar Multi Sensor (MRMS)

MRMS is a software product built by the University of Oklahoma that is now being run in real time by the National Weather Service. The data can be retrieved by LDM or HTTP.

There are a number of interesting data products with MRMS including 3D slices of the atmosphere, lightning, hail, etc. We will show how to plot Reflectivity (Radar).

High Resolution Rapid Refresh (HRRR)

HRRR is a high resolution model that is run by NCEP and is updated very often. It can be found via NCEP NOMADS HTTP. We will look at the wind forecast, and composite reflectivity forecast (simulated Radar)

Steps to convert the data

  1. Install Vagrant and VirtualBox
  2. clone this repository
  3. cd into the directory with the VagrantFile and type vagrant up
  4. vagrant will load a centos image, and boot it. It will run the shell provisioner noaatiles.sh to install gdal, python bindings, and wgrib2
  5. type vagrant ssh to get into the VM
  6. type cd vagrant_data - this will put you in the scripts directory
  7. type ./download_latest_hrrr.sh to download and create 3 tile sets from the latest HRRR model
  8. type ./download_latest_mrms.sh to download and create a tile set from the latest MRMS

What do you end up with?

data directory
  • MRMS and HRRR model files

output directory

  • hrrr - a directory that has a tileset of the composite reflectivity plotted with alpha, that looks like future radar HRR Wind ScreenShot
  • wind vectors split by component. Take a look at this page for more information: Wind: u and v Components
  • hrrr_u_tiles - a tileset of the u vector of the wind HRR Wind ScreenShot
  • hrrr_v_tiles - a tileset of the v vector of the wind
  • hrrr_speed_tiles - a tileset of the speed of the wind HRR Wind ScreenShot
  • mrms - a radar tileset from mrms data MRMS Radar ScreenShot

Advanced modifications

More tile levels

Modify this line in create_hrrr_radar.sh:

 python ./gdal2tiles.py -r bilinear -z 0-9 output/hrrr.vrt output/hrrr

z is the number of z levels for the tiles. If you want it to create a higher resolution set of tiles, try this command instead.

####Change the Palettes This is inside palettes/radar_pal.txt

nv 0 255 0 0
0% 0 0 0 0
-30 255 255 255 0
-25 0 0 0 255
-20 255 255 255 255
-15 233 204 249 255
-10 207 128 223 255
-05 131 51 147 255
00 58 0 176 255
05 29 0 215 255
10 0 0 255 255
15 3 60 175 255
20 5 119 95 255
25 8 179 15 255
30 132 217 8 255
35 255 255 0 255
40 255 170 0 255
45 255 85 0 255
50 255 0 0 255
55 179 0 0 255
60 102 0 0 255
65 51 0 0 255
70 0 0 0 255
75 250 197 250 255
80 255 255 255 255
100% 255 255 255 255

About

Simple examples to make weather tilesets for your favorite mapping system.

Topics

Resources

Stars

23 stars

Watchers

5 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Auto-enable theater mode on YouTube\n(function() {\n function tryTheater() {\n var btn = document.querySelector('button[aria-label=\"Theater mode\"], ytd-player #player button[title=\"Theater mode\"]');\n if (btn && !btn.classList.contains('activated')) {\n btn.click();\n }\n }\n \n // Try immediately\n tryTheater();\n \n // Try after navigation (SPA)\n var lastUrl = location.href;\n setInterval(function() {\n if (location.href !== lastUrl) {\n lastUrl = location.href;\n setTimeout(tryTheater, 500);\n }\n }, 1000);\n \n // Also try on player load\n var observer = new MutationObserver(tryTheater);\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "YouTube Theater Mode Default"); } } catch(__e) { console.warn('[Userscript:YouTube Theater Mode Default]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Repository files navigation

WeatherTileExamples

Simple examples to make tilesets for your favorite mapping system.

This is a simple set of examples that will show you how to take some of the newest, coolest NOAA products and turn them into tile sets for use in a web map mashup, or with WhirlyGlobe-Maply.

These examples rely on Vagrant and VirtualBox to run a Centos 7 environment which we will use yum to install gdal. Centos 7 with the epel gives us a reasonable install of gdal (version >= 1.11.2). We need this new of a version to handle opening the MRMS gz file without gzipping them (using a virtual file system) and for the alpha to work correctly with our palette.

About the data

Multi Radar Multi Sensor (MRMS)

MRMS is a software product built by the University of Oklahoma that is now being run in real time by the National Weather Service. The data can be retrieved by LDM or HTTP.

There are a number of interesting data products with MRMS including 3D slices of the atmosphere, lightning, hail, etc. We will show how to plot Reflectivity (Radar).

High Resolution Rapid Refresh (HRRR)

HRRR is a high resolution model that is run by NCEP and is updated very often. It can be found via NCEP NOMADS HTTP. We will look at the wind forecast, and composite reflectivity forecast (simulated Radar)

Steps to convert the data

  1. Install Vagrant and VirtualBox
  2. clone this repository
  3. cd into the directory with the VagrantFile and type vagrant up
  4. vagrant will load a centos image, and boot it. It will run the shell provisioner noaatiles.sh to install gdal, python bindings, and wgrib2
  5. type vagrant ssh to get into the VM
  6. type cd vagrant_data - this will put you in the scripts directory
  7. type ./download_latest_hrrr.sh to download and create 3 tile sets from the latest HRRR model
  8. type ./download_latest_mrms.sh to download and create a tile set from the latest MRMS

What do you end up with?

data directory
  • MRMS and HRRR model files

output directory

  • hrrr - a directory that has a tileset of the composite reflectivity plotted with alpha, that looks like future radar HRR Wind ScreenShot
  • wind vectors split by component. Take a look at this page for more information: Wind: u and v Components
  • hrrr_u_tiles - a tileset of the u vector of the wind HRR Wind ScreenShot
  • hrrr_v_tiles - a tileset of the v vector of the wind
  • hrrr_speed_tiles - a tileset of the speed of the wind HRR Wind ScreenShot
  • mrms - a radar tileset from mrms data MRMS Radar ScreenShot

Advanced modifications

More tile levels

Modify this line in create_hrrr_radar.sh:

 python ./gdal2tiles.py -r bilinear -z 0-9 output/hrrr.vrt output/hrrr

z is the number of z levels for the tiles. If you want it to create a higher resolution set of tiles, try this command instead.

####Change the Palettes This is inside palettes/radar_pal.txt

nv 0 255 0 0
0% 0 0 0 0
-30 255 255 255 0
-25 0 0 0 255
-20 255 255 255 255
-15 233 204 249 255
-10 207 128 223 255
-05 131 51 147 255
00 58 0 176 255
05 29 0 215 255
10 0 0 255 255
15 3 60 175 255
20 5 119 95 255
25 8 179 15 255
30 132 217 8 255
35 255 255 0 255
40 255 170 0 255
45 255 85 0 255
50 255 0 0 255
55 179 0 0 255
60 102 0 0 255
65 51 0 0 255
70 0 0 0 255
75 250 197 250 255
80 255 255 255 255
100% 255 255 255 255

About

Simple examples to make weather tilesets for your favorite mapping system.

Topics

Resources

Stars

23 stars

Watchers

5 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Remove or un-stick sticky/fixed headers that block content\n(function() {\n function unstick() {\n document.querySelectorAll('header, nav, [role=\"banner\"], .header, .navbar, .sticky, .fixed-top, [style*=\"position: fixed\"], [style*=\"position:sticky\"]').forEach(function(el) {\n if (el.style.position === 'fixed' || el.style.position === 'sticky' || \n getComputedStyle(el).position === 'fixed' || getComputedStyle(el).position === 'sticky') {\n el.style.position = 'static';\n el.style.top = 'auto';\n el.style.zIndex = 'auto';\n }\n });\n }\n \n unstick();\n \n var observer = new MutationObserver(unstick);\n observer.observe(document.body, { childList: true, subtree: true, attributes: true, attributeFilter: ['style', 'class'] });\n})();", "Kill Sticky Headers"); } } catch(__e) { console.warn('[Userscript:Kill Sticky Headers]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Repository files navigation

WeatherTileExamples

Simple examples to make tilesets for your favorite mapping system.

This is a simple set of examples that will show you how to take some of the newest, coolest NOAA products and turn them into tile sets for use in a web map mashup, or with WhirlyGlobe-Maply.

These examples rely on Vagrant and VirtualBox to run a Centos 7 environment which we will use yum to install gdal. Centos 7 with the epel gives us a reasonable install of gdal (version >= 1.11.2). We need this new of a version to handle opening the MRMS gz file without gzipping them (using a virtual file system) and for the alpha to work correctly with our palette.

About the data

Multi Radar Multi Sensor (MRMS)

MRMS is a software product built by the University of Oklahoma that is now being run in real time by the National Weather Service. The data can be retrieved by LDM or HTTP.

There are a number of interesting data products with MRMS including 3D slices of the atmosphere, lightning, hail, etc. We will show how to plot Reflectivity (Radar).

High Resolution Rapid Refresh (HRRR)

HRRR is a high resolution model that is run by NCEP and is updated very often. It can be found via NCEP NOMADS HTTP. We will look at the wind forecast, and composite reflectivity forecast (simulated Radar)

Steps to convert the data

  1. Install Vagrant and VirtualBox
  2. clone this repository
  3. cd into the directory with the VagrantFile and type vagrant up
  4. vagrant will load a centos image, and boot it. It will run the shell provisioner noaatiles.sh to install gdal, python bindings, and wgrib2
  5. type vagrant ssh to get into the VM
  6. type cd vagrant_data - this will put you in the scripts directory
  7. type ./download_latest_hrrr.sh to download and create 3 tile sets from the latest HRRR model
  8. type ./download_latest_mrms.sh to download and create a tile set from the latest MRMS

What do you end up with?

data directory
  • MRMS and HRRR model files

output directory

  • hrrr - a directory that has a tileset of the composite reflectivity plotted with alpha, that looks like future radar HRR Wind ScreenShot
  • wind vectors split by component. Take a look at this page for more information: Wind: u and v Components
  • hrrr_u_tiles - a tileset of the u vector of the wind HRR Wind ScreenShot
  • hrrr_v_tiles - a tileset of the v vector of the wind
  • hrrr_speed_tiles - a tileset of the speed of the wind HRR Wind ScreenShot
  • mrms - a radar tileset from mrms data MRMS Radar ScreenShot

Advanced modifications

More tile levels

Modify this line in create_hrrr_radar.sh:

 python ./gdal2tiles.py -r bilinear -z 0-9 output/hrrr.vrt output/hrrr

z is the number of z levels for the tiles. If you want it to create a higher resolution set of tiles, try this command instead.

####Change the Palettes This is inside palettes/radar_pal.txt

nv 0 255 0 0
0% 0 0 0 0
-30 255 255 255 0
-25 0 0 0 255
-20 255 255 255 255
-15 233 204 249 255
-10 207 128 223 255
-05 131 51 147 255
00 58 0 176 255
05 29 0 215 255
10 0 0 255 255
15 3 60 175 255
20 5 119 95 255
25 8 179 15 255
30 132 217 8 255
35 255 255 0 255
40 255 170 0 255
45 255 85 0 255
50 255 0 0 255
55 179 0 0 255
60 102 0 0 255
65 51 0 0 255
70 0 0 0 255
75 250 197 250 255
80 255 255 255 255
100% 255 255 255 255

About

Simple examples to make weather tilesets for your favorite mapping system.

Topics

Resources

Stars

23 stars

Watchers

5 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Universal Dark Mode - works on any site\n(function() {\n var enabled = true;\n \n function applyDarkMode() {\n if (!enabled) return;\n \n // Create style element if it doesn't exist\n var style = document.getElementById('universal-dark-mode-style');\n if (!style) {\n style = document.createElement('style');\n style.id = 'universal-dark-mode-style';\n document.head.appendChild(style);\n }\n \n // Dark mode CSS - inverts colors but preserves images/video\n style.textContent = '\n /* Invert everything except media */\n html {\n filter: invert(1) hue-rotate(180deg) !important;\n background: #1a1a2e !important;\n }\n \n /* Restore images, videos, iframes, canvas */\n img, video, iframe, canvas, svg, picture, [style*=\"background-image\"] {\n filter: invert(1) hue-rotate(180deg) !important;\n }\n \n /* Preserve specific elements that should not be inverted */\n .no-dark-mode, .no-dark-mode *,\n [data-theme=\"light\"], [data-theme=\"light\"],\n .ace_editor, .ace_editor *,\n .CodeMirror, .CodeMirror *,\n .monaco-editor, .monaco-editor *,\n .markdown-body pre, .markdown-body pre *,\n .highlight, .highlight *,\n pre code, pre code * {\n filter: none !important;\n }\n \n /* Fix common UI elements */\n .modal, .popup, .dropdown-menu, .tooltip, .popover {\n filter: invert(1) hue-rotate(180deg) !important;\n background: #2d2d44 !important;\n border-color: #444 !important;\n }\n \n /* Scrollbars */\n ::-webkit-scrollbar { background: #1a1a2e !important; }\n ::-webkit-scrollbar-thumb { background: #444 !important; }\n ::-webkit-scrollbar-thumb:hover { background: #555 !important; }\n \n /* Selection */\n ::selection { background: #4ecdc4 !important; color: #1a1a2e !important; }\n ::-moz-selection { background: #4ecdc4 !important; color: #1a1a2e !important; }\n ';\n }\n \n function removeDarkMode() {\n var style = document.getElementById('universal-dark-mode-style');\n if (style) style.remove();\n }\n \n // Toggle with Alt+Shift+D\n document.addEventListener('keydown', function(e) {\n if (e.altKey && e.shiftKey && e.key === 'D') {\n e.preventDefault();\n enabled = !enabled;\n if (enabled) {\n applyDarkMode();\n console.log('[Universal Dark Mode] Enabled');\n } else {\n removeDarkMode();\n console.log('[Universal Dark Mode] Disabled');\n }\n }\n });\n \n // Apply on load\n applyDarkMode();\n \n // Re-apply on dynamic content\n var observer = new MutationObserver(function(mutations) {\n if (enabled && !document.getElementById('universal-dark-mode-style')) {\n applyDarkMode();\n }\n });\n observer.observe(document.head, { childList: true });\n \n console.log('[Universal Dark Mode] Loaded - Press Alt+Shift+D to toggle');\n})();", "Universal Dark Mode"); } } catch(__e) { console.warn('[Userscript:Universal Dark Mode]', __e); } })(); })();
Skip to content

Repository files navigation

WeatherTileExamples

Simple examples to make tilesets for your favorite mapping system.

This is a simple set of examples that will show you how to take some of the newest, coolest NOAA products and turn them into tile sets for use in a web map mashup, or with WhirlyGlobe-Maply.

These examples rely on Vagrant and VirtualBox to run a Centos 7 environment which we will use yum to install gdal. Centos 7 with the epel gives us a reasonable install of gdal (version >= 1.11.2). We need this new of a version to handle opening the MRMS gz file without gzipping them (using a virtual file system) and for the alpha to work correctly with our palette.

About the data

Multi Radar Multi Sensor (MRMS)

MRMS is a software product built by the University of Oklahoma that is now being run in real time by the National Weather Service. The data can be retrieved by LDM or HTTP.

There are a number of interesting data products with MRMS including 3D slices of the atmosphere, lightning, hail, etc. We will show how to plot Reflectivity (Radar).

High Resolution Rapid Refresh (HRRR)

HRRR is a high resolution model that is run by NCEP and is updated very often. It can be found via NCEP NOMADS HTTP. We will look at the wind forecast, and composite reflectivity forecast (simulated Radar)

Steps to convert the data

  1. Install Vagrant and VirtualBox
  2. clone this repository
  3. cd into the directory with the VagrantFile and type vagrant up
  4. vagrant will load a centos image, and boot it. It will run the shell provisioner noaatiles.sh to install gdal, python bindings, and wgrib2
  5. type vagrant ssh to get into the VM
  6. type cd vagrant_data - this will put you in the scripts directory
  7. type ./download_latest_hrrr.sh to download and create 3 tile sets from the latest HRRR model
  8. type ./download_latest_mrms.sh to download and create a tile set from the latest MRMS

What do you end up with?

data directory
  • MRMS and HRRR model files

output directory

  • hrrr - a directory that has a tileset of the composite reflectivity plotted with alpha, that looks like future radar HRR Wind ScreenShot
  • wind vectors split by component. Take a look at this page for more information: Wind: u and v Components
  • hrrr_u_tiles - a tileset of the u vector of the wind HRR Wind ScreenShot
  • hrrr_v_tiles - a tileset of the v vector of the wind
  • hrrr_speed_tiles - a tileset of the speed of the wind HRR Wind ScreenShot
  • mrms - a radar tileset from mrms data MRMS Radar ScreenShot

Advanced modifications

More tile levels

Modify this line in create_hrrr_radar.sh:

 python ./gdal2tiles.py -r bilinear -z 0-9 output/hrrr.vrt output/hrrr

z is the number of z levels for the tiles. If you want it to create a higher resolution set of tiles, try this command instead.

####Change the Palettes This is inside palettes/radar_pal.txt

nv 0 255 0 0
0% 0 0 0 0
-30 255 255 255 0
-25 0 0 0 255
-20 255 255 255 255
-15 233 204 249 255
-10 207 128 223 255
-05 131 51 147 255
00 58 0 176 255
05 29 0 215 255
10 0 0 255 255
15 3 60 175 255
20 5 119 95 255
25 8 179 15 255
30 132 217 8 255
35 255 255 0 255
40 255 170 0 255
45 255 85 0 255
50 255 0 0 255
55 179 0 0 255
60 102 0 0 255
65 51 0 0 255
70 0 0 0 255
75 250 197 250 255
80 255 255 255 255
100% 255 255 255 255

About

Simple examples to make weather tilesets for your favorite mapping system.

Topics

Resources

Stars

23 stars

Watchers

5 watching

Forks

Releases

Packages

Contributors

Languages