Wednesday, June 26, 2019

Sentinel Satellite Imagery

Note: due to the costs of accessing this data, it may be restricted to paid CalTopo accounts at some point in the future - we're going to leave it public as a trial run and see how that goes.

It's been a long, heads-down grind here at CalTopo as we work on the app, and new desktop features have been put on hold for now.  Occasionally, however, something crosses our desk that's so exciting that we can't not work on it.  Sentinel imagery is one of those features, and I haven't been able to put it down since discovering it yesterday.

Thanks to the Copernicus program, its Sentinel satellites, and the Sentinel Hub aggregation site, CalTopo's low-resolution MODIS daily satellite imagery is now supplemented by high-resolution Sentinel imagery on a weekly update cycle (Sentinel-2 images the globe every 5 days, but to keep things simple, the CalTopo UI uses weekly blocks).  For now, the layer is named "Weekly High-Res".

As with MODIS, once you select the layer, there are some configuration dropdowns:

When it comes to pre-trip planning, I truly believe this is a game changer - and that's not a term that's thrown around lightly at CalTopo.  How good is it?

A major use case is checking snow coverage for spring or summer trips, for example Mt Whitney.  MODIS can often give you a rough sense of the snow level to +/- 1000', but here's what it looks like zoomed in:

By comparison, here's a Sentinel image taken sometime in the past 5 days:

Dialing the clock back two weeks (+/- the 5-day acquisition window) gives a sense of the melt rate.  For exact dates, you'd need to consult Sentinel Hub's playground.

Say you want to know how 2017 (another high-snow year) compares to 2019?  Setting the timeline to "2 years ago" shows slightly less snow than the most recent shot from this year, but given the melt rate and uncertainty around exact acquisition dates, I don't think you can draw any conclusions other than the years being roughly comparable:

If you're not familiar with the Whitney area, a satellite image alone isn't going to help orient yourself.  Here's MapBuilder Topo blended with false color Sentinel imagery, giving a good visual of snow coverage without obscuring the map features:

Beyond snow coverage, here's a pair of images showing how Lake Powell's changing elevation over the past two months has impacted a canyon (show in false color so that the water is easier to identify):

Tuesday, April 2, 2019

Hiring For "Everything But Development"

Update: thank you for all the interest, the position has been filled.

The time has come for me to offload a number of non-technical tasks; I don't know what the right job description is, so for now let's call it "Everything But Development".  This a remote position - work from home, your van, or wherever.

The baseline job requirement is customer support, both handling support requests and improving CalTopo's documentation.  At the moment this only adds up to a few hours a day, so ideally you will also take on some combination of marketing (everything from market research to wording on the upgrade page), business development (licensing map data for use in CalTopo, exploring integrations with other services) and product management (helping to shape the product roadmap).

The following are not required but are considered pluses:

  • A CalTopo user with in-depth knowledge of the site and the ability to answer advanced questions without significant on the job training.
  • California, Washington, or Colorado residency.  As a remote employee, CalTopo LLC will have a business presence in your home state.  Some states are easier to work with than others, but CalTopo is already registered in CA, WA and CO.
  • A part-time presence in Truckee, CA.  This is skillset dependent; customer support can be done from anywhere, while product management would require more frequent in-person collaboration.
  • First response experience, particularly in the backcountry (SAR, Fire, NPS, etc).  This is is an important and growing customer base for CalTopo, and as with the recreational side, domain knowledge matters.

I realize this is asking for a diverse skill set, and that anyone with significant specialized experience is not going to be excited about adding customer support back into their job description.  However, in return you get no commute, generous vacation and the ability to work on a product you use regularly.  I'm open to a range of experience levels, including an entry-level support role without the collateral duties, so if you're uncertain whether you'd be a good fit, feel free to reach out.

One hard requirement is that you must be able to pass a background check.  Customer support requires access to to CalTopo and SARTopo user data, which includes law enforcement sensitive information on missing person's cases.

For more information or to apply, email

Saturday, December 22, 2018

Android Open Beta

The CalTopo blog has been pretty quiet over the past year, but not due to a lack of innovation.  Rather, we've been focused on a top secret project - one that after 18 months of development is finally secret no longer: a phone app.  Today marks the release of an open beta test for Android; iOS will hopefully follow before summer.

