Source code for generalization.n100.building.calculate_polygon_values

# Importing custom files
from file_manager.n100.file_manager_buildings import Building_N100
from constants.n100_constants import N100_SQLResources

# Importing general packages
import arcpy

# Importing timing decorator
from custom_tools.decorators.timing_decorator import timing_decorator


[docs] @timing_decorator def main(): """ What: Adds required fields for building point for symbology and resolves building conflicts: angle, hierarchy, and invisibility. How: adding_angle_hierarchy_invisibility_fields: Adds angle, hierarchy and invisibility fields and set their corresponding values. adding_symbol_val: Adds symbol_val and reclassify NBR values for undefined nbr values Why: The angle, hierarchy and invisibility fields are used in future processing, such as polygon_processor and RBC. """ adding_angle_hierarchy_invisibility_fields() adding_symbol_val()
[docs] def adding_angle_hierarchy_invisibility_fields(): """ Adds angle, hierarchy and invisibility fields and set their corresponding values. """ # Adding multiple fields print("Adding fields...") arcpy.management.AddFields( in_table=Building_N100.simplify_polygons___spatial_join_polygons___n100_building.value, field_description=[ ["angle", "SHORT"], ["hierarchy", "SHORT"], ["invisibility", "SHORT"], ], ) # Assigning values to the fields print("Assigning values to fields...") arcpy.management.CalculateFields( in_table=Building_N100.simplify_polygons___spatial_join_polygons___n100_building.value, expression_type="PYTHON3", fields=[ ["angle", "0"], ["hierarchy", "1"], # Hierarchy 1 so buildings can be moved around ["invisibility", "0"], ], )
[docs] def adding_symbol_val(): """ Adds symbol_val and reclassify NBR values for undefined nbr values """ arcpy.AddField_management( in_table=Building_N100.simplify_polygons___spatial_join_polygons___n100_building.value, field_name="symbol_val", field_type="SHORT", ) # Determining and assigning symbol val arcpy.CalculateField_management( in_table=Building_N100.simplify_polygons___spatial_join_polygons___n100_building.value, field="symbol_val", expression="determineVal(!byggtyp_nbr!)", expression_type="PYTHON3", code_block=N100_SQLResources.nbr_symbol_val_code_block.value, ) code_block_symbol_val_to_nbr = ( "def symbol_val_to_nbr(symbol_val, byggtyp_nbr):\n" " if symbol_val == -99:\n" " return 729\n" " return byggtyp_nbr" ) # Code block to update the symbol_val to reflect the new byggtyp_nbr code_block_update_symbol_val = ( "def update_symbol_val(symbol_val):\n" " if symbol_val == -99:\n" " return 8\n" " return symbol_val" ) # Applying the symbol_val_to_nbr logic arcpy.CalculateField_management( in_table=Building_N100.simplify_polygons___spatial_join_polygons___n100_building.value, field="byggtyp_nbr", expression="symbol_val_to_nbr(!symbol_val!, !byggtyp_nbr!)", expression_type="PYTHON3", code_block=code_block_symbol_val_to_nbr, ) # Applying the update_symbol_val logic arcpy.CalculateField_management( in_table=Building_N100.simplify_polygons___spatial_join_polygons___n100_building.value, field="symbol_val", expression="update_symbol_val(!symbol_val!)", expression_type="PYTHON3", code_block=code_block_update_symbol_val, ) # Assigning new name to the final building polygons print("Making a copy of the feature class...") arcpy.management.CopyFeatures( Building_N100.simplify_polygons___spatial_join_polygons___n100_building.value, Building_N100.calculate_polygon_values___final___n100_building.value, )