I would need to calculate an average NDVI value for each buffer among everal hundred buffer-areas. The buffer areas are built around observation points. I have all buffer areas in one .shp file and NDVI values in a 32 Bit floating point .tif file. I have also the Band 3 and Band 4 values in separate .tif files (if that helps). I am using ArcMap 10.2 and have e.g. the Spatial Analyst Tools package. What should I do to get the average NDVI values for each buffer?
2 Answers
The easy way is to use Zonal statistics as a table to extract the mean value for all buffers, then join the table to your shapefile. However, there might be a problem if your buffers overlap : in this case, it gets more difficult because you need to iterate on each polygon (e.g. in model builder).
Alternatively, you can use focal statistics with a circular neighborhood of the size of your buffer to create a mean NDVI raster, then extract the value (extract multiple value to point) at the location of each observation point. This should give you the same result on average, with small differences due to the rasterization.
When you perform the analysis, make sure that your environment settings are set to the same pixel size as your image and that you snap your image (Zonal stat will actually rasterize your shapefile internally)
-
Thanks you very much for the advice! I used "Zonal statistics as Table" and I got reliable looking mean NDVI values for those buffers which did not overlap with any other buffer. But the mean NDVI values for overlapping buffers looked very unreliable and as you already predicted.– KirsiCommented Nov 21, 2014 at 7:55
-
Therefore I have a further question: To get mean NDVI values also for overlapping buffers I tried using ModelBuilder with "Iterate by Row" and "Zonal statistics as Table". However, in the result table I got only one row with mean NDVI. Is there a component which should be added to the ModelBuilder, a setting to make or what should I do to get mean NDVI values for each buffer (so for each row in the .shp file)?– KirsiCommented Nov 21, 2014 at 8:05
-
you need to use dynamic names as output, using inline variable, in order to build one table per row. For example, output%n%.shp (see help.arcgis.com/en/arcgisdesktop/10.0/help/index.html#//…)– radouxjuCommented Nov 21, 2014 at 8:28
Use a free software called 'Geospatial Modelling Environment' instead. It does this task very quickly without any errors. Just have to install it and run a tool called isectpolyrst. No additional steps needed. In my experience it has worked better than the Zonal statistics as a table tool of ArcGIS. It creates a new field for mean values directly in your polygon table.