Python Sample Code

Kevin Magnan https://twitter.com/KevinMagnan
05-15-2017
# -*- coding: utf-8 -*-
# ---------------------------------------------------------------------------
# thesis.py
# Created on: 2017-05-15 21:40:55.00000
#   (generated by Kevin Magnan)
# Description: 
# ---------------------------------------------------------------------------

# Set the necessary product code
# import arcinfo


# Import arcpy module
import arcpy
from arcpy import env
env.workspace = "C:/Users/kjmag/Google Drive/Documents/UCHICAGO/MA Thesis/Data/master/thesis.gdb/layers"

print "environment set successfully"

# Process: Add Field
arcpy.AddField_management("census_tracts_join", "orig_area", "DOUBLE", "", "", "", "", "NULLABLE", "NON_REQUIRED")

print "done1"

# Process: Calculate Field
arcpy.CalculateField_management("census_tracts_join", "orig_area", '!Shape_Area!', "PYTHON")

print "done2"

# Process: Identity
arcpy.Identity_analysis("wards", "census_tracts_join", "identity", "ALL", "", "NO_RELATIONSHIPS")

print "done3"

# Process: Add Field (2)
arcpy.AddField_management("identity", "pct_orig", "DOUBLE", "", "", "", "", "NULLABLE", "NON_REQUIRED")

print "done4"

# Process: Calculate Field (2)
arcpy.CalculateField_management("identity", "pct_orig", "!Shape_area! / !orig_area!", "PYTHON", "")

print "done5"

# Process: Add new proportion fields
newfields = ["new_pop", "new_male", "new_female", "new_under18", "new_18t34", "new_35t64", "new_over65", "new_white", "new_black", "new_nothisp", "new_hisp", "new_pop25",
             "new_lesshs", "new_hs", "new_bach", "new_schoolpop", "new_dropout", "new_enroll", "new_workpop", "new_employ", "new_unemploy", "new_ag_income_hh",
             "new_numhh", "new_own", "new_rent", "new_povpop", "new_pov", "new_notpov"]

print "newfields variable set"

for x in newfields:
        arcpy.AddField_management("identity_cleaned", x, "DOUBLE", "", "", "", "", "NULLABLE", "NON_REQUIRED")

print "Add done"

