The answer is not very - there are the main roads, and a few minor roads and footpaths, but not much else - this is a shame because I like to know where things like supermarkets and banks are. Unfortunately there is not a lot of information available for remote mapping - very few GPS traces, and Bing Imagery does not cover the area I am interested in.
So instead I decided to make myself a map of the island showing what is there (in OSM anyway). Because there is not a lot of detail, I want to have contours so I can tell where the mountains are, and also highlight what points of interest there are at lower zoom levels than the standard OSM style. These are my notes on how I produced the map, so I can remember next time I need to do it.
- The map bounding box was found by looking at the (lon,lat) readouts on http://www.informationfreeway.org to check the bottom left and top right of the island. They are (20.33, 38.03) and (20.82,38.50).
- I downloaded the OSM data from the mapquest XAPI server using:
wget http://open.mapquestapi.com/xapi/api/0.6/map?bbox=20.33,38.03,20.82,38.50 -O kefalonia.osm
- Imported the data into postgresql database using:
osm2pgsql -s -S default.style -d kefalonia -m kefalonia.osm
- Downloaded the SRTM elevation data covering the island from http://dds.cr.usgs.gov/srtm/version2_1/SRTM3/Eurasia/ - only needed one file (N38E020.hgt.zip), because it is a small island.
- Generated the contours and imported them into my postgresql kefalonia database as described in http://wiki.openstreetmap.org/wiki/Contours.
- Modified the standard osm mapnik style file as described in http://wiki.openstreetmap.org/wiki/Contours, using the 'PostGIS' method.
- Generated the map image using the generate_image.py file from the OSM mapnik archive. I initially had some trouble with no roads appearing, but solved this by re-compiling osm2pgsql from the latest sources - I do not know what the problem was.
- Having done that, I get this map image:
Kefalonia Map - Version 1 (25 April 2011) |
I did this by adopting the generate_graticule script from mapnik-utils to produce a grid on the google spherical mercator projection (=SRS 900913). I must admit to not really knowing how this works, but my updated version (generate_grid.py) is in my SVN repository. I added this to the map by creating an extra xml include file to define the grid layer and style (inc/grid.xml.inc), adding this to layers.xml.inc, and finally defining the layer in osm.xml.
The result (Version 2) is shown below:
Kefalonia Map Version 2 (26 April 2011) |
This gave the following map:
Kefalonia Map Version 3 (26 April 2011) |
The final thing I needed was the English spelling adding to the Greek text labels. I did this by adding name:en to the default.style file used by osm2pgsql and re-importing the OSM data into the database.
The challenge was updating the mapnik style file to use the name:en column - the OSM style files are very complicated with lots of SQL SELECT statements to extract the data out of the database. I was tempted to do a global replace of 'name' with 'name:en'...but 'name' appears all over the place.
I decided the main thing I wanted with both writing styles were place names and I found the code for them in inc/layer-placenames.xml.inc.
I modified the SELECT statement from a simple 'name' to ,'"name" || ' (' || "name:en" || ')' as name'. This gives me the greek spelling followed by the english spelling in brackets using the postgresql '||' string concatenation operator. The result is here:
Kefalonia Map Version 4 (27 April 2011) |
No comments:
Post a Comment