3

I want to transform my layers from SRID 31463 (Gauß Krüger) to Webmercator. Since SharpMap does only know webmercator and WGS84 i tried to create the Coordinate System 31463 by WKT and applied it on the layer. But i have a small offset of a few meters.

        ProjNet.CoordinateSystems.CoordinateSystemFactory csFact = new ProjNet.CoordinateSystems.CoordinateSystemFactory();

        string wkt_gk = "PROJCS[\"DHDN / 3-degree Gauss zone 3 (deprecated)\",GEOGCS[\"DHDN\",DATUM[\"Deutsches_Hauptdreiecksnetz\",SPHEROID[\"Bessel 1841\",6377397.155,299.1528128,AUTHORITY[\"EPSG\",\"7004\"]],AUTHORITY[\"EPSG\",\"6314\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.01745329251994328,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4314\"]],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\"latitude_of_origin\",0],PARAMETER[\"central_meridian\",9],PARAMETER[\"scale_factor\",1],PARAMETER[\"false_easting\",3500000],PARAMETER[\"false_northing\",0],AUTHORITY[\"EPSG\",\"31463\"],AXIS[\"X\",EAST],AXIS[\"Y\",NORTH]]";

        GeoAPI.CoordinateSystems.ICoordinateSystem gauss_krueger_3 = csFact.CreateFromWkt(wkt_gk);

        GeoAPI.CoordinateSystems.ICoordinateSystem webmercator = ProjNet.CoordinateSystems.ProjectedCoordinateSystem.WebMercator;

        ProjNet.CoordinateSystems.Transformations.CoordinateTransformationFactory ctFact = new ProjNet.CoordinateSystems.Transformations.CoordinateTransformationFactory();

        layer.CoordinateTransformation = ctFact.CreateFromCoordinateSystems(gauss_krueger_3, webmercator);
        layer.ReverseCoordinateTransformation = ctFact.CreateFromCoordinateSystems(webmercator, gauss_krueger_3);

2 Answers 2

2

Your transformation omits the offset between the Bessel and the WGS84 Ellipsoid.

The full WKT would be:

PROJCS["DHDN / 3-degree Gauss-Kruger zone 3",
    GEOGCS["DHDN",
        DATUM["Deutsches_Hauptdreiecksnetz",
            SPHEROID["Bessel 1841",6377397.155,299.1528128,
                AUTHORITY["EPSG","7004"]],
            TOWGS84[598.1,73.7,418.2,0.202,0.045,-2.455,6.7],
            AUTHORITY["EPSG","6314"]],
        PRIMEM["Greenwich",0,
            AUTHORITY["EPSG","8901"]],
        UNIT["degree",0.0174532925199433,
            AUTHORITY["EPSG","9122"]],
        AUTHORITY["EPSG","4314"]],
    PROJECTION["Transverse_Mercator"],
    PARAMETER["latitude_of_origin",0],
    PARAMETER["central_meridian",9],
    PARAMETER["scale_factor",1],
    PARAMETER["false_easting",3500000],
    PARAMETER["false_northing",0],
    UNIT["metre",1,
        AUTHORITY["EPSG","9001"]],
    AUTHORITY["EPSG","31467"]]

I have no experience with sharpmap. If it does not know about TOWGS84, you have to use QGIS (or pure GDAL) to reproject the data before feeding to sharpmap.

3
  • Hey thank you for the answer. Actually it does know TOWGS84 but i need them in webmercator. What would be the correct expression to transform from GK to webmercator (SRID 3857)?
    – Tob
    Commented Jul 22, 2015 at 20:50
  • 1
    TOWGS84 transforms from the bessel ellipsoid (source) to all projections working on the WGS84 ellipsoid (target). Since Web Mercator uses the WGS84 ellipsoid, you only have to apply TOWGS84 on the source side.
    – AndreJ
    Commented Jul 23, 2015 at 5:15
  • Glad to help. Think of upvoting or accepting the answer if it was helpful for you: gis.stackexchange.com/help/accepted-answer
    – AndreJ
    Commented Jul 28, 2015 at 5:07
0

you can use this code to transform. it works for me.

 layCountries.CoordinateTransformation = fact.CreateFromCoordinateSystems(
           shpLaye.CoordinateSystem ?? ProjNet.CoordinateSystems.GeographicCoordinateSystem.WGS84,
           ProjNet.CoordinateSystems.ProjectedCoordinateSystem.WebMercator);
        layCountries.ReverseCoordinateTransformation = fact.CreateFromCoordinateSystems(
            ProjNet.CoordinateSystems.ProjectedCoordinateSystem.WebMercator,
            shpLaye.CoordinateSystem ?? ProjNet.CoordinateSystems.GeographicCoordinateSystem.WGS84);

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.