# Process: Calculate new field values
arcpy.CalculateField_management("identity_cleaned", "new_pop", "!po! * !pct_orig!", "PYTHON", "")
arcpy.CalculateField_management("identity_cleaned", "new_male", "!male! * !pct_orig!", "PYTHON", "")
arcpy.CalculateField_management("identity_cleaned", "new_female", "!female! * !pct_orig!", "PYTHON", "")
arcpy.CalculateField_management("identity_cleaned", "new_under18", "!under18! * !pct_orig!", "PYTHON", "")
arcpy.CalculateField_management("identity_cleaned", "new_18t34", "!age18t34! * !pct_orig!", "PYTHON", "")
arcpy.CalculateField_management("identity_cleaned", "new_35t64", "!age35t64! * !pct_orig!", "PYTHON", "")
arcpy.CalculateField_management("identity_cleaned", "new_over65", "!over64! * !pct_orig!", "PYTHON", "")
arcpy.CalculateField_management("identity_cleaned", "new_white", "!white! * !pct_orig!", "PYTHON", "")
arcpy.CalculateField_management("identity_cleaned", "new_black", "!black! * !pct_orig!", "PYTHON", "")
arcpy.CalculateField_management("identity_cleaned", "new_nothisp", "!not_hisp! * !pct_orig!", "PYTHON", "")
arcpy.CalculateField_management("identity_cleaned", "new_hisp", "!hisp! * !pct_orig!", "PYTHON", "")
arcpy.CalculateField_management("identity_cleaned", "new_pop25", "!pop25! * !pct_orig!", "PYTHON", "")
arcpy.CalculateField_management("identity_cleaned", "new_lesshs", "!less_hs! * !pct_orig!", "PYTHON", "")
arcpy.CalculateField_management("identity_cleaned", "new_hs", "!hs! * !pct_orig!", "PYTHON", "")
arcpy.CalculateField_management("identity_cleaned", "new_bach", "!bach! * !pct_orig!", "PYTHON", "")
arcpy.CalculateField_management("identity_cleaned", "new_schoolpop", "!schoolpop! * !pct_orig!", "PYTHON", "")
arcpy.CalculateField_management("identity_cleaned", "new_dropout", "!dropout! * !pct_orig!", "PYTHON", "")
arcpy.CalculateField_management("identity_cleaned", "new_enroll", "!enroll! * !pct_orig!", "PYTHON", "")
arcpy.CalculateField_management("identity_cleaned", "new_workpop", "!workpop! * !pct_orig!", "PYTHON", "")
arcpy.CalculateField_management("identity_cleaned", "new_employ", "!employ! * !pct_orig!", "PYTHON", "")
arcpy.CalculateField_management("identity_cleaned", "new_unemploy", "!unemploy! * !pct_orig!", "PYTHON", "")
arcpy.CalculateField_management("identity_cleaned", "new_ag_income_hh", "!ag_income_hh! * !pct_orig!", "PYTHON", "")
arcpy.CalculateField_management("identity_cleaned", "new_numhh", "!houses! * !pct_orig!", "PYTHON", "")
arcpy.CalculateField_management("identity_cleaned", "new_own", "!own! * !pct_orig!", "PYTHON", "")
arcpy.CalculateField_management("identity_cleaned", "new_rent", "!rent! * !pct_orig!", "PYTHON", "")
arcpy.CalculateField_management("identity_cleaned", "new_povpop", "!pov_pop! * !pct_orig!", "PYTHON", "")
arcpy.CalculateField_management("identity_cleaned", "new_pov", "!pov! * !pct_orig!", "PYTHON", "")
arcpy.CalculateField_management("identity_cleaned", "new_notpov", "!not_pov! * !pct_orig!", "PYTHON", "")

print "Done Calc"

#Process: Dissolve census_tracts into wards
arcpy.Dissolve_management("identity_cleaned", "dissolve", ["ward"], [["new_pop", "SUM"], ["new_male", "SUM"], ["new_female", "SUM"], ["new_under18", "SUM"], ["new_18t34", "SUM"],
                                ["new_35t64", "SUM"], ["new_over65", "SUM"], ["new_white", "SUM"], ["new_black", "SUM"], ["new_nothisp", "SUM"], ["new_hisp", "SUM"],
                                ["new_pop25", "SUM"], ["new_lesshs", "SUM"], ["new_hs", "SUM"], ["new_bach", "SUM"], ["new_schoolpop", "SUM"], ["new_dropout", "SUM"],
                                ["new_enroll", "SUM"], ["new_workpop", "SUM"], ["new_employ", "SUM"], ["new_unemploy", "SUM"], ["new_ag_income_hh", "SUM"], ["new_numhh", "SUM"],
                                ["new_own", "SUM"], ["new_rent", "SUM"], ["new_povpop", "SUM"], ["new_pov", "SUM"], ["new_notpov", "SUM"]],
                                "", "")
    

print "Done Dissolve"

# Process: Add ward_num field
arcpy.AddField_management("dissolve", "ward_num", "DOUBLE", "", "", "", "", "NULLABLE", "NON_REQUIRED")

# Process: Calculate ward_num field
arcpy.CalculateField_management("dissolve", "ward_num", "!ward!", "PYTHON", "")

 Process: Add new proportion fields
pctfields = ["pct_male", "pct_female", "pct_under18", "pct_18t34", "pct_35t64", "pct_over65", "pct_white", "pct_black", "pct_nothisp", "pct_hisp", "pct_lesshs", "pct_hs",
              "pct_bach", "pct_dropout", "pct_enroll", "pct_employ", "pct_unemploy", "pct_hhincome", "pct_own", "pct_rent", "pct_pov", "pct_notpov"]

