I have this block of code that I would like repeated 21 times. It creates a feature layer, executes summary statistics, joins a field, executes update cursor twice, for a line and polygon feature class. Lastly, it calculates a field and deletes two fields.
Can somebody please explain to me the logic of the Python method/function? How does the program know which variable should be called within an ArcPy function?
The block of code below has within the first function what I would like executed 21 times. However, when the SummaryStats(DistrictConfig) is executed, I do not receive my expected output. What is being done incorrectly?
<SPAN class="keyword token">import</SPAN> arcpy
<SPAN class="keyword token">import</SPAN> DistrictConfig
<SPAN class="keyword token">import</SPAN> logging
<SPAN class="keyword token">import</SPAN> logging<SPAN class="punctuation token">.</SPAN>handlers
<SPAN class="keyword token">import</SPAN> ConfigParser
LOGGER_NAME <SPAN class="operator token">=</SPAN> <SPAN class="string token">'korterra_district'</SPAN>
arcpy<SPAN class="punctuation token">.</SPAN>env<SPAN class="punctuation token">.</SPAN>workspace <SPAN class="operator token">=</SPAN> r<SPAN class="string token">"C:\KorTerraTables\tables_db.gdb"</SPAN>
arcpy<SPAN class="punctuation token">.</SPAN>env<SPAN class="punctuation token">.</SPAN>overwriteOutput <SPAN class="operator token">=</SPAN> <SPAN class="token boolean">True</SPAN>
<SPAN class="keyword token">from</SPAN> datetime <SPAN class="keyword token">import</SPAN> datetime
startTime <SPAN class="operator token">=</SPAN> datetime<SPAN class="punctuation token">.</SPAN>now<SPAN class="punctuation token">(</SPAN><SPAN class="punctuation token">)</SPAN>
logger <SPAN class="operator token">=</SPAN> logging<SPAN class="punctuation token">.</SPAN>getLogger<SPAN class="punctuation token">(</SPAN>LOGGER_NAME<SPAN class="punctuation token">)</SPAN>
distfc <SPAN class="operator token">=</SPAN> DistrictConfig<SPAN class="punctuation token">.</SPAN>distfc
linefc <SPAN class="operator token">=</SPAN> DistrictConfig<SPAN class="punctuation token">.</SPAN>linefc
polyfc <SPAN class="operator token">=</SPAN> DistrictConfig<SPAN class="punctuation token">.</SPAN>polyfc
totalexpression <SPAN class="operator token">=</SPAN> DistrictConfig<SPAN class="punctuation token">.</SPAN>TotalExpression
totalscline <SPAN class="operator token">=</SPAN> DistrictConfig<SPAN class="punctuation token">.</SPAN>TotalSCLine
totalscpoly <SPAN class="operator token">=</SPAN> DistrictConfig<SPAN class="punctuation token">.</SPAN>TotalSCPoly
statsfield <SPAN class="operator token">=</SPAN> DistrictConfig<SPAN class="punctuation token">.</SPAN>StatsField
fields <SPAN class="operator token">=</SPAN> DistrictConfig<SPAN class="punctuation token">.</SPAN>fields
totalCalc <SPAN class="operator token">=</SPAN> DistrictConfig<SPAN class="punctuation token">.</SPAN>TotalCalc
unique_name <SPAN class="operator token">=</SPAN> arcpy<SPAN class="punctuation token">.</SPAN>CreateUniqueName<SPAN class="punctuation token">(</SPAN><SPAN class="string token">"featureLyr"</SPAN><SPAN class="punctuation token">)</SPAN>
transPoly <SPAN class="operator token">=</SPAN> DistrictConfig<SPAN class="punctuation token">.</SPAN>Overdue_Expression_SC_Tran
overDueLine <SPAN class="operator token">=</SPAN> DistrictConfig<SPAN class="punctuation token">.</SPAN>OverdueTableSC_TransLine
overDueExpression <SPAN class="operator token">=</SPAN> DistrictConfig<SPAN class="punctuation token">.</SPAN>Overdue_Expression
statusCaseFields <SPAN class="operator token">=</SPAN> DistrictConfig<SPAN class="punctuation token">.</SPAN>CaseFields
TotalLong <SPAN class="operator token">=</SPAN><SPAN class="string token">"TOTAL_LONG"</SPAN>
OverDueTotal <SPAN class="operator token">=</SPAN> <SPAN class="string token">"OVERDUE"</SPAN>
<SPAN class="keyword token">def</SPAN> <SPAN class="token function">DistrictFunction</SPAN><SPAN class="punctuation token">(</SPAN>DistrictConfig<SPAN class="punctuation token">,</SPAN> distfc<SPAN class="punctuation token">,</SPAN> totalexpression<SPAN class="punctuation token">,</SPAN> totalscline<SPAN class="punctuation token">,</SPAN> statsfield<SPAN class="punctuation token">,</SPAN> fields<SPAN class="punctuation token">,</SPAN>TotalLong<SPAN class="punctuation token">)</SPAN><SPAN class="punctuation token">:</SPAN>
<SPAN class="keyword token">print</SPAN> <SPAN class="string token">"Calculating Total Line Tickets per District"</SPAN>
arcpy<SPAN class="punctuation token">.</SPAN>MakeFeatureLayer_management<SPAN class="punctuation token">(</SPAN>linefc<SPAN class="punctuation token">,</SPAN> unique_name<SPAN class="punctuation token">,</SPAN> totalexpression<SPAN class="punctuation token">)</SPAN>
arcpy<SPAN class="punctuation token">.</SPAN>Statistics_analysis<SPAN class="punctuation token">(</SPAN>unique_name<SPAN class="punctuation token">,</SPAN> totalscline <SPAN class="punctuation token">,</SPAN> statsfield<SPAN class="punctuation token">,</SPAN> <SPAN class="string token">"DISTRICT"</SPAN><SPAN class="punctuation token">)</SPAN>
arcpy<SPAN class="punctuation token">.</SPAN>JoinField_management<SPAN class="punctuation token">(</SPAN>distfc<SPAN class="punctuation token">,</SPAN> <SPAN class="string token">"NAME"</SPAN><SPAN class="punctuation token">,</SPAN> totalscline<SPAN class="punctuation token">,</SPAN> <SPAN class="string token">"DISTRICT"</SPAN><SPAN class="punctuation token">,</SPAN> fields<SPAN class="punctuation token">)</SPAN>
<SPAN class="keyword token">with</SPAN> arcpy<SPAN class="punctuation token">.</SPAN>da<SPAN class="punctuation token">.</SPAN>UpdateCursor<SPAN class="punctuation token">(</SPAN>distfc<SPAN class="punctuation token">,</SPAN> <SPAN class="punctuation token">[</SPAN><SPAN class="string token">"FREQUENCY"</SPAN><SPAN class="punctuation token">]</SPAN><SPAN class="punctuation token">)</SPAN> <SPAN class="keyword token">as</SPAN> cursor<SPAN class="punctuation token">:</SPAN>
<SPAN class="keyword token">for</SPAN> row <SPAN class="keyword token">in</SPAN> cursor<SPAN class="punctuation token">:</SPAN>
<SPAN class="keyword token">if</SPAN> row<SPAN class="punctuation token">[</SPAN><SPAN class="number token">0</SPAN><SPAN class="punctuation token">]</SPAN> <SPAN class="operator token">==</SPAN> None<SPAN class="punctuation token">:</SPAN>
row<SPAN class="punctuation token">[</SPAN><SPAN class="number token">0</SPAN><SPAN class="punctuation token">]</SPAN> <SPAN class="operator token">=</SPAN> <SPAN class="number token">0</SPAN>
cursor<SPAN class="punctuation token">.</SPAN>updateRow<SPAN class="punctuation token">(</SPAN>row<SPAN class="punctuation token">)</SPAN>
<SPAN class="comment token">#Calculate and Join Totals per District Polys</SPAN>
arcpy<SPAN class="punctuation token">.</SPAN>MakeFeatureLayer_management<SPAN class="punctuation token">(</SPAN>polyfc<SPAN class="punctuation token">,</SPAN> unique_name<SPAN class="punctuation token">,</SPAN> totalexpression<SPAN class="punctuation token">)</SPAN>
arcpy<SPAN class="punctuation token">.</SPAN>Statistics_analysis<SPAN class="punctuation token">(</SPAN>unique_name<SPAN class="punctuation token">,</SPAN> totalscpoly <SPAN class="punctuation token">,</SPAN> statsfield<SPAN class="punctuation token">,</SPAN> <SPAN class="string token">"DISTRICT"</SPAN><SPAN class="punctuation token">)</SPAN>
arcpy<SPAN class="punctuation token">.</SPAN>JoinField_management<SPAN class="punctuation token">(</SPAN>distfc<SPAN class="punctuation token">,</SPAN> <SPAN class="string token">"NAME"</SPAN><SPAN class="punctuation token">,</SPAN> totalscpoly<SPAN class="punctuation token">,</SPAN> <SPAN class="string token">"DISTRICT"</SPAN><SPAN class="punctuation token">,</SPAN> fields<SPAN class="punctuation token">)</SPAN>
<SPAN class="keyword token">with</SPAN> arcpy<SPAN class="punctuation token">.</SPAN>da<SPAN class="punctuation token">.</SPAN>UpdateCursor<SPAN class="punctuation token">(</SPAN>distfc<SPAN class="punctuation token">,</SPAN> <SPAN class="punctuation token">[</SPAN><SPAN class="string token">"FREQUENCY_1"</SPAN><SPAN class="punctuation token">]</SPAN><SPAN class="punctuation token">)</SPAN> <SPAN class="keyword token">as</SPAN> cursor<SPAN class="punctuation token">:</SPAN>
<SPAN class="keyword token">for</SPAN> row <SPAN class="keyword token">in</SPAN> cursor<SPAN class="punctuation token">:</SPAN>
<SPAN class="keyword token">if</SPAN> row<SPAN class="punctuation token">[</SPAN><SPAN class="number token">0</SPAN><SPAN class="punctuation token">]</SPAN> <SPAN class="operator token">==</SPAN> None<SPAN class="punctuation token">:</SPAN>
row<SPAN class="punctuation token">[</SPAN><SPAN class="number token">0</SPAN><SPAN class="punctuation token">]</SPAN> <SPAN class="operator token">=</SPAN> <SPAN class="number token">0</SPAN>
cursor<SPAN class="punctuation token">.</SPAN>updateRow<SPAN class="punctuation token">(</SPAN>row<SPAN class="punctuation token">)</SPAN>
arcpy<SPAN class="punctuation token">.</SPAN>CalculateField_management<SPAN class="punctuation token">(</SPAN>distfc<SPAN class="punctuation token">,</SPAN> TotalLong<SPAN class="punctuation token">,</SPAN> totalCalc<SPAN class="punctuation token">)</SPAN>
arcpy<SPAN class="punctuation token">.</SPAN>DeleteField_management<SPAN class="punctuation token">(</SPAN>distfc<SPAN class="punctuation token">,</SPAN> <SPAN class="punctuation token">[</SPAN><SPAN class="string token">"FREQUENCY"</SPAN><SPAN class="punctuation token">,</SPAN> <SPAN class="string token">"FREQUENCY_1"</SPAN><SPAN class="punctuation token">]</SPAN><SPAN class="punctuation token">)</SPAN>
<SPAN class="keyword token">def</SPAN> <SPAN class="token function">SummaryStats</SPAN><SPAN class="punctuation token">(</SPAN>DistrictConfig<SPAN class="punctuation token">)</SPAN><SPAN class="punctuation token">:</SPAN>
<SPAN class="keyword token">try</SPAN><SPAN class="punctuation token">:</SPAN>
<SPAN class="comment token">## DistrictFunction(DistrictConfig, distfc, totalexpression, totalscline, statsfield, fields, TotalLong )</SPAN>
<SPAN class="comment token">## DistrictFunction(DistrictConfig, distfc, totalexpression, totalscpoly, statsfield, fields, TotalLong)</SPAN>
DistrictFunction<SPAN class="punctuation token">(</SPAN>DistrictConfig<SPAN class="punctuation token">,</SPAN> distfc<SPAN class="punctuation token">,</SPAN> overDueExpression<SPAN class="punctuation token">,</SPAN> overDueLine<SPAN class="punctuation token">,</SPAN> statsfield<SPAN class="punctuation token">,</SPAN> fields<SPAN class="punctuation token">,</SPAN> OverDueTotal<SPAN class="punctuation token">)</SPAN>
<SPAN class="keyword token">except</SPAN> Exception <SPAN class="keyword token">as</SPAN> e<SPAN class="punctuation token">:</SPAN>
logger<SPAN class="punctuation token">.</SPAN>info<SPAN class="punctuation token">(</SPAN>e<SPAN class="punctuation token">.</SPAN>message<SPAN class="punctuation token">,</SPAN> exc_info<SPAN class="operator token">=</SPAN><SPAN class="token boolean">True</SPAN><SPAN class="punctuation token">)</SPAN>
<SPAN class="keyword token">raise</SPAN> e
<SPAN class="line-numbers-rows"><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN></SPAN>