Reproject Base Map

6927
9
Jump to solution
08-06-2013 07:44 AM
AlexeiB
Occasional Contributor
I've downloaded an ESRI base map layer package from the website and it comes projected as WGS 1984. I am attempting to reproject the map into another coordinate system (NAD 1983). When I change the coordinate system in the Data Frame properties in ArcMap, the map becomes an egg and I lose the east coast of Canada and the US.

I am trying to reproject the map so I can cache it and provide it as a map service to match my other data. Does anyone have an idea as to why this happens and how to fix it?

Thanks,
Tags (2)
0 Kudos
1 Solution

Accepted Solutions
AlexeiB
Occasional Contributor
That's the conclusion I also came to. I was hoping there is another way around it but I guess not.

Thanks for your help Melita.

EDIT:

For those curious, here's what worked for me:
GeometryService geometryService = new GeometryService("...esri/GeometryServer");
geometryService.ProjectCompleted += geometryService_ProjectCompleted;
GraphicsLayer graphicsLayer = MainMap.Layers["MyGraphicsLayer"] as GraphicsLayer;
geometryService.ProjectAsync(graphicsLayer.Graphics.ToList(), new SpatialReference(102100));

In the geometryService_ProjectCompleted(...) function you can pull out the Geometry of the object(s) and that object(s) will contain coordinates in 102100, which is the base map.

View solution in original post

0 Kudos
9 Replies
TimWitt
Frequent Contributor
This tool should help you. http://resources.arcgis.com/en/help/main/10.1/index.html#/Project/00170000007m000000/

Run every ESRI base map layer through this tool to get it in the NAD 1983 projection.
0 Kudos
AlexeiB
Occasional Contributor
Thank you for your quick response Tim. I have done as you have indicated and have received the following result (green: reprojected; beige: original)

[ATTACH=CONFIG]26506[/ATTACH]

The result seems to be similar to the approach I was using previous where I changed the data frame coordinate system. Am I missing something?

Thanks,
0 Kudos
TimWitt
Frequent Contributor
Can you share your files?
0 Kudos
MelitaKennedy
Esri Notable Contributor
It looks to me like the data is passing through a UTM zone at some point. The longitude range is 90 degrees, and we restrict UTM zones to +/-45 from the central meridian. But the graphic is not using UTM.
0 Kudos
AlexeiB
Occasional Contributor
So that means there is no way to reproject a base map into 3TM and view all of North America (coast to coast)? If the answer is no, is there a way I can work around this problem? My current issue is that if I draw something on the graphics layer in North America, it's actually visible in Western Europe.

Thanks,
0 Kudos
MelitaKennedy
Esri Notable Contributor
So that means there is no way to reproject a base map into 3TM and view all of North America (coast to coast)? If the answer is no, is there a way I can work around this problem? My current issue is that if I draw something on the graphics layer in North America, it's actually visible in Western Europe.

Thanks,


That's correct about 3TM. Transverse Mercator was designed for relatively narrow north-south strips. Improvements in the actual algorithms used has made it more able to be used for wide areas but the feature distortion is quite great.

Depending on the web service type, you may need a coordinate system with a well-known ID, so a custom definition is probably out. However, why not use a conic projection for North America? 

I'm afraid I don't understand your statement about graphics layer items visible in Western Europe. They're not placed correctly? Or...?

Melita
0 Kudos
AlexeiB
Occasional Contributor


I'm afraid I don't understand your statement about graphics layer items visible in Western Europe. They're not placed correctly? Or...?

Melita


For my map, I am using an ESRI basemap (WGS 1984) onto which I layer a NAD 83 layer (ie: roads) via a feature service. On top of these 2 data layers, I have a graphics layer. When I draw something (ie: highlight a road) on the graphics layer via C#, the (x1,y1) and (x2,y2) are correctly provided wrt to the location of road in my NAD 83 system but are actually drawn in Europe as the graphics layer is working in the spatial reference of the basemap (WGS 1984). So the items are drawn correctly but instead of using NAD 83 for measurements, they use the basemap's projection.
0 Kudos
MelitaKennedy
Esri Notable Contributor
For my map, I am using an ESRI basemap (WGS 1984) onto which I layer a NAD 83 layer (ie: roads) via a feature service. On top of these 2 data layers, I have a graphics layer. When I draw something (ie: highlight a road) on the graphics layer via C#, the (x1,y1) and (x2,y2) are correctly provided wrt to the location of road in my NAD 83 system but are actually drawn in Europe as the graphics layer is working in the spatial reference of the basemap (WGS 1984). So the items are drawn correctly but instead of using NAD 83 for measurements, they use the basemap's projection.


I think I got it. The base map is in WGS 1984 Web Mercator Auxiliary Sphere aka WKID 3857, not WGS84 (the feature service is NAD83 3TM and is being reprojected to the base map's coordinate system). You'll need to reproject your 3TM coordinates before display.

Melita
0 Kudos
AlexeiB
Occasional Contributor
That's the conclusion I also came to. I was hoping there is another way around it but I guess not.

Thanks for your help Melita.

EDIT:

For those curious, here's what worked for me:
GeometryService geometryService = new GeometryService("...esri/GeometryServer");
geometryService.ProjectCompleted += geometryService_ProjectCompleted;
GraphicsLayer graphicsLayer = MainMap.Layers["MyGraphicsLayer"] as GraphicsLayer;
geometryService.ProjectAsync(graphicsLayer.Graphics.ToList(), new SpatialReference(102100));

In the geometryService_ProjectCompleted(...) function you can pull out the Geometry of the object(s) and that object(s) will contain coordinates in 102100, which is the base map.
0 Kudos