print "pctfields variable set"

for x in pctfields:
        arcpy.AddField_management("dissolve_w_calls_crime", x, "DOUBLE", "", "", "", "", "NULLABLE", "NON_REQUIRED")

print "Add done"

### Process: Calculate new field values
arcpy.CalculateField_management("dissolve_w_calls_crime", "pct_male", "!SUM_new_male! / !SUM_new_pop! * 100", "PYTHON", "")
arcpy.CalculateField_management("dissolve_w_calls_crime", "pct_female", "!SUM_new_female! / !SUM_new_pop! * 100", "PYTHON", "")
arcpy.CalculateField_management("dissolve_w_calls_crime", "pct_under18", "!SUM_new_under18! / !SUM_new_pop! * 100", "PYTHON", "")
arcpy.CalculateField_management("dissolve_w_calls_crime", "pct_18t34", "!SUM_new_18t34! / !SUM_new_pop! * 100", "PYTHON", "")
arcpy.CalculateField_management("dissolve_w_calls_crime", "pct_35t64", "!SUM_new_35t64! / !SUM_new_pop! * 100", "PYTHON", "")
arcpy.CalculateField_management("dissolve_w_calls_crime", "pct_over65", "!SUM_new_over65! / !SUM_new_pop! * 100", "PYTHON", "")
arcpy.CalculateField_management("dissolve_w_calls_crime", "pct_white", "!SUM_new_white! / !SUM_new_pop! * 100", "PYTHON", "")
arcpy.CalculateField_management("dissolve_w_calls_crime", "pct_black", "!SUM_new_black! / !SUM_new_pop! * 100", "PYTHON", "")
arcpy.CalculateField_management("dissolve_w_calls_crime", "pct_nothisp", "!SUM_new_nothisp! / !SUM_new_pop! * 100", "PYTHON", "")
arcpy.CalculateField_management("dissolve_w_calls_crime", "pct_hisp", "!SUM_new_hisp! / !SUM_new_pop! * 100", "PYTHON", "")
arcpy.CalculateField_management("dissolve_w_calls_crime", "pct_lesshs", "!SUM_new_lesshs! / !SUM_new_pop25! * 100", "PYTHON", "")
arcpy.CalculateField_management("dissolve_w_calls_crime", "pct_hs", "!SUM_new_hs! / !SUM_new_pop25! * 100", "PYTHON", "")
arcpy.CalculateField_management("dissolve_w_calls_crime", "pct_bach", "!SUM_new_bach! / !SUM_new_pop25! * 100", "PYTHON", "")
arcpy.CalculateField_management("dissolve_w_calls_crime", "pct_dropout", "!SUM_new_dropout! / !SUM_new_schoolpop! * 100", "PYTHON", "")
arcpy.CalculateField_management("dissolve_w_calls_crime", "pct_enroll", "!SUM_new_enroll! / !SUM_new_schoolpop! * 100", "PYTHON", "")
arcpy.CalculateField_management("dissolve_w_calls_crime", "pct_employ", "!SUM_new_employ! / !SUM_new_workpop! * 100", "PYTHON", "")
arcpy.CalculateField_management("dissolve_w_calls_crime", "pct_unemploy", "!SUM_new_unemploy! / !SUM_new_workpop! * 100", "PYTHON", "")
arcpy.CalculateField_management("dissolve_w_calls_crime", "pct_hhincome", "!SUM_new_ag_income_hh! / !SUM_new_numhh!", "PYTHON", "")
arcpy.CalculateField_management("dissolve_w_calls_crime", "pct_own", "!SUM_new_own! / !SUM_new_numhh! * 100", "PYTHON", "")
arcpy.CalculateField_management("dissolve_w_calls_crime", "pct_rent", "!SUM_new_rent! / !SUM_new_numhh! * 100", "PYTHON", "")
arcpy.CalculateField_management("dissolve_w_calls_crime", "pct_pov", "!SUM_new_pov! / !SUM_new_povpop! * 100", "PYTHON", "")
arcpy.CalculateField_management("dissolve_w_calls_crime", "pct_notpov", "!SUM_new_notpov! / !SUM_new_povpop! * 100", "PYTHON", "")

 print "done"
