Map creation is divided into several steps:
- entering the geodata (which are points, lines and polygons with appropriate tags)
- styling (specify feature appearance on the map)
- rendering into a raster image (transform geodata and style into an image using rendering software)
You would want a tool that does all the quirks for you behind an easy to use UI. But unfortunately, there is no such tool (hopefully, there will be). So, you have to pick a dedicated tool for each step.
I use the following combination of tools/workflow:
Entering/downloading the geodata
- JOSM editor:
- download a map from the osm server
- edit a map
- upload your changes to the osm server (why won't you share your work?)
- save a map to a *.osm file
- update the import style file if needed
- import a map to the local server
If you don't want to share your work, you can setup the local OSM server and make JOSM work with it (making saving a map to a *.osm file and using osm2pgsql unnecessary). Still, be aware of the license if you use parts of OSM data.
Styling consists of two steps:
- setup layers/datasource
- customize lines/poligons/points/text output.
There are two formats to style a map: "raw" mapnik style file and CartoCSS.
- Mapnik is a rendering library which powers OSM site.
- Setup and edit mapnik style file
- open the style file in the mapnik viewer
A "raw" Mapnik style file is cumbersome to edit, and CartoCSS a simpler alernative. CartoCSS (previously Cascadenik) is convertable to mapnik style file. Tilemill is a tool I use to edit/preview CartoCSS.
- Style/preview your map in tilemill
- export to mapnik *.xml file.
- Custom python script for mapnik
- Update bounding box/zoom level/size
- render map to *.png file.
[Optional] Bring your map online
Of course, you can just use a large *.png file for your map, but imagine how long it would take to download it! So you split your map into tiles at different zoom levels.
Unfortunately, to update your map according to new OSM edits, you'll still have to download and render it locally.
So, there's a better solution: CartoDB. CartoDB supports CartoCSS. With it you don't need to install anything locally. Just import your data into it, style with CartoCSS and click share button. There's a free db size limit though.
But since it's open source you can host it on your own. There's another limitation: you can only visualize either points or lines or polygons.
Every tool has its own limitations, so try to experiment.