Hack 4. Find Your House on an Aerial Photograph
"You Are Here" is a quick piece of wish fulfillment for the amateur cartographer.
The free Terraserver service (http://www.terraserver-usa.com/) offered by Microsoft provides a friendly interface for finding things and viewing base maps made from aerial photographs. Once upon a time, Terraserver covered the whole world on a large scale, but now it only republishes USGS maps for the United States The imagery can be as detailed as one-meter resolutionthat's one meter per pixel, a pretty good resolution for aerial photography.
1.5.1. Searching Terraserver
Terraserver provides many different ways to find what you're looking for. Follow the "Advanced Find" link on the left to find the different search options. You can search for an "Address," which Terraserver will attempt to geocode. If the geocoding works, you'll get a list of one or more likely matches from which to choose. It works similarly to the free geocoding service described in [Hack #79] .
You can also search for an identified "Place"any spatial feature noticeable enough to be given a name by the U.S. Geological Survey. Terraserver will do a loose match from the beginning of the name you search for. In [Hack #85], we describe how to use the freely available GNIS data to build a geocoded index of noticeable places.
If you know the latitude and longitude of your house or other interesting place, select the option "Geographic" from the lefthand menu and ask Terraserver to map the coordinates. You can enter either decimal degrees, which most geo applications prefer for ease of processing, or the older convention of degrees, minutes and seconds.
Figure 1-6 shows a sample Terraserver map: aerial photography from the USGS, showing the location of the O'Reilly Media offices in Sebastopol, California. Many of the free aerial photos are pretty old, though: as this was taken in 1993, it just shows the apple orchard where the O'Reilly campus is now.
Figure 1-6. Aerial photo of Gravenstein Highway
1.5.2. Hacking Terraserver
The Terraserver web site generates URLs for images that look like this:
GetImageArea.ashx?t=1&s=10&lon=-122.842232&lat=38.411908&w=600&h=40
The t parameter indicates which type of base map you want. t=1 shows you aerial maps, and t=2 shows topographical maps published by the USGS. The s parameter represents a scalefrom 10 for small-scale maps at 1-meter resolution, to 19 for large-scale maps at 512-meter resolution.
Back in the day, the good people at ACME Maps provided their own, home-hacked version of a programmatic interface to Terraserver. It allowed you to post coordinates directly and get back map tiles neatly sewn together. It's still available at http://acme.com/mapper/.
Now the Terraserver developers have seen the light of making interfaces to programs openly available over the Web, and they provide several web service interfaces, including a Web Map Service, several WSDL interfaces, and an API for the .NET framework. Learn more about what's available at http://www.terraserver-usa.com/webservices.aspx. For an example of what can be quickly hacked together with the Terraserver WMS interface, check out http://hobu.biz/ and type your address into the "geocode" box on the bottom right. This hack uses a smidgen of python to glue http://geocoder.us/ and Terraserver together.
1.5.3. Other Good Online Sources of Aerial Photographs
http://www.terraserver.com has been around for longer than the better-known Microsoft Terraserver. Its interface is less sophisticated, but the site has a better index of aerial photographs and topo maps from different sources around the Web. It also has false-color Landsat satellite images that cover the whole world, not just the U.S. To see what different sources of aerial photographs and other maps it has for your area, visit http://terraserver.com/search/coordinates_search.asp. If you're in the U.S., you can get the coordinates for most addresses from the http://geocoder.us/ service. One thing to be aware of: if you're using decimal degrees, it's conventional for points west of Greenwich (up to the antipode, 180 degrees away) or below the equator, to be represented as a negative value. But terraserver.com needs you to put in the compass direction instead of a positive or negative value.