arcpy.CalculateField_management("dissolve_w_calls_crime", "pct_male", "!pct_male! * 100", "PYTHON", "")
arcpy.CalculateField_management("dissolve_w_calls_crime", "pct_female", "!pct_female! * 100", "PYTHON", "")
arcpy.CalculateField_management("dissolve_w_calls_crime", "pct_under18", "!pct_under18! * 100", "PYTHON", "")
arcpy.CalculateField_management("dissolve_w_calls_crime", "pct_18t34", "!pct_18t34! * 100", "PYTHON", "")
arcpy.CalculateField_management("dissolve_w_calls_crime", "pct_35t64", "!pct_35t64! * 100", "PYTHON", "")
arcpy.CalculateField_management("dissolve_w_calls_crime", "pct_over65", "!pct_over65! * 100", "PYTHON", "")
arcpy.CalculateField_management("dissolve_w_calls_crime", "pct_white", "!pct_white! * 100", "PYTHON", "")
arcpy.CalculateField_management("dissolve_w_calls_crime", "pct_black", "!pct_black! * 100", "PYTHON", "")
arcpy.CalculateField_management("dissolve_w_calls_crime", "pct_nothisp", "!pct_nothisp! * 100", "PYTHON", "")
arcpy.CalculateField_management("dissolve_w_calls_crime", "pct_hisp", "!pct_hisp! * 100", "PYTHON", "")
arcpy.CalculateField_management("dissolve_w_calls_crime", "pct_lesshs", "!pct_lesshs! * 100", "PYTHON", "")
arcpy.CalculateField_management("dissolve_w_calls_crime", "pct_hs", "!pct_hs! * 100", "")
arcpy.CalculateField_management("dissolve_w_calls_crime", "pct_bach", "!pct_bach! * 100", "PYTHON", "")
arcpy.CalculateField_management("dissolve_w_calls_crime", "pct_dropout", "!pct_dropout! * 100", "PYTHON", "")
arcpy.CalculateField_management("dissolve_w_calls_crime", "pct_enroll", "!pct_enroll! * 100", "PYTHON", "")
arcpy.CalculateField_management("dissolve_w_calls_crime", "pct_employ", "!pct_employ! * 100", "PYTHON", "")
arcpy.CalculateField_management("dissolve_w_calls_crime", "pct_unemploy", "!pct_unemploy! * 100", "PYTHON", "")
arcpy.CalculateField_management("dissolve_w_calls_crime", "pct_own", "!pct_own! * 100", "PYTHON", "")
arcpy.CalculateField_management("dissolve_w_calls_crime", "pct_rent", "!pct_rent! * 100", "PYTHON", "")
arcpy.CalculateField_management("dissolve_w_calls_crime", "pct_pov", "!pct_pov! * 100", "PYTHON", "")
arcpy.CalculateField_management("dissolve_w_calls_crime", "pct_notpov", "!pct_notpov! * 100", "PYTHON", "")

# Add/Calculate Field
arcpy.AddField_management("dissolve_w_calls_crime", "call911_vcrime", "DOUBLE", "", "", "", "", "NULLABLE", "NON_REQUIRED")
arcpy.AddField_management("dissolve_w_calls_crime", "call911_pcrime", "DOUBLE", "", "", "", "", "NULLABLE", "NON_REQUIRED")
arcpy.AddField_management("dissolve_w_calls_crime", "call311_vcrime", "DOUBLE", "", "", "", "", "NULLABLE", "NON_REQUIRED")
arcpy.AddField_management("dissolve_w_calls_crime", "call311_pcrime", "DOUBLE", "", "", "", "", "NULLABLE", "NON_REQUIRED")
arcpy.CalculateField_management("dissolve_w_calls_crime", "call911_vcrime", "!ward_911_call_rate! / !violent_crime_rate!", "PYTHON", "")
arcpy.CalculateField_management("dissolve_w_calls_crime", "call911_pcrime", "!ward_911_call_rate! / !property_crime_rate!", "PYTHON", "")
arcpy.CalculateField_management("dissolve_w_calls_crime", "call311_vcrime", "!ward_311_call_rate! / !violent_crime_rate!", "PYTHON", "")
arcpy.CalculateField_management("dissolve_w_calls_crime", "call311_pcrime", "!ward_311_call_rate! / !property_crime_rate!", "PYTHON", "")


