I’ve been playing around with OpenStreetMaps recently. I downloaded a subset of the world data set covering San Francisco by using this tool: http://18.104.22.168/. I loaded the data into a local PostGIS database with osm2pgsql. Then I spent a couple hours installing the prerequisites for Mapnik and building Mapnik itself, which was the hardest part but still very doable. Once Mapnik was installed, I was able to use the generate_image.py script to generate a quick map of SF. Next step is to learn how to build tiles for slippy maps, and then how to customize them.
The process was mostly easy and rewarding. One funny quirk: osm2pgsql can’t do password authentication to the database, so it’s most convenient to use a passwordless account. Mapnik, on the other hand, appears to choke if it is given an empty password string, so you need to add a password to the account once you get to the Mapnik stage.