<?xml version="1.0" encoding="UTF-8"?>
<rss xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:taxo="http://purl.org/rss/1.0/modules/taxonomy/" version="2.0">
  <channel>
    <title>topic Re: python map algebra for NDVI in Python Questions</title>
    <link>https://community.esri.com/t5/python-questions/python-map-algebra-for-ndvi/m-p/372908#M29485</link>
    <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;SPAN&gt;Ah yes that was the problem.&amp;nbsp; I added a command (as a list comprehension) to change the integer grids to float and *greatly* simplified the map algebra expression.&amp;nbsp; Everything works as it should.&amp;nbsp; Thanks Dan!&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;PRE class="lia-code-sample line-numbers language-none"&gt;
import arcgisscripting,os

gp = arcgisscripting.create()
gp.OverwriteOutput = 1
gp.CheckOutExtension("Spatial")
gp.Workspace = "C:\\Projects\\GIS data\\OBIA nearshore\\temporary\\"

DOW = '01008900'
lake = os.path.join("\\".join(gp.Workspace.split("\\")[:-1]),"buffers all",DOW + "_all_buff.img")
lake_buff = os.path.join("\\".join(gp.Workspace.split("\\")[:-1]),"buffers all",DOW + "_100m.shp")

try:
&amp;nbsp;&amp;nbsp;&amp;nbsp; print "\nExtracting area of " + DOW + " for processing"
&amp;nbsp;&amp;nbsp;&amp;nbsp; gp.CopyRaster_management (lake, "g1tmp.img")
&amp;nbsp;&amp;nbsp;&amp;nbsp; gp.RasterToOtherFormat_conversion("g1tmp.img", gp.Workspace, "GRID")
&amp;nbsp;&amp;nbsp;&amp;nbsp; gp.ExtractByMask_sa("g1tmp", lake_buff, "g2tmp")

&amp;nbsp;&amp;nbsp;&amp;nbsp; print "Converting to float"
&amp;nbsp;&amp;nbsp;&amp;nbsp; [gp.float_sa("g2tmp" + x, "g2tmp" + x + "_flt") for x in ("c1","c4")]

&amp;nbsp;&amp;nbsp;&amp;nbsp; print "Processing"
&amp;nbsp;&amp;nbsp;&amp;nbsp; express = "((g2tmpc4_flt - g2tmpc1_flt) / (g2tmpc4_flt + g2tmpc1_flt))"
&amp;nbsp;&amp;nbsp;&amp;nbsp; out = DOW + "_ndvi.img"
&amp;nbsp;&amp;nbsp;&amp;nbsp; gp.singleoutputmapalgebra_sa(express, out)

except:

&amp;nbsp;&amp;nbsp;&amp;nbsp; print gp.GetMessages()

print "\ndone"
&lt;/PRE&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;-Marcus&lt;/SPAN&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
    <pubDate>Sat, 11 Dec 2021 17:14:52 GMT</pubDate>
    <dc:creator>MarcusBeck</dc:creator>
    <dc:date>2021-12-11T17:14:52Z</dc:date>
    <item>
      <title>python map algebra for NDVI</title>
      <link>https://community.esri.com/t5/python-questions/python-map-algebra-for-ndvi/m-p/372906#M29483</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;SPAN&gt;Hi, &lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;I'm attempting to create NDVI layers from a four band raster GRID where layer 1 is red and layer 4 is infrared.&amp;nbsp; NDVI needs to be calculated as usual, i.e. (red-infrared)/(red+infrared).&amp;nbsp; Here's my code...&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;PRE class="plain" name="code"&gt;
import arcgisscripting,os

gp = arcgisscripting.create()
gp.OverwriteOutput = 1
gp.CheckOutExtension("Spatial")
gp.Workspace = "C:\\Projects\\GIS data\\OBIA nearshore\\temporary\\"

DOW = '01008900'
lake = os.path.join("\\".join(gp.Workspace.split("\\")[:-1]),"buffers all",DOW + "_all_buff.img")
lake_buff = os.path.join("\\".join(gp.Workspace.split("\\")[:-1]),"buffers all",DOW + "_100m.shp")

try:
&amp;nbsp;&amp;nbsp;&amp;nbsp; print "\nExtracting area of " + DOW + " for processing"
&amp;nbsp;&amp;nbsp;&amp;nbsp; gp.CopyRaster_management (lake, "g1tmp.img")
&amp;nbsp;&amp;nbsp;&amp;nbsp; gp.RasterToOtherFormat_conversion("g1tmp.img", gp.Workspace, "GRID")
&amp;nbsp;&amp;nbsp;&amp;nbsp; gp.ExtractByMask_sa("g1tmp", lake_buff, "g2tmp")

&amp;nbsp;&amp;nbsp;&amp;nbsp; print "Processing"
&amp;nbsp;&amp;nbsp;&amp;nbsp; express = str("(" + gp.Workspace + "\\g2tmpc4 - " + gp.Workspace + "\\g2tmpc1) / ( " +
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; gp.Workspace + "\\g2tmpc4 + " + gp.Workspace + "\\g2tmpc1)")

&amp;nbsp;&amp;nbsp;&amp;nbsp; out = str(DOW + "_ndvi.img")

&amp;nbsp;&amp;nbsp;&amp;nbsp; gp.SingleOutputMapAlgebra_sa(express, out)

except:

&amp;nbsp;&amp;nbsp;&amp;nbsp; print gp.GetMessages()

print "\ndone"