print "Calculate done"

# set path for OLS outputs
olsmap = "C:/Users/kjmag/Google Drive/Documents/UCHICAGO/MA Thesis/Data/master/thesis.gdb/olsmap"
olsCoef = "C:/Users/kjmag/Google Drive/Documents/UCHICAGO/MA Thesis/Data/master/thesis.gdb/olsCoef"
olsDiag = "C:/Users/kjmag/Google Drive/Documents/UCHICAGO/MA Thesis/Data/master/thesis.gdb/olsDiag"
olsreport = "C:/Users/kjmag/Google Drive/Documents/UCHICAGO/MA Thesis/Data/master/olsreport.pdf"

# Initial OLS
arcpy.OrdinaryLeastSquares_stats("dissolve_w_calls_crime.shp", "ward", "olsmap", 
                                 "ward_total_call_rate",
                                 "ward_crime_rate; pct_black; pct_lesshs; pct_dropout; pct_unemploy; pct_hhincome",
                                 "olsCoefTab.dbf", "olsDiagTab.dbf", "olsreport")

### Process: Add Field
arcpy.AddField_management("dissolve_w_calls_crime", "orig_area", "DOUBLE", "", "", "", "", "NULLABLE", "NON_REQUIRED")

print "done"

### Process: Calculate Field
arcpy.CalculateField_management("dissolve_w_calls_crime", "orig_area", '!Shape_Area!', "PYTHON")

print "done"
                                    
# Process: Identity
arcpy.Identity_analysis("raster", "dissolve_w_calls_crime", "raster_identity", "ALL", "", "NO_RELATIONSHIPS")

print "done"


# Process: Spatial Join
arcpy.SpatialJoin_analysis("dissolve_w_calls_crime", "raster", "raster_spatialjoin")

# Process: Add Field
arcpy.AddField_management("raster_sjoin_clip", "pct_orig_area", "DOUBLE", "", "", "", "", "NULLABLE", "NON_REQUIRED")

print "done"

# Process: Calculate Field
arcpy.CalculateField_management("raster_sjoin_clip", "pct_orig_area", "!Shape_area! / !orig_area!", "PYTHON")

print "done"

