Last active
December 13, 2017 18:37
-
-
Save steveoh/2f580c35be70ac6956bc714c895159c3 to your computer and use it in GitHub Desktop.
replaces the code for value in a new _value field
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
def replace_codes_with_values(feature_class, field_info, domain_info): | |
field_domain_map = [(field, field.domain) for field in field_info if field.domain] | |
fields = [field[0] for field in field_domain_map] | |
field_names = [field.name for field in fields] | |
domain_names = [domain[1] for domain in field_domain_map] | |
domain_lookup = {} | |
for name in domain_names: | |
domain_lookup[name] = [domain for domain in domain_info if domain.name == name][0] | |
[arcpy.management.RemoveDomainFromField(feature_class, field.name) for field in fields] | |
[arcpy.management.AddField(feature_class, '{}_Value'.format(field.name), 'TEXT', field_alias=field.aliasName) for field in fields] | |
def swap_code_for_value(code, domain_name): | |
domain = domain_lookup[domain_name].codedValues | |
if not domain: | |
return code | |
if code not in domain: | |
return code | |
return domain[code] | |
combined_fields = field_names + ['{}_Value'.format(field) for field in field_names] | |
with arcpy.da.UpdateCursor(feature_class, combined_fields) as cursor: | |
for row in cursor: | |
values_row = [swap_code_for_value(code, domain_names[i]) for i, code in enumerate(row) if i < len(field_names)] | |
row = row[:len(field_names)] + values_row | |
cursor.updateRow(row) | |
arcpy.management.DeleteField(feature_class, field_names) |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment