I am trying to update field in a feature class using attributes from other feature classes. For this, I am currently leveraging spatial joins on feature layers, search cursors, and update cursors. The script runs successfully on small datasets within a few minutes but chugs on large ones. It seems as though this would be a good candidate script to use Richard Fairhurst's /blogs/richard_fairhurst/2014/11/08/turbo-charging-data-manipulation-with-python-cursors-and-dictionaries technique. Though, I am still getting a grasp on how to best use dictionaries to optimize script performance and am unsure of where I can best use these techniques here. Any suggestions on how to boost the speed of this script? Maybe there is another option out there to optimize it? The script is using three feature classes, subLayer, transLayer, and ppLayer to update new fields in the subLayer feature class based on spatial and attribute relationships. I have attached and commented a simplified version of the code here. Some of the blocks are ran multiple time for different attributes, and I have stripped that out here to slim down the code.
Thanks in advance! Any advice will be hugely appreciated.
<SPAN class="keyword token">import</SPAN> arcpy
<SPAN class="keyword token">from</SPAN> arcpy <SPAN class="keyword token">import</SPAN> env
<SPAN class="keyword token">import</SPAN> time
start <SPAN class="operator token">=</SPAN> time<SPAN class="punctuation token">.</SPAN>time<SPAN class="punctuation token">(</SPAN><SPAN class="punctuation token">)</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>
defaultGdbPath <SPAN class="operator token">=</SPAN> <SPAN class="string token">'C:\Topo_Check_V5.gdb'</SPAN>
subLayer<SPAN class="operator token">=</SPAN><SPAN class="string token">'C:\Topo_Check_V5.gdb\Subs'</SPAN> <SPAN class="comment token">#point feature class</SPAN>
transLayer<SPAN class="operator token">=</SPAN><SPAN class="string token">'C:\Topo_Check_V5.gdb\TLS'</SPAN> <SPAN class="comment token"># line feature class</SPAN>
ppLayer<SPAN class="operator token">=</SPAN><SPAN class="string token">'C:\Topo_Check_V5.gdb\PPS'</SPAN> <SPAN class="comment token">#point feature class</SPAN>
<SPAN class="comment token">###### Line Counts: Count of connecting lines within distance of point feature class ################</SPAN>
<SPAN class="comment token">#add in Line_Count field </SPAN>
arcpy<SPAN class="punctuation token">.</SPAN>AddField_management<SPAN class="punctuation token">(</SPAN>subLayer<SPAN class="punctuation token">,</SPAN> <SPAN class="string token">"Line_Count"</SPAN><SPAN class="punctuation token">,</SPAN> <SPAN class="string token">"SHORT"</SPAN><SPAN class="punctuation token">,</SPAN> <SPAN class="string token">""</SPAN><SPAN class="punctuation token">,</SPAN> <SPAN class="string token">""</SPAN><SPAN class="punctuation token">,</SPAN> <SPAN class="string token">""</SPAN><SPAN class="punctuation token">,</SPAN> <SPAN class="string token">""</SPAN><SPAN class="punctuation token">,</SPAN> <SPAN class="string token">"NULLABLE"</SPAN><SPAN class="punctuation token">,</SPAN> <SPAN class="string token">"NON_REQUIRED"</SPAN><SPAN class="punctuation token">,</SPAN> <SPAN class="string token">""</SPAN><SPAN class="punctuation token">)</SPAN>
TLineCountField <SPAN class="operator token">=</SPAN> <SPAN class="string token">"Line_Count"</SPAN>
<SPAN class="comment token">#MakeFeatureLayer</SPAN>
arcpy<SPAN class="punctuation token">.</SPAN>MakeFeatureLayer_management<SPAN class="punctuation token">(</SPAN>transLayer<SPAN class="punctuation token">,</SPAN> <SPAN class="string token">"transLayer_lyr"</SPAN><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>subLayer<SPAN class="punctuation token">,</SPAN> <SPAN class="punctuation token">[</SPAN>TLineCountField<SPAN class="punctuation token">,</SPAN> <SPAN class="string token">"SHAPE@"</SPAN><SPAN class="punctuation token">]</SPAN><SPAN class="punctuation token">)</SPAN> <SPAN class="keyword token">as</SPAN> LineCountList<SPAN class="punctuation token">:</SPAN>
<SPAN class="keyword token">for</SPAN> subrow <SPAN class="keyword token">in</SPAN> LineCountList<SPAN class="punctuation token">:</SPAN>
arcpy<SPAN class="punctuation token">.</SPAN>SelectLayerByLocation_management<SPAN class="punctuation token">(</SPAN><SPAN class="string token">"transLayer_lyr"</SPAN><SPAN class="punctuation token">,</SPAN> <SPAN class="string token">'WITHIN_A_DISTANCE'</SPAN><SPAN class="punctuation token">,</SPAN> subrow<SPAN class="punctuation token">[</SPAN><SPAN class="number token">1</SPAN><SPAN class="punctuation token">]</SPAN><SPAN class="punctuation token">,</SPAN> <SPAN class="punctuation token">.</SPAN><SPAN class="number token">000002</SPAN><SPAN class="punctuation token">,</SPAN> <SPAN class="string token">"NEW_SELECTION"</SPAN><SPAN class="punctuation token">)</SPAN>
result<SPAN class="operator token">=</SPAN>int<SPAN class="punctuation token">(</SPAN>arcpy<SPAN class="punctuation token">.</SPAN>GetCount_management<SPAN class="punctuation token">(</SPAN><SPAN class="string token">"transLayer_lyr"</SPAN><SPAN class="punctuation token">)</SPAN><SPAN class="punctuation token">.</SPAN>getOutput<SPAN class="punctuation token">(</SPAN><SPAN class="number token">0</SPAN><SPAN class="punctuation token">)</SPAN><SPAN class="punctuation token">)</SPAN>
<SPAN class="comment token">#print result</SPAN>
subrow<SPAN class="punctuation token">[</SPAN><SPAN class="number token">0</SPAN><SPAN class="punctuation token">]</SPAN> <SPAN class="operator token">=</SPAN> result
LineCountList<SPAN class="punctuation token">.</SPAN>updateRow<SPAN class="punctuation token">(</SPAN>subrow<SPAN class="punctuation token">)</SPAN>
<SPAN class="keyword token">print</SPAN> <SPAN class="string token">"Line_Count Updated"</SPAN>
<SPAN class="keyword token">del</SPAN> LineCountList
<SPAN class="comment token">###### Line Counts 13.8 : Line counts based on attribute, repeated 9 more times for various attributes ###########</SPAN>
<SPAN class="comment token">#add in Line_Count_13_8 field</SPAN>
arcpy<SPAN class="punctuation token">.</SPAN>AddField_management<SPAN class="punctuation token">(</SPAN>subLayer<SPAN class="punctuation token">,</SPAN> <SPAN class="string token">"Line_Count_13_8"</SPAN><SPAN class="punctuation token">,</SPAN> <SPAN class="string token">"SHORT"</SPAN><SPAN class="punctuation token">,</SPAN> <SPAN class="string token">""</SPAN><SPAN class="punctuation token">,</SPAN> <SPAN class="string token">""</SPAN><SPAN class="punctuation token">,</SPAN> <SPAN class="string token">""</SPAN><SPAN class="punctuation token">,</SPAN> <SPAN class="string token">""</SPAN><SPAN class="punctuation token">,</SPAN> <SPAN class="string token">"NULLABLE"</SPAN><SPAN class="punctuation token">,</SPAN> <SPAN class="string token">"NON_REQUIRED"</SPAN><SPAN class="punctuation token">,</SPAN> <SPAN class="string token">""</SPAN><SPAN class="punctuation token">)</SPAN>
TLineCountField_13_8 <SPAN class="operator token">=</SPAN> <SPAN class="string token">"Line_Count_13_8"</SPAN>
<SPAN class="comment token">#VLTSField = "VLTS"</SPAN>
<SPAN class="comment token">#Make feature layer</SPAN>
arcpy<SPAN class="punctuation token">.</SPAN>MakeFeatureLayer_management<SPAN class="punctuation token">(</SPAN>transLayer<SPAN class="punctuation token">,</SPAN> <SPAN class="string token">"transLayer_13_8"</SPAN><SPAN class="punctuation token">)</SPAN>
<SPAN class="comment token">#where clause</SPAN>
where_13_8 <SPAN class="operator token">=</SPAN> <SPAN class="string token">' "VLTS" = 13.8 '</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>subLayer<SPAN class="punctuation token">,</SPAN> <SPAN class="punctuation token">[</SPAN>TLineCountField_13_8<SPAN class="punctuation token">,</SPAN> <SPAN class="string token">"SHAPE@"</SPAN><SPAN class="punctuation token">]</SPAN><SPAN class="punctuation token">)</SPAN> <SPAN class="keyword token">as</SPAN> LineCountList_13_8<SPAN class="punctuation token">:</SPAN>
<SPAN class="keyword token">for</SPAN> subrow <SPAN class="keyword token">in</SPAN> LineCountList_13_8<SPAN class="punctuation token">:</SPAN>
arcpy<SPAN class="punctuation token">.</SPAN>SelectLayerByLocation_management<SPAN class="punctuation token">(</SPAN><SPAN class="string token">"transLayer_13_8"</SPAN><SPAN class="punctuation token">,</SPAN> <SPAN class="string token">'WITHIN_A_DISTANCE'</SPAN><SPAN class="punctuation token">,</SPAN> subrow<SPAN class="punctuation token">[</SPAN><SPAN class="number token">1</SPAN><SPAN class="punctuation token">]</SPAN><SPAN class="punctuation token">,</SPAN> <SPAN class="punctuation token">.</SPAN><SPAN class="number token">000002</SPAN><SPAN class="punctuation token">,</SPAN> <SPAN class="string token">"NEW_SELECTION"</SPAN><SPAN class="punctuation token">)</SPAN>
arcpy<SPAN class="punctuation token">.</SPAN>SelectLayerByAttribute_management <SPAN class="punctuation token">(</SPAN><SPAN class="string token">"transLayer_13_8"</SPAN><SPAN class="punctuation token">,</SPAN> <SPAN class="string token">"SUBSET_SELECTION"</SPAN><SPAN class="punctuation token">,</SPAN> where_13_8<SPAN class="punctuation token">)</SPAN>
result<SPAN class="operator token">=</SPAN>int<SPAN class="punctuation token">(</SPAN>arcpy<SPAN class="punctuation token">.</SPAN>GetCount_management<SPAN class="punctuation token">(</SPAN><SPAN class="string token">"transLayer_13_8"</SPAN><SPAN class="punctuation token">)</SPAN><SPAN class="punctuation token">.</SPAN>getOutput<SPAN class="punctuation token">(</SPAN><SPAN class="number token">0</SPAN><SPAN class="punctuation token">)</SPAN><SPAN class="punctuation token">)</SPAN>
<SPAN class="comment token">#print result</SPAN>
subrow<SPAN class="punctuation token">[</SPAN><SPAN class="number token">0</SPAN><SPAN class="punctuation token">]</SPAN> <SPAN class="operator token">=</SPAN> result
LineCountList_13_8<SPAN class="punctuation token">.</SPAN>updateRow<SPAN class="punctuation token">(</SPAN>subrow<SPAN class="punctuation token">)</SPAN>
<SPAN class="keyword token">print</SPAN> <SPAN class="string token">"Line_Count_13_8 Updated"</SPAN>
<SPAN class="keyword token">del</SPAN> LineCountList_13_8
<SPAN class="comment token">######################################################################################################################</SPAN>
<SPAN class="comment token">############## *** repeat 'Line Counts' for all VLTSs ##########</SPAN>
<SPAN class="comment token">############################## GU Count --count of interger field from ppLayer###############################</SPAN>
arcpy<SPAN class="punctuation token">.</SPAN>AddField_management<SPAN class="punctuation token">(</SPAN>subLayer<SPAN class="punctuation token">,</SPAN> <SPAN class="string token">"GU_Count"</SPAN><SPAN class="punctuation token">,</SPAN> <SPAN class="string token">"FLOAT"</SPAN><SPAN class="punctuation token">,</SPAN> <SPAN class="string token">""</SPAN><SPAN class="punctuation token">,</SPAN> <SPAN class="string token">""</SPAN><SPAN class="punctuation token">,</SPAN> <SPAN class="string token">""</SPAN><SPAN class="punctuation token">,</SPAN> <SPAN class="string token">""</SPAN><SPAN class="punctuation token">,</SPAN> <SPAN class="string token">"NULLABLE"</SPAN><SPAN class="punctuation token">,</SPAN> <SPAN class="string token">"NON_REQUIRED"</SPAN><SPAN class="punctuation token">,</SPAN> <SPAN class="string token">""</SPAN><SPAN class="punctuation token">)</SPAN>
GUCountField <SPAN class="operator token">=</SPAN> <SPAN class="string token">"GU_Count"</SPAN>
<SPAN class="comment token">#Make feature layer</SPAN>
arcpy<SPAN class="punctuation token">.</SPAN>MakeFeatureLayer_management<SPAN class="punctuation token">(</SPAN>ppLayer<SPAN class="punctuation token">,</SPAN> <SPAN class="string token">"ppLayerGU"</SPAN><SPAN class="punctuation token">)</SPAN>
<SPAN class="comment token">#Make feature layer</SPAN>
arcpy<SPAN class="punctuation token">.</SPAN>MakeFeatureLayer_management<SPAN class="punctuation token">(</SPAN>transLayer<SPAN class="punctuation token">,</SPAN> <SPAN class="string token">"transLayerGU"</SPAN><SPAN class="punctuation token">)</SPAN>
pp_trans_GUJoin <SPAN class="operator token">=</SPAN><SPAN class="string token">'C:\Topo_Check_V5.gdb\pp_trans_GU_SpatialJoin'</SPAN>
SubLayer_pp_trans_GUJoin <SPAN class="operator token">=</SPAN> <SPAN class="string token">'C:\Topo_Check_V5.gdb\SubLayer_pp_trans_GUSpatialJoin'</SPAN>
<SPAN class="comment token">#spatial join of feature layers</SPAN>
arcpy<SPAN class="punctuation token">.</SPAN>SpatialJoin_analysis <SPAN class="punctuation token">(</SPAN><SPAN class="string token">"transLayerGU"</SPAN><SPAN class="punctuation token">,</SPAN> <SPAN class="string token">"ppLayerGU"</SPAN><SPAN class="punctuation token">,</SPAN> pp_trans_GUJoin<SPAN class="punctuation token">,</SPAN> <SPAN class="string token">'JOIN_ONE_TO_MANY'</SPAN><SPAN class="punctuation token">,</SPAN> <SPAN class="string token">'KEEP_ALL'</SPAN><SPAN class="punctuation token">,</SPAN> '<SPAN class="comment token">#', 'WITHIN_A_DISTANCE', .0005) </SPAN>
<SPAN class="comment token">#add new count field for distinct count for PP count </SPAN>
arcpy<SPAN class="punctuation token">.</SPAN>AddField_management<SPAN class="punctuation token">(</SPAN>pp_trans_GUJoin<SPAN class="punctuation token">,</SPAN> <SPAN class="string token">"Join_Count_PP"</SPAN><SPAN class="punctuation token">,</SPAN> <SPAN class="string token">"LONG"</SPAN><SPAN class="punctuation token">,</SPAN> <SPAN class="string token">""</SPAN><SPAN class="punctuation token">,</SPAN> <SPAN class="string token">""</SPAN><SPAN class="punctuation token">,</SPAN> <SPAN class="string token">""</SPAN><SPAN class="punctuation token">,</SPAN> <SPAN class="string token">""</SPAN><SPAN class="punctuation token">,</SPAN> <SPAN class="string token">"NULLABLE"</SPAN><SPAN class="punctuation token">,</SPAN> <SPAN class="string token">"NON_REQUIRED"</SPAN><SPAN class="punctuation token">,</SPAN> <SPAN class="string token">""</SPAN><SPAN class="punctuation token">)</SPAN>
<SPAN class="comment token">#calculate field == Join_Count</SPAN>
arcpy<SPAN class="punctuation token">.</SPAN>CalculateField_management <SPAN class="punctuation token">(</SPAN>pp_trans_GUJoin<SPAN class="punctuation token">,</SPAN> <SPAN class="string token">"Join_Count_PP"</SPAN><SPAN class="punctuation token">,</SPAN> <SPAN class="string token">"!Join_Count!"</SPAN><SPAN class="punctuation token">,</SPAN> <SPAN class="string token">"PYTHON_9.3"</SPAN><SPAN class="punctuation token">)</SPAN>
<SPAN class="comment token">#Make feature layer</SPAN>
arcpy<SPAN class="punctuation token">.</SPAN>MakeFeatureLayer_management<SPAN class="punctuation token">(</SPAN>subLayer<SPAN class="punctuation token">,</SPAN> <SPAN class="string token">"SubLayer_Layer"</SPAN><SPAN class="punctuation token">)</SPAN>
<SPAN class="comment token">#Make feature layer </SPAN>
arcpy<SPAN class="punctuation token">.</SPAN>MakeFeatureLayer_management<SPAN class="punctuation token">(</SPAN>pp_trans_GUJoin<SPAN class="punctuation token">,</SPAN> <SPAN class="string token">"pp_trans_GUJoin_Layer"</SPAN><SPAN class="punctuation token">)</SPAN>
<SPAN class="comment token"># create a list of fields to sum from pp_trans_GUJoin</SPAN>
fieldNamesToSum <SPAN class="operator token">=</SPAN> <SPAN class="punctuation token">[</SPAN><SPAN class="string token">'Join_Count'</SPAN><SPAN class="punctuation token">,</SPAN><SPAN class="string token">'GEN_UNITS'</SPAN><SPAN class="punctuation token">,</SPAN> <SPAN class="string token">'Join_Count_PP'</SPAN><SPAN class="punctuation token">]</SPAN>
<SPAN class="comment token"># create the field mapping object </SPAN>
fieldMappings <SPAN class="operator token">=</SPAN> arcpy<SPAN class="punctuation token">.</SPAN>FieldMappings<SPAN class="punctuation token">(</SPAN><SPAN class="punctuation token">)</SPAN>
<SPAN class="comment token"># populate the field mapping object with the fields from both feature classes </SPAN>
fieldMappings<SPAN class="punctuation token">.</SPAN>addTable<SPAN class="punctuation token">(</SPAN><SPAN class="string token">"SubLayer_Layer"</SPAN><SPAN class="punctuation token">)</SPAN>
fieldMappings<SPAN class="punctuation token">.</SPAN>addTable<SPAN class="punctuation token">(</SPAN><SPAN class="string token">"pp_trans_GUJoin_Layer"</SPAN><SPAN class="punctuation token">)</SPAN>
<SPAN class="comment token"># loop through the field names to sum </SPAN>
<SPAN class="keyword token">for</SPAN> Join_Count <SPAN class="keyword token">in</SPAN> fieldNamesToSum<SPAN class="punctuation token">:</SPAN>
<SPAN class="comment token"># get the field map index of this field and get the field map </SPAN>
fieldIndex <SPAN class="operator token">=</SPAN> fieldMappings<SPAN class="punctuation token">.</SPAN>findFieldMapIndex<SPAN class="punctuation token">(</SPAN><SPAN class="string token">'Join_Count'</SPAN><SPAN class="punctuation token">)</SPAN>
fieldMap <SPAN class="operator token">=</SPAN> fieldMappings<SPAN class="punctuation token">.</SPAN>getFieldMap<SPAN class="punctuation token">(</SPAN>fieldIndex<SPAN class="punctuation token">)</SPAN>
<SPAN class="comment token"># update the field map with the new merge rule (by default the merge rule is 'First') </SPAN>
fieldMap<SPAN class="punctuation token">.</SPAN>mergeRule <SPAN class="operator token">=</SPAN> <SPAN class="string token">'Sum'</SPAN>
<SPAN class="comment token"># replace with the updated field map </SPAN>
fieldMappings<SPAN class="punctuation token">.</SPAN>replaceFieldMap<SPAN class="punctuation token">(</SPAN>fieldIndex<SPAN class="punctuation token">,</SPAN> fieldMap<SPAN class="punctuation token">)</SPAN>
<SPAN class="comment token"># loop through the field names to sum </SPAN>
<SPAN class="keyword token">for</SPAN> GEN_UNITS <SPAN class="keyword token">in</SPAN> fieldNamesToSum<SPAN class="punctuation token">:</SPAN>
<SPAN class="comment token"># get the field map index of this field and get the field map </SPAN>
fieldIndex <SPAN class="operator token">=</SPAN> fieldMappings<SPAN class="punctuation token">.</SPAN>findFieldMapIndex<SPAN class="punctuation token">(</SPAN><SPAN class="string token">'GEN_UNITS'</SPAN><SPAN class="punctuation token">)</SPAN>
fieldMap <SPAN class="operator token">=</SPAN> fieldMappings<SPAN class="punctuation token">.</SPAN>getFieldMap<SPAN class="punctuation token">(</SPAN>fieldIndex<SPAN class="punctuation token">)</SPAN>
<SPAN class="comment token"># update the field map with the new merge rule (by default the merge rule is 'First') </SPAN>
fieldMap<SPAN class="punctuation token">.</SPAN>mergeRule <SPAN class="operator token">=</SPAN> <SPAN class="string token">'Sum'</SPAN>
<SPAN class="comment token"># replace with the updated field map </SPAN>
fieldMappings<SPAN class="punctuation token">.</SPAN>replaceFieldMap<SPAN class="punctuation token">(</SPAN>fieldIndex<SPAN class="punctuation token">,</SPAN> fieldMap<SPAN class="punctuation token">)</SPAN>
<SPAN class="keyword token">for</SPAN> Join_Count_PP <SPAN class="keyword token">in</SPAN> fieldNamesToSum<SPAN class="punctuation token">:</SPAN>
<SPAN class="comment token"># get the field map index of this field and get the field map </SPAN>
fieldIndex <SPAN class="operator token">=</SPAN> fieldMappings<SPAN class="punctuation token">.</SPAN>findFieldMapIndex<SPAN class="punctuation token">(</SPAN><SPAN class="string token">'Join_Count_PP'</SPAN><SPAN class="punctuation token">)</SPAN>
fieldMap <SPAN class="operator token">=</SPAN> fieldMappings<SPAN class="punctuation token">.</SPAN>getFieldMap<SPAN class="punctuation token">(</SPAN>fieldIndex<SPAN class="punctuation token">)</SPAN>
<SPAN class="comment token"># update the field map with the new merge rule (by default the merge rule is 'First') </SPAN>
fieldMap<SPAN class="punctuation token">.</SPAN>mergeRule <SPAN class="operator token">=</SPAN> <SPAN class="string token">'Max'</SPAN>
<SPAN class="comment token"># replace with the updated field map </SPAN>
fieldMappings<SPAN class="punctuation token">.</SPAN>replaceFieldMap<SPAN class="punctuation token">(</SPAN>fieldIndex<SPAN class="punctuation token">,</SPAN> fieldMap<SPAN class="punctuation token">)</SPAN>
<SPAN class="comment token">#spatial join of feature layers</SPAN>
arcpy<SPAN class="punctuation token">.</SPAN>SpatialJoin_analysis <SPAN class="punctuation token">(</SPAN><SPAN class="string token">"SubLayer_Layer"</SPAN><SPAN class="punctuation token">,</SPAN> <SPAN class="string token">"pp_trans_GUJoin_Layer"</SPAN><SPAN class="punctuation token">,</SPAN> SubLayer_pp_trans_GUJoin<SPAN class="punctuation token">,</SPAN> <SPAN class="string token">'JOIN_ONE_TO_ONE'</SPAN><SPAN class="punctuation token">,</SPAN> <SPAN class="string token">'KEEP_ALL'</SPAN><SPAN class="punctuation token">,</SPAN> fieldMappings<SPAN class="punctuation token">,</SPAN> <SPAN class="string token">'WITHIN_A_DISTANCE'</SPAN><SPAN class="punctuation token">,</SPAN> <SPAN class="punctuation token">.</SPAN><SPAN class="number token">000002</SPAN><SPAN class="punctuation token">)</SPAN>
<SPAN class="comment token">#Make feature layer</SPAN>
arcpy<SPAN class="punctuation token">.</SPAN>MakeFeatureLayer_management<SPAN class="punctuation token">(</SPAN>SubLayer_pp_trans_GUJoin<SPAN class="punctuation token">,</SPAN> <SPAN class="string token">"JoinLayer"</SPAN><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>subLayer<SPAN class="punctuation token">,</SPAN> <SPAN class="punctuation token">[</SPAN>GUCountField<SPAN class="punctuation token">,</SPAN> <SPAN class="string token">"SHAPE@"</SPAN><SPAN class="punctuation token">]</SPAN><SPAN class="punctuation token">)</SPAN> <SPAN class="keyword token">as</SPAN> GUCalcCursor<SPAN class="punctuation token">:</SPAN>
<SPAN class="keyword token">for</SPAN> subrow <SPAN class="keyword token">in</SPAN> GUCalcCursor<SPAN class="punctuation token">:</SPAN>
arcpy<SPAN class="punctuation token">.</SPAN>SelectLayerByLocation_management<SPAN class="punctuation token">(</SPAN><SPAN class="string token">"JoinLayer"</SPAN><SPAN class="punctuation token">,</SPAN> <SPAN class="string token">'WITHIN_A_DISTANCE'</SPAN><SPAN class="punctuation token">,</SPAN> subrow<SPAN class="punctuation token">[</SPAN><SPAN class="number token">1</SPAN><SPAN class="punctuation token">]</SPAN><SPAN class="punctuation token">,</SPAN> <SPAN class="punctuation token">.</SPAN><SPAN class="number token">000002</SPAN><SPAN class="punctuation token">,</SPAN> <SPAN class="string token">"NEW_SELECTION"</SPAN><SPAN class="punctuation token">)</SPAN>
<SPAN class="keyword token">if</SPAN> int<SPAN class="punctuation token">(</SPAN>arcpy<SPAN class="punctuation token">.</SPAN>GetCount_management<SPAN class="punctuation token">(</SPAN>in_rows<SPAN class="operator token">=</SPAN><SPAN class="string token">"JoinLayer"</SPAN><SPAN class="punctuation token">)</SPAN><SPAN class="punctuation token">.</SPAN>getOutput<SPAN class="punctuation token">(</SPAN><SPAN class="number token">0</SPAN><SPAN class="punctuation token">)</SPAN><SPAN class="punctuation token">)</SPAN><SPAN class="operator token">==</SPAN><SPAN class="number token">1</SPAN><SPAN class="punctuation token">:</SPAN>
<SPAN class="keyword token">with</SPAN> arcpy<SPAN class="punctuation token">.</SPAN>da<SPAN class="punctuation token">.</SPAN>SearchCursor<SPAN class="punctuation token">(</SPAN><SPAN class="string token">"JoinLayer"</SPAN><SPAN class="punctuation token">,</SPAN><SPAN class="punctuation token">[</SPAN><SPAN class="string token">'JOIN_COUNT'</SPAN><SPAN class="punctuation token">,</SPAN><SPAN class="string token">'GEN_UNITS'</SPAN><SPAN class="punctuation token">]</SPAN><SPAN class="punctuation token">)</SPAN> <SPAN class="keyword token">as</SPAN> JoinLayerCursor<SPAN class="punctuation token">:</SPAN>
<SPAN class="keyword token">for</SPAN> joinsubrow <SPAN class="keyword token">in</SPAN> JoinLayerCursor<SPAN class="punctuation token">:</SPAN>
GEN_UNITS <SPAN class="operator token">=</SPAN> joinsubrow<SPAN class="punctuation token">[</SPAN><SPAN class="number token">1</SPAN><SPAN class="punctuation token">]</SPAN>
PPTLINES <SPAN class="operator token">=</SPAN> joinsubrow<SPAN class="punctuation token">[</SPAN><SPAN class="number token">0</SPAN><SPAN class="punctuation token">]</SPAN>
<SPAN class="keyword token">if</SPAN> joinsubrow<SPAN class="punctuation token">[</SPAN><SPAN class="number token">1</SPAN><SPAN class="punctuation token">]</SPAN> <SPAN class="operator token">></SPAN> <SPAN class="number token">0</SPAN> <SPAN class="operator token">and</SPAN> joinsubrow<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><SPAN class="punctuation token">:</SPAN>
result <SPAN class="operator token">=</SPAN> GEN_UNITS<SPAN class="operator token">/</SPAN>PPTLINES
<SPAN class="keyword token">else</SPAN><SPAN class="punctuation token">:</SPAN>
result <SPAN class="operator token">=</SPAN> None
<SPAN class="comment token">#print result</SPAN>
subrow<SPAN class="punctuation token">[</SPAN><SPAN class="number token">0</SPAN><SPAN class="punctuation token">]</SPAN> <SPAN class="operator token">=</SPAN> result
GUCalcCursor<SPAN class="punctuation token">.</SPAN>updateRow<SPAN class="punctuation token">(</SPAN>subrow<SPAN class="punctuation token">)</SPAN>
<SPAN class="comment token">####################### NULL or Zero Line Count ---Based off of 'Double' field in transLayer ##################</SPAN>
<SPAN class="comment token">#add in NULL_ZERO_LINE_COUNT field</SPAN>
arcpy<SPAN class="punctuation token">.</SPAN>AddField_management<SPAN class="punctuation token">(</SPAN>subLayer<SPAN class="punctuation token">,</SPAN> <SPAN class="string token">"NULL_ZERO_LINE_COUNT"</SPAN><SPAN class="punctuation token">,</SPAN> <SPAN class="string token">"SHORT"</SPAN><SPAN class="punctuation token">,</SPAN> <SPAN class="string token">""</SPAN><SPAN class="punctuation token">,</SPAN> <SPAN class="string token">""</SPAN><SPAN class="punctuation token">,</SPAN> <SPAN class="string token">""</SPAN><SPAN class="punctuation token">,</SPAN> <SPAN class="string token">""</SPAN><SPAN class="punctuation token">,</SPAN> <SPAN class="string token">"NULLABLE"</SPAN><SPAN class="punctuation token">,</SPAN> <SPAN class="string token">"NON_REQUIRED"</SPAN><SPAN class="punctuation token">,</SPAN> <SPAN class="string token">""</SPAN><SPAN class="punctuation token">)</SPAN>
FieldLineCountNULL_ZERO <SPAN class="operator token">=</SPAN> <SPAN class="string token">"NULL_ZERO_LINE_COUNT"</SPAN>
<SPAN class="comment token">#Make feature layer</SPAN>
arcpy<SPAN class="punctuation token">.</SPAN>MakeFeatureLayer_management<SPAN class="punctuation token">(</SPAN>transLayer<SPAN class="punctuation token">,</SPAN> <SPAN class="string token">"transLayer_nullzero"</SPAN><SPAN class="punctuation token">)</SPAN>
<SPAN class="comment token">#where clause</SPAN>
NULL_ZERO_VLTS <SPAN class="operator token">=</SPAN> <SPAN class="string token">' "VLTS" is NULL or "VLTS" = 0 '</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>subLayer<SPAN class="punctuation token">,</SPAN> <SPAN class="punctuation token">[</SPAN>FieldLineCountNULL_ZERO<SPAN class="punctuation token">,</SPAN> <SPAN class="string token">"SHAPE@"</SPAN><SPAN class="punctuation token">]</SPAN><SPAN class="punctuation token">)</SPAN> <SPAN class="keyword token">as</SPAN> NullZeroCountList<SPAN class="punctuation token">:</SPAN>
<SPAN class="keyword token">for</SPAN> subrow <SPAN class="keyword token">in</SPAN> NullZeroCountList<SPAN class="punctuation token">:</SPAN>
arcpy<SPAN class="punctuation token">.</SPAN>SelectLayerByLocation_management<SPAN class="punctuation token">(</SPAN><SPAN class="string token">"transLayer_nullzero"</SPAN><SPAN class="punctuation token">,</SPAN> <SPAN class="string token">'WITHIN_A_DISTANCE'</SPAN><SPAN class="punctuation token">,</SPAN> subrow<SPAN class="punctuation token">[</SPAN><SPAN class="number token">1</SPAN><SPAN class="punctuation token">]</SPAN><SPAN class="punctuation token">,</SPAN> <SPAN class="punctuation token">.</SPAN><SPAN class="number token">000002</SPAN><SPAN class="punctuation token">,</SPAN> <SPAN class="string token">"NEW_SELECTION"</SPAN><SPAN class="punctuation token">)</SPAN>
arcpy<SPAN class="punctuation token">.</SPAN>SelectLayerByAttribute_management <SPAN class="punctuation token">(</SPAN><SPAN class="string token">"transLayer_nullzero"</SPAN><SPAN class="punctuation token">,</SPAN> <SPAN class="string token">"SUBSET_SELECTION"</SPAN><SPAN class="punctuation token">,</SPAN>NULL_ZERO_VLTS<SPAN class="punctuation token">)</SPAN>
result<SPAN class="operator token">=</SPAN>int<SPAN class="punctuation token">(</SPAN>arcpy<SPAN class="punctuation token">.</SPAN>GetCount_management<SPAN class="punctuation token">(</SPAN><SPAN class="string token">"transLayer_nullzero"</SPAN><SPAN class="punctuation token">)</SPAN><SPAN class="punctuation token">.</SPAN>getOutput<SPAN class="punctuation token">(</SPAN><SPAN class="number token">0</SPAN><SPAN class="punctuation token">)</SPAN><SPAN class="punctuation token">)</SPAN>
<SPAN class="comment token">#print result</SPAN>
subrow<SPAN class="punctuation token">[</SPAN><SPAN class="number token">0</SPAN><SPAN class="punctuation token">]</SPAN> <SPAN class="operator token">=</SPAN> result
NullZeroCountList<SPAN class="punctuation token">.</SPAN>updateRow<SPAN class="punctuation token">(</SPAN>subrow<SPAN class="punctuation token">)</SPAN>
<SPAN class="keyword token">print</SPAN> <SPAN class="string token">"NULL_ZERO_LINE_COUNT Updated"</SPAN>
<SPAN class="comment token">####################### PP LINE COUNT: from transLayer, ppLayer, subLayer spatial join ##################</SPAN>
<SPAN class="comment token">#add in PP_LINE_COUNT field</SPAN>
arcpy<SPAN class="punctuation token">.</SPAN>AddField_management<SPAN class="punctuation token">(</SPAN>subLayer<SPAN class="punctuation token">,</SPAN> <SPAN class="string token">"PP_LINE_COUNT"</SPAN><SPAN class="punctuation token">,</SPAN> <SPAN class="string token">"LONG"</SPAN><SPAN class="punctuation token">,</SPAN> <SPAN class="string token">""</SPAN><SPAN class="punctuation token">,</SPAN> <SPAN class="string token">""</SPAN><SPAN class="punctuation token">,</SPAN> <SPAN class="string token">""</SPAN><SPAN class="punctuation token">,</SPAN> <SPAN class="string token">""</SPAN><SPAN class="punctuation token">,</SPAN> <SPAN class="string token">"NULLABLE"</SPAN><SPAN class="punctuation token">,</SPAN> <SPAN class="string token">"NON_REQUIRED"</SPAN><SPAN class="punctuation token">,</SPAN> <SPAN class="string token">""</SPAN><SPAN class="punctuation token">)</SPAN>
FieldPPCount <SPAN class="operator token">=</SPAN> <SPAN class="string token">"PP_LINE_COUNT"</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>subLayer<SPAN class="punctuation token">,</SPAN> <SPAN class="punctuation token">[</SPAN>FieldPPCount<SPAN class="punctuation token">,</SPAN> <SPAN class="string token">"SHAPE@"</SPAN><SPAN class="punctuation token">]</SPAN><SPAN class="punctuation token">)</SPAN> <SPAN class="keyword token">as</SPAN> ppLineCountList<SPAN class="punctuation token">:</SPAN>
<SPAN class="keyword token">for</SPAN> subrow <SPAN class="keyword token">in</SPAN> ppLineCountList<SPAN class="punctuation token">:</SPAN>
arcpy<SPAN class="punctuation token">.</SPAN>SelectLayerByLocation_management<SPAN class="punctuation token">(</SPAN><SPAN class="string token">"JoinLayer"</SPAN><SPAN class="punctuation token">,</SPAN> <SPAN class="string token">'WITHIN_A_DISTANCE'</SPAN><SPAN class="punctuation token">,</SPAN> subrow<SPAN class="punctuation token">[</SPAN><SPAN class="number token">1</SPAN><SPAN class="punctuation token">]</SPAN><SPAN class="punctuation token">,</SPAN> <SPAN class="punctuation token">.</SPAN><SPAN class="number token">000002</SPAN><SPAN class="punctuation token">,</SPAN> <SPAN class="string token">"NEW_SELECTION"</SPAN><SPAN class="punctuation token">)</SPAN>
<SPAN class="comment token"># JOIN_COUNT is sum of PPs joined to trans lines in the pp_trans_GUJoin spatial join</SPAN>
<SPAN class="keyword token">with</SPAN> arcpy<SPAN class="punctuation token">.</SPAN>da<SPAN class="punctuation token">.</SPAN>SearchCursor<SPAN class="punctuation token">(</SPAN><SPAN class="string token">"JoinLayer"</SPAN><SPAN class="punctuation token">,</SPAN><SPAN class="punctuation token">[</SPAN><SPAN class="string token">'JOIN_COUNT'</SPAN><SPAN class="punctuation token">]</SPAN><SPAN class="punctuation token">)</SPAN> <SPAN class="keyword token">as</SPAN> JoinLayerppLineCountCursor<SPAN class="punctuation token">:</SPAN>
<SPAN class="keyword token">for</SPAN> joinsubrow <SPAN class="keyword token">in</SPAN> JoinLayerppLineCountCursor<SPAN class="punctuation token">:</SPAN>
JOIN_COUNT <SPAN class="operator token">=</SPAN> joinsubrow<SPAN class="punctuation token">[</SPAN><SPAN class="number token">0</SPAN><SPAN class="punctuation token">]</SPAN>
result <SPAN class="operator token">=</SPAN> JOIN_COUNT
subrow<SPAN class="punctuation token">[</SPAN><SPAN class="number token">0</SPAN><SPAN class="punctuation token">]</SPAN> <SPAN class="operator token">=</SPAN> result
ppLineCountList<SPAN class="punctuation token">.</SPAN>updateRow<SPAN class="punctuation token">(</SPAN>subrow<SPAN class="punctuation token">)</SPAN>
<SPAN class="keyword token">print</SPAN> <SPAN class="string token">"PP_LINE_COUNT Updated"</SPAN>
<SPAN class="comment token">########################### PP_COUNT : from transLayer, ppLayer, subLayer spatial join ######################################</SPAN>
<SPAN class="comment token">#add in PP_COUNT field</SPAN>
arcpy<SPAN class="punctuation token">.</SPAN>AddField_management<SPAN class="punctuation token">(</SPAN>subLayer<SPAN class="punctuation token">,</SPAN> <SPAN class="string token">"PP_COUNT"</SPAN><SPAN class="punctuation token">,</SPAN> <SPAN class="string token">"LONG"</SPAN><SPAN class="punctuation token">,</SPAN> <SPAN class="string token">""</SPAN><SPAN class="punctuation token">,</SPAN> <SPAN class="string token">""</SPAN><SPAN class="punctuation token">,</SPAN> <SPAN class="string token">""</SPAN><SPAN class="punctuation token">,</SPAN> <SPAN class="string token">""</SPAN><SPAN class="punctuation token">,</SPAN> <SPAN class="string token">"NULLABLE"</SPAN><SPAN class="punctuation token">,</SPAN> <SPAN class="string token">"NON_REQUIRED"</SPAN><SPAN class="punctuation token">,</SPAN> <SPAN class="string token">""</SPAN><SPAN class="punctuation token">)</SPAN>
FieldPPCount <SPAN class="operator token">=</SPAN> <SPAN class="string token">"PP_COUNT"</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>subLayer<SPAN class="punctuation token">,</SPAN> <SPAN class="punctuation token">[</SPAN>FieldPPCount<SPAN class="punctuation token">,</SPAN> <SPAN class="string token">"SHAPE@"</SPAN><SPAN class="punctuation token">]</SPAN><SPAN class="punctuation token">)</SPAN> <SPAN class="keyword token">as</SPAN> ppCountList<SPAN class="punctuation token">:</SPAN>
<SPAN class="keyword token">for</SPAN> subrow <SPAN class="keyword token">in</SPAN> ppCountList<SPAN class="punctuation token">:</SPAN>
arcpy<SPAN class="punctuation token">.</SPAN>SelectLayerByLocation_management<SPAN class="punctuation token">(</SPAN><SPAN class="string token">"JoinLayer"</SPAN><SPAN class="punctuation token">,</SPAN> <SPAN class="string token">'WITHIN_A_DISTANCE'</SPAN><SPAN class="punctuation token">,</SPAN> subrow<SPAN class="punctuation token">[</SPAN><SPAN class="number token">1</SPAN><SPAN class="punctuation token">]</SPAN><SPAN class="punctuation token">,</SPAN> <SPAN class="punctuation token">.</SPAN><SPAN class="number token">000002</SPAN><SPAN class="punctuation token">,</SPAN> <SPAN class="string token">"NEW_SELECTION"</SPAN><SPAN class="punctuation token">)</SPAN>
<SPAN class="keyword token">with</SPAN> arcpy<SPAN class="punctuation token">.</SPAN>da<SPAN class="punctuation token">.</SPAN>SearchCursor<SPAN class="punctuation token">(</SPAN><SPAN class="string token">"JoinLayer"</SPAN><SPAN class="punctuation token">,</SPAN><SPAN class="punctuation token">[</SPAN><SPAN class="string token">'JOIN_COUNT_PP'</SPAN><SPAN class="punctuation token">]</SPAN><SPAN class="punctuation token">)</SPAN> <SPAN class="keyword token">as</SPAN> JoinLayerppCountCursor<SPAN class="punctuation token">:</SPAN>
<SPAN class="keyword token">for</SPAN> joinsubrow <SPAN class="keyword token">in</SPAN> JoinLayerppCountCursor<SPAN class="punctuation token">:</SPAN>
JOIN_COUNT_PP <SPAN class="operator token">=</SPAN> joinsubrow<SPAN class="punctuation token">[</SPAN><SPAN class="number token">0</SPAN><SPAN class="punctuation token">]</SPAN>
result <SPAN class="operator token">=</SPAN> JOIN_COUNT_PP
subrow<SPAN class="punctuation token">[</SPAN><SPAN class="number token">0</SPAN><SPAN class="punctuation token">]</SPAN> <SPAN class="operator token">=</SPAN> result
ppCountList<SPAN class="punctuation token">.</SPAN>updateRow<SPAN class="punctuation token">(</SPAN>subrow<SPAN class="punctuation token">)</SPAN>
<SPAN class="keyword token">print</SPAN> <SPAN class="string token">"PP_COUNT Updated"</SPAN>
<SPAN class="comment token">################################################# unique subs by VLTS - 13.8 : based off of transLayer attributes and transLayer,subLayer spatial join ########################</SPAN>
<SPAN class="comment token">#add in UNIQUE_SUB_COUNT_13_8 field</SPAN>
arcpy<SPAN class="punctuation token">.</SPAN>AddField_management<SPAN class="punctuation token">(</SPAN>subLayer<SPAN class="punctuation token">,</SPAN> <SPAN class="string token">"UNIQUE_SUB_COUNT_13_8"</SPAN><SPAN class="punctuation token">,</SPAN> <SPAN class="string token">"SHORT"</SPAN><SPAN class="punctuation token">,</SPAN> <SPAN class="string token">""</SPAN><SPAN class="punctuation token">,</SPAN> <SPAN class="string token">""</SPAN><SPAN class="punctuation token">,</SPAN> <SPAN class="string token">""</SPAN><SPAN class="punctuation token">,</SPAN> <SPAN class="string token">""</SPAN><SPAN class="punctuation token">,</SPAN> <SPAN class="string token">"NULLABLE"</SPAN><SPAN class="punctuation token">,</SPAN> <SPAN class="string token">"NON_REQUIRED"</SPAN><SPAN class="punctuation token">,</SPAN> <SPAN class="string token">""</SPAN><SPAN class="punctuation token">)</SPAN>
UNIQUE_SUB_COUNT_13_8 <SPAN class="operator token">=</SPAN> <SPAN class="string token">"UNIQUE_SUB_COUNT_13_8"</SPAN>
<SPAN class="comment token"># Make feature layer </SPAN>
arcpy<SPAN class="punctuation token">.</SPAN>MakeFeatureLayer_management<SPAN class="punctuation token">(</SPAN>transLayer<SPAN class="punctuation token">,</SPAN> <SPAN class="string token">"transLayer_uniquesubs"</SPAN><SPAN class="punctuation token">)</SPAN>
<SPAN class="comment token">#SUB1SUB2 = "SUB1SUB2"</SPAN>
arcpy<SPAN class="punctuation token">.</SPAN>AddField_management<SPAN class="punctuation token">(</SPAN><SPAN class="string token">"transLayer_uniquesubs"</SPAN><SPAN class="punctuation token">,</SPAN> <SPAN class="string token">"SUB1SUB2"</SPAN><SPAN class="punctuation token">,</SPAN> <SPAN class="string token">"TEXT"</SPAN><SPAN class="punctuation token">,</SPAN> <SPAN class="string token">""</SPAN><SPAN class="punctuation token">,</SPAN> <SPAN class="string token">""</SPAN><SPAN class="punctuation token">,</SPAN> <SPAN class="string token">""</SPAN><SPAN class="punctuation token">,</SPAN> <SPAN class="string token">""</SPAN><SPAN class="punctuation token">,</SPAN> <SPAN class="string token">"NULLABLE"</SPAN><SPAN class="punctuation token">,</SPAN> <SPAN class="string token">"NON_REQUIRED"</SPAN><SPAN class="punctuation token">,</SPAN> <SPAN class="string token">""</SPAN><SPAN class="punctuation token">)</SPAN>
<SPAN class="comment token">#SUB1SUB2_CalcField = ' "SUB_1" + ', ' + "SUB_2" + ', ' '</SPAN>
arcpy<SPAN class="punctuation token">.</SPAN>CalculateField_management <SPAN class="punctuation token">(</SPAN><SPAN class="string token">"transLayer_uniquesubs"</SPAN><SPAN class="punctuation token">,</SPAN> <SPAN class="string token">"SUB1SUB2"</SPAN><SPAN class="punctuation token">,</SPAN> <SPAN class="string token">' [SUB_1] + "," + [SUB_2] '</SPAN><SPAN class="punctuation token">)</SPAN>
<SPAN class="comment token">#where clause</SPAN>
where_unique_13_8 <SPAN class="operator token">=</SPAN> <SPAN class="string token">' "VLTS" = 13.8 '</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>subLayer<SPAN class="punctuation token">,</SPAN> <SPAN class="punctuation token">[</SPAN>UNIQUE_SUB_COUNT_13_8<SPAN class="punctuation token">,</SPAN> <SPAN class="string token">"SHAPE@"</SPAN><SPAN class="punctuation token">]</SPAN><SPAN class="punctuation token">)</SPAN> <SPAN class="keyword token">as</SPAN> UNIQUE_SUB_COUNT_13_8_List<SPAN class="punctuation token">:</SPAN>
<SPAN class="keyword token">for</SPAN> subrow <SPAN class="keyword token">in</SPAN> UNIQUE_SUB_COUNT_13_8_List<SPAN class="punctuation token">:</SPAN>
arcpy<SPAN class="punctuation token">.</SPAN>SelectLayerByLocation_management<SPAN class="punctuation token">(</SPAN><SPAN class="string token">"transLayer_uniquesubs"</SPAN><SPAN class="punctuation token">,</SPAN> <SPAN class="string token">'WITHIN_A_DISTANCE'</SPAN><SPAN class="punctuation token">,</SPAN> subrow<SPAN class="punctuation token">[</SPAN><SPAN class="number token">1</SPAN><SPAN class="punctuation token">]</SPAN><SPAN class="punctuation token">,</SPAN> <SPAN class="punctuation token">.</SPAN><SPAN class="number token">000002</SPAN><SPAN class="punctuation token">,</SPAN> <SPAN class="string token">"NEW_SELECTION"</SPAN><SPAN class="punctuation token">)</SPAN>
arcpy<SPAN class="punctuation token">.</SPAN>SelectLayerByAttribute_management <SPAN class="punctuation token">(</SPAN><SPAN class="string token">"transLayer_uniquesubs"</SPAN><SPAN class="punctuation token">,</SPAN> <SPAN class="string token">"SUBSET_SELECTION"</SPAN><SPAN class="punctuation token">,</SPAN> where_unique_13_8<SPAN class="punctuation token">)</SPAN>
arcpy<SPAN class="punctuation token">.</SPAN>DeleteIdentical_management<SPAN class="punctuation token">(</SPAN><SPAN class="string token">"transLayer_uniquesubs"</SPAN><SPAN class="punctuation token">,</SPAN> <SPAN class="punctuation token">[</SPAN><SPAN class="string token">'SUB1SUB2'</SPAN><SPAN class="punctuation token">]</SPAN><SPAN class="punctuation token">)</SPAN>
result<SPAN class="operator token">=</SPAN>int<SPAN class="punctuation token">(</SPAN>arcpy<SPAN class="punctuation token">.</SPAN>GetCount_management<SPAN class="punctuation token">(</SPAN><SPAN class="string token">"transLayer_uniquesubs"</SPAN><SPAN class="punctuation token">)</SPAN><SPAN class="punctuation token">.</SPAN>getOutput<SPAN class="punctuation token">(</SPAN><SPAN class="number token">0</SPAN><SPAN class="punctuation token">)</SPAN><SPAN class="punctuation token">)</SPAN>
<SPAN class="comment token">#print result</SPAN>
subrow<SPAN class="punctuation token">[</SPAN><SPAN class="number token">0</SPAN><SPAN class="punctuation token">]</SPAN> <SPAN class="operator token">=</SPAN> result
UNIQUE_SUB_COUNT_13_8_List<SPAN class="punctuation token">.</SPAN>updateRow<SPAN class="punctuation token">(</SPAN>subrow<SPAN class="punctuation token">)</SPAN>
<SPAN class="keyword token">print</SPAN> <SPAN class="string token">"UNIQUE_SUB_COUNT_13_8 Updated"</SPAN>
<SPAN class="comment token">##############repeat 'unique subs by VLTS' for all 9 VLTSs ##########</SPAN>
<SPAN class="comment token">################################################# unique VLTS : based off of transLayer attributes and transLayer,subLayer spatial join ########################</SPAN>
<SPAN class="comment token">#add in UNIQUE_VLTS_COUNT field</SPAN>
arcpy<SPAN class="punctuation token">.</SPAN>AddField_management<SPAN class="punctuation token">(</SPAN>subLayer<SPAN class="punctuation token">,</SPAN> <SPAN class="string token">"UNIQUE_VLTS_COUNT"</SPAN><SPAN class="punctuation token">,</SPAN> <SPAN class="string token">"SHORT"</SPAN><SPAN class="punctuation token">,</SPAN> <SPAN class="string token">""</SPAN><SPAN class="punctuation token">,</SPAN> <SPAN class="string token">""</SPAN><SPAN class="punctuation token">,</SPAN> <SPAN class="string token">""</SPAN><SPAN class="punctuation token">,</SPAN> <SPAN class="string token">""</SPAN><SPAN class="punctuation token">,</SPAN> <SPAN class="string token">"NULLABLE"</SPAN><SPAN class="punctuation token">,</SPAN> <SPAN class="string token">"NON_REQUIRED"</SPAN><SPAN class="punctuation token">,</SPAN> <SPAN class="string token">""</SPAN><SPAN class="punctuation token">)</SPAN>
UNIQUE_VLTS_COUNT<SPAN class="operator token">=</SPAN> <SPAN class="string token">"UNIQUE_VLTS_COUNT"</SPAN>
<SPAN class="comment token"># Make feature layer </SPAN>
arcpy<SPAN class="punctuation token">.</SPAN>MakeFeatureLayer_management<SPAN class="punctuation token">(</SPAN>transLayer<SPAN class="punctuation token">,</SPAN> <SPAN class="string token">"transLayer_uniqueVLTSs"</SPAN><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>subLayer<SPAN class="punctuation token">,</SPAN> <SPAN class="punctuation token">[</SPAN>UNIQUE_VLTS_COUNT<SPAN class="punctuation token">,</SPAN> <SPAN class="string token">"SHAPE@"</SPAN><SPAN class="punctuation token">]</SPAN><SPAN class="punctuation token">)</SPAN> <SPAN class="keyword token">as</SPAN> UNIQUE_VLTS_COUNT_List<SPAN class="punctuation token">:</SPAN>
<SPAN class="keyword token">for</SPAN> subrow <SPAN class="keyword token">in</SPAN> UNIQUE_VLTS_COUNT_List<SPAN class="punctuation token">:</SPAN>
arcpy<SPAN class="punctuation token">.</SPAN>SelectLayerByLocation_management<SPAN class="punctuation token">(</SPAN><SPAN class="string token">"transLayer_uniqueVLTSs"</SPAN><SPAN class="punctuation token">,</SPAN> <SPAN class="string token">'WITHIN_A_DISTANCE'</SPAN><SPAN class="punctuation token">,</SPAN> subrow<SPAN class="punctuation token">[</SPAN><SPAN class="number token">1</SPAN><SPAN class="punctuation token">]</SPAN><SPAN class="punctuation token">,</SPAN> <SPAN class="punctuation token">.</SPAN><SPAN class="number token">000002</SPAN><SPAN class="punctuation token">,</SPAN> <SPAN class="string token">"NEW_SELECTION"</SPAN><SPAN class="punctuation token">)</SPAN>
arcpy<SPAN class="punctuation token">.</SPAN>DeleteIdentical_management<SPAN class="punctuation token">(</SPAN><SPAN class="string token">"transLayer_uniqueVLTSs"</SPAN><SPAN class="punctuation token">,</SPAN> <SPAN class="punctuation token">[</SPAN><SPAN class="string token">'VLTS'</SPAN><SPAN class="punctuation token">]</SPAN><SPAN class="punctuation token">)</SPAN>
result<SPAN class="operator token">=</SPAN>int<SPAN class="punctuation token">(</SPAN>arcpy<SPAN class="punctuation token">.</SPAN>GetCount_management<SPAN class="punctuation token">(</SPAN><SPAN class="string token">"transLayer_uniqueVLTSs"</SPAN><SPAN class="punctuation token">)</SPAN><SPAN class="punctuation token">.</SPAN>getOutput<SPAN class="punctuation token">(</SPAN><SPAN class="number token">0</SPAN><SPAN class="punctuation token">)</SPAN><SPAN class="punctuation token">)</SPAN>
<SPAN class="comment token">#print result</SPAN>
subrow<SPAN class="punctuation token">[</SPAN><SPAN class="number token">0</SPAN><SPAN class="punctuation token">]</SPAN> <SPAN class="operator token">=</SPAN> result
UNIQUE_VLTS_COUNT_List<SPAN class="punctuation token">.</SPAN>updateRow<SPAN class="punctuation token">(</SPAN>subrow<SPAN class="punctuation token">)</SPAN>
<SPAN class="keyword token">print</SPAN> <SPAN class="string token">"UNIQUE_VLTS_COUNT Updated"</SPAN>
<SPAN class="comment token">#########################################################################</SPAN>
end <SPAN class="operator token">=</SPAN> time<SPAN class="punctuation token">.</SPAN>time<SPAN class="punctuation token">(</SPAN><SPAN class="punctuation token">)</SPAN>
<SPAN class="keyword token">print</SPAN> <SPAN class="punctuation token">(</SPAN>end <SPAN class="operator token">-</SPAN> start<SPAN class="punctuation token">)</SPAN><SPAN class="operator token">/</SPAN><SPAN class="number token">60</SPAN>
<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></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><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></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><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>