1

I have this coordinate (778597.3125000001, 9148353). I am told this coordinate is Arc 1960 / UTM zone 36S.

When I go here: https://epsg.io/21036 and click "Get Position on Map" and enter in the above utm coordinates, it places the point in the correct place on the map (At the corner of a field).

What kind of transform/projection do I have to do to make it Lat Long, and then go to the same point in Google Maps?

I have tried various ways but seem to end up 400 - 200m diagonal offset.

The correct lat long should be: Lat: -7.699944 Long: 35.5262575 (corner of the field, see link below):

https://www.google.com/maps/place/7%C2%B041'59.8%22S+35%C2%B031'34.5%22E/@-7.6999387,35.5240688,1108m/data=!3m2!1e3!4b1!4m5!3m4!1s0x0:0x0!8m2!3d-7.699944!4d35.5262575

I am using DotSpatial.

            var Arc1960UTMZone36S = KnownCoordinateSystems.Projected.UtmOther.Arc1960UTMZone36S; 
            Arc1960UTMZone36S.AuthorityCode = 21036;

            var WGS1984 = KnownCoordinateSystems.Geographic.World.WGS1984;
            //4326 google earth  
            //3857 for google maps
            WGS1984.AuthorityCode = 3857;

            double[] xy = new double[2] { 778597.3125000001, 9148353 };
            double[] z = new double[1] { 0d };

            Reproject.ReprojectPoints(xy, z, Arc1960UTMZone36S, WGS1984, 0, 1);

            var latitude = xy[1];
            var longitude = xy[0];

            Debug.WriteLine($"Lat: {latitude} Long: {longitude}");

Would anybody know why it is offset?

1 Answer 1

1

The solution was to use proj4 string instead of the Known Coordinate System.

Instead of

var Arc1960UTMZone36S = KnownCoordinateSystems.Projected.UtmOther.Arc1960UTMZone36S; 
Arc1960UTMZone36S.AuthorityCode = 21036;

Use

String proj4_21036_str = "+proj=utm +zone=36 +south +ellps=clrk80 +towgs84=-160,-6,-302,0,0,0,0 +units=m +no_defs";    
ProjectionInfo proj21036 = ProjectionInfo.FromProj4String(proj4_21036_str);

but I don't know why.

1
  • The proj4 string includes a datum transformation, +towgs84=-160,-6,-302,0,0,0,0, which the "known" definition must not include. Older datums (geographic coordinate reference systems) will be offset from modern ones (anything after 1984 or so) by a few meters to few hundred meters.
    – mkennedy
    Commented Dec 28, 2020 at 19:28

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.