This is a follow up to Output field name not showing up in spatial join result in which I received no response.
I am trying to convert a shapefile to a feature class, I also have a GeoJSON file with the field names as I would like them to appear in the output feature class. The
arcpy.FeatureClassToFeatureClass_conversion functionality accepts a field map, so I tried to build one by looping through a GeoPandas geodataframe of the GeoJSON file (to set my output field names) and by adding the shapefile to a fieldMappings object, and replacing the field map for each iteration:
import archook archook.get_arcpy() import arcpy import geopandas file_path = 'damage_results/Culverts/Culverts.shp' original_fields = arcpy.ListFields(file_path) original_fields = original_fields[2:] gdf = geopandas.read_file('damage_results/Culverts/result_culverts.json') new_field_names = gdf.columns[:-1].to_list() fms = arcpy.FieldMappings() fms.addTable(file_path) for i,field in enumerate(original_fields): print i fm = fms.getFieldMap(i) out_field = fm.outputField out_field.name = new_field_names[i] fm.outputField = out_field fms.replaceFieldMap(i, fm) for fm in fms: print fm.outputField.name arcpy.FeatureClassToFeatureClass_conversion(file_path, 'intermediate_damage.gdb', 'Culverts', field_mapping = fms)
for loop is to verify that the output field names have been written properly, and it seems from within the script that they are. However when I open the Culverts feature class the field names are unchanged from the shapefile.
Does the output field attribute in the
FieldMap object work?