Everyone is busy sticking pins in the earth via either Yahoo's or Google Earth/Google Maps' APIs. But what does it take to build an application from scratch? There are three basic components:
- Data - lots of it; satellite data and GIS data.
- Maths - projections (mapping projections and 3D projections).
- Code - you need to build a client server architecture.
For satellite data, you need global coverage and you need detail. Currently, most of the great coverage - i.e. the coverage that produces the 'wow, have you seen this?' reaction, is limited to certain areas of the planet and certain types of locations. Google's data, for example, is heavy on cities, but not so heavy on places that Matt Hurst wants to go on vacation. This makes a lot of sense as the first thing people do is to look up where they live to see it from the sky. Populations are denser in cities, so more satisfied customers.
These pictures are comparable in quality. Of course, downloading and storing all the Landsat data would require significant disc space. However, if you have the right architecture, you could potentially use the web interfaces to this data to act as your server. Whatever you want to do, you want to have a look at https://zulu.ssc.nasa.gov/mrsid/mrsid.pl.
Next GIS data - you want boundary information and place name information. The first allows you to draw the polygons around countries, the second allows you to pinpoint cities (and act as a resource for location searching and geocoding). For this, turn to the world of potatoes. Specifically, the country data found via the Centro Internacional de la Papa. This will give you all the country boundaries as well as a goodly amount of admin1 and admin2 level data (i.e. states and counties or similar).
For location data, there is little to rival that provided by the Government of the USA. The Geographic Names Information System (GNIS) provides very large datasets of locations, names, alternate names, etc.
Coming in part 2, pointers to the mathematics needed to quickly play with this type of thing.