不具合 ID 番号 |
BUG-000155637 |
送信されました | February 6, 2023 |
最終更新日 | June 5, 2024 |
適用対象 | ArcGIS Pro |
見つかったバージョン | 2.9 |
オペレーティング システム | Windows OS |
オペレーティング システムのバージョン | N/A |
ステータス | As Designed
開発チームによる確認後に、この動作が設計どおりであると判断されました。 詳細については、「参考情報」セクションをご参照ください。
|
参考情報
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)}')
対処法
In ArcGIS Pro, manually change the alias name of the field and run the code.
再現の手順