MapServer + OpenStreetMap: reprojection hell

(apologies for cross-posting)

Hi everybody,

I’m trying to render openstreetmap data on a WMS on MapServer and I posted something already about this. Now it’s time to summarise everything and make some sense of this.

The system used to work with epsg:4326 (LATLONG from now on) but in our project we need a GoogleMaps like projection and we chose epsg:900913/epsg:3785 (MERC from now on).

This is our problem. We need the image on the right but we’re getting the one on the left, a flattened map:

After a lot of work and unsucceful tests I post here the outcome, hoping that it will be helpful to the community - and to us :slight_smile:

These are the steps I followed from the very start:

  1. download osm xml file from Cloudmade (e.g. Italy.osm.bz2)
  2. Run 900913.sql on my PostGIS (optional, it shouldn’t matter).
  3. import that file into PostGIS with command (latlong option selected):

./osm2pgsql -U userid -W -H host -d maps -p myprefix -S -c -l italy.osm.bz2

  1. At this point everything seems ok. The geometry columns have latlong as SRID and the tables contain geometries.
    It’s possible to visualise this dataset with uDig or other tools and reproject it.

  2. Now we want to render this stuff on MapServer. So we add the espg configs from to our mapserver espg file:

<900913> +proj=merc +lon_0=0 +k=1 +x_0=0 +y_0=0 +a=6378137 +b=6378137 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <>
<3785> +proj=merc +lon_0=0 +k=1 +x_0=0 +y_0=0 +a=6378137 +b=6378137 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <>

  1. define a minimal mapfile with one layer (containing the buildings).

  2. run several tests with different projections and annotate the outcome.

Have a look at the report:

Does anybody have any idea about how we could tackle this issue?
I don’t know if the problem is arising from MapServer or OpenLayers, so maybe you can help me design a better test to narrow the problem down.

I presume a lot of people are doing something similar to us, so others might come across this issue.



This is not your main problem, but once you get your system configured you will see a projection error of some hundred meters. That’s because has wrong proj4 strings. Instead of +towgs84 parameters there should be

This is correct:
<3785> +proj=merc +lon_0=0 +k=1 +x_0=0 +y_0=0 +a=6378137 +b=6378137 +nadgrids=@null +units=m +no_defs <>

Parameters have been corrected to Proj4 and after update they will be ok on as well.