With ArcPro 3.5, ESRI has cracked down on letting us define the projection on a feature class that has a projection. We have been importing an existing schema from an XML and then using Define Projection in a model to redefine the projection for the new project. In 3.5, this no longer works. We tried it in arcPy as well.
This seems like an unfortunate level of hand-holding. ESRI should trust users to know when it is appropriate to redefine a projection.
@AustinStreetman I am not in Version 3.5 yet, this doesn't seem like this is intentional. I would reach out to support about your issue. As long as the tool is in ArcGIS Pro you should still have the capability to change the projection.
I am not able to replicate this behavior in 3.5. Per the 3.5 documentation, it states: "when a dataset with a known coordinate system is input to this tool, the tool will issue a warning message but will run successfully."
I don't think Esri intentionally took away that functionality. I suspect it's just a bug. You'll probably have to reach out to support and see if they can reproduce the issue on their end.
If you compare the 3.5 to previous versions at
Define Projection (Data Management)—ArcGIS Pro | Documentation
you will notice that there are new restrictions. I can't tell from your code and the files whether this is what you are running up against. Have a look and compare to your previous version using the "Other versions" toggle
Comparing 3.5 to 3.4 in detail, I don't see any new restrictions, there's just more clarifications for why you can't run the tool on EGDB or Feature Dataset classes (as well as workarounds).
@AustinStreetman if you try to define projections for some troublesome data using just the tool interface (no arcpy) do you get a better error message?
Certainly run the test in Pro GUI or get and print print the actual error. This could be many different things from switching versions.
We use the DefineProjection tool extensively in arcpy for a scripted process that we re-run during development and migration into ArcGIS Parcel Fabric. In prior versions (3.4 and earlier) there were no issues. We have Pro 3.5.0 and all of a sudden I am getting an error ("ERROR 000146: Cannot alter the spatial reference"), in both arcpy and Pro/UI Toolbox for Define Projection. I am trying to open an Esri case because this seems like a bug. I think it should still run with warning as it always has if there is already a projection defined. There is no way to set Unknown spatial reference, so what if you make a mistake, or are conveniently using it to set up a new gdb that does not have any data in it yet?
I didn't see this thread when I started my own thread on the topic. My thread I am running into the same issue with the upgrade to 3.5. At first I thought it was because I was trying to use Define Projection on an undefined dataset. With further testing today, I am unable to use Define Projection on any dataset or feature class with a previously defined coordinate system either. If you read my thread, you'll see ESRI's response when I submitted a case. They told me I'm out of luck--it's a known error, and they don't plan on changing it.
I also just got off a chat with a support analyst, and here is the response I was given: "Geodatabase feature datasets and feature classes are not designed to have their coordinate systems changed after creation. The ability to update the coordinate system on feature dataset was an oversight and should not have been allowed. At ArcGIS Pro 3.5, that loophole was blocked. The change was on purpose. The new workflow is to make sure that a feature dataset or feature class has the correct coordinate system upon creation."
The ArcGIS Pro documentation states that the Define Projection tool: "Overwrites the coordinate system information (map projection and datum) stored with a dataset. This tool is intended for datasets that have an unknown or incorrect coordinate system defined."
But it apparently doesn't anymore. There are a number of caveats in the documentation.
Thank you for this update. This is good to know. The "Project" tool is probably the better way to go, especially when the data is already projected one way. It will add the proper transformations to the data, but it does create a new layer that you now have to work with.
Project Tool: https://pro.arcgis.com/en/pro-app/latest/tool-reference/data-management/project.htm
It is not the better way to go in 3.5, as it loses a bunch of our data structure in the parcel fabric dataset:
Before Project:
After Project:
Even some of the out-of-the-box relationships Esri creates automatically in the Parcel Fabric get lost using the Project Tool. Really kills our workflow and productivity to make this change to the Define Projection tool, with no mention in the release notes, and no working alternative for our use.