NAD83 to Web Mercator projection off

3211
4
04-08-2016 06:37 AM
ColleenDixon
New Contributor


In both Android and Windows runtimes, we have GPS data coming in in NAD83_2011.  We would like to project this to the map in Web Mercator.  When we use the GeometryUtils.project function, the result is off by about 3 feet.  We can replicate this in ArcMap by projecting a NAD83 point to Web Mercator and not changing the default transformation.  However, if we change the transformation to NAD_1983_To_WGS_1984_1 (or 5), the point projects correctly.  Is there any way to specify this transformation, or change whatever default transformation the project function seems to be using?

Here is our code:

            var ggaWKID = await _mediator.RequestAsync(new NewSpatialReference(query.GGA.WKID)); //NAD83

            var latLong = await _mediator.RequestAsync(new NewMapPoint(query.GGA.Longitude, query.GGA.Latitude, query.GGA.Altitude, ggaWKID));

            var mapService = await _mediator.RequestAsync(new GetMapService());

            var geometryService = await _mediator.RequestAsync(new NewGeometryService());

            var mapPoint = (IMapPoint)geometryService.Project(latLong, mapService.SpatialReference); //Web Mercator (3857) - off by 3.04 feet.

We have tried Proj.Net to apply a transformation, but my transformation numbers must be off.  I am trying to use the seven parameters provided by ArcMap, but when applying this transformation, my point is off by 5.91 feet.  When I pass in null for the transformation I see 3.04 feet again. 

Has anyone run into this and have a solution?  I'm happy to provide any other code, just let me know what you would like to see, please.

0 Kudos
4 Replies
MichaelBranscomb
Esri Frequent Contributor

Hi,

What system is providing the GPS coordinates in NAD83_2011? It suggests that some transformation might have have already occurred between the original GPS coordinates in WGS1984 and the coordinates you are receiving in NAD83?

Unfortunately we don't currently support the choice of a specific transformation in the API, instead we choose a default internally. For NAD 1983 (WKID 4269) to WGS84 (WKID 4326) we use 108190 which is WGS_1984_(ITRF00)_To_NAD_1983. This is chosen for greater accuracy over NAD_1983_To_WGS_1984_1 (or 5). There is a discussion on transformations between these coordinate systems here: 24159 - Determine which NAD_1983_To_WGS_1984 transformation to use

The choice of transformation via the API is on the roadmap for a future release of ArcGIS Runtime.

Cheers

Mike

0 Kudos
ColleenDixon
New Contributor

Mike, thank you for your response.  We have an external GPS, when using NTRIP and RTK we are receiving the data in NAD83_2011.  Is WGS_1984_(ITRF00)_To_NAD_1983 expecting Nad83 instead of Nad83_2011?  Could this be the discrepancy we are seeing?

0 Kudos
KevinMacLeod4
Frequent Contributor

MBranscomb-esristaff‌ if I was to set up SDE which is in GA State Plane to a file GDB for use in web viewers in 3857, would the ITRF00 be the right transform?  (ie 2239->3857)?  It looks that way based on my ground checking but want to confirm.

0 Kudos
MichaelBranscomb
Esri Frequent Contributor

Hi,

It sounds like you're in more of an enterprise/web scenario - you might consider posting this question in one of those forums.

But you can get a list of suitable transformations using the Runtime API - e.g. for WPF see TransformationCatalog.GetTransformationsBySuitability Method 

Cheers

Mike 

0 Kudos