# Process: Calculate new field values
arcpy.CalculateField_management("raster_intersect", "SUM_new_pop", "!SUM_new_pop! * !pct_orig!", "PYTHON", "")
arcpy.CalculateField_management("raster_intersect", "SUM_new_male", "!SUM_new_male! * !pct_orig!", "PYTHON", "")
arcpy.CalculateField_management("raster_intersect", "SUM_new_female", "!SUM_new_female! * !pct_orig!", "PYTHON", "")
arcpy.CalculateField_management("raster_intersect", "SUM_new_under18", "!SUM_new_under18! * !pct_orig!", "PYTHON", "")
arcpy.CalculateField_management("raster_intersect", "SUM_new_18t34", "!SUM_new_18t34! * !pct_orig!", "PYTHON", "")
arcpy.CalculateField_management("raster_intersect", "SUM_new_35t64", "!SUM_new_35t64! * !pct_orig!", "PYTHON", "")
arcpy.CalculateField_management("raster_intersect", "SUM_new_over65", "!SUM_new_over65! * !pct_orig!", "PYTHON", "")
arcpy.CalculateField_management("raster_intersect", "SUM_new_white", "!SUM_new_white! * !pct_orig!", "PYTHON", "")
arcpy.CalculateField_management("raster_intersect", "SUM_new_black", "!SUM_new_black! * !pct_orig!", "PYTHON", "")
arcpy.CalculateField_management("raster_intersect", "SUM_new_nothisp", "!SUM_new_nothisp! * !pct_orig!", "PYTHON", "")
arcpy.CalculateField_management("raster_intersect", "SUM_new_hisp", "!SUM_new_hisp! * !pct_orig!", "PYTHON", "")
arcpy.CalculateField_management("raster_intersect", "SUM_new_pop25", "!SUM_new_pop25! * !pct_orig!", "PYTHON", "")
arcpy.CalculateField_management("raster_intersect", "SUM_new_lesshs", "!SUM_new_lesshs! * !pct_orig!", "PYTHON", "")
arcpy.CalculateField_management("raster_intersect", "SUM_new_hs", "!SUM_new_hs! * !pct_orig!", "PYTHON", "")
arcpy.CalculateField_management("raster_intersect", "SUM_new_bach", "!SUM_new_bach! * !pct_orig!", "PYTHON", "")
arcpy.CalculateField_management("raster_intersect", "SUM_new_schoolpop", "!SUM_new_schoolpop! * !pct_orig!", "PYTHON", "")
arcpy.CalculateField_management("raster_intersect", "SUM_new_dropout", "!SUM_new_dropout! * !pct_orig!", "PYTHON", "")
arcpy.CalculateField_management("raster_intersect", "SUM_new_enroll", "!SUM_new_enroll! * !pct_orig!", "PYTHON", "")
arcpy.CalculateField_management("raster_intersect", "SUM_new_workpop", "!SUM_new_workpop! * !pct_orig!", "PYTHON", "")
arcpy.CalculateField_management("raster_intersect", "SUM_new_employ", "!SUM_new_employ! * !pct_orig!", "PYTHON", "")
arcpy.CalculateField_management("raster_intersect", "SUM_new_unemploy", "!SUM_new_unemploy! * !pct_orig!", "PYTHON", "")
arcpy.CalculateField_management("raster_intersect", "SUM_new_ag_income_hh", "!SUM_new_ag_income_hh! * !pct_orig!", "PYTHON", "")
arcpy.CalculateField_management("raster_intersect", "SUM_new_numhh", "!SUM_new_numhh! * !pct_orig!", "PYTHON", "")
arcpy.CalculateField_management("raster_intersect", "SUM_new_own", "!SUM_new_own! * !pct_orig!", "PYTHON", "")
arcpy.CalculateField_management("raster_intersect", "SUM_new_rent", "!SUM_new_rent! * !pct_orig!", "PYTHON", "")
arcpy.CalculateField_management("raster_intersect", "SUM_new_povpop", "!SUM_new_povpop! * !pct_orig!", "PYTHON", "")
arcpy.CalculateField_management("raster_intersect", "SUM_new_pov", "!SUM_new_pov! * !pct_orig!", "PYTHON", "")
arcpy.CalculateField_management("raster_intersect", "SUM_new_notpov", "!SUM_new_notpov! * !pct_orig!", "PYTHON", "") 

 print "done"

 Process: Calculate new field values
