In the UK students and staff in Higher Education can get boundaries of Lower and Middle Layer Super Output Areas (MSOA / LSOA, a sort of census boundaries in the UK) from the UK Data Service Census Support.
The other day Juanjo Medina from law School noticed that when you load the MSOA / LSOA boundaries into ArcMap, they do not align correctly with reference data like the EDINA Openstream basemap or the ArcGIS built-in basemaps – for example, in Manchester the LSOA / MSOA are shifted east by about 100m.
This is because ArcGIS reads the LSOA / MSOA boundaries’ coordinate system as ‘Custom: OSGB 1936 / British National Grid’ with Geographic Coordinate System: ‘OSGB 1936’. Since ArcGIS interprets this as a custom system, it can not determine which geodetic transforms are applicable to this dataset, and it can not overlay the MSOA / LSOA correctly with other data.
I advised the UK Data Service about the issue, and until it is resolved this is a workaround for ArcGIS users:
- Download the LSOA or MSOA data from UK Data Service Census Support. The download comes as a zip file, so extract the contents, which gives you a shapefile.
- Open ArcCatalog and navigate to the LSOA / MSOA shapefile. Right-click it > Properties, go to the tab XY Coordinate System, and verify that the coordinate system is specified as ‘Custom – OSGB 1936 / British National Grid’
- Assign Esri’s definition of the British National Grid to the dataset, replacing the UK Data Services’ custom definition: In the top pane expand Projected Coordinate Systems > National Grids > Europe and select British National Grid. Click OK.
- Open ArcMap and add the LSOA or MSOA boundaries.
- Add the EDINA Openstream web service (or ArcGIS basemap, or other reference data) to the map. As you load the reference data, if the reference data uses different Geographic Coordinate System, a Geographic Coordinate Systems Warning window pops up. In this window click on Transformations.
- A new window pops up. Do not change the Convert from and Into values, and in the Using (…) drop-down select the first option below <None>. In most cases this is OSGB_1936_To_WGS1984_Petroleum. Click OK. 
- Back in the Geographic Coordinate Systems Warning click Close.
- Now both layers should align correctly in ArcMap.
You can always later on review and change the map’s transformation settings: right-click into the data frame > Data Frame Properties > Coordinate System > Transformations.
Update: After reading my post Guy McGarva from EDINA pointed out:
- The problem with OpenStream is that it supports multiple projections, including OSGB36 and WGS84. It seems their is no way of telling ArcGIS which of these to use by default. Generally it seems to pick the WGS84 one which is not the one you want if you are going to look at other data in OSGB36, because although ArcGIS will do an on-the-fly transformation from WGS84 to OSGB36 it will degrade the image and make it slower.
- The best way to force OpenStream to use the OSGB36 version is to set the Data Frame to British National Grid ( View –> Data Frame Properties.. –> Coordinate System) before loading any other data. This will ensure that ArcGIS will pick the OpenStream OSGB36 version of the data and not do any on-the-fly transformations.
- Although technically correct that the OSGB_1936_To_WGS1984_Petroleum is acceptable, a better solution is to use the OSTN02 transformation. Although it’s not built in to ArcGIS, it is very easy to add and gives a more accurate result (instead of +/- 5m, it is +/- 1 metre)
- We [EDINA] have created several resources in our help pages to try and help with these situations. I found last year that it is almost never a good idea to accept the default transformations that different systems use (or “none” as in the case with ArcGIS).
Many thanks Guy, really useful!