Fetching Digital TOPO Maps from Terraserver

First off, there seems to be more than one Terraserver.

USA Photo Maps is a open source C program (but only for windows, it buys heavily into .NET) that displays maps and photos from Terraserver.
Supports various GPS devices. Actively under development as of 7-31-2007 (version 2.76).

TerraServer stores information as a hierarchy of tiles. All tiles are 200 by 200 pixels. Tiles can be fetched as JPEG or GIF images. Photography is available at 1, 2, 4, 8, 16, 32, and 64 meter resolution. Maps are available at 2, 4, 8, 16, 32, and 64 meter resolution. High resolution data is available for some urban areas.

TerraServer locates tiles based on the UTM coordinate of the lower left corner of the tile. The UTM (Universal Transverse Mercator) coordinate system divides the world in to 60 zones, each 6 degrees wide in longitude. Zone 1 is just east of the international dateline (longitude 180). Notice that zones numbers increase towards the east, whereas longitude increases toward the west. Zone 10 is the first zone that covers the continental US (ignoring Alaska). Zone 11 goes from longitude 120 to 114.

Tile numbers are based on UTM coordinates. UTM is a nice clean system, but converting from longitude and latitude to UTM is pretty intricate. First of all you need to know the datum. NAD83 (North American Datum of 1983) is what we want. The relevant parameters of NAD83 are an equatorial radius of 6,378,137 meters, a polar radius of 6,356,752.3142 meters, and a flattening (a-b)/a of 1/298.257223563. Note that NAD83, WGS84, and GRS80 are identical for all practical purposes. For details see:

To work with Terraserver, you want the UTM coordinates of the lower left corner of your tile. Then if you know your zone, and the resolution of the tile you want, you do some simple division and truncation. You pass to terraserver the zone number, tile-x, and tile-y and voila

There are lots of technical details about using "Terraservice", as they like to call it, on the Terraserver website.
Here are some useful links into this site:

TerraService is a web service based on the SOAP protocol, though they never come right out and say that in the Terraservice documentation. They assume (and say as much) that you will be using C# and SOAP is just a hidden part of .NET (which they definitely do talk about).

Here is an example image fetched via the HTML protocol:


Feedback? Questions? Drop me a line!

Uncle Tom's Computer Info / tom@mmto.org