Hi everyone, I have folder with thousands of average daily relative humidity raster files that I would like to use cell statistics to calculate the mean in 8 day intervals. The data has dates in the format YYYYMMDD. I've looked at a similar code written after a similar question was asked but it doesnt do the 8 day averaging. I've included the link to the other answered question and a picture of what the data look like. Your help is greatly appreciated.Calculate daily average of raster files based on their names in python xander_bakker
Hi larry32 , can you try this code?
Change:
<SPAN class="keyword token">def</SPAN> <SPAN class="token function">main</SPAN><SPAN class="punctuation token">(</SPAN><SPAN class="punctuation token">)</SPAN><SPAN class="punctuation token">:</SPAN> <SPAN class="keyword token">import</SPAN> arcpy <SPAN class="keyword token">import</SPAN> os <SPAN class="comment token"># change this folder to the folder with the renamed img files</SPAN> input_folder <SPAN class="operator token">=</SPAN> r<SPAN class="string token">'C:\GeoNet\Average8Days\output_files'</SPAN> <SPAN class="comment token"># define the output workspace and extension</SPAN> output_ws <SPAN class="operator token">=</SPAN> r<SPAN class="string token">'C:\GeoNet\Average8Days\gdb\myFileGeoDB.gdb'</SPAN> out_ext <SPAN class="operator token">=</SPAN> <SPAN class="string token">""</SPAN> <SPAN class="comment token"># create list of rasters in input workspace</SPAN> arcpy<SPAN class="punctuation token">.</SPAN>env<SPAN class="punctuation token">.</SPAN>workspace <SPAN class="operator token">=</SPAN> input_folder my_list <SPAN class="operator token">=</SPAN> arcpy<SPAN class="punctuation token">.</SPAN>ListRasters<SPAN class="punctuation token">(</SPAN><SPAN class="punctuation token">)</SPAN> <SPAN class="comment token"># checkout a Spatial Analyst license</SPAN> arcpy<SPAN class="punctuation token">.</SPAN>CheckExtension<SPAN class="punctuation token">(</SPAN><SPAN class="string token">"Spatial"</SPAN><SPAN class="punctuation token">)</SPAN> <SPAN class="comment token"># loop through chunks of 8 rasters</SPAN> <SPAN class="keyword token">for</SPAN> my_list_chunk <SPAN class="keyword token">in</SPAN> chunks<SPAN class="punctuation token">(</SPAN>my_list<SPAN class="punctuation token">,</SPAN> <SPAN class="number token">8</SPAN><SPAN class="punctuation token">)</SPAN><SPAN class="punctuation token">:</SPAN> <SPAN class="comment token"># define the output name</SPAN> first_name <SPAN class="operator token">=</SPAN> my_list_chunk<SPAN class="punctuation token">[</SPAN><SPAN class="number token">0</SPAN><SPAN class="punctuation token">]</SPAN> name<SPAN class="punctuation token">,</SPAN> ext <SPAN class="operator token">=</SPAN> os<SPAN class="punctuation token">.</SPAN>path<SPAN class="punctuation token">.</SPAN>splitext<SPAN class="punctuation token">(</SPAN>first_name<SPAN class="punctuation token">)</SPAN> first_date <SPAN class="operator token">=</SPAN> name<SPAN class="punctuation token">[</SPAN><SPAN class="operator token">-</SPAN><SPAN class="number token">8</SPAN><SPAN class="punctuation token">:</SPAN><SPAN class="punctuation token">]</SPAN> out_ras_name <SPAN class="operator token">=</SPAN> <SPAN class="string token">"mean"</SPAN> <SPAN class="operator token">+</SPAN> first_date <SPAN class="operator token">+</SPAN> out_ext <SPAN class="keyword token">print</SPAN> out_ras_name<SPAN class="punctuation token">,</SPAN> my_list_chunk <SPAN class="comment token"># now we have:</SPAN> <SPAN class="comment token"># - an output raster filename</SPAN> <SPAN class="comment token"># - the list of rasters for calculating the mean value</SPAN> <SPAN class="comment token"># perform the cellstatistics with MEAN</SPAN> cellstat <SPAN class="operator token">=</SPAN> arcpy<SPAN class="punctuation token">.</SPAN>sa<SPAN class="punctuation token">.</SPAN>CellStatistics<SPAN class="punctuation token">(</SPAN>my_list_chunk<SPAN class="punctuation token">,</SPAN> <SPAN class="string token">"MEAN"</SPAN><SPAN class="punctuation token">,</SPAN> <SPAN class="string token">"DATA"</SPAN><SPAN class="punctuation token">)</SPAN> <SPAN class="comment token"># define file path of output raster and save cell statistics result</SPAN> outname <SPAN class="operator token">=</SPAN> os<SPAN class="punctuation token">.</SPAN>path<SPAN class="punctuation token">.</SPAN>join<SPAN class="punctuation token">(</SPAN>output_ws<SPAN class="punctuation token">,</SPAN> out_ras_name<SPAN class="punctuation token">)</SPAN> cellstat<SPAN class="punctuation token">.</SPAN>save<SPAN class="punctuation token">(</SPAN>outname<SPAN class="punctuation token">)</SPAN> <SPAN class="keyword token">def</SPAN> <SPAN class="token function">chunks</SPAN><SPAN class="punctuation token">(</SPAN>l<SPAN class="punctuation token">,</SPAN> n<SPAN class="punctuation token">)</SPAN><SPAN class="punctuation token">:</SPAN> <SPAN class="string token">""" Yield successive n-sized chunks from l."""</SPAN> <SPAN class="keyword token">for</SPAN> i <SPAN class="keyword token">in</SPAN> xrange<SPAN class="punctuation token">(</SPAN><SPAN class="number token">0</SPAN><SPAN class="punctuation token">,</SPAN> len<SPAN class="punctuation token">(</SPAN>l<SPAN class="punctuation token">)</SPAN><SPAN class="punctuation token">,</SPAN> n<SPAN class="punctuation token">)</SPAN><SPAN class="punctuation token">:</SPAN> <SPAN class="keyword token">yield</SPAN> l<SPAN class="punctuation token">[</SPAN>i<SPAN class="punctuation token">:</SPAN>i<SPAN class="operator token">+</SPAN>n<SPAN class="punctuation token">]</SPAN> <SPAN class="keyword token">if</SPAN> __name__ <SPAN class="operator token">==</SPAN> <SPAN class="string token">'__main__'</SPAN><SPAN class="punctuation token">:</SPAN> main<SPAN class="punctuation token">(</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>
Hi Xander, works just like you said! However, as I really am a newbie to this scripting thing, I do not know where to insert the other code to run the actual cell statistics as I realise the above code just prints out the batches of 8 files. Could you please help that little bit further with where to insert the cell statistics code.
Thanks
It is good to hear that the files open correctly. In case the dates are consecutive and there will always be 8 elements for each calculation, I guess the chunk method mentioned in the thread referenced by Dan should work. I just ran this snippet:
<SPAN class="keyword token">def</SPAN> <SPAN class="token function">main</SPAN><SPAN class="punctuation token">(</SPAN><SPAN class="punctuation token">)</SPAN><SPAN class="punctuation token">:</SPAN> <SPAN class="keyword token">import</SPAN> os my_list <SPAN class="operator token">=</SPAN> <SPAN class="punctuation token">[</SPAN><SPAN class="string token">"calc200601{0}.img"</SPAN><SPAN class="punctuation token">.</SPAN>format<SPAN class="punctuation token">(</SPAN><SPAN class="string token">"%02d"</SPAN> <SPAN class="operator token">%</SPAN> <SPAN class="punctuation token">(</SPAN>a<SPAN class="punctuation token">,</SPAN><SPAN class="punctuation token">)</SPAN><SPAN class="punctuation token">)</SPAN> <SPAN class="keyword token">for</SPAN> a <SPAN class="keyword token">in</SPAN> range<SPAN class="punctuation token">(</SPAN><SPAN class="number token">1</SPAN><SPAN class="punctuation token">,</SPAN> <SPAN class="number token">31</SPAN><SPAN class="punctuation token">)</SPAN><SPAN class="punctuation token">]</SPAN> out_ext <SPAN class="operator token">=</SPAN> <SPAN class="string token">".tif"</SPAN> <SPAN class="keyword token">for</SPAN> my_list_chunk <SPAN class="keyword token">in</SPAN> chunks<SPAN class="punctuation token">(</SPAN>my_list<SPAN class="punctuation token">,</SPAN> <SPAN class="number token">8</SPAN><SPAN class="punctuation token">)</SPAN><SPAN class="punctuation token">:</SPAN> first_name <SPAN class="operator token">=</SPAN> my_list_chunk<SPAN class="punctuation token">[</SPAN><SPAN class="number token">0</SPAN><SPAN class="punctuation token">]</SPAN> name<SPAN class="punctuation token">,</SPAN> ext <SPAN class="operator token">=</SPAN> os<SPAN class="punctuation token">.</SPAN>path<SPAN class="punctuation token">.</SPAN>splitext<SPAN class="punctuation token">(</SPAN>first_name<SPAN class="punctuation token">)</SPAN> first_date <SPAN class="operator token">=</SPAN> name<SPAN class="punctuation token">[</SPAN><SPAN class="operator token">-</SPAN><SPAN class="number token">8</SPAN><SPAN class="punctuation token">:</SPAN><SPAN class="punctuation token">]</SPAN> out_ras_name <SPAN class="operator token">=</SPAN> <SPAN class="string token">"mean"</SPAN> <SPAN class="operator token">+</SPAN> first_date <SPAN class="operator token">+</SPAN> out_ext <SPAN class="keyword token">print</SPAN> out_ras_name<SPAN class="punctuation token">,</SPAN> my_list_chunk <SPAN class="keyword token">def</SPAN> <SPAN class="token function">chunks</SPAN><SPAN class="punctuation token">(</SPAN>l<SPAN class="punctuation token">,</SPAN> n<SPAN class="punctuation token">)</SPAN><SPAN class="punctuation token">:</SPAN> <SPAN class="string token">""" Yield successive n-sized chunks from l."""</SPAN> <SPAN class="keyword token">for</SPAN> i <SPAN class="keyword token">in</SPAN> xrange<SPAN class="punctuation token">(</SPAN><SPAN class="number token">0</SPAN><SPAN class="punctuation token">,</SPAN> len<SPAN class="punctuation token">(</SPAN>l<SPAN class="punctuation token">)</SPAN><SPAN class="punctuation token">,</SPAN> n<SPAN class="punctuation token">)</SPAN><SPAN class="punctuation token">:</SPAN> <SPAN class="keyword token">yield</SPAN> l<SPAN class="punctuation token">[</SPAN>i<SPAN class="punctuation token">:</SPAN>i<SPAN class="operator token">+</SPAN>n<SPAN class="punctuation token">]</SPAN> <SPAN class="keyword token">if</SPAN> __name__ <SPAN class="operator token">==</SPAN> <SPAN class="string token">'__main__'</SPAN><SPAN class="punctuation token">:</SPAN> main<SPAN class="punctuation token">(</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>
Which yielded:
mean20060101.tif ['calc20060101.img', 'calc20060102.img', 'calc20060103.img', 'calc20060104.img', 'calc20060105.img', 'calc20060106.img', 'calc20060107.img', 'calc20060108.img'] mean20060109.tif ['calc20060109.img', 'calc20060110.img', 'calc20060111.img', 'calc20060112.img', 'calc20060113.img', 'calc20060114.img', 'calc20060115.img', 'calc20060116.img'] mean20060117.tif ['calc20060117.img', 'calc20060118.img', 'calc20060119.img', 'calc20060120.img', 'calc20060121.img', 'calc20060122.img', 'calc20060123.img', 'calc20060124.img'] mean20060125.tif ['calc20060125.img', 'calc20060126.img', 'calc20060127.img', 'calc20060128.img', 'calc20060129.img', 'calc20060130.img']<SPAN class="line-numbers-rows"><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN></SPAN>
So, each chunk contains 8 rasters and the output raster takes the date of the first raster. In this case I added the .tif extension, but you could leave that extension off to create a Esri grid in a folder or point to an output fgdb.
To validate is this shell works, could you run the snippet below and see if this splits the list of raster up into the chunks you want?
<SPAN class="keyword token">def</SPAN> <SPAN class="token function">main</SPAN><SPAN class="punctuation token">(</SPAN><SPAN class="punctuation token">)</SPAN><SPAN class="punctuation token">:</SPAN> <SPAN class="keyword token">import</SPAN> arcpy <SPAN class="keyword token">import</SPAN> os <SPAN class="comment token"># change this folder to the folder with the renamed img files</SPAN> input_folder <SPAN class="operator token">=</SPAN> r<SPAN class="string token">'C:\GeoNet\Average8Days\output_files'</SPAN> out_ext <SPAN class="operator token">=</SPAN> <SPAN class="string token">".tif"</SPAN> arcpy<SPAN class="punctuation token">.</SPAN>env<SPAN class="punctuation token">.</SPAN>workspace <SPAN class="operator token">=</SPAN> input_folder my_list <SPAN class="operator token">=</SPAN> arcpy<SPAN class="punctuation token">.</SPAN>ListRasters<SPAN class="punctuation token">(</SPAN><SPAN class="punctuation token">)</SPAN> <SPAN class="keyword token">for</SPAN> my_list_chunk <SPAN class="keyword token">in</SPAN> chunks<SPAN class="punctuation token">(</SPAN>my_list<SPAN class="punctuation token">,</SPAN> <SPAN class="number token">8</SPAN><SPAN class="punctuation token">)</SPAN><SPAN class="punctuation token">:</SPAN> first_name <SPAN class="operator token">=</SPAN> my_list_chunk<SPAN class="punctuation token">[</SPAN><SPAN class="number token">0</SPAN><SPAN class="punctuation token">]</SPAN> name<SPAN class="punctuation token">,</SPAN> ext <SPAN class="operator token">=</SPAN> os<SPAN class="punctuation token">.</SPAN>path<SPAN class="punctuation token">.</SPAN>splitext<SPAN class="punctuation token">(</SPAN>first_name<SPAN class="punctuation token">)</SPAN> first_date <SPAN class="operator token">=</SPAN> name<SPAN class="punctuation token">[</SPAN><SPAN class="operator token">-</SPAN><SPAN class="number token">8</SPAN><SPAN class="punctuation token">:</SPAN><SPAN class="punctuation token">]</SPAN> out_ras_name <SPAN class="operator token">=</SPAN> <SPAN class="string token">"mean"</SPAN> <SPAN class="operator token">+</SPAN> first_date <SPAN class="operator token">+</SPAN> out_ext <SPAN class="keyword token">print</SPAN> out_ras_name<SPAN class="punctuation token">,</SPAN> my_list_chunk <SPAN class="keyword token">def</SPAN> <SPAN class="token function">chunks</SPAN><SPAN class="punctuation token">(</SPAN>l<SPAN class="punctuation token">,</SPAN> n<SPAN class="punctuation token">)</SPAN><SPAN class="punctuation token">:</SPAN> <SPAN class="string token">""" Yield successive n-sized chunks from l."""</SPAN> <SPAN class="keyword token">for</SPAN> i <SPAN class="keyword token">in</SPAN> xrange<SPAN class="punctuation token">(</SPAN><SPAN class="number token">0</SPAN><SPAN class="punctuation token">,</SPAN> len<SPAN class="punctuation token">(</SPAN>l<SPAN class="punctuation token">)</SPAN><SPAN class="punctuation token">,</SPAN> n<SPAN class="punctuation token">)</SPAN><SPAN class="punctuation token">:</SPAN> <SPAN class="keyword token">yield</SPAN> l<SPAN class="punctuation token">[</SPAN>i<SPAN class="punctuation token">:</SPAN>i<SPAN class="operator token">+</SPAN>n<SPAN class="punctuation token">]</SPAN> <SPAN class="keyword token">if</SPAN> __name__ <SPAN class="operator token">==</SPAN> <SPAN class="string token">'__main__'</SPAN><SPAN class="punctuation token">:</SPAN> main<SPAN class="punctuation token">(</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>
Yes they do open in ArcGIS properly. The associated files were created when I opened it in ArcGIS.
Can you check if the renamed files open properly in ArcGIS (just open one), since only the .img file was copied. It will probably recreate the aux and xml files, but just to be sure that the data is valid.
Thanks Xander. The renaming is done. I chose the copy part of the code. I'll wait on the averaging code. Here is a snapshot of the copied files.
The first step would be to apply some proper naming for the files. See below a snippet of code that could do this:
<SPAN class="keyword token">def</SPAN> <SPAN class="token function">main</SPAN><SPAN class="punctuation token">(</SPAN><SPAN class="punctuation token">)</SPAN><SPAN class="punctuation token">:</SPAN> <SPAN class="keyword token">from</SPAN> shutil <SPAN class="keyword token">import</SPAN> copyfile<SPAN class="punctuation token">,</SPAN> move <SPAN class="keyword token">import</SPAN> os <SPAN class="comment token"># list of extensions you want to copy or rename</SPAN> lst_ext <SPAN class="operator token">=</SPAN> <SPAN class="punctuation token">[</SPAN><SPAN class="string token">'.img'</SPAN><SPAN class="punctuation token">]</SPAN> input_folder <SPAN class="operator token">=</SPAN> r<SPAN class="string token">'C:\GeoNet\Average8Days\input_files'</SPAN> output_folder <SPAN class="operator token">=</SPAN> r<SPAN class="string token">'C:\GeoNet\Average8Days\output_files'</SPAN> <SPAN class="keyword token">for</SPAN> path<SPAN class="punctuation token">,</SPAN> dirs<SPAN class="punctuation token">,</SPAN> files <SPAN class="keyword token">in</SPAN> os<SPAN class="punctuation token">.</SPAN>walk<SPAN class="punctuation token">(</SPAN>input_folder<SPAN class="punctuation token">)</SPAN><SPAN class="punctuation token">:</SPAN> <SPAN class="keyword token">for</SPAN> filename <SPAN class="keyword token">in</SPAN> files<SPAN class="punctuation token">:</SPAN> name<SPAN class="punctuation token">,</SPAN> ext <SPAN class="operator token">=</SPAN> os<SPAN class="punctuation token">.</SPAN>path<SPAN class="punctuation token">.</SPAN>splitext<SPAN class="punctuation token">(</SPAN>filename<SPAN class="punctuation token">)</SPAN> <SPAN class="keyword token">if</SPAN> ext <SPAN class="keyword token">in</SPAN> lst_ext<SPAN class="punctuation token">:</SPAN> in_file <SPAN class="operator token">=</SPAN> os<SPAN class="punctuation token">.</SPAN>path<SPAN class="punctuation token">.</SPAN>join<SPAN class="punctuation token">(</SPAN>path<SPAN class="punctuation token">,</SPAN> filename<SPAN class="punctuation token">)</SPAN> <SPAN class="keyword token">print</SPAN> in_file out_name <SPAN class="operator token">=</SPAN> name<SPAN class="punctuation token">[</SPAN><SPAN class="punctuation token">:</SPAN><SPAN class="number token">12</SPAN><SPAN class="punctuation token">]</SPAN> <SPAN class="operator token">+</SPAN> ext out_file <SPAN class="operator token">=</SPAN> os<SPAN class="punctuation token">.</SPAN>path<SPAN class="punctuation token">.</SPAN>join<SPAN class="punctuation token">(</SPAN>output_folder<SPAN class="punctuation token">,</SPAN> out_name<SPAN class="punctuation token">)</SPAN> <SPAN class="keyword token">print</SPAN> out_file <SPAN class="comment token"># decide to copy</SPAN> copyfile<SPAN class="punctuation token">(</SPAN>in_file<SPAN class="punctuation token">,</SPAN> out_file<SPAN class="punctuation token">)</SPAN> <SPAN class="comment token"># or move:</SPAN> move<SPAN class="punctuation token">(</SPAN>in_file<SPAN class="punctuation token">,</SPAN> out_file<SPAN class="punctuation token">)</SPAN> <SPAN class="comment token"># or rename:</SPAN> os<SPAN class="punctuation token">.</SPAN>rename<SPAN class="punctuation token">(</SPAN>in_file<SPAN class="punctuation token">,</SPAN> out_file<SPAN class="punctuation token">)</SPAN> <SPAN class="keyword token">if</SPAN> __name__ <SPAN class="operator token">==</SPAN> <SPAN class="string token">'__main__'</SPAN><SPAN class="punctuation token">:</SPAN> main<SPAN class="punctuation token">(</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>
On line 6, you will have to include the extensions of the files you want to copy, move or rename.
On line 8 and 9 specify the paths of the input and output folder
Line 21 to 28, decide if you want to copy, which is safest, but you will need to additional disk space, or move or rename. If you have any dependencies on the current file name and locations I recommend you to copy the data.
Once you have the files in with usable names, you are ready for the next step.
there is a thread here which Xander Bakker led the charge on. https://community.esri.com/message/584750?commentID=584750#comment-584750
Then a parallel incarnation here https://community.esri.com/thread/173806 shoul
you require more statistical style calculations in either a block or running style calculation
Hi Xander, thanks for your quick response. That was an error in that sample list i sent. Thanks for picking that up. The 8 day calculation should only include 8 rasters. I have included another pix of the actual correct data. I am happy to shorten the names. Infact anything after the first 14 characters dont matter.
Hi Larry Biodun ,
First thing I notice is the "+" sign in the name of the img files. This may generate problems when you use them in any mathematical operation in ArcGIS / Python. So it might be necessary to start with renaming the rasters and shorten the names. This can be done with Python. Would this be an option?
Edit:
I also notice that half of the raster have a "T" after the "+" sign. And 2 rasters will reference the same date. Should the 8 day calculation include 16 rasters?
Signed in members can post, follow updates, and more. New here? Register a free account.
Find useful guides, FAQs, and documents to help you navigate and make the most of Esri Community.