First, let's set expectations: the app is still in development, and this is a beta test.  There are probably some major bugs related to specific platforms or android versions that we haven't caught yet, and some obvious functionality is missing, such as the ability to place a marker at your current location.  We're releasing this not because it's a finished product, but because we're at the point where we need testing and feedback from a broader audience.

With that said, what does the app offer?  I'm going to keep this blog post short and refer you to the Play Store listing, but the short version is that tight integration with provides some amazing benefits even if the app's functionality isn't fully fleshed out.

The offline map downloader uses a pre-packaged 15'x15' grid for fast downloads.

The app is free, and for now the only restricted feature is offline map downloads, which are tied to existing CalTopo plans.  Basic accounts get 5GB/yr, which is enough to cover the entire JMT at high resolution (2 meter / pixel or zoom 16) with the USGS, NAIP Imagery, MapBuilder Topo/Hybrid/Overlay, shaded relief and slope angle shading layers.  Pro accounts get 30GB/yr, which can cover the PCT with those layers twice over at a moderate resolution (4m/px or zoom 15).

To keep downloads small, some offline layers are computed from others: if you have elevation data, you automatically get slope angle shading, and if you have MapBuilder Topo and NAIP Imagery, you automatically get MapBuilder Hybrid.

Go check it out, we hope you're as excited as we are.

Tuesday, November 20, 2018

New MapBuilder Roads Option

One feature request I get fairly often is a better printable roads layer, primarily from SARTopo users for use in both urban searches and disaster response.  The USGS layer is out of date, MapBuilder doesn't show enough street names, and OpenStreetMap gets shrunk to the point of illegibility when printing.  I've always assumed that the proper answer was to bring the default OpenStreetMap style into the MapBuilder rendering stack, which would allow scaling it to match a PDF's resolution - but because that introduced a number of complications, I kept kicking the can down the road.

Necessity is the mother of invention, and a little over a week ago I was called to the Camp Fire in my role as a SAR team member and found myself needing to generate a lot of street maps.  One requirement was that they display as many street names as possible, so that responders from around the state could use them for navigation despite not being familiar with the area or having a cell signal.  A clean white background was also important to allow marking up maps in the field.  Fortunately I'd just wrapped up a MapBuilder import and had a second rendering server sitting idle with the new database, so I was able to hack together a new layer style quicker than expected.

There are a lot of lessons learned from trying to apply my wilderness SAR background to an urban disaster, but one of those is that the new roads layer is here to stay, and I'm sorry I didn't have one out sooner.  It will probably get tweaked further and eventually added as a primary layer, but for now it's only available as a custom MapBuilder layer (pro level account or higher required):

Check "compress text".  Recommend setting roads to "thin lines".
With the "compress text" box checked, a number of changes are made to support showing as many street names as possible:

  • Suffixes are dropped (drive, road, street, etc)
  • Font size for road labels is reduced
  • Labels are allowed to bend more
  • Labels are spaced closer together
The Oakland hills with most streets labeled at a1:12k scale
The result isn't exactly pretty compared to something like Google Maps, but it's fairly effective as a first response tool since it will show a lot of street names at usable map scales like 12-24k.

San Francisco at 1:12k

Even at 1:24k, a lot of Berkeley street names still get shown

The layer didn't exist 10 days ago, and hasn't seen a lot of careful development or evaluation, so feedback and suggestions are definitely welcome.

Tuesday, September 18, 2018

Major Offline Improvements

A new version of CalTopo Offline and SARTopo offline has just been released (4151), with several major improvements:

1.  Real-time syncing between offline and online versions.  All of your maps from the website will show up in the offline version, and changes will automatically sync between the two.  If you make a change while offline, it will be queued until you regain internet access.  This is helpful both when starting a project online and then taking it into the field, and also when working in an area with unreliable internet, so that you can keep changes synced to the outside wold without being at risk if the internet dies.

2.  New map downloader that downloads offline map data within Cal/SARTopo Offline.  This makes it much quicker and easier to download large areas than the old web-based downloader.  Because the new downloader offers multiple resolutions and is built on a 15x15 minute grid, it also gives you more control over how large your offline maps are.