&lt;/PRE&gt;&lt;DIV style="display:none;"&gt; &lt;/DIV&gt;&lt;SPAN&gt;&amp;nbsp; &lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;The call to 'express' returns the following text string, which I thought was correct for map algebra formatting: &lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;'(C:\\Projects\\GIS data\\OBIA nearshore\\temporary\\g2tmpc4 - C:\\Projects\\GIS data\\OBIA nearshore\\temporary\\g2tmpc1) / (C:\\Projects\\GIS data\\OBIA nearshore\\temporary\\g2tmpc4 + C:\\Projects\\GIS data\\OBIA nearshore\\temporary\\g2tmpc1)'&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;The code runs without errors but I am left with a binary raster layer where the cells take only values zero or negative one.&amp;nbsp; Any idea what I'm doing wrong?&amp;nbsp; I'm using Python 2.5.2 with ArcMap9.3.&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;Thanks, &lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;Marcus&lt;/SPAN&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Sun, 10 Jul 2011 21:24:09 GMT</pubDate>
      <guid>https://community.esri.com/t5/python-questions/python-map-algebra-for-ndvi/m-p/372906#M29483</guid>
      <dc:creator>MarcusBeck</dc:creator>
      <dc:date>2011-07-10T21:24:09Z</dc:date>
    </item>
    <item>
      <title>Re: python map algebra for NDVI</title>
      <link>https://community.esri.com/t5/python-questions/python-map-algebra-for-ndvi/m-p/372907#M29484</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;SPAN&gt;a pretty ugly expression...but I suspect that you need to "float" one of the terms since integer division is occurring and everything is getting truncated to 0 or 1.&amp;nbsp; ie in Python&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;gt;&amp;gt;&amp;gt; print 1/3&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;0&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;gt;&amp;gt;&amp;gt; print 1.0/3&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;0.333333333333&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;gt;&amp;gt;&amp;gt;&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;surprised by the first result?&lt;/SPAN&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Mon, 11 Jul 2011 03:33:26 GMT</pubDate>
      <guid>https://community.esri.com/t5/python-questions/python-map-algebra-for-ndvi/m-p/372907#M29484</guid>
      <dc:creator>DanPatterson_Retired</dc:creator>
      <dc:date>2011-07-11T03:33:26Z</dc:date>
    </item>
    <item>
      <title>Re: python map algebra for NDVI</title>
      <link>https://community.esri.com/t5/python-questions/python-map-algebra-for-ndvi/m-p/372908#M29485</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;SPAN&gt;Ah yes that was the problem.&amp;nbsp; I added a command (as a list comprehension) to change the integer grids to float and *greatly* simplified the map algebra expression.&amp;nbsp; Everything works as it should.&amp;nbsp; Thanks Dan!&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;PRE class="lia-code-sample line-numbers language-none"&gt;
import arcgisscripting,os

gp = arcgisscripting.create()
gp.OverwriteOutput = 1
gp.CheckOutExtension("Spatial")
gp.Workspace = "C:\\Projects\\GIS data\\OBIA nearshore\\temporary\\"

DOW = '01008900'
lake = os.path.join("\\".join(gp.Workspace.split("\\")[:-1]),"buffers all",DOW + "_all_buff.img")
lake_buff = os.path.join("\\".join(gp.Workspace.split("\\")[:-1]),"buffers all",DOW + "_100m.shp")

try:
&amp;nbsp;&amp;nbsp;&amp;nbsp; print "\nExtracting area of " + DOW + " for processing"
&amp;nbsp;&amp;nbsp;&amp;nbsp; gp.CopyRaster_management (lake, "g1tmp.img")
&amp;nbsp;&amp;nbsp;&amp;nbsp; gp.RasterToOtherFormat_conversion("g1tmp.img", gp.Workspace, "GRID")
&amp;nbsp;&amp;nbsp;&amp;nbsp; gp.ExtractByMask_sa("g1tmp", lake_buff, "g2tmp")

&amp;nbsp;&amp;nbsp;&amp;nbsp; print "Converting to float"
&amp;nbsp;&amp;nbsp;&amp;nbsp; [gp.float_sa("g2tmp" + x, "g2tmp" + x + "_flt") for x in ("c1","c4")]

&amp;nbsp;&amp;nbsp;&amp;nbsp; print "Processing"
&amp;nbsp;&amp;nbsp;&amp;nbsp; express = "((g2tmpc4_flt - g2tmpc1_flt) / (g2tmpc4_flt + g2tmpc1_flt))"
&amp;nbsp;&amp;nbsp;&amp;nbsp; out = DOW + "_ndvi.img"
&amp;nbsp;&amp;nbsp;&amp;nbsp; gp.singleoutputmapalgebra_sa(express, out)

except:

&amp;nbsp;&amp;nbsp;&amp;nbsp; print gp.GetMessages()

print "\ndone"
&lt;/PRE&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;-Marcus&lt;/SPAN&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Sat, 11 Dec 2021 17:14:52 GMT</pubDate>
      <guid>https://community.esri.com/t5/python-questions/python-map-algebra-for-ndvi/m-p/372908#M29485</guid>
      <dc:creator>MarcusBeck</dc:creator>
      <dc:date>2021-12-11T17:14:52Z</dc:date>
    </item>
    <item>
      <title>Re: python map algebra for NDVI</title>
      <link>https://community.esri.com/t5/python-questions/python-map-algebra-for-ndvi/m-p/372909#M29486</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;SPAN&gt;How would this work if you had a multi-band tiff?&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;Thanks,&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;Wade&lt;/SPAN&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Fri, 12 Aug 2011 14:15:58 GMT</pubDate>
      <guid>https://community.esri.com/t5/python-questions/python-map-algebra-for-ndvi/m-p/372909#M29486</guid>
      <dc:creator>WadeGivens</dc:creator>
      <dc:date>2011-08-12T14:15:58Z</dc:date>
    </item>
  </channel>
</rss>

