Future Radar in Terrier: How to Get Started

Written by Steve Gifford

March 26, 2026

Last week, we introduced Future Radar, our take on advected radar for MRMS. Now that it’s live, we’re going to show you how to actually use it across our products. We’ll start with Future Radar in Terrier.

If you’re already displaying radar in Terrier for Web, you’re most of the way there. You can add future radar with a bit of code. Adding it is a small step that gives you a much clearer picture of what’s about to happen, not just what has already happened.

What Is Advected Radar Again?

At its core, it’s just future radar.

Future radar is most useful in the next 30 minutes or so. It fills the gap between “now” and when a model like HRRR starts to pick things up. You’ll sometimes hear this referred to as a “nowcast.”

If you’ve used a weather app, you’ve probably seen it. When the timeline moves past the current time, and the radar keeps going, that’s future radar.

Future Radar in Terrier: What We’ve Got

Right now, we’re running advected MRMS across several regions:

  • CONUS
  • Hawaii
  • Alaska
  • Puerto Rico (and surrounding Caribbean areas)

Each region currently runs out to about 70 minutes. In practice, we’ve found that displaying around 30 minutes works best visually, but you can adjust it depending on your use case.

This gives you a clean extension of your radar timeline, making Future Radar in Terrier feel like a natural continuation rather than a separate layer.

How to Display Future Radar in Terrier

There are a few ways you can work with this data. We can do display or query, or let you pull the raw reflectivity frames and handle them yourself.

If you’re using Terrier for Web, here’s how you display it:

let regions = ["conus","alaska","carib","hawaii"]
let region = regions[0]
let mrms_refl = Terrier.sourcesForVariable({source:'mrms',
                                            region:region,
                                            product:'mcr',
                                            variable:'reflectivity'})
mrms_refl.forEach((src) => {
    src['cadence'] = [-2*60*60,-2*60,64]
    src['enableForRange'] = [false,false]
})

let advect_mrms_refl = Terrier.sourcesForVariable({source:'mrms',
                                                   region:region,
                                                   product:'mcr',
                                                   variable:'reflectivity_advected'})
advect_mrms_refl.forEach((src) => {
    src['cadence'] = [-2*60,1*60*60,17]
    src['enableForRange'] = [true,false]
})
let all_sources = mrms_refl.concat(advect_mrms_refl)
 
let mrmsLayer = ovl.startLayer('reflectivity', {
    sources: all_sources,
    colorMap: Terrier.REFLECTIVITY_HRRR_COMPATIBLE,
    cadence: [-2*60*60,1*60*60,64],
    interpMode: 'linear',
    opacity: 0.5,
    importFactor: 16.0,
})

This setup shows radar from about 2 hours in the past to 1 hour into the future. Behind the scenes, we adjust the ranges slightly to ensure everything blends smoothly.

We also trim the most recent couple of minutes to reduce visible gaps between observed and advected data.

From a data standpoint, nothing complicated has changed. The MRMS source works as it always has, but we’ve added a new variable:
reflectivity_advected

If you already have access to the radar stack, you already have access to this.

What’s Next for Future Radar

The rollout has been smooth so far, so we’re taking a moment to let things settle before expanding further.

That said, there’s a lot we can build on from here. We can advect additional products, such as base reflectivity (MBR) or Reflectivity at Lowest Altitude. We can also bring in new radar sources and extend the same approach.

If you’re using Future Radar in Terrier and have something specific you’d like to see, let us know. This is one of those features that gets better the more it’s shaped by real-world use.