3.  Revised layer selection.  Elevation, slope and aspect data are all rolled into a single layer.  Shaded relief and slope angle shading are automatically computed from elevation data, and no longer need to be downloaded separately.  Most excitingly, MapBuilder Topo, Hybrid and Overlay layers now have full coverage for the contiguous US.

4.  Layer caching.  Map areas viewed in the offline version when you do have internet access are cached for later use offline.  So even if you haven't pre-downloaded an area, it may still be available when offline.

Tuesday, September 11, 2018

Come Work For CalTopo

CalTopo is growing!  I'm looking for a contract graphic artist and a full-time UI developer.  Come work on a product you actually use, in a job with significant flexibility.  For more information, email

This could be your office (deck not included in job offer, applicant to supply their own)

Graphic Artist

I'm looking for a graphic artist to take on a contract project revising and expanding the current icon symbol set.  If things go well there's potential followup work (UI icons, MapBuilder symbology, general UI design), but nowhere near enough to add up to a regular job.

I'm also looking for assistance creating a logo, whether that's the same designer described above or a specialized professional.

UI Developer

The baseline for this full-time remote position is a competent developer with a solid web UI skillset, able to be turned loose on projects with minimal supervision.  Preferably, you can also take on UI and interaction design, coordinating with a graphic designer on the visual pieces as necessary.  Ideally, you can tackle the entire UI development cycle from graphic design through development.

The following are not required but are considered pluses:

  • A CalTopo user or outdoor enthusiast.  This is a position where domain knowledge matters.
  • California or Washington residency.  As a full time remote employee, CalTopo LLC will have a business presence in your home state.  Some states are easier to work with than others, but CalTopo is already registered with CA and WA.
  • OK with occasional travel to Truckee, CA (potentially up to several days a month, generally less).  Although the position is remote, face time can be important for collaboration, particularly at the beginning of a design.
  • First response experience, particularly in the backcountry (SAR, fire, ranger, etc).  This is an important and growing customer base for CalTopo, and as with the recreational side, domain knowledge is useful.
  • Mobile development experience. 

Friday, October 13, 2017

Wind Forecast Layer

When I added the weather forecast layer this summer, I mentioned my frustrations with the way the NWS requires you to bring up endless point forecasts to get an accurate picture of local precipitation amounts.  With the Northern California fires, I'm running into the same issue with wind - I'll read about a forecasted red flag warning, but the Napa and Santa Rosa forecasts barely hit double digits.  I'll admit that I had no idea wind speeds were so locally variant - or at least, no idea that the NWS forecast grid captured such small-scale variations.

24hr wind gust plot.  From 15mph in St Helena to 50mph on Mount Hood just 3 miles away.

Fortunately I already had wind speed mapping on the back burner - it didn't get deployed along with the earlier temperature and precipitation work, but most of that code was reusable.  I can't show wind direction - even if I were to render directional arrows on the map, frequent direction changes make it impossible to show a single meaningful 24hr or 36hr wind direction.  However peak forecasted wind speeds and gusts are shown for 1hr, 6hr, 12hr, 24hr and 36hr intervals, using the same green-yellow-orange-red-purple-blue-black gradient scale as the temperature layer.

One option that does provide wind direction is the crowd favorite  However, windy does not reflect the small-scale variations in the NWS forecast grid (see below).  As with temperature and precipitation, it's an open question as to how accurate the NWS grid variations are, but I like to provide as much raw data as possible and let users draw their own conclusions. plot of the same location
The wind layer is a checkbox option alongside temp and precip:

The forecast grid option immediately below will also show point speeds (remember, the point is simply the center of a grid square, and the forecast applies to the entire square), and clicking on a point will bring up the hourly weather chart.

I feel like I've pretty much run through the backlog of fire-related items I had sitting around, so I think this will be the last major layer change in response to the Northern California fires.

Update: there are now two wind layers, the "max wind speed" layer as described above, and a "wind plot" that provides forecasted directions and speeds for specific points in times, at 3 hour intervals to 12 hours, and then 6 hour intervals to 36 hours.  The same color chart is used for speed, with short lines tracing direction.  The length of the lines has no meaning.