arcpy.CalculateField_management("raster_intersect", "pct_male", "!SUM_new_male! / !SUM_new_pop! * 100", "PYTHON", "")
arcpy.CalculateField_management("raster_intersect", "pct_female", "!SUM_new_female! / !SUM_new_pop! * 100", "PYTHON", "")
arcpy.CalculateField_management("raster_intersect", "pct_under18", "!SUM_new_under18! / !SUM_new_pop! * 100", "PYTHON", "")
arcpy.CalculateField_management("raster_intersect", "pct_18t34", "!SUM_new_18t34! / !SUM_new_pop! * 100", "PYTHON", "")
arcpy.CalculateField_management("raster_intersect", "pct_35t64", "!SUM_new_35t64! / !SUM_new_pop! * 100", "PYTHON", "")
arcpy.CalculateField_management("raster_intersect", "pct_over65", "!SUM_new_over65! / !SUM_new_pop! * 100", "PYTHON", "")
arcpy.CalculateField_management("raster_intersect", "pct_white", "!SUM_new_white! / !SUM_new_pop! * 100", "PYTHON", "")
arcpy.CalculateField_management("raster_intersect", "pct_black", "!SUM_new_black! / !SUM_new_pop! * 100", "PYTHON", "")
arcpy.CalculateField_management("raster_intersect", "pct_nothisp", "!SUM_new_nothisp! / !SUM_new_pop! * 100", "PYTHON", "")
arcpy.CalculateField_management("raster_intersect", "pct_hisp", "!SUM_new_hisp! / !SUM_new_pop! * 100", "PYTHON", "")
arcpy.CalculateField_management("raster_intersect", "pct_lesshs", "!SUM_new_lesshs! / !SUM_new_pop25! * 100", "PYTHON", "")
arcpy.CalculateField_management("raster_intersect", "pct_hs", "!SUM_new_hs! / !SUM_new_pop25! * 100", "PYTHON", "")
arcpy.CalculateField_management("raster_intersect", "pct_bach", "!SUM_new_bach! / !SUM_new_pop25! * 100", "PYTHON", "")
arcpy.CalculateField_management("raster_intersect", "pct_dropout", "!SUM_new_dropout! / !SUM_new_schoolpop! * 100", "PYTHON", "")
arcpy.CalculateField_management("raster_intersect", "pct_enroll", "!SUM_new_enroll! / !SUM_new_schoolpop! * 100", "PYTHON", "")
arcpy.CalculateField_management("raster_intersect", "pct_employ", "!SUM_new_employ! / !SUM_new_workpop! * 100", "PYTHON", "")
arcpy.CalculateField_management("raster_intersect", "pct_unemploy", "!SUM_new_unemploy! / !SUM_new_workpop! * 100", "PYTHON", "")
arcpy.CalculateField_management("raster_intersect", "pct_hhincome", "!SUM_new_ag_income_hh! / !SUM_new_numhh!", "PYTHON", "")
arcpy.CalculateField_management("raster_intersect", "pct_own", "!SUM_new_own! / !SUM_new_numhh! * 100", "PYTHON", "")
arcpy.CalculateField_management("raster_intersect", "pct_rent", "!SUM_new_rent! / !SUM_new_numhh! * 100", "PYTHON", "")
arcpy.CalculateField_management("raster_intersect", "pct_pov", "!SUM_new_pov! / !SUM_new_povpop! * 100", "PYTHON", "")
arcpy.CalculateField_management("raster_intersect", "pct_notpov", "!SUM_new_notpov! / !SUM_new_povpop! * 100", "PYTHON", "")


 print "done"



# Process: Calculate fields
arcpy.CalculateField_management("raster_intersect", "HOMICIDE", "!HOMICIDE! * !pct_orig!", "PYTHON", "") 
arcpy.CalculateField_management("raster_intersect", "CRIMINAL_SEXUAL_ASSAULT", "!CRIMINAL_SEXUAL_ASSAULT! * !pct_orig!", "PYTHON", "") 
arcpy.CalculateField_management("raster_intersect", "ROBBERY", "!ROBBERY! * !pct_orig!", "PYTHON", "") 
arcpy.CalculateField_management("raster_intersect", "AGGRAVATED_ASSAULT", "!AGGRAVATED_ASSAULT! * !pct_orig!", "PYTHON", "") 
arcpy.CalculateField_management("raster_intersect", "AGGRAVATED_BATTERY", "!AGGRAVATED_BATTERY! * !pct_orig!", "PYTHON", "") 
arcpy.CalculateField_management("raster_intersect", "BURGLARY", "!BURGLARY! * !pct_orig!", "PYTHON", "") 
arcpy.CalculateField_management("raster_intersect", "MOTOR_VEHICLE_THEFT", "!MOTOR_VEHICLE_THEFT! * !pct_orig!", "PYTHON", "") 
arcpy.CalculateField_management("raster_intersect", "LARCENY", "!LARCENY! * !pct_orig!", "PYTHON", "") 
arcpy.CalculateField_management("raster_intersect", "ward_311call_count", "!ward_311call_count! * !pct_orig!", "PYTHON", "") 
arcpy.CalculateField_management("raster_intersect", "ward_911call_count", "!ward_911call_count! * !pct_orig!", "PYTHON", "") 
arcpy.CalculateField_management("raster_intersect", "total_311_911_call_count", "!total_311_911_call_count! * !pct_orig!", "PYTHON", "") 


