ThinkGeo.com    |     Documentation    |     Premium Support

OpenStreetMap projection and conversion from WGS84

 In our application, we store data in WGS84 (GPS coordinates). The map background is OpenStreetMapOverlay (with MapUnit = GeographyUnit.Meter).


I'm trying to plot the data from WGS84 onto the map. However, I've failed to find a projection that's compatible to OpenStreetMapOverlay.


My question: how do I convert WGS84 data to OpenStreetMapOverlay projection?


The code:


Proj4Projection proj4 = new Proj4Projection();
proj4.InternalProjectionParameters = Proj4Projection.GetWgs84ParametersString();
proj4.ExternalProjectionParameters = Proj4Projection.GetGoogleMapParametersString();
// I've tried Proj4Projection.GetSphericalMercatorParametersString(), the values are off as well.
proj4.Open()
Vertex vertex = proj4.ConvertToExternalProjection(data.X, data.Y);
...
proj4.Close();


 
What am I doing wrong here?

 



Thach,


 The background layers such as Google Map, Bing Map and Open Street Map use the same projection, Spherical Mercator and are in the meters. So if you want to plot some data in WGS84 to your OSM background, make sure that you use the projection with the adequate parameters. I see your code. It looks fine to me but it is difficult to tell if there is someting wrong without the whole context. Of course, you have to be sure your original data is in deed in WGS84.


  There is a sample in the Code Community that deals with the common task of ploting a GPS point in WGS84 on top of Google Map (as I said earlier Google Map and OSM are in the same projection). It is a Web app but I suggest you look at the code where the projection conversion is happening. I think you are going to find it usefull.


The sample is called GPS to Google Map (Web), wiki.thinkgeo.com/wiki/Map_Suite_Si...p.28Web.29