ThinkGeo.com    |     Documentation    |     Premium Support

Proj4Projection : problem with epsg 3857

Hi, 
I have a problem with Proj4Projection.


I reproject a shapefile layer and the result is different if false.



Code 1 :  (this one give a false result)
projectionAffichage = bingmap (epsg=3857)
internalprojection is wgs84 (epsg 4852)



string externalProjection = Proj4Projection.ConvertPrjToProj4(Proj4Projection.ConvertEpsgToPrj(projectionAffichage));
            if (internalProjection != externalProjection)
            {
                Proj4Projection proj4Projection = new Proj4Projection();
                proj4Projection.InternalProjectionParametersString = internalProjection;
                proj4Projection.ExternalProjectionParametersString = externalProjection;
                shpFile.FeatureSource.Projection = proj4Projection;
            }



The result of projection is  ie Proj4Projection_String_20140516.jpg






Code 2 : (this one give a good result)
        public Proj4Projection ReProjectionEntreeSortie(int projEntree, int projSortie)
        {
            Proj4Projection projectionSridAffichage = new Proj4Projection(projEntree,projSortie);



            if (!projectionSridAffichage.IsOpen) projectionSridAffichage.Open();



            return projectionSridAffichage;
        }
The result of projection is  ie Proj4Projection_Int_20140516.jpg





I think that the problem comes from "Proj4Projection.ConvertPrjToProj4(Proj4Projection.ConvertEpsgToPrj(projectionAffichage)). "

Because the result in the application is  +proj=merc +lon_0=0 +k=1 +x_0=0 +y_0=0 +ellps=WGS84 +datum=WGS84 +units=m +no_defs 



On this website the proj4 is ie spatialreference.org/ref/sr-org/epsg3857/proj4/

With the code 2, I have this proj4.



I hope my explanation is clear.
Regards.



Steph.































Proj4Projection_String_20140516.jpg (55.5 KB)
Proj4Projection_Int_20140516.jpg (35.9 KB)

Hi Steph,



I tested this case with the below codes and found something:


string externalProjection1 = Proj4Projection.ConvertPrjToProj4(Proj4Projection.ConvertEpsgToPrj(3857));
string externalProjection2 = Proj4Projection.ConvertPrjToProj4(File.ReadAllText(@"…\3857.prj")); 
string externalProjection3 = Proj4Projection.GetEpsgParametersString(3857);

The result is the externalProjection2 and externalProjection3 are almost the same, but the externalProjection1 is like your got, it is total difference with them. However, all of the three can match with GoogleLayer(EPSG:3857) when I reproject a 4326 shape file to the 3857 with the above string. As you said you are using 4852 source file, I guess the externalProjection1 can’t match with it.



I guess using externalProjection2 or externalProjection3 should work in your end, would you please try it?

Thanks,

Troy

3857.zip (356 Bytes)

Hi Troy,  
  
 With Proj4Projection.GetEpsgParametersString(3857), that works. 
 Thanks. 
 Regards. 
 Steph.

Steph, 
  
 Good to hear it helps. 
  
 Thanks, 
 Troy