# Process: Calculate new field values
arcpy.CalculateField_management("raster_intersect", "violent_crime_rate", "(!HOMICIDE! + !CRIMINAL_SEXUAL_ASSAULT! + !ROBBERY! + !AGGRAVATED_ASSAULT! + !AGGRAVATED_BATTERY!) / !SUM_new_pop!", "PYTHON", "")
arcpy.CalculateField_management("raster_intersect", "property_crime_rate", "(!BURGLARY! + !MOTOR_VEHICLE_THEFT! + !LARCENY!) / !SUM_new_pop!", "PYTHON", "")
arcpy.CalculateField_management("raster_intersect", "ward_311_call_rate", "!ward_311call_count! / !SUM_new_pop!", "PYTHON", "")
arcpy.CalculateField_management("raster_intersect", "ward_911_call_rate", "!ward_911call_count! / !SUM_new_pop!", "PYTHON", "")
arcpy.CalculateField_management("raster_intersect", "ward_total_call_rate", "!total_311_911_call_count! / !SUM_new_pop!", "PYTHON", "")

print "done"

# Process: Add new field values
arcpy.AddField_management("raster_sjoin_clip", "violent_rate_10k", "DOUBLE", "", "", "", "", "NULLABLE", "NON_REQUIRED")
arcpy.AddField_management("raster_sjoin_clip", "property_rate_10k", "DOUBLE", "", "", "", "", "NULLABLE", "NON_REQUIRED")
arcpy.AddField_management("raster_sjoin_clip", "callrate_311_10k", "DOUBLE", "", "", "", "", "NULLABLE", "NON_REQUIRED")
arcpy.AddField_management("raster_sjoin_clip", "callrate_911_10k", "DOUBLE", "", "", "", "", "NULLABLE", "NON_REQUIRED")
arcpy.AddField_management("raster_sjoin_clip", "callrate_total_10k", "DOUBLE", "", "", "", "", "NULLABLE", "NON_REQUIRED")

print "done"

# Process: Calculate new field values
arcpy.CalculateField_management("raster_sjoin_clip", "violent_rate_10k", "(!HOMICIDE! + !CRIMINAL_SEXUAL_ASSAULT! + !ROBBERY! + !AGGRAVATED_ASSAULT! + !AGGRAVATED_BATTERY!) / !SUM_new_pop! * 10000", "PYTHON_9.3", "")
arcpy.CalculateField_management("raster_sjoin_clip", "property_rate_10k", "(!BURGLARY! + !MOTOR_VEHICLE_THEFT! + !LARCENY!) / !SUM_new_pop! * 10000", "PYTHON_9.3", "")
arcpy.CalculateField_management("raster_sjoin_clip", "callrate_311_10k", "!ward_311call_count! / !SUM_new_pop! * 10000", "PYTHON_9.3", "")
arcpy.CalculateField_management("raster_sjoin_clip", "callrate_911_10k", "!ward_911call_count! / !SUM_new_pop! * 10000", "PYTHON_9.3", "")
arcpy.CalculateField_management("raster_sjoin_clip", "callrate_total_10k", "!total_311_911_call_count! / !SUM_new_pop! * 10000", "PYTHON_9.3", "")

print "done"

arcpy.HotSpots_stats("dissolve_join", "HOMICIDE", "homicide_hotspot", "CONTIGUITY_EDGES_CORNERS", "", "NONE", "", "", "", "")