Wednesday, May 4, 2016

New Help System

Answering emails has become a growing part of my daily routine, and I've been looking for ways to cut back.  A support forum felt like the obvious answer, but I didn't want to force people to signup for forum accounts, and it would be nice if private account issues could be handled in the same place as public UI questions.

I recently discovered Tender (, not to be confused with the food-dating tender smartphone app), and it looks like a good fit.  Forum-based discussions that anyone can chime in on, email integration, and the ability to set conversations as either public or private.

There's now a new help and support site up at, with a discussion forum and soon-to-be-expanded knowledge base.  Once the kinks are worked out, I'll start routing emails there as well, so that I can make useful conversations public.

Friday, April 1, 2016

New Zealand Topo Coverage

One of the advantages of shifting to a paid, commercial model is that it gives you cash to spend on things.  In one my first expenditures beyond CalTopo's regular operating costs, I've acquired a copy of's tile set, expanding scanned topo coverage to New Zealand.

As with coverage for Canada, none of the elevation based layers - shaded relief, slope angle shading, etc - work in New Zealand.  You're limited to the government produced topo layer, although the small / interactive profile will still work as it uses Google's elevation data.

As with Canada, these maps have been seamlessly integrated with the "USGS 7.5' Topos" layer; there isn't a separate NZ-specific option.  No comment as to when or if CalTopo might expand to other countries, although it certainly helps if there are ready-to-go tilesets, rather than me having to stitch together innumerable PDF scans.

Wednesday, March 9, 2016

Auto Routing

While the freehand drawing tool helps, it's never been easy to plan long-distance trail hikes using CalTopo.  The only two ways to get realistic mileage estimates were to painstakingly trace over the map, or import someone else's GPS tracks.

By piggybacking on the MapBuilder database, CalTopo now has an auto-routing feature.  There are still a few quirks to work out, and at least until that happens, I'm leaving the feature off by default.

Start by creating a line, the same way as always:

Once you're in drawing mode, there's a new "snap to" option at the top right of the screen, next to the layer control:

As the names suggest, None turns the feature off, OSM uses OpenStreetMap data, and USFS uses Forest Service data.  With auto-routing enabled, roads and trails show on the map as semi-transparent black lines:

To begin routing, click one of the segments (it will turn red when you mouse over):

Once you are snapped to a segment, mousing over additional segments will automatically create a routable line.

Mouse back out and you'll see the traditional straight drawing tool:

Unlike typical routing tools that require you to specify start, end and mid points, this makes it easy to jump between trails and cross-country travel within the same route.  Some of the known quirks at this point include:

  • Roads and trails need to have a common vertex for the auto-router to recognize that they intersect, so some of the solutions it comes up with will not be optimal travel routes.  Think of it as "auto drawing" rather than "auto routefinding".
  • Some OSM trailheads have small gaps between the road and the trail; the auto-router will not properly jump between these.
  • For performance reasons, only 2000 lines are pulled back at once.  At wide zoom levels, the road/trail network shown will probably be incomplete.
  • Computations can lock up the browser for several seconds, especially when scrolling to a new coverage area.   Clicking on the map during these lock-ups causes the auto-router to loose track of the line you were snapped to.

Accurate trail mileages are an issue that comes up constantly, and there's no easy answer.  However, I thought the JMT would be a good test case.  In the summer of 2014, I had to plot a JMT route by modifying some PCT GPS tracks available online.  This time I was able to trace it out in a couple minutes using the auto-routing tool; the slowest part was making sure I stayed on the JMT proper rather than a nearby variation.

routing mid-trail

The CalTopo-drawn line was 210 miles to Whitney Portal, vs the official number of 221.  So about 5% short, which doesn't seen too bad.

Friday, February 19, 2016

Custom Layers

For advanced users, CalTopo offers a number of custom layers: MapBuilder, viewsheds, sunlight, scanned maps, DEM-based shading and third-party WMS and tile sources.  A persistent issue with these layers is that they are tied to either the map you are working on, or the URL of a blank page.  It's easy to go wild customizing them, and then suddenly find yourself starting from scratch with a new map.

In a long overdue solution, you can now save custom layers to your account.  Every custom layer dialog has a "Save To Account" link at the bottom which adds that layer to your account:

As with maps, these layers are listed on a tab on the account dialog:

And shown in a separate section of either the layer dropdown or the overlay list, depending on how the layer is configured:

Additionally, for subscribers, these layers will show up in your KML SuperOverlay File, or for pro users, WMS or WMTS Service:

