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?

  • Welcome to gis.stackexchange! Please note that a good question on this site is expected to show some degree of research on your part, i.e. what you have tried and - if applicable - code so far. For more info, you can check our faq.
    – underdark
    Dec 14 '16 at 20:33

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.
    – Kirsi
    Nov 21 '14 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)?
    – Kirsi
    Nov 21 '14 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#//…)
    – radouxju
    Nov 21 '14 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.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.