Bug ID Number |
BUG-000155637 |
Submitted | February 6, 2023 |
Last Modified | June 5, 2024 |
Applies to | ArcGIS Pro |
Version found | 2.9 |
Operating System | Windows OS |
Operating System Version | N/A |
Status | As Designed
After review by the development team, it has been determined that this behavior is as designed. See the Additional Information section for details.
|
Additional Information
The CIM often only persist changes made to an element in a project (to reduce the amount of bloat that would otherwise need to be persisted). In the case with field descriptions, the newly added data does not have any changes, therefore, nothing is persisted in the CIM. As a workaround, faking an alteration of a field in a feature or table can result in the information being persisted in the CIM.
The following code uses arcpy.AlterField (but simply keeps the field info the same). First, it reports zero field descriptions for a feature class and a table, makes the modifications, then reports the field description counts.
p = arcpy.mp.ArcGISProject('current')
m = p.listMaps()[0]
lyr = m.listLayers('NE_State_Boundaries')[0]
tab = m.listTables('CensusData')[0]
#Try returning cim field defs - NOPE
lyr_cim = lyr.getDefinition('V3')
print(f'LYR desc count PRE mod: {len(lyr_cim.featureTable.fieldDescriptions)}')
tab_cim = tab.getDefinition('V3')
print(f'TAB desc count PRE mod: {len(tab_cim.fieldDescriptions)}')
#Modify fields
lyrFld = arcpy.ListFields(lyr)[0]
arcpy.management.AlterField(lyr, lyrFld.name, lyrFld.name, lyrFld.name)
tabFld = arcpy.ListFields(tab)[0]
arcpy.management.AlterField(tab, tabFld.name, tabFld.name, tabFld.name)
#Try again
lyr_cim = lyr.getDefinition('V3')
print(f'LYR desc count POST mod: {len(lyr_cim.featureTable.fieldDescriptions)}')
tab_cim = tab.getDefinition('V3')
print(f'TAB desc count POST mod: {len(tab_cim.fieldDescriptions)}')
Workaround
In ArcGIS Pro, manually change the alias name of the field and run the code.
Steps to Reproduce