I have an SDE geodatabase with several feature classes, tables, relationship classes, and domains. All the feature classes are currently in WGS84 coordinate system.

I need an exact copy of the entire geodatabase, but with all feature classes projected in the appropriate state plane coordinate system.

I used the feature class to feature class tool to copy the feature classes from one gdb to another and set the environment output coordinate system to state plane, but I lost all of the relationships and tables.

Is there a way to do this in one step without having to recreate all the relationship classes?

  • Are there any feature datasets involved?
    – blah238
    Dec 20, 2011 at 18:20
  • Thank you @blah238 - All my feature classes have the same coordinate systems. I need to reproject all feature classes to a different coordinate system, but they will be in the same coordinate system after the reprojection as well.
    – Brian
    Dec 20, 2011 at 18:21
  • @blah238 - no feature datasets present unfortunately
    – Brian
    Dec 20, 2011 at 18:21
  • But what if there is a transformation involved ? I think it won't work in this case if you just chnaged the "spatial Reference" in XML file. I am also suffering from this. and its strange that it happens .
    – user7102
    Apr 23, 2012 at 10:09

7 Answers 7


Thanks all for your responses. Unfortunately, none of the solutions mentioned did the trick for me, although I'm sure they would all work under slightly different circumstances.

The resolution is in the following steps:

  1. Feature Class to Geodatabase (multiple) to copy all feature classes from the original geodatabase to the new empty geodatabase.
  2. Set Environments on Feature Class to Geodatabase tool with Output Coordinate System specified in desired new coordinate system.
  3. Table to Table tool (multiple) to copy all tables from the original geodatabase to the new geodatabase.
  4. Manually recreate all relationship classes.

I wish there were a better solution to this, but I just couldn't get it to work without breaking all the relationship classes. I hope this helps someone in the future.


I think what you want to do can be done without too much trouble given that there are no feature datasets involved and all the coordinate systems are the same, although it's not a one-step process unless you script it.

  1. Copy your feature classes to a new file geodatabase using Copy/Paste which brings over relationship classes and related tables. (side question, are there any GP tools that can do this? I think not)
  2. Project all your original feature classes to the new coordinate system using an intermediate geodatabase
  3. Delete the contents of all the feature classes in the output geodatabase using Delete Features
  4. Redefine the coordinate system of all your feature classes in the output geodatabase using Define Projection
  5. Append the projected feature classes from the intermediate workspace to their corresponding feature classes (now empty) in the output workspace

If there were feature datasets involved I think this approach would fail because Define Projection doesn't work on feature datasets that are not empty. In that case my fallback plan would be to export the geodatabase to an XML workspace document and munge it by hand or with Python or an XSLT file.

  • Copy_management should do #1 for you I think. Dec 20, 2011 at 18:56
  • Tried it, no worky.
    – blah238
    Dec 20, 2011 at 18:58
  • I have been working on doing a similar workflow where I created an empty geodatabase with the same schema as the original and set the coordinate system to my desired projection. Now I am going through and appending from each individual feature class to its appropriate new feature class. This is all very tedious. I think this might be something for ideas.arcgis.com
    – Brian
    Dec 20, 2011 at 19:10
  • 1
    I should have mentioned you could batch steps 2-5 using the batch dialog. Scripting would also relieve the tediousness :)
    – blah238
    Dec 20, 2011 at 19:13

I had the same question, and I solved it the same way blah238 says : exporting the geodatabase(or its schema) into an XML File, then modify the Spatail Reference inside this XML file, and reimport it into the new Geodatabase.

Here are the steps :

1) Right click in your source geodatabase, and select "Export/XML Workspace Document"

2) Check "Schema Only", specify the XML output file

3) Press the "Include All" button to select all the features of your geodatabase

4) Then Finish

5) Open the XML file with an editor (like NotePad++)

6) Replace the content of all the "SpatialReference" tags with your new spatial reference

7) Set the content of all the "GridSize0" tags to 0 (useful to reinitiate the grids of the empty datasets

8) Save it

9) Create an empty geodatabase. Right click in it, and select "Import/XML Workspace Document"

10) Select your XML file

11) Once the geodatabase is created, you can append your reprojected data into tables and feature classes

11) You're Done !!

It seems to work well. You have to project all your data separately from the geodatabase, and reimport them (load or append) into the new one

Good luck.

  • Sounds smart.But in case we have to do the transformation then ? Will it be required or not ? Since we are only copying the schema Jul 30, 2019 at 11:52

If this is just a one-time job, you could simply copy the geodatabase in its entirety, then project all of the featureclasses to State Plane. Not very elegant, but it should work. Could be scripted in Python as well - copy the geodatabase then loop through the featureclasses, projecting as you go. You could build a dictionary that has the featureclass names as keys and the target state plane system(s) as the value(s), then call that as you project.

  • Thanks Chad - The problem with that solution is that I would need to recreate all the relationship classes because reprojecting will create a new feature class.
    – Brian
    Dec 20, 2011 at 17:35
  • @Brian - Man, forgot about that. And Copy into a new feature dataset with the target state plane system won't work either. There has to be a way to do this. Dec 20, 2011 at 17:55

Here's an article for creating a replica where data in the child has a different coordinate system than the parent. You would just skip the replica creation in step 5:

HowTo: Create a replica where the child replica data is in a different coordinate system than the parent replica data

  • This looks promising. I will give it a try tomorrow. Thanks.
    – Brian
    Dec 21, 2011 at 4:15
  • I gave this a try, but no luck. Theoretically it should have worked, but it kept crashing on me. I think it has to do with the large datasets I am working with.
    – Brian
    Dec 27, 2011 at 20:01
  • @Brian sorry to hear that it's not working. How big are your datasets? Dec 28, 2011 at 6:19

This is probably way late, but use X-Ray Add in for ArcCatalog. You set the GDB and the XML. In options you can set spatial reference.


The solution suggested by Tim Michael works perfectly. You don't need the last step: use the Create Replica Wizard to create replicas. In a sde geodatabase, you might need to first 1) register your dataset as versioned; and 2) add GlobalID. I use sde geodatabase as parent/source and a file geodatabase as child/destination.

  • Welcome to GIS.SE. Once you have sufficient reputation, you may add comments to a question or an answer - which this answer should be instead. Also, please consider that this question is almost 8 years old.
    – Erik
    Nov 12, 2019 at 7:32

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.