I try to the process below.
- spatial search tile raster index polygon with feature
- rasterize feature
- combine rasterized feature and MODIS raster and export combine raster attribute table (loop for tiles)
- table operation with pandas and arcpy
This process works well.However, process gradually slow down.
I try this process for 51 times and check time. All input features are same.
The result is below.Each time_1,time_2 time_3 is described below.
time_1:finish process 2(rasterize feature)
time_2:finish process 3(combine and export table)
time_3:finish process 4(table operation)
elapsed_time:finish 1 feature process(save output in gdb file)
INFO:root:land_00244 1/51 START
INFO:root:time_1:2.9405651092529297[sec]
INFO:root:time_2:3.73823618888855[sec]
INFO:root:time_2:4.30132269859314[sec]
INFO:root:time_2:4.817508697509766[sec]
INFO:root:time_2:5.239825248718262[sec]
INFO:root:time_3:9.50986933708191[sec]
INFO:root:elapsed_time:10.557835817337036[sec]
INFO:root:land_00244_49 51/51 START
INFO:root:time_1:14.089014768600464[sec]
INFO:root:time_2:19.874730348587036[sec]
INFO:root:time_2:25.050605058670044[sec]
INFO:root:time_2:30.117022275924683[sec]
INFO:root:time_2:35.16779851913452[sec]
INFO:root:time_3:51.1801700592041[sec]
INFO:root:elapsed_time:53.90104866027832[sec]
Even though same feature, process time increased 5 times!
All processes slow down.Why?
My environment is below.
OS:windows 10 pro
ArcGIS:10.5.1
ArcGIS pro:2.0
But, in windows 7 and ArcGIS(10.4.1 and pro 1.4), this slow down didn't occur.
Thanks in advance!
<SPAN class="keyword token">from</SPAN> __future__ <SPAN class="keyword token">import</SPAN> print_function<SPAN class="punctuation token">,</SPAN> unicode_literals<SPAN class="punctuation token">,</SPAN> absolute_import
<SPAN class="keyword token">try</SPAN><SPAN class="punctuation token">:</SPAN>
<SPAN class="keyword token">import</SPAN> urllib2 <SPAN class="comment token"># Python 2</SPAN>
<SPAN class="keyword token">except</SPAN> ImportError<SPAN class="punctuation token">:</SPAN>
<SPAN class="keyword token">import</SPAN> urllib<SPAN class="punctuation token">.</SPAN>request <SPAN class="keyword token">as</SPAN> urllib2 <SPAN class="comment token"># Python 3</SPAN>
<SPAN class="comment token"># Import arcpy module</SPAN>
<SPAN class="keyword token">import</SPAN> pandas <SPAN class="keyword token">as</SPAN> pd
<SPAN class="keyword token">import</SPAN> arcpy
<SPAN class="keyword token">import</SPAN> sys
<SPAN class="keyword token">import</SPAN> os
<SPAN class="keyword token">import</SPAN> socket
<SPAN class="keyword token">import</SPAN> gc
<SPAN class="keyword token">import</SPAN> time
<SPAN class="keyword token">import</SPAN> numpy <SPAN class="keyword token">as</SPAN> np
<SPAN class="keyword token">import</SPAN> logging
<SPAN class="comment token"># Set overwrite option</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="comment token"># datapath</SPAN>
DATA_DIR <SPAN class="operator token">=</SPAN> r<SPAN class="string token">"C:\Data"</SPAN>
WORK_DIR <SPAN class="operator token">=</SPAN> r<SPAN class="string token">"C:\Work01"</SPAN>
MODIS <SPAN class="operator token">=</SPAN> DATA_DIR <SPAN class="operator token">+</SPAN> <SPAN class="string token">"\\"</SPAN> <SPAN class="operator token">+</SPAN> <SPAN class="string token">"MODIS_2001.gdb"</SPAN>
INDEX_POLY <SPAN class="operator token">=</SPAN> DATA_DIR <SPAN class="operator token">+</SPAN> <SPAN class="string token">"\\"</SPAN> <SPAN class="operator token">+</SPAN> <SPAN class="string token">"MODIS_index.gdb"</SPAN>
<SPAN class="keyword token">def</SPAN> <SPAN class="token function">proc_zonalStat</SPAN><SPAN class="punctuation token">(</SPAN>feature_lyr<SPAN class="punctuation token">,</SPAN> feature_path<SPAN class="punctuation token">,</SPAN> list_index<SPAN class="punctuation token">)</SPAN><SPAN class="punctuation token">:</SPAN>
arcpy<SPAN class="punctuation token">.</SPAN>env<SPAN class="punctuation token">.</SPAN>workspace <SPAN class="operator token">=</SPAN> <SPAN class="string token">"in_memory"</SPAN>
arcpy<SPAN class="punctuation token">.</SPAN>SelectLayerByLocation_management<SPAN class="punctuation token">(</SPAN>list_index<SPAN class="punctuation token">[</SPAN><SPAN class="number token">0</SPAN><SPAN class="punctuation token">]</SPAN><SPAN class="punctuation token">,</SPAN> <SPAN class="string token">"INTERSECT"</SPAN><SPAN class="punctuation token">,</SPAN> feature_lyr<SPAN class="punctuation token">)</SPAN>
raslist_modis <SPAN class="operator token">=</SPAN> <SPAN class="punctuation token">[</SPAN><SPAN class="punctuation token">]</SPAN>
cursor <SPAN class="operator token">=</SPAN> arcpy<SPAN class="punctuation token">.</SPAN>da<SPAN class="punctuation token">.</SPAN>SearchCursor<SPAN class="punctuation token">(</SPAN>list_index<SPAN class="punctuation token">[</SPAN><SPAN class="number token">0</SPAN><SPAN class="punctuation token">]</SPAN><SPAN class="punctuation token">,</SPAN> <SPAN class="punctuation token">[</SPAN><SPAN class="string token">"F_NAME"</SPAN><SPAN class="punctuation token">]</SPAN><SPAN class="punctuation token">)</SPAN>
<SPAN class="keyword token">for</SPAN> row <SPAN class="keyword token">in</SPAN> cursor<SPAN class="punctuation token">:</SPAN>
raslist_modis<SPAN class="punctuation token">.</SPAN>append<SPAN class="punctuation token">(</SPAN>MODIS <SPAN class="operator token">+</SPAN> <SPAN class="string token">"\\"</SPAN> <SPAN class="operator token">+</SPAN> row<SPAN class="punctuation token">[</SPAN><SPAN class="number token">0</SPAN><SPAN class="punctuation token">]</SPAN><SPAN class="punctuation token">)</SPAN>
<SPAN class="keyword token">del</SPAN> cursor
ras_feature <SPAN class="operator token">=</SPAN> <SPAN class="string token">"in_memory"</SPAN><SPAN class="operator token">+</SPAN> <SPAN class="string token">"\\ras_feature"</SPAN>
arcpy<SPAN class="punctuation token">.</SPAN>env<SPAN class="punctuation token">.</SPAN>outputCoordinateSystem <SPAN class="operator token">=</SPAN> arcpy<SPAN class="punctuation token">.</SPAN>SpatialReference<SPAN class="punctuation token">(</SPAN><SPAN class="number token">4326</SPAN><SPAN class="punctuation token">)</SPAN>
arcpy<SPAN class="punctuation token">.</SPAN>PolygonToRaster_conversion<SPAN class="punctuation token">(</SPAN>feature_lyr<SPAN class="punctuation token">,</SPAN> <SPAN class="string token">"OBJECTID"</SPAN><SPAN class="punctuation token">,</SPAN> ras_feature<SPAN class="punctuation token">,</SPAN> cellsize<SPAN class="operator token">=</SPAN><SPAN class="number token">0.0041666667</SPAN><SPAN class="punctuation token">)</SPAN>
time_1 <SPAN class="operator token">=</SPAN> time<SPAN class="punctuation token">.</SPAN>time<SPAN class="punctuation token">(</SPAN><SPAN class="punctuation token">)</SPAN> <SPAN class="operator token">-</SPAN> start_time
logging<SPAN class="punctuation token">.</SPAN>info<SPAN class="punctuation token">(</SPAN><SPAN class="string token">"time_1:{0}"</SPAN><SPAN class="punctuation token">.</SPAN>format<SPAN class="punctuation token">(</SPAN>time_1<SPAN class="punctuation token">)</SPAN> <SPAN class="operator token">+</SPAN> <SPAN class="string token">"[sec]"</SPAN><SPAN class="punctuation token">)</SPAN>
count <SPAN class="operator token">=</SPAN> <SPAN class="number token">0</SPAN>
aggreFlg <SPAN class="operator token">=</SPAN> <SPAN class="token boolean">True</SPAN>
<SPAN class="keyword token">for</SPAN> inValueRaster <SPAN class="keyword token">in</SPAN> raslist_modis<SPAN class="punctuation token">:</SPAN>
<SPAN class="keyword token">try</SPAN><SPAN class="punctuation token">:</SPAN>
tableName <SPAN class="operator token">=</SPAN> <SPAN class="string token">"MODIS_tbl"</SPAN> <SPAN class="operator token">+</SPAN> str<SPAN class="punctuation token">(</SPAN>count<SPAN class="punctuation token">)</SPAN><SPAN class="punctuation token">.</SPAN>zfill<SPAN class="punctuation token">(</SPAN><SPAN class="number token">3</SPAN><SPAN class="punctuation token">)</SPAN>
outCombine <SPAN class="operator token">=</SPAN> arcpy<SPAN class="punctuation token">.</SPAN>sa<SPAN class="punctuation token">.</SPAN>Combine<SPAN class="punctuation token">(</SPAN><SPAN class="punctuation token">[</SPAN>ras_feature<SPAN class="punctuation token">,</SPAN> inValueRaster<SPAN class="punctuation token">]</SPAN><SPAN class="punctuation token">)</SPAN>
arcpy<SPAN class="punctuation token">.</SPAN>TableToTable_conversion<SPAN class="punctuation token">(</SPAN>outCombine<SPAN class="punctuation token">,</SPAN> scratchGdb<SPAN class="punctuation token">,</SPAN> tableName<SPAN class="punctuation token">)</SPAN>
arcpy<SPAN class="punctuation token">.</SPAN>Delete_management<SPAN class="punctuation token">(</SPAN>outCombine<SPAN class="punctuation token">)</SPAN>
count <SPAN class="operator token">+=</SPAN> <SPAN class="number token">1</SPAN>
time_2 <SPAN class="operator token">=</SPAN> time<SPAN class="punctuation token">.</SPAN>time<SPAN class="punctuation token">(</SPAN><SPAN class="punctuation token">)</SPAN> <SPAN class="operator token">-</SPAN> start_time
logging<SPAN class="punctuation token">.</SPAN>info<SPAN class="punctuation token">(</SPAN><SPAN class="string token">"time_2:{0}"</SPAN><SPAN class="punctuation token">.</SPAN>format<SPAN class="punctuation token">(</SPAN>time_2<SPAN class="punctuation token">)</SPAN> <SPAN class="operator token">+</SPAN> <SPAN class="string token">"[sec]"</SPAN><SPAN class="punctuation token">)</SPAN>
fieldName <SPAN class="operator token">=</SPAN> <SPAN class="string token">"MODIS_254"</SPAN>
expression <SPAN class="operator token">=</SPAN> <SPAN class="string token">"0"</SPAN>
arcpy<SPAN class="punctuation token">.</SPAN>CalculateField_management<SPAN class="punctuation token">(</SPAN>feature_lyr<SPAN class="punctuation token">,</SPAN> fieldName<SPAN class="punctuation token">,</SPAN> expression<SPAN class="punctuation token">,</SPAN> <SPAN class="string token">"PYTHON_9.3"</SPAN><SPAN class="punctuation token">)</SPAN>
arcpy<SPAN class="punctuation token">.</SPAN>Delete_management<SPAN class="punctuation token">(</SPAN>ras_feature<SPAN class="punctuation token">)</SPAN>
tables <SPAN class="operator token">=</SPAN> arcpy<SPAN class="punctuation token">.</SPAN>ListTables<SPAN class="punctuation token">(</SPAN><SPAN class="string token">"MODIS_tbl*"</SPAN><SPAN class="punctuation token">)</SPAN>
list_df_MODIS <SPAN class="operator token">=</SPAN> <SPAN class="punctuation token">[</SPAN><SPAN class="punctuation token">]</SPAN>
fields <SPAN class="operator token">=</SPAN> <SPAN class="punctuation token">[</SPAN><SPAN class="string token">'ras_feature'</SPAN><SPAN class="punctuation token">,</SPAN> <SPAN class="string token">'MODIS_landCover_'</SPAN><SPAN class="punctuation token">,</SPAN> <SPAN class="string token">'COUNT'</SPAN><SPAN class="punctuation token">]</SPAN>
<SPAN class="keyword token">for</SPAN> table <SPAN class="keyword token">in</SPAN> tables<SPAN class="punctuation token">:</SPAN>
<SPAN class="comment token"># numpy array -> pandas dataframe</SPAN>
arr <SPAN class="operator token">=</SPAN> arcpy<SPAN class="punctuation token">.</SPAN>da<SPAN class="punctuation token">.</SPAN>TableToNumPyArray<SPAN class="punctuation token">(</SPAN>table<SPAN class="punctuation token">,</SPAN> fields<SPAN class="punctuation token">)</SPAN>
df <SPAN class="operator token">=</SPAN> pd<SPAN class="punctuation token">.</SPAN>DataFrame<SPAN class="punctuation token">(</SPAN>arr<SPAN class="punctuation token">,</SPAN> columns<SPAN class="operator token">=</SPAN>fields<SPAN class="punctuation token">)</SPAN>
list_df_MODIS<SPAN class="punctuation token">.</SPAN>append<SPAN class="punctuation token">(</SPAN>df<SPAN class="punctuation token">)</SPAN>
<SPAN class="keyword token">del</SPAN> arr
gc<SPAN class="punctuation token">.</SPAN>collect<SPAN class="punctuation token">(</SPAN><SPAN class="punctuation token">)</SPAN>
<SPAN class="keyword token">del</SPAN> tables
gc<SPAN class="punctuation token">.</SPAN>collect<SPAN class="punctuation token">(</SPAN><SPAN class="punctuation token">)</SPAN>
df_all <SPAN class="operator token">=</SPAN> pd<SPAN class="punctuation token">.</SPAN>concat<SPAN class="punctuation token">(</SPAN>list_df_MODIS<SPAN class="punctuation token">,</SPAN> ignore_index<SPAN class="operator token">=</SPAN><SPAN class="token boolean">True</SPAN><SPAN class="punctuation token">)</SPAN>
add <SPAN class="operator token">=</SPAN> pd<SPAN class="punctuation token">.</SPAN>DataFrame<SPAN class="punctuation token">(</SPAN><SPAN class="punctuation token">[</SPAN><SPAN class="punctuation token">[</SPAN><SPAN class="number token">0</SPAN><SPAN class="punctuation token">,</SPAN><SPAN class="number token">0</SPAN><SPAN class="punctuation token">,</SPAN><SPAN class="number token">0</SPAN><SPAN class="punctuation token">]</SPAN><SPAN class="punctuation token">,</SPAN>
<SPAN class="punctuation token">[</SPAN><SPAN class="number token">0</SPAN><SPAN class="punctuation token">,</SPAN><SPAN class="number token">1</SPAN><SPAN class="punctuation token">,</SPAN><SPAN class="number token">0</SPAN><SPAN class="punctuation token">]</SPAN><SPAN class="punctuation token">,</SPAN>
<SPAN class="punctuation token">[</SPAN><SPAN class="number token">0</SPAN><SPAN class="punctuation token">,</SPAN><SPAN class="number token">2</SPAN><SPAN class="punctuation token">,</SPAN><SPAN class="number token">0</SPAN><SPAN class="punctuation token">]</SPAN><SPAN class="punctuation token">,</SPAN>
<SPAN class="punctuation token">[</SPAN><SPAN class="number token">0</SPAN><SPAN class="punctuation token">,</SPAN><SPAN class="number token">3</SPAN><SPAN class="punctuation token">,</SPAN><SPAN class="number token">0</SPAN><SPAN class="punctuation token">]</SPAN><SPAN class="punctuation token">,</SPAN>
<SPAN class="punctuation token">[</SPAN><SPAN class="number token">0</SPAN><SPAN class="punctuation token">,</SPAN><SPAN class="number token">4</SPAN><SPAN class="punctuation token">,</SPAN><SPAN class="number token">0</SPAN><SPAN class="punctuation token">]</SPAN><SPAN class="punctuation token">,</SPAN>
<SPAN class="punctuation token">[</SPAN><SPAN class="number token">0</SPAN><SPAN class="punctuation token">,</SPAN><SPAN class="number token">5</SPAN><SPAN class="punctuation token">,</SPAN><SPAN class="number token">0</SPAN><SPAN class="punctuation token">]</SPAN><SPAN class="punctuation token">,</SPAN>
<SPAN class="punctuation token">[</SPAN><SPAN class="number token">0</SPAN><SPAN class="punctuation token">,</SPAN><SPAN class="number token">6</SPAN><SPAN class="punctuation token">,</SPAN><SPAN class="number token">0</SPAN><SPAN class="punctuation token">]</SPAN><SPAN class="punctuation token">,</SPAN>
<SPAN class="punctuation token">[</SPAN><SPAN class="number token">0</SPAN><SPAN class="punctuation token">,</SPAN><SPAN class="number token">7</SPAN><SPAN class="punctuation token">,</SPAN><SPAN class="number token">0</SPAN><SPAN class="punctuation token">]</SPAN><SPAN class="punctuation token">,</SPAN>
<SPAN class="punctuation token">[</SPAN><SPAN class="number token">0</SPAN><SPAN class="punctuation token">,</SPAN><SPAN class="number token">8</SPAN><SPAN class="punctuation token">,</SPAN><SPAN class="number token">0</SPAN><SPAN class="punctuation token">]</SPAN><SPAN class="punctuation token">,</SPAN>
<SPAN class="punctuation token">[</SPAN><SPAN class="number token">0</SPAN><SPAN class="punctuation token">,</SPAN><SPAN class="number token">9</SPAN><SPAN class="punctuation token">,</SPAN><SPAN class="number token">0</SPAN><SPAN class="punctuation token">]</SPAN><SPAN class="punctuation token">,</SPAN>
<SPAN class="punctuation token">[</SPAN><SPAN class="number token">0</SPAN><SPAN class="punctuation token">,</SPAN><SPAN class="number token">10</SPAN><SPAN class="punctuation token">,</SPAN><SPAN class="number token">0</SPAN><SPAN class="punctuation token">]</SPAN><SPAN class="punctuation token">,</SPAN>
<SPAN class="punctuation token">[</SPAN><SPAN class="number token">0</SPAN><SPAN class="punctuation token">,</SPAN><SPAN class="number token">11</SPAN><SPAN class="punctuation token">,</SPAN><SPAN class="number token">0</SPAN><SPAN class="punctuation token">]</SPAN><SPAN class="punctuation token">,</SPAN>
<SPAN class="punctuation token">[</SPAN><SPAN class="number token">0</SPAN><SPAN class="punctuation token">,</SPAN><SPAN class="number token">12</SPAN><SPAN class="punctuation token">,</SPAN><SPAN class="number token">0</SPAN><SPAN class="punctuation token">]</SPAN><SPAN class="punctuation token">,</SPAN>
<SPAN class="punctuation token">[</SPAN><SPAN class="number token">0</SPAN><SPAN class="punctuation token">,</SPAN><SPAN class="number token">13</SPAN><SPAN class="punctuation token">,</SPAN><SPAN class="number token">0</SPAN><SPAN class="punctuation token">]</SPAN><SPAN class="punctuation token">,</SPAN>
<SPAN class="punctuation token">[</SPAN><SPAN class="number token">0</SPAN><SPAN class="punctuation token">,</SPAN><SPAN class="number token">14</SPAN><SPAN class="punctuation token">,</SPAN><SPAN class="number token">0</SPAN><SPAN class="punctuation token">]</SPAN><SPAN class="punctuation token">,</SPAN>
<SPAN class="punctuation token">[</SPAN><SPAN class="number token">0</SPAN><SPAN class="punctuation token">,</SPAN><SPAN class="number token">15</SPAN><SPAN class="punctuation token">,</SPAN><SPAN class="number token">0</SPAN><SPAN class="punctuation token">]</SPAN><SPAN class="punctuation token">,</SPAN>
<SPAN class="punctuation token">[</SPAN><SPAN class="number token">0</SPAN><SPAN class="punctuation token">,</SPAN><SPAN class="number token">16</SPAN><SPAN class="punctuation token">,</SPAN><SPAN class="number token">0</SPAN><SPAN class="punctuation token">]</SPAN><SPAN class="punctuation token">,</SPAN>
<SPAN class="punctuation token">[</SPAN><SPAN class="number token">0</SPAN><SPAN class="punctuation token">,</SPAN><SPAN class="number token">254</SPAN><SPAN class="punctuation token">,</SPAN><SPAN class="number token">0</SPAN><SPAN class="punctuation token">]</SPAN><SPAN class="punctuation token">]</SPAN><SPAN class="punctuation token">,</SPAN>
columns<SPAN class="operator token">=</SPAN><SPAN class="punctuation token">[</SPAN><SPAN class="string token">'ras_feature'</SPAN><SPAN class="punctuation token">,</SPAN> <SPAN class="string token">'MODIS_landCover_'</SPAN><SPAN class="punctuation token">,</SPAN> <SPAN class="string token">'COUNT'</SPAN><SPAN class="punctuation token">]</SPAN><SPAN class="punctuation token">)</SPAN>
df_all <SPAN class="operator token">=</SPAN> df_all<SPAN class="punctuation token">.</SPAN>append<SPAN class="punctuation token">(</SPAN>add<SPAN class="punctuation token">)</SPAN>
<SPAN class="keyword token">del</SPAN> add
grouped <SPAN class="operator token">=</SPAN> df_all<SPAN class="punctuation token">.</SPAN>groupby<SPAN class="punctuation token">(</SPAN><SPAN class="punctuation token">[</SPAN>df_all<SPAN class="punctuation token">[</SPAN><SPAN class="string token">'ras_feature'</SPAN><SPAN class="punctuation token">]</SPAN><SPAN class="punctuation token">,</SPAN> df_all<SPAN class="punctuation token">[</SPAN><SPAN class="string token">'MODIS_landCover_'</SPAN><SPAN class="punctuation token">]</SPAN><SPAN class="punctuation token">]</SPAN><SPAN class="punctuation token">,</SPAN> as_index<SPAN class="operator token">=</SPAN><SPAN class="token boolean">False</SPAN><SPAN class="punctuation token">)</SPAN><SPAN class="punctuation token">.</SPAN>sum<SPAN class="punctuation token">(</SPAN><SPAN class="punctuation token">)</SPAN>
arr_MODIS <SPAN class="operator token">=</SPAN> grouped<SPAN class="punctuation token">.</SPAN>pivot_table<SPAN class="punctuation token">(</SPAN>index<SPAN class="operator token">=</SPAN><SPAN class="string token">'ras_feature'</SPAN><SPAN class="punctuation token">,</SPAN> columns<SPAN class="operator token">=</SPAN><SPAN class="punctuation token">[</SPAN><SPAN class="string token">'MODIS_landCover_'</SPAN><SPAN class="punctuation token">]</SPAN><SPAN class="punctuation token">,</SPAN>values<SPAN class="operator token">=</SPAN><SPAN class="punctuation token">[</SPAN><SPAN class="string token">'MODIS_landCover_'</SPAN><SPAN class="punctuation token">,</SPAN><SPAN class="string token">'COUNT'</SPAN><SPAN class="punctuation token">]</SPAN><SPAN class="punctuation token">,</SPAN>fill_value<SPAN class="operator token">=</SPAN><SPAN class="number token">0</SPAN><SPAN class="punctuation token">)</SPAN>
arr_MODIS <SPAN class="operator token">=</SPAN> arr_MODIS<SPAN class="punctuation token">.</SPAN>reset_index<SPAN class="punctuation token">(</SPAN><SPAN class="punctuation token">)</SPAN><SPAN class="punctuation token">.</SPAN>values
arr_MODIS <SPAN class="operator token">=</SPAN> arr_MODIS<SPAN class="punctuation token">.</SPAN>astype<SPAN class="punctuation token">(</SPAN>np<SPAN class="punctuation token">.</SPAN>float32<SPAN class="punctuation token">)</SPAN>
struct_array <SPAN class="operator token">=</SPAN> np<SPAN class="punctuation token">.</SPAN>core<SPAN class="punctuation token">.</SPAN>records<SPAN class="punctuation token">.</SPAN>fromarrays<SPAN class="punctuation token">(</SPAN>arr_MODIS<SPAN class="punctuation token">.</SPAN>transpose<SPAN class="punctuation token">(</SPAN><SPAN class="punctuation token">)</SPAN><SPAN class="punctuation token">,</SPAN>
np<SPAN class="punctuation token">.</SPAN>dtype<SPAN class="punctuation token">(</SPAN><SPAN class="punctuation token">[</SPAN><SPAN class="punctuation token">(</SPAN><SPAN class="string token">'Value'</SPAN><SPAN class="punctuation token">,</SPAN> np<SPAN class="punctuation token">.</SPAN>uint64<SPAN class="punctuation token">)</SPAN><SPAN class="punctuation token">,</SPAN>
<SPAN class="punctuation token">(</SPAN><SPAN class="string token">'MODIS_0'</SPAN><SPAN class="punctuation token">,</SPAN> np<SPAN class="punctuation token">.</SPAN>float32<SPAN class="punctuation token">)</SPAN><SPAN class="punctuation token">,</SPAN>
<SPAN class="punctuation token">(</SPAN><SPAN class="string token">'MODIS_1'</SPAN><SPAN class="punctuation token">,</SPAN> np<SPAN class="punctuation token">.</SPAN>float32<SPAN class="punctuation token">)</SPAN><SPAN class="punctuation token">,</SPAN>
<SPAN class="punctuation token">(</SPAN><SPAN class="string token">'MODIS_2'</SPAN><SPAN class="punctuation token">,</SPAN> np<SPAN class="punctuation token">.</SPAN>float32<SPAN class="punctuation token">)</SPAN><SPAN class="punctuation token">,</SPAN>
<SPAN class="punctuation token">(</SPAN><SPAN class="string token">'MODIS_3'</SPAN><SPAN class="punctuation token">,</SPAN> np<SPAN class="punctuation token">.</SPAN>float32<SPAN class="punctuation token">)</SPAN><SPAN class="punctuation token">,</SPAN>
<SPAN class="punctuation token">(</SPAN><SPAN class="string token">'MODIS_4'</SPAN><SPAN class="punctuation token">,</SPAN> np<SPAN class="punctuation token">.</SPAN>float32<SPAN class="punctuation token">)</SPAN><SPAN class="punctuation token">,</SPAN>
<SPAN class="punctuation token">(</SPAN><SPAN class="string token">'MODIS_5'</SPAN><SPAN class="punctuation token">,</SPAN> np<SPAN class="punctuation token">.</SPAN>float32<SPAN class="punctuation token">)</SPAN><SPAN class="punctuation token">,</SPAN>
<SPAN class="punctuation token">(</SPAN><SPAN class="string token">'MODIS_6'</SPAN><SPAN class="punctuation token">,</SPAN> np<SPAN class="punctuation token">.</SPAN>float32<SPAN class="punctuation token">)</SPAN><SPAN class="punctuation token">,</SPAN>
<SPAN class="punctuation token">(</SPAN><SPAN class="string token">'MODIS_7'</SPAN><SPAN class="punctuation token">,</SPAN> np<SPAN class="punctuation token">.</SPAN>float32<SPAN class="punctuation token">)</SPAN><SPAN class="punctuation token">,</SPAN>
<SPAN class="punctuation token">(</SPAN><SPAN class="string token">'MODIS_8'</SPAN><SPAN class="punctuation token">,</SPAN> np<SPAN class="punctuation token">.</SPAN>float32<SPAN class="punctuation token">)</SPAN><SPAN class="punctuation token">,</SPAN>
<SPAN class="punctuation token">(</SPAN><SPAN class="string token">'MODIS_9'</SPAN><SPAN class="punctuation token">,</SPAN> np<SPAN class="punctuation token">.</SPAN>float32<SPAN class="punctuation token">)</SPAN><SPAN class="punctuation token">,</SPAN>
<SPAN class="punctuation token">(</SPAN><SPAN class="string token">'MODIS_10'</SPAN><SPAN class="punctuation token">,</SPAN> np<SPAN class="punctuation token">.</SPAN>float32<SPAN class="punctuation token">)</SPAN><SPAN class="punctuation token">,</SPAN>
<SPAN class="punctuation token">(</SPAN><SPAN class="string token">'MODIS_11'</SPAN><SPAN class="punctuation token">,</SPAN> np<SPAN class="punctuation token">.</SPAN>float32<SPAN class="punctuation token">)</SPAN><SPAN class="punctuation token">,</SPAN>
<SPAN class="punctuation token">(</SPAN><SPAN class="string token">'MODIS_12'</SPAN><SPAN class="punctuation token">,</SPAN> np<SPAN class="punctuation token">.</SPAN>float32<SPAN class="punctuation token">)</SPAN><SPAN class="punctuation token">,</SPAN>
<SPAN class="punctuation token">(</SPAN><SPAN class="string token">'MODIS_13'</SPAN><SPAN class="punctuation token">,</SPAN> np<SPAN class="punctuation token">.</SPAN>float32<SPAN class="punctuation token">)</SPAN><SPAN class="punctuation token">,</SPAN>
<SPAN class="punctuation token">(</SPAN><SPAN class="string token">'MODIS_14'</SPAN><SPAN class="punctuation token">,</SPAN> np<SPAN class="punctuation token">.</SPAN>float32<SPAN class="punctuation token">)</SPAN><SPAN class="punctuation token">,</SPAN>
<SPAN class="punctuation token">(</SPAN><SPAN class="string token">'MODIS_15'</SPAN><SPAN class="punctuation token">,</SPAN> np<SPAN class="punctuation token">.</SPAN>float32<SPAN class="punctuation token">)</SPAN><SPAN class="punctuation token">,</SPAN>
<SPAN class="punctuation token">(</SPAN><SPAN class="string token">'MODIS_16'</SPAN><SPAN class="punctuation token">,</SPAN> np<SPAN class="punctuation token">.</SPAN>float32<SPAN class="punctuation token">)</SPAN><SPAN class="punctuation token">,</SPAN>
<SPAN class="punctuation token">(</SPAN><SPAN class="string token">'MODIS_254'</SPAN><SPAN class="punctuation token">,</SPAN> np<SPAN class="punctuation token">.</SPAN>float32<SPAN class="punctuation token">)</SPAN><SPAN class="punctuation token">]</SPAN><SPAN class="punctuation token">)</SPAN><SPAN class="punctuation token">)</SPAN>
tmp_table <SPAN class="operator token">=</SPAN> tmp_proc_Gdb <SPAN class="operator token">+</SPAN> <SPAN class="string token">"\\tmp_table"</SPAN>
arcpy<SPAN class="punctuation token">.</SPAN>da<SPAN class="punctuation token">.</SPAN>NumPyArrayToTable<SPAN class="punctuation token">(</SPAN>struct_array<SPAN class="punctuation token">,</SPAN> tmp_table<SPAN class="punctuation token">)</SPAN>
<SPAN class="keyword token">del</SPAN> struct_array<SPAN class="punctuation token">,</SPAN> grouped<SPAN class="punctuation token">,</SPAN> arr_MODIS<SPAN class="punctuation token">,</SPAN> df_all<SPAN class="punctuation token">,</SPAN> list_df_MODIS
gc<SPAN class="punctuation token">.</SPAN>collect<SPAN class="punctuation token">(</SPAN><SPAN class="punctuation token">)</SPAN>
tmp_table_view <SPAN class="operator token">=</SPAN> tmp_proc_Gdb <SPAN class="operator token">+</SPAN> <SPAN class="string token">"\\tmp_table_view"</SPAN>
arcpy<SPAN class="punctuation token">.</SPAN>MakeTableView_management<SPAN class="punctuation token">(</SPAN>tmp_table<SPAN class="punctuation token">,</SPAN> tmp_table_view<SPAN class="punctuation token">,</SPAN> <SPAN class="string token">"NOT Value = 0"</SPAN><SPAN class="punctuation token">)</SPAN>
arcpy<SPAN class="punctuation token">.</SPAN>AddJoin_management<SPAN class="punctuation token">(</SPAN>feature_lyr<SPAN class="punctuation token">,</SPAN> <SPAN class="string token">"OBJECTID"</SPAN><SPAN class="punctuation token">,</SPAN> tmp_table_view<SPAN class="punctuation token">,</SPAN> <SPAN class="string token">"Value"</SPAN><SPAN class="punctuation token">)</SPAN>
feature_name <SPAN class="operator token">=</SPAN> os<SPAN class="punctuation token">.</SPAN>path<SPAN class="punctuation token">.</SPAN>basename<SPAN class="punctuation token">(</SPAN>feature_path<SPAN class="punctuation token">)</SPAN>
<SPAN class="keyword token">for</SPAN> i <SPAN class="keyword token">in</SPAN> range<SPAN class="punctuation token">(</SPAN><SPAN class="number token">0</SPAN><SPAN class="punctuation token">,</SPAN><SPAN class="number token">17</SPAN><SPAN class="punctuation token">)</SPAN><SPAN class="punctuation token">:</SPAN>
fieldName <SPAN class="operator token">=</SPAN> feature_name <SPAN class="operator token">+</SPAN> <SPAN class="string token">".MODIS_"</SPAN> <SPAN class="operator token">+</SPAN> str<SPAN class="punctuation token">(</SPAN>i<SPAN class="punctuation token">)</SPAN>
expression <SPAN class="operator token">=</SPAN> <SPAN class="string token">"!tmp_table.MODIS_"</SPAN> <SPAN class="operator token">+</SPAN> str<SPAN class="punctuation token">(</SPAN>i<SPAN class="punctuation token">)</SPAN> <SPAN class="operator token">+</SPAN> <SPAN class="string token">"!"</SPAN>
arcpy<SPAN class="punctuation token">.</SPAN>CalculateField_management<SPAN class="punctuation token">(</SPAN>feature_lyr<SPAN class="punctuation token">,</SPAN> fieldName<SPAN class="punctuation token">,</SPAN> expression<SPAN class="punctuation token">,</SPAN> <SPAN class="string token">"PYTHON_9.3"</SPAN><SPAN class="punctuation token">)</SPAN>
fieldName <SPAN class="operator token">=</SPAN> feature_name <SPAN class="operator token">+</SPAN> <SPAN class="string token">".MODIS_254"</SPAN>
expression <SPAN class="operator token">=</SPAN> <SPAN class="string token">"!tmp_table.MODIS_254!"</SPAN>
arcpy<SPAN class="punctuation token">.</SPAN>CalculateField_management<SPAN class="punctuation token">(</SPAN>feature_lyr<SPAN class="punctuation token">,</SPAN> fieldName<SPAN class="punctuation token">,</SPAN> expression<SPAN class="punctuation token">,</SPAN> <SPAN class="string token">"PYTHON_9.3"</SPAN><SPAN class="punctuation token">)</SPAN>
arcpy<SPAN class="punctuation token">.</SPAN>RemoveJoin_management<SPAN class="punctuation token">(</SPAN>feature_lyr<SPAN class="punctuation token">)</SPAN>
arcpy<SPAN class="punctuation token">.</SPAN>Delete_management<SPAN class="punctuation token">(</SPAN>tmp_table_view<SPAN class="punctuation token">)</SPAN>
arcpy<SPAN class="punctuation token">.</SPAN>Delete_management<SPAN class="punctuation token">(</SPAN>tmp_table<SPAN class="punctuation token">)</SPAN>
time_3 <SPAN class="operator token">=</SPAN> time<SPAN class="punctuation token">.</SPAN>time<SPAN class="punctuation token">(</SPAN><SPAN class="punctuation token">)</SPAN> <SPAN class="operator token">-</SPAN> start_time
logging<SPAN class="punctuation token">.</SPAN>info<SPAN class="punctuation token">(</SPAN><SPAN class="string token">"time_3:{0}"</SPAN><SPAN class="punctuation token">.</SPAN>format<SPAN class="punctuation token">(</SPAN>time_3<SPAN class="punctuation token">)</SPAN> <SPAN class="operator token">+</SPAN> <SPAN class="string token">"[sec]"</SPAN><SPAN class="punctuation token">)</SPAN>
<SPAN class="comment token"># Set scratchWorkspace</SPAN>
arcpy<SPAN class="punctuation token">.</SPAN>env<SPAN class="punctuation token">.</SPAN>scratchWorkspace <SPAN class="operator token">=</SPAN> <SPAN class="string token">"in_memory"</SPAN>
<SPAN class="comment token"># Set local_outGDB</SPAN>
THREAD <SPAN class="operator token">=</SPAN> <SPAN class="number token">0</SPAN>
hostName <SPAN class="operator token">=</SPAN> socket<SPAN class="punctuation token">.</SPAN>gethostname<SPAN class="punctuation token">(</SPAN><SPAN class="punctuation token">)</SPAN>
local_outGdb_name <SPAN class="operator token">=</SPAN> <SPAN class="string token">'tmp_'</SPAN> <SPAN class="operator token">+</SPAN> hostName <SPAN class="operator token">+</SPAN> <SPAN class="string token">'_'</SPAN> <SPAN class="operator token">+</SPAN> str<SPAN class="punctuation token">(</SPAN>THREAD<SPAN class="punctuation token">)</SPAN><SPAN class="punctuation token">.</SPAN>zfill<SPAN class="punctuation token">(</SPAN><SPAN class="number token">2</SPAN><SPAN class="punctuation token">)</SPAN> <SPAN class="operator token">+</SPAN> <SPAN class="string token">'.gdb'</SPAN>
scratchGdb <SPAN class="operator token">=</SPAN> <SPAN class="string token">"in_memory"</SPAN>
local_outGdb <SPAN class="operator token">=</SPAN> WORK_DIR <SPAN class="operator token">+</SPAN> <SPAN class="string token">'\\'</SPAN> <SPAN class="operator token">+</SPAN> local_outGdb_name
tmp_proc_Gdb <SPAN class="operator token">=</SPAN> <SPAN class="string token">"in_memory"</SPAN>
logfile_name <SPAN class="operator token">=</SPAN> WORK_DIR <SPAN class="operator token">+</SPAN> <SPAN class="string token">"\\log_test.txt"</SPAN>
logging<SPAN class="punctuation token">.</SPAN>basicConfig<SPAN class="punctuation token">(</SPAN>filename<SPAN class="operator token">=</SPAN>logfile_name<SPAN class="punctuation token">,</SPAN>level<SPAN class="operator token">=</SPAN>logging<SPAN class="punctuation token">.</SPAN>DEBUG<SPAN class="punctuation token">)</SPAN>
logging<SPAN class="punctuation token">.</SPAN>info<SPAN class="punctuation token">(</SPAN><SPAN class="string token">"************** MAIN PROCESS START **************"</SPAN><SPAN class="punctuation token">)</SPAN>
arcpy<SPAN class="punctuation token">.</SPAN>env<SPAN class="punctuation token">.</SPAN>workspace <SPAN class="operator token">=</SPAN> WORK_DIR
<SPAN class="keyword token">for</SPAN> gdb <SPAN class="keyword token">in</SPAN> arcpy<SPAN class="punctuation token">.</SPAN>ListFiles<SPAN class="punctuation token">(</SPAN><SPAN class="string token">"test.gdb"</SPAN><SPAN class="punctuation token">)</SPAN><SPAN class="punctuation token">:</SPAN>
<SPAN class="keyword token">if</SPAN> <SPAN class="operator token">not</SPAN> arcpy<SPAN class="punctuation token">.</SPAN>Exists<SPAN class="punctuation token">(</SPAN>WORK_DIR <SPAN class="operator token">+</SPAN> <SPAN class="string token">'\\'</SPAN> <SPAN class="operator token">+</SPAN> local_outGdb_name<SPAN class="punctuation token">)</SPAN><SPAN class="punctuation token">:</SPAN>
arcpy<SPAN class="punctuation token">.</SPAN>CreateFileGDB_management<SPAN class="punctuation token">(</SPAN>WORK_DIR<SPAN class="punctuation token">,</SPAN> local_outGdb_name<SPAN class="punctuation token">)</SPAN>
<SPAN class="keyword token">if</SPAN> arcpy<SPAN class="punctuation token">.</SPAN>Exists<SPAN class="punctuation token">(</SPAN>WORK_DIR <SPAN class="operator token">+</SPAN> <SPAN class="string token">'\\Res\\'</SPAN> <SPAN class="operator token">+</SPAN> gdb<SPAN class="punctuation token">)</SPAN><SPAN class="punctuation token">:</SPAN>
arcpy<SPAN class="punctuation token">.</SPAN>env<SPAN class="punctuation token">.</SPAN>workspace <SPAN class="operator token">=</SPAN> WORK_DIR <SPAN class="operator token">+</SPAN> <SPAN class="string token">'\\Res\\'</SPAN> <SPAN class="operator token">+</SPAN> gdb
features_end <SPAN class="operator token">=</SPAN> arcpy<SPAN class="punctuation token">.</SPAN>ListFeatureClasses<SPAN class="punctuation token">(</SPAN><SPAN class="punctuation token">)</SPAN>
arcpy<SPAN class="punctuation token">.</SPAN>env<SPAN class="punctuation token">.</SPAN>workspace <SPAN class="operator token">=</SPAN> WORK_DIR <SPAN class="operator token">+</SPAN> <SPAN class="string token">'\\'</SPAN> <SPAN class="operator token">+</SPAN> gdb
features_tmp <SPAN class="operator token">=</SPAN> arcpy<SPAN class="punctuation token">.</SPAN>ListFeatureClasses<SPAN class="punctuation token">(</SPAN><SPAN class="punctuation token">)</SPAN>
features <SPAN class="operator token">=</SPAN> <SPAN class="punctuation token">[</SPAN> feature <SPAN class="keyword token">for</SPAN> feature <SPAN class="keyword token">in</SPAN> features_tmp <SPAN class="keyword token">if</SPAN> feature <SPAN class="operator token">not</SPAN> <SPAN class="keyword token">in</SPAN> features_end <SPAN class="punctuation token">]</SPAN>
<SPAN class="keyword token">else</SPAN><SPAN class="punctuation token">:</SPAN>
arcpy<SPAN class="punctuation token">.</SPAN>env<SPAN class="punctuation token">.</SPAN>workspace <SPAN class="operator token">=</SPAN> WORK_DIR <SPAN class="operator token">+</SPAN> <SPAN class="string token">'\\'</SPAN> <SPAN class="operator token">+</SPAN> gdb
features <SPAN class="operator token">=</SPAN> arcpy<SPAN class="punctuation token">.</SPAN>ListFeatureClasses<SPAN class="punctuation token">(</SPAN><SPAN class="punctuation token">)</SPAN>
totalNum <SPAN class="operator token">=</SPAN> len<SPAN class="punctuation token">(</SPAN>features<SPAN class="punctuation token">)</SPAN>
counter <SPAN class="operator token">=</SPAN> <SPAN class="number token">0</SPAN>
index_MODIS_lyr <SPAN class="operator token">=</SPAN> <SPAN class="string token">"in_memory"</SPAN> <SPAN class="operator token">+</SPAN> <SPAN class="string token">"\\"</SPAN> <SPAN class="operator token">+</SPAN> <SPAN class="string token">"idx_MODIS_lyr"</SPAN>
list_index <SPAN class="operator token">=</SPAN> <SPAN class="punctuation token">[</SPAN>index_MODIS_lyr<SPAN class="punctuation token">]</SPAN>
arcpy<SPAN class="punctuation token">.</SPAN>MakeFeatureLayer_management<SPAN class="punctuation token">(</SPAN>INDEX_POLY <SPAN class="operator token">+</SPAN> <SPAN class="string token">"\\MODIS_landCover_2001"</SPAN><SPAN class="punctuation token">,</SPAN> index_MODIS_lyr<SPAN class="punctuation token">)</SPAN>
<SPAN class="keyword token">for</SPAN> feature <SPAN class="keyword token">in</SPAN> features<SPAN class="punctuation token">:</SPAN>
<SPAN class="keyword token">try</SPAN><SPAN class="punctuation token">:</SPAN>
start_time <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>workspace <SPAN class="operator token">=</SPAN> WORK_DIR <SPAN class="operator token">+</SPAN> <SPAN class="string token">'\\'</SPAN> <SPAN class="operator token">+</SPAN> gdb
arcpy<SPAN class="punctuation token">.</SPAN>env<SPAN class="punctuation token">.</SPAN>parallelProcessingFactor <SPAN class="operator token">=</SPAN> <SPAN class="string token">"100%"</SPAN>
counter <SPAN class="operator token">+=</SPAN> <SPAN class="number token">1</SPAN>
logging<SPAN class="punctuation token">.</SPAN>info<SPAN class="punctuation token">(</SPAN>feature<SPAN class="operator token">+</SPAN><SPAN class="string token">" "</SPAN><SPAN class="operator token">+</SPAN>str<SPAN class="punctuation token">(</SPAN>counter<SPAN class="punctuation token">)</SPAN> <SPAN class="operator token">+</SPAN> <SPAN class="string token">'/'</SPAN> <SPAN class="operator token">+</SPAN> str<SPAN class="punctuation token">(</SPAN>totalNum<SPAN class="punctuation token">)</SPAN><SPAN class="operator token">+</SPAN><SPAN class="string token">" START"</SPAN><SPAN class="punctuation token">)</SPAN>
tmp_feature <SPAN class="operator token">=</SPAN> tmp_proc_Gdb <SPAN class="operator token">+</SPAN> <SPAN class="string token">"\\tmp_feature"</SPAN>
arcpy<SPAN class="punctuation token">.</SPAN>CopyFeatures_management<SPAN class="punctuation token">(</SPAN>feature<SPAN class="punctuation token">,</SPAN> tmp_feature<SPAN class="punctuation token">)</SPAN>
feature_lyr <SPAN class="operator token">=</SPAN> tmp_proc_Gdb <SPAN class="operator token">+</SPAN> <SPAN class="string token">"\\feature_lyr"</SPAN>
arcpy<SPAN class="punctuation token">.</SPAN>MakeFeatureLayer_management<SPAN class="punctuation token">(</SPAN>tmp_feature<SPAN class="punctuation token">,</SPAN> feature_lyr<SPAN class="punctuation token">)</SPAN>
rows <SPAN class="operator token">=</SPAN> arcpy<SPAN class="punctuation token">.</SPAN>GetCount_management<SPAN class="punctuation token">(</SPAN>feature_lyr<SPAN class="punctuation token">)</SPAN>
countFeature <SPAN class="operator token">=</SPAN> int<SPAN class="punctuation token">(</SPAN>rows<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="keyword token">del</SPAN> rows
arcpy<SPAN class="punctuation token">.</SPAN>AddField_management<SPAN class="punctuation token">(</SPAN>feature_lyr<SPAN class="punctuation token">,</SPAN> <SPAN class="string token">"MODIS_0"</SPAN> <SPAN class="punctuation token">,</SPAN> <SPAN class="string token">"FLOAT"</SPAN><SPAN class="punctuation token">)</SPAN>
arcpy<SPAN class="punctuation token">.</SPAN>AddField_management<SPAN class="punctuation token">(</SPAN>feature_lyr<SPAN class="punctuation token">,</SPAN> <SPAN class="string token">"MODIS_1"</SPAN> <SPAN class="punctuation token">,</SPAN> <SPAN class="string token">"FLOAT"</SPAN><SPAN class="punctuation token">)</SPAN>
arcpy<SPAN class="punctuation token">.</SPAN>AddField_management<SPAN class="punctuation token">(</SPAN>feature_lyr<SPAN class="punctuation token">,</SPAN> <SPAN class="string token">"MODIS_2"</SPAN> <SPAN class="punctuation token">,</SPAN> <SPAN class="string token">"FLOAT"</SPAN><SPAN class="punctuation token">)</SPAN>
arcpy<SPAN class="punctuation token">.</SPAN>AddField_management<SPAN class="punctuation token">(</SPAN>feature_lyr<SPAN class="punctuation token">,</SPAN> <SPAN class="string token">"MODIS_3"</SPAN> <SPAN class="punctuation token">,</SPAN> <SPAN class="string token">"FLOAT"</SPAN><SPAN class="punctuation token">)</SPAN>
arcpy<SPAN class="punctuation token">.</SPAN>AddField_management<SPAN class="punctuation token">(</SPAN>feature_lyr<SPAN class="punctuation token">,</SPAN> <SPAN class="string token">"MODIS_4"</SPAN> <SPAN class="punctuation token">,</SPAN> <SPAN class="string token">"FLOAT"</SPAN><SPAN class="punctuation token">)</SPAN>
arcpy<SPAN class="punctuation token">.</SPAN>AddField_management<SPAN class="punctuation token">(</SPAN>feature_lyr<SPAN class="punctuation token">,</SPAN> <SPAN class="string token">"MODIS_5"</SPAN> <SPAN class="punctuation token">,</SPAN> <SPAN class="string token">"FLOAT"</SPAN><SPAN class="punctuation token">)</SPAN>
arcpy<SPAN class="punctuation token">.</SPAN>AddField_management<SPAN class="punctuation token">(</SPAN>feature_lyr<SPAN class="punctuation token">,</SPAN> <SPAN class="string token">"MODIS_6"</SPAN> <SPAN class="punctuation token">,</SPAN> <SPAN class="string token">"FLOAT"</SPAN><SPAN class="punctuation token">)</SPAN>
arcpy<SPAN class="punctuation token">.</SPAN>AddField_management<SPAN class="punctuation token">(</SPAN>feature_lyr<SPAN class="punctuation token">,</SPAN> <SPAN class="string token">"MODIS_7"</SPAN> <SPAN class="punctuation token">,</SPAN> <SPAN class="string token">"FLOAT"</SPAN><SPAN class="punctuation token">)</SPAN>
arcpy<SPAN class="punctuation token">.</SPAN>AddField_management<SPAN class="punctuation token">(</SPAN>feature_lyr<SPAN class="punctuation token">,</SPAN> <SPAN class="string token">"MODIS_8"</SPAN> <SPAN class="punctuation token">,</SPAN> <SPAN class="string token">"FLOAT"</SPAN><SPAN class="punctuation token">)</SPAN>
arcpy<SPAN class="punctuation token">.</SPAN>AddField_management<SPAN class="punctuation token">(</SPAN>feature_lyr<SPAN class="punctuation token">,</SPAN> <SPAN class="string token">"MODIS_9"</SPAN> <SPAN class="punctuation token">,</SPAN> <SPAN class="string token">"FLOAT"</SPAN><SPAN class="punctuation token">)</SPAN>
arcpy<SPAN class="punctuation token">.</SPAN>AddField_management<SPAN class="punctuation token">(</SPAN>feature_lyr<SPAN class="punctuation token">,</SPAN> <SPAN class="string token">"MODIS_10"</SPAN> <SPAN class="punctuation token">,</SPAN> <SPAN class="string token">"FLOAT"</SPAN><SPAN class="punctuation token">)</SPAN>
arcpy<SPAN class="punctuation token">.</SPAN>AddField_management<SPAN class="punctuation token">(</SPAN>feature_lyr<SPAN class="punctuation token">,</SPAN> <SPAN class="string token">"MODIS_11"</SPAN> <SPAN class="punctuation token">,</SPAN> <SPAN class="string token">"FLOAT"</SPAN><SPAN class="punctuation token">)</SPAN>
arcpy<SPAN class="punctuation token">.</SPAN>AddField_management<SPAN class="punctuation token">(</SPAN>feature_lyr<SPAN class="punctuation token">,</SPAN> <SPAN class="string token">"MODIS_12"</SPAN> <SPAN class="punctuation token">,</SPAN> <SPAN class="string token">"FLOAT"</SPAN><SPAN class="punctuation token">)</SPAN>
arcpy<SPAN class="punctuation token">.</SPAN>AddField_management<SPAN class="punctuation token">(</SPAN>feature_lyr<SPAN class="punctuation token">,</SPAN> <SPAN class="string token">"MODIS_13"</SPAN> <SPAN class="punctuation token">,</SPAN> <SPAN class="string token">"FLOAT"</SPAN><SPAN class="punctuation token">)</SPAN>
arcpy<SPAN class="punctuation token">.</SPAN>AddField_management<SPAN class="punctuation token">(</SPAN>feature_lyr<SPAN class="punctuation token">,</SPAN> <SPAN class="string token">"MODIS_14"</SPAN> <SPAN class="punctuation token">,</SPAN> <SPAN class="string token">"FLOAT"</SPAN><SPAN class="punctuation token">)</SPAN>
arcpy<SPAN class="punctuation token">.</SPAN>AddField_management<SPAN class="punctuation token">(</SPAN>feature_lyr<SPAN class="punctuation token">,</SPAN> <SPAN class="string token">"MODIS_15"</SPAN> <SPAN class="punctuation token">,</SPAN> <SPAN class="string token">"FLOAT"</SPAN><SPAN class="punctuation token">)</SPAN>
arcpy<SPAN class="punctuation token">.</SPAN>AddField_management<SPAN class="punctuation token">(</SPAN>feature_lyr<SPAN class="punctuation token">,</SPAN> <SPAN class="string token">"MODIS_16"</SPAN> <SPAN class="punctuation token">,</SPAN> <SPAN class="string token">"FLOAT"</SPAN><SPAN class="punctuation token">)</SPAN>
arcpy<SPAN class="punctuation token">.</SPAN>AddField_management<SPAN class="punctuation token">(</SPAN>feature_lyr<SPAN class="punctuation token">,</SPAN> <SPAN class="string token">"MODIS_254"</SPAN> <SPAN class="punctuation token">,</SPAN> <SPAN class="string token">"FLOAT"</SPAN><SPAN class="punctuation token">)</SPAN>
proc_zonalStat<SPAN class="punctuation token">(</SPAN>feature_lyr<SPAN class="punctuation token">,</SPAN> tmp_feature<SPAN class="punctuation token">,</SPAN> list_index<SPAN class="punctuation token">)</SPAN>
out_feature <SPAN class="operator token">=</SPAN> local_outGdb <SPAN class="operator token">+</SPAN> <SPAN class="string token">"\\"</SPAN> <SPAN class="operator token">+</SPAN> feature
arcpy<SPAN class="punctuation token">.</SPAN>CopyFeatures_management<SPAN class="punctuation token">(</SPAN>tmp_feature<SPAN class="punctuation token">,</SPAN> out_feature<SPAN class="punctuation token">)</SPAN>
arcpy<SPAN class="punctuation token">.</SPAN>Delete_management<SPAN class="punctuation token">(</SPAN>feature_lyr<SPAN class="punctuation token">)</SPAN>
arcpy<SPAN class="punctuation token">.</SPAN>Delete_management<SPAN class="punctuation token">(</SPAN>tmp_feature<SPAN class="punctuation token">)</SPAN>
elapsed_time <SPAN class="operator token">=</SPAN> time<SPAN class="punctuation token">.</SPAN>time<SPAN class="punctuation token">(</SPAN><SPAN class="punctuation token">)</SPAN> <SPAN class="operator token">-</SPAN> start_time
logging<SPAN class="punctuation token">.</SPAN>info<SPAN class="punctuation token">(</SPAN><SPAN class="string token">"elapsed_time:{0}"</SPAN><SPAN class="punctuation token">.</SPAN>format<SPAN class="punctuation token">(</SPAN>elapsed_time<SPAN class="punctuation token">)</SPAN> <SPAN class="operator token">+</SPAN> <SPAN class="string token">"[sec]"</SPAN><SPAN class="punctuation token">)</SPAN>
<SPAN class="keyword token">except</SPAN> arcpy<SPAN class="punctuation token">.</SPAN>ExecuteError<SPAN class="punctuation token">:</SPAN>
logging<SPAN class="punctuation token">.</SPAN>info<SPAN class="punctuation token">(</SPAN>arcpy<SPAN class="punctuation token">.</SPAN>GetMessages<SPAN class="punctuation token">(</SPAN><SPAN class="number token">2</SPAN><SPAN class="punctuation token">)</SPAN><SPAN class="punctuation token">)</SPAN>
arcpy<SPAN class="punctuation token">.</SPAN>Delete_management<SPAN class="punctuation token">(</SPAN><SPAN class="string token">"in_memory"</SPAN><SPAN class="punctuation token">)</SPAN>
arcpy<SPAN class="punctuation token">.</SPAN>MakeFeatureLayer_management<SPAN class="punctuation token">(</SPAN>INDEX_POLY <SPAN class="operator token">+</SPAN> <SPAN class="string token">"\\MODIS_landCover_2001"</SPAN><SPAN class="punctuation token">,</SPAN> index_MODIS_lyr<SPAN class="punctuation token">)</SPAN>
outDir <SPAN class="operator token">=</SPAN> WORK_DIR <SPAN class="operator token">+</SPAN> <SPAN class="string token">"\\Res"</SPAN>
outGdbPath <SPAN class="operator token">=</SPAN> outDir <SPAN class="operator token">+</SPAN> <SPAN class="string token">"\\"</SPAN> <SPAN class="operator token">+</SPAN> gdb
<SPAN class="keyword token">if</SPAN> <SPAN class="operator token">not</SPAN> arcpy<SPAN class="punctuation token">.</SPAN>Exists<SPAN class="punctuation token">(</SPAN>outGdbPath<SPAN class="punctuation token">)</SPAN><SPAN class="punctuation token">:</SPAN>
arcpy<SPAN class="punctuation token">.</SPAN>CreateFileGDB_management<SPAN class="punctuation token">(</SPAN>outDir<SPAN class="punctuation token">,</SPAN> gdb<SPAN class="punctuation token">)</SPAN>
arcpy<SPAN class="punctuation token">.</SPAN>env<SPAN class="punctuation token">.</SPAN>workspace <SPAN class="operator token">=</SPAN> local_outGdb
features <SPAN class="operator token">=</SPAN> arcpy<SPAN class="punctuation token">.</SPAN>ListFeatureClasses<SPAN class="punctuation token">(</SPAN><SPAN class="punctuation token">)</SPAN>
arcpy<SPAN class="punctuation token">.</SPAN>FeatureClassToGeodatabase_conversion<SPAN class="punctuation token">(</SPAN>features<SPAN class="punctuation token">,</SPAN> outGdbPath<SPAN class="punctuation token">)</SPAN>
arcpy<SPAN class="punctuation token">.</SPAN>Delete_management<SPAN class="punctuation token">(</SPAN>local_outGdb<SPAN class="punctuation token">)</SPAN>
logging<SPAN class="punctuation token">.</SPAN>info<SPAN class="punctuation token">(</SPAN><SPAN class="string token">"************** MAIN PROCESS E N D **************"</SPAN><SPAN class="punctuation token">)</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>