How to put zipcodes data onto a web map?

From what I've gathered you've got a list of zip codes and their respective coverage status.

Get the Shapefile

First off you will need to source something called a 'shapefile' which defines the boundaries of the zip codes that you have. A simple google search brings up the following page: http://www.census.gov/geo/www/cob/z52000.html (...assuming you're American)

Note that if your analysis spans multiple states, it would be more convenient to continue searching for a shapefile which spans the continental USA. Likewise, you could search for a more recent dataset, but my guess is that Zip boundaries don't change considerably enough to change your results.

Get the Software

Once you've got the shapefile, note a shapefile is actually many files (.shp, .dbf, .shx ...), you'll need an application to open it in. QuantumGIS (QGIS) is the most common FOSS alternative to the commercial packages. In addition, this site has tracklog of well answered questions given the handful of advanced users who frequent here. New users are reccomended to download the latest version here.

Checklist

At this point, it's assumed you have the following:

  1. Shapefile of Zip Code Areas
  2. Table of Information about Zip Code Areas
  3. Spatial Application to Process 1 and 2

Given you've only obtained one spatial file, there's little point in getting into the details of Coordinate Systems, and Projections. You should be aware, however, that these things exist and are the root cause of many problems between multiple datasets.

What to Do?

What you need to do at this point is associate the two sources of data that you have. In spatial/database terms this is simply called a 'join'. The image below provides a working example of rainfall per county.

enter image description here

KEY POINT HERE: Ultimately you will want to join every record in your shapefile to every record in your coverage data. The link between the two files will be the zip code field in each data source.

Do The Work

Have a look at the following tutorial on joining data in QGIS which links data at a state level:

http://mapbox.com/tilemill/docs/guides/joining-data/

(I'm happy to fill in the gaps here if you have issues, but I don't want to reinvent the wheel considering the depth of your question)

Symbology

Once you've created a join you need to give it context by applying symbology. I would imagine that 'good' coverage areas will be green, while 'bad' coverage areas would be 'red'.

Again, have a look at this tutorial for vector symbology in QGIS.

Discussion

As requested, I believe I provided enough information above to get you started. Please have a look at the QGIS manual if you have further questions about symbology, output and printing. For anything else you're stuck on, gis.se is here for your questions.

Links

If my information isn't enough for you to get going, by all means please comment. Otherwise, here are some other sources of general instruction for the software.

QGIS User Guide

Chapter 2 - Managing your data

Joining Data from an ESRI perspective


If you are completely new to GIS then why not just stick with the Google Maps API? If this is not an option then you may want to consider OpenLayers, an Open Source Mapping API, possibly combined with GeoServer if you want to be serving your mapping from a Web Server. With OpenLayers you can start using OpenStreetMap as an alternative to Google Maps.

If you are wanting to create static maps you could use some Desktop software to create high quality PDFs/Images. You can get a free trial of MapInfo Professional or ESRI ArcGIS, who are the big boys of Desktop mapping, or there are some Open Source Desktop alternatives such as GrassGIS.

If you are trying to spatially reference your data using Zipcodes then you'll also need this data, I have no idea where you would obtain this from however since I am from England :)

I hope this get's you started.


I actually developed a project like that, some years ago. Still being used by some mobile phone carriers in Spain. One of them: http://www.simyo.es/mapa-cobertura.html

I did it using PostGIS (to load the shapefiles with coverage data) gdal_rasterize (to rasterize the shapefiles into raster files) and gdal2tiles (to build a mosaic of PNG tiles adapted to several zoom levels from the raster files generated by gdal_rasterize). For the visualization, Google Maps, getting the PNG files from disk (see GTileLayer class)

Basically, I created a complete tile cache with gdal2tiles. Of course, this isn't the best solution, but the project's requisites drew the lines. The biggest problem I see to this approach is the statism. The tiles take too much time to be loaded. And once the they are created, you can't easily change them without re-processing.