A viewshed overlay in Earth
Sunlight analysis viewed in Earth

Friday, January 29, 2016

Improved Google Earth Integration

A lot of people use Google Earth to supplement CalTopo's route planning features.  Given that, I'm happy to announce a big step forward in integration between the two.

First, the export menu now has two Earth options - the traditional KML file, and a KML network link, which provides for automatic syncing between Earth and your CalTopo map.  When you open the network link file in Earth, changes get pulled from CalTopo every 10 seconds - move a marker or draw a new line, and boom, it will appear in Earth within seconds.

Data only syncs one direction; changes made in Earth will not be picked up by CalTopo.

The second big change is better layer integration.  I've always provided a few "super overlay" files for loading topos into Earth, but it was an obscure feature limited to a handful of layers.  Now, basic and pro subscribers have access to an improved file, located on the account tab of the account dialog.

Download this file, open it in Earth, and you can pull in a wide variety of CalTopo layers, including previously-inaccessible transparent ones.

A few examples:

Desolation Wilderness with the MapBuilder Overlay layer
Slope angle shading on a popular Tahoe backcountry ski spot

Public/private land boundaries

Sunday, December 6, 2015

PDF Improvements

CalTopo PDFs are now sporting a couple of improvements.

The most noticeable of those is a title input field on the print page:

If filled out, it will show up in a couple places.  On the bottom of the PDF itself:

on the account dialog:

and also in Avenza PDF Maps:

Slightly less noticeable is an improvement in label positioning.  Before, labels were drawn without regard to each other; on a busy map, this resulted in an unreadable mess.  Now, labels will not draw on top of each other.  If two labels conflict, the PDF generator will attempt to move them around (to only few positions; it's not very smart yet), and if that doesn't solve the problem, it will omit the second label to improve readability.

Label 2 automatically floated to the left to avoid conflicts.

Finally, although hard to demonstrate on a screen, MapBuilder layers will now print better.  To create high resolution PDFs, CalTopo starts with a large image and then shrinks it down to fit the page.  With layers that look the same at all zoom levels, like USGS map scans, this works great.  With layers that get redrawn at each zoom level, like OpenStreetMap, shrinks all the lines and text down to the point where they're hard to read.

When you print a MapBuilder layer, the PDF generator will request a tile that's been scaled up by a custom amount so that lines weights and text will come out looking right.  This is only possible on layers produced in-house, but at some point I may ramp up an OpenStreetMap server so that I can do the same thing with OSM maps.

1:24k PDF created without scaling

1:24k PDF with scaling

Tuesday, December 1, 2015

WMS and WMTS: Using CalTopo Layers In ArcGIS

I regularly get asked about using CalTopo layers in desktop programs, often but not always ArcGIS.  There are a number of protocols for accessing seamless map data, and one of them (WMS) has been supported by CalTopo for a while.  However I always kept it closely guarded - if you asked nicely I'd provide the URL, but implore you not to share it with anyone lest a horde of ArcGIS users descend on my server.

With the introduction of paid subscriptions, I can now make this a publicly known feature, along with WMTS support for serving tilesets as-is.  As a note, this is limited to pro accounts, which seems reasonable to me as most people who need to import custom layers into a GIS program are likely paid professionals.

Access is restricted using account-specific API keys.  Click on your account name at the top of the left bar, and then the "Your Account" tab in the dialog.

If you are a pro-level user, you'll see an API access section with links to the WMS and WMTS endpoints.  In this case, ABC123 is my auto-generated (and made up) API key.

If the program you're using supports WMTS, you'll have better luck using that to serve tiles and letting your program combine them into a seamless image.  Because WMS has CalTopo's server compose a new image every time you pan the map, redraws will be slower and can't take advantage of caching.

Both services are provided in spherical mercator projection only (EPSG 3857, 900913, etc).  If you need something else, your GIS program needs to be able to do the reprojecting.

Also note that unlike traditional WMS services, CalTopo's WMS API is only intended to have one layer turned on at a time.  If you turn on multiple layers at once, you may get unexpected results, including no data showing up.

Comprehensive instructions for your program of choice should be available online, but an abbreviated version for ArcGIS and WMTS is shown below.  To start with, on the Add Data dialog, find the GIS Servers folder and choose "Add WMTS Server".

Enter the WMTS URL from your CalTopo account dialog, click Get Layers to verify it, and then OK.

Choose the layer you want to add.


As another example, here's the new MBTopo layer rendered in ArcGIS: