Saturday, July 29, 2017

Summer Layer Update

This morning I deployed a bunch of new layer changes, some of which have been in progress for a while.  From small to large:

First up, the 40' contour layer has been redone to use MapBuilder-based contour lines.  This allows for clean, accurate contour lines even when zoomed way in, instead of the pixellated lines that used to exist when going past zoom level 16.  It also improves contour printing, since MapBuilder layers are custom-rendered for each PDF's scale; imagery-contour maps will no longer print with dense, tiny and unreadable contour lines.

Contour lines displaying cleanly atop high-resolution Google satellite imagery.
The downside is that this means a temporary loss of contour coverage for parts of Alaska, pending MapBuilder's expansion to AK, HI and parts of Canada.  The old layer is still available as a custom source, however.  Choose Add New Layer -> Add Custom Source and choose "40ft Contours" from the prefill dropdown.  Use the "save to account" link at the bottom left of the dialog to save this to your account for easy future access.

CalTopo has a lot of powerful features, but they also tend to be obscure and awkward to use.  This is particularly true of some of the custom layers, such as MODIS satellite imagery and sunlight analysis, since they require using the Add Layer dialog and going through a handful of steps to tweak a single parameter.  The hiccup to improving this has been adding configurability to the layer UI, which is now done - both base and overlay layers support dropdowns for additional configuration options.

The simplest implementation of this is slope angle shading - fixed and gradient are now condensed into a single checkbox with a selection dropdown.  Some people might consider this a step backwards, since it potentially requires two clicks rather than one.  However a consistent issue I've seen with new users is turning on both fixed and gradient shading at once, rendering the underlying map unreadable.  The rationale for collapsing them is partially to save users from that mistake and partially to save space in the ever-growing layer list.

Configurability also allowed me to move the sunlight analysis out of the "add new layer" menu and into the standard layer list.  Check the Sun Exposure layer box and you get two dropdowns - a time of year and a time of day. 

These mimic the Add New Layer -> Add Sunlight Analysis dialog, but make it far easier to walk the time-of-day selector up or down to see how sunlight and shading vary throughout the day.  This has been covered previously, but just for grins here's another example, showing the current sun exposure on Mt Whitney at 8AM:

Daily satellite imagery has been another hard-to-access feature.  I've had a "latest MODIS" layer for some time, but if the most recent exposure happened to be cloudy, dialing back the clock using the archived MODIS feature was a pain - not just having to add a custom layer, but also needing to iterate through the cycle multiple times just to find a clear day.

The "latest MODIS" layer has now been replaced with a daily satellite group that has three different layers - daytime, daytime w/ shaded relief, and nighttime.  After you choose the layer, you can quickly change either the observing satellite or the date of the capture:

Prior-year options provide two dates spaced several days apart, in order to increase the chances of finding a clear day.  The VIIRS satellite has also been added to the satellite list alongside MODIS's Aqua and Terra.

One difficulty I've had with MODIS satellite imagery is figuring out exactly what I'm looking at.  To facilitate that, the "Day (Relief)" layer automatically blends in the enhanced (aka multiply-blend) relief shading:

View of the Yosemite-area high country from a recent clear day.  The relief shading makes it easier to identify terrain features.

Although probably of little practicality, there is also a nightly capture from VIIRS:

Laugh now, but when the apocalypse hits, this will be a critical datapoint for charting the downfall of civilization.

With those layers out of the way, it's time for the big news of the day: weather mapping.  If you're like me - and I readily accept that the average American is definitely not - you've probably spent a fair bit of time with the NWS's point forecast tool.  Want to know how cold it will be overnight? One grid will be 1000' below where you want to camp, while the neighboring one is 2000' above.  Wondering how to dodge an incoming storm while still getting after it?  I'll often look up forecasts for at least a dozen places to get a sense of where the storm is tracking or how strong the rain shadow effect will be.

The best products are the ones you build to solve your own problems, and while they have yet to see much real-world validation, so far I'm pretty happy with the three new weather layers.

The temperature layer interpolates from the NWS forecast grid using CalTopo's elevation data and the 3.5 degree per thousand foot rule of thumb.  It's certainly not perfect: I have to guess at the elevation the NWS is using for each forecast grid square, there are cases where the 3.5 degree rule doesn't apply, such cold air settling in mountain valleys, and mountain weather forecasting is difficult and imprecise to begin with.  However, it still provides a useful visual of the daily highs and lows.

It's definitely summer out there, folks

The color gradient is good for a big-picture overview, but it lacks precision.  For that, the "from" and "to" dropdowns let you set minimum and maximum cutoffs.  To see everything with an overnight low of 40 or higher, set the from field to 40:

The precip layer will show forecasted precipitation for the next 24 or 48 hours, with options for both rain and snow.  While it will probably see some revisions when winter rolls around and I have additional datasets to play with - both larger and colder storms - it's still a useful big-picture indicator as is.  This February, a planned Ouray ice climbing trip was scrapped at the last minute due to unseasonably warm conditions, leaving me with a few extra days of mountain biking in the southwest while en route to Silverton.  With rainy weather rolling through, it took a while to wrap my head around the forecasts for the entire Southern UT / Northern AZ / Northwestern NM region.  A visualization like the one below would have come in useful:

Lacking such quality weather info, I found myself rained out in Moab and had to make do with a pair of backcountry days in the La Sals, which were nothing short of amazing.  So perhaps there's such a thing as over-planning and over-analyzing and we should all just go with the flow.  Except that were it not for CalTopo's planning tools, I'd probably still be trying to extricate myself from some of the dense growth we bushwhacked through.

Both of these layers have their quirks.  In the temperature screenshot above, you can see that the South side of Giraud (unshaded area at the bottom of the image) appears inexplicably colder than the North side.  In the precipitation screenshot, the storm appears to be very respectful of the New Mexico state line, presumably because each side is coming from a different forecast office.  In these situations, it's sometimes best to go straight to the source.

The "NWS Forecast Grid" layer is an interactive data layer showing the center points of the NWS forecast grid squares.  At zooms 12 and above, there is a dot for each grid square; at 11 and below, only a portion of the squares are shown.  Mousing over a grid point shows the elevation I'm using for temperature interpolation, which is just a guess based on averaging points in the grid and will precisely match the elevation the NWS uses.  Clicking on a point opens a new tab with the NWS hourly weather chart:

Going back to the Giraud example, let's take a look at the source forecast data:

Remember that the temperature is representative of the entire 2.5km grid square and not that exact point, but the North side is forecast to be warmer, at higher elevations, than the South side.  Mousing over the 47 degree point shows that I'm estimating it as 11375'; clicking on it, the NWS shows 11132'.  I estimate the 37 degree point South of that as being at 10325', and NWS says 10696.  So it's not just a quirk in my interpolation - they are forecasting the North side to be significantly warmer, despite being higher.

Is that an accurate reflection of reality?  I couldn't say, but I would guess the NWS forecast lacks that level of pinpoint precision.  But I do know that I'd rather have all the data from which to make my own informed decision, than a somewhat arbitrarily chosen point forecast or two.


  1. I like having first light hit me in the morning, now better campsite choices... but what about an eclipse drop-down 😂...