(hospitals, parks, etc), bodies of water, etc. in the United States. This data set is
referred to as the TIGER dataset (Topologically Integrated Geographic Encoding and
Referencing system). We are using the "2006 TIGER/Line" dataset.
This project relies on processing the raw TIGER input data, combining it with other
census data (e.g., population estimates for municipalities), and rendering the map of the
US as a set of tiles. We will use Hadoop to perform this processing in parallel.
In the next assignment, you will take your computed data and host it on Amazon's EC2
and S3 platform, building a dynamic web application to allow access to your information.
Effectively, assignment 3 is the Google Maps "backend" assignment, and assignment 4
will be building (a simplified version of) the Google Maps frontend without traffic
We have provided starter code at
-- you should use this as the base for your
project, conforming to its interfaces and extending it where indicated.
Tiles, Ranges, Zoom Levels, and Tile Sets
It is inefficient and unwieldy to attempt to render the entire map, at every zoom level
you would like, as a single entity. So we break the map into tiles.
is a square region of the map corresponding to the smallest unit we render at a
time. The view that you display in a web browser is made of several tiles arranged in a
2d grid. A tile is defined by a
which is a northern-most and a southern-most
latitude, and a western-most and eastern-most longitude. We are making a major
simplifying assumption in this assignment, that latitude and longitude are a rectangular
coordinate system. This will result in some rendering inaccuracy, but for the latitudes in
the USA, this is acceptable.
The tiles are arranged in a rectangular grid across a
. The mappable
range is the entire area we wish to render (e.g., the whole USA for your final production
run, or maybe a few square miles for testing). A mappable range is a square (assuming
rectilinear latitude/longitude) defined by the latitudes and longitudes of its edges. We
break the mappable range into a 2D array of tiles.