Hi All,
I am trying to do some calculation on Raster using raster calculator in python. I have several restaer and I implemented the calculation using loop. I was working well when I was using ArcMap 9, and now I am using version 10.7. but it gives some errors. The code is below:
<SPAN class="keyword token">import</SPAN> sys<SPAN class="punctuation token">,</SPAN> string<SPAN class="punctuation token">,</SPAN> os<SPAN class="punctuation token">,</SPAN> arcgisscripting<SPAN class="punctuation token">,</SPAN> math<SPAN class="punctuation token">,</SPAN> arcpy
<SPAN class="keyword token">from</SPAN> arcpy <SPAN class="keyword token">import</SPAN> env
<SPAN class="keyword token">from</SPAN> arcpy<SPAN class="punctuation token">.</SPAN>sa <SPAN class="keyword token">import</SPAN> <SPAN class="operator token">*</SPAN>
gp <SPAN class="operator token">=</SPAN> arcgisscripting<SPAN class="punctuation token">.</SPAN>create<SPAN class="punctuation token">(</SPAN><SPAN class="punctuation token">)</SPAN>
gp<SPAN class="punctuation token">.</SPAN>OverWriteOutput <SPAN class="operator token">=</SPAN> <SPAN class="number token">1</SPAN>
gp<SPAN class="punctuation token">.</SPAN>CheckOutExtension<SPAN class="punctuation token">(</SPAN><SPAN class="string token">"spatial"</SPAN><SPAN class="punctuation token">)</SPAN>
arcpy<SPAN class="punctuation token">.</SPAN>CheckOutExtension<SPAN class="punctuation token">(</SPAN><SPAN class="string token">"spatial"</SPAN><SPAN class="punctuation token">)</SPAN>
gp<SPAN class="punctuation token">.</SPAN>AddToolbox<SPAN class="punctuation token">(</SPAN><SPAN class="string token">"C:/Program Files (x86)/ArcGIS/Desktop10.7/ArcToolbox/Toolboxes/Spatial Analyst Tools.tbx"</SPAN><SPAN class="punctuation token">)</SPAN>
gp<SPAN class="punctuation token">.</SPAN>workspace <SPAN class="operator token">=</SPAN> <SPAN class="string token">"E:/JASTTpaperWork/Data/Processed/TIFF/"</SPAN>
out_workspace <SPAN class="operator token">=</SPAN> <SPAN class="string token">"E:/JASTTpaperWork/Data/Processed/TIFF/ArcGIS02"</SPAN>
InMask <SPAN class="operator token">=</SPAN> <SPAN class="string token">"E:/JASTTpaperWork/Data/Shapefile/KRG.shp"</SPAN>
<SPAN class="comment token"># Get a list of grids in the workspace.</SPAN>
rasters <SPAN class="operator token">=</SPAN> gp<SPAN class="punctuation token">.</SPAN>ListRasters<SPAN class="punctuation token">(</SPAN><SPAN class="string token">""</SPAN><SPAN class="punctuation token">,</SPAN><SPAN class="string token">"TIF"</SPAN><SPAN class="punctuation token">)</SPAN>
raster <SPAN class="operator token">=</SPAN> rasters<SPAN class="punctuation token">.</SPAN>next<SPAN class="punctuation token">(</SPAN><SPAN class="punctuation token">)</SPAN>
<SPAN class="keyword token">while</SPAN> raster<SPAN class="punctuation token">:</SPAN>
<SPAN class="keyword token">print</SPAN> raster
raster <SPAN class="operator token">=</SPAN> rasters<SPAN class="punctuation token">.</SPAN>next<SPAN class="punctuation token">(</SPAN><SPAN class="punctuation token">)</SPAN>
rasters<SPAN class="punctuation token">.</SPAN>reset<SPAN class="punctuation token">(</SPAN><SPAN class="punctuation token">)</SPAN>
raster <SPAN class="operator token">=</SPAN> rasters<SPAN class="punctuation token">.</SPAN>next<SPAN class="punctuation token">(</SPAN><SPAN class="punctuation token">)</SPAN>
<SPAN class="keyword token">print</SPAN> gp<SPAN class="punctuation token">.</SPAN>GetMessages<SPAN class="punctuation token">(</SPAN><SPAN class="punctuation token">)</SPAN>
<SPAN class="keyword token">while</SPAN> raster<SPAN class="punctuation token">:</SPAN>
<SPAN class="comment token"># Set local variables</SPAN>
InRaster <SPAN class="operator token">=</SPAN> raster
<SPAN class="comment token"># Set the outputname for each output to be the same as the input.</SPAN>
OutRaster <SPAN class="operator token">=</SPAN> out_workspace <SPAN class="operator token">+</SPAN> <SPAN class="string token">"/"</SPAN> <SPAN class="operator token">+</SPAN> raster
InExpression <SPAN class="operator token">=</SPAN><SPAN class="string token">"Con("</SPAN><SPAN class="operator token">+</SPAN> InRaster <SPAN class="operator token">+</SPAN><SPAN class="string token">" <= - 1,0,"</SPAN><SPAN class="operator token">+</SPAN> InRaster <SPAN class="operator token">+</SPAN><SPAN class="string token">")"</SPAN>
arcpy<SPAN class="punctuation token">.</SPAN>gp<SPAN class="punctuation token">.</SPAN>RasterCalculator_sa<SPAN class="punctuation token">(</SPAN>InExpression<SPAN class="punctuation token">,</SPAN> OutRaster<SPAN class="punctuation token">)</SPAN>
gp<SPAN class="punctuation token">.</SPAN>CheckOutExtension<SPAN class="punctuation token">(</SPAN><SPAN class="string token">"Spatial"</SPAN><SPAN class="punctuation token">)</SPAN>
<SPAN class="keyword token">print</SPAN> raster
<SPAN class="comment token">#print InExpression</SPAN>
raster <SPAN class="operator token">=</SPAN> rasters<SPAN class="punctuation token">.</SPAN>next<SPAN class="punctuation token">(</SPAN><SPAN class="punctuation token">)</SPAN>
<SPAN class="comment token"># If an error occurred while running a tool, then print the messages.</SPAN>
<SPAN class="keyword token">print</SPAN> gp<SPAN class="punctuation token">.</SPAN>GetMessages<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>Any help would be highly appreciated.