ArcCatalog says spatial references don't match between feature dataset and feature class with same coordinate system?

The same coordinate system is not always an identical coordinate system. I have encountered situations where some operations and geoprocessing tools will think feature classes don't share a common coordinate system because the descriptive name of the projection differs ("Yukon Albers" vs "Albers - custom") although the parameters are identical, or because of differing decimal positions (false northing 500000.00 vs 500000.0000).

What I usually do is ensure Feature Dataset (and F.class) coordinate systems are created with our standard .prj file placed in the top of C:\path\to\ArcGIS\Desktop10.0\Coordinate Systems (makes the CS available with fewer clicks) and/or copying the CS from a master feature class template stored somewhere always at hand.

Partly in response to this issue, I also have an empty feature dataset (D:\s.gdb\_template) which I funnel all our data through as a first step filter before doing anything else at all with them. Among a common coordinate system this also ensures the precision and spatial domain etc. are identical.

Update: See Andy's answer about using python, only 2 lines, to copy the Feature Dataset spatial reference system from a template feature class. This worked for me in ArcCatalog 10.3 when the interactive method of defining the SR by selecting a feature class to import one didn't work.


This is an explanation rather than an answer.

We (Esri) do pretty strict testing of coordinate reference system names and values. The 'is equal' test will not return a fail when comparing 500000.00 and 500000.000000, but might fail if one is really 500000.0 and the other 500000.00000005. We're working on adding aliases for names so that 'is equal' will pass more.

As mindless.panda and matt wilkie mentioned, the differences might be in the other values of a spatial reference. A spatial reference includes the coordinate reference system and storage/processing values. For storage: xy, z, and measure resolution and extents. For processing: xy, z, and measure tolerance values. Any difference in these can cause a not equal error.


Here's what I did to resolve the issue (using arcpy in ArcGIS 10.0) -

This assumes the following:

  • FGDB - C:\gisdata\Test.gdb
  • Feature Class - C:\gisdata\Test.gdb\bldg

You can modify your paths and object names in the code and paste it into the python window in ArcCatalog.

sr = arcpy.Describe(r'C:\gisdata\Test.gdb\bldg').spatialReference
arcpy.CreateFeatureDataset_management(r'C:\gisdata\Test.gdb', 'MyFeatureDataset', sr)

After the feature dataset is created you can drag and drop the feature classes in.