# Determining NDVI of polygon using ArcGIS Desktop?

I have calculated the NDVI of a city. Now I want to know how "green" every street segment in that city is. I therefore buffered 7.5m on every street segment. I then used the Zonal Statistics as a Table-tool, in order to get the statistical values for every buffered street segment. My workflow is therefore:

1. Calculate the NDVI and save it as .tif-file.
2. Buffer the street segments using a 7.5m buffer.
3. Use Zonal Statistics as a table to get the statistics of every polygon (the input polygons are the buffered street segments).

However when I look at my resulting statistical table, I see that I cannot use it. I thought about using the mean (with the idea of the "mean greenness of a street") but sadly I have there values out of the [-1,1] range of the NDVI (1,05 and 534,97 to be exact). The thing is also that I cannot explain that value 534,97, since in that polygon is not that much green.

Is there another way/approach to determine how "green" a city is?

• what is the spatial resolution of your NDVI raster ? Have you checked that your input NDVI values were between -1 and 1 after computing them ? Are there any no data values ? – radouxju Apr 15 '19 at 14:13
• NDVI is between [-1,1]. No Data values are not existing. – Cliff Apr 15 '19 at 14:51
• What ArcGIS version are you using ? In an old ArcGIS version (I don't remember which one), there was a bug with zonal stat as a table where the columns were shifted, so what you see as "mean" is maybe the sum. Try and install the latest patches of your version. – radouxju Apr 16 '19 at 6:55

There is a possibility that the raster's float type or negative values might be causing the problem, although with my testing I was not able to verify this. You can try, however, converting the ndvi tiff image to unsigned integer to see if it will work.

In addition, and this is most probable to work, you can:

• Clip (data management) the ndvi image with the roads buffer shape and then convert the clipped image into vector (use raster to point). This will create a point layer where each point will have an ndvi value (most likely, the field will be named "grid_code").
• Then, use spatial join with a one-to-many relationship, between the buffer shape and the point layer, so that the each feature of the buffer shape gets all the ndvi values that are underneath it as attributes.
• Finally, use Dissolve for the output layer of the spatial join, using TARGET_FID as dissolve field and in Statistics Field(s) put the "grid_code" to calculate the statistic type MEAN

This is the equivalent of using Zonal Statistics for vector layers.If you choose to do this, you are again advised to convert your ndvi raster to integer first, to reduce the conversion time from raster to point.

As an option, you can determine NDVI data in visual format or in a table format and export it to a 3rd party app if you wish so with landviewer. In order to export the data into a table format you would need to locate an area of your interest with AOI tool and click on the "time series analysis"icon on the left. An example of such area you can check out here.

This may be related to a bug in Zonal Statistics, as suggested in comment by user @radouxju (possibly in ArcGIS 10.3 per https://support.esri.com/en/bugs/nimbus/QlVHLTAwMDA4NDg4Mw== and Major bug in ArcGIS Zonal statistics?):

"What ArcGIS version are you using ? In an old ArcGIS version (I don't remember which one), there was a bug with zonal stat as a table where the columns were shifted, so what you see as "mean" is maybe the sum. Try and install the latest patches of your version."

I managed to get rid of the high mean values, by updating to the latest ArcGIS version.

I went to my ArcGIS dashboard and downloaded the latest installer of ArcGIS (10.6.1). When the download was done, I double-clicked on the .exe-file. Then the files were extracted and the final installer started. I just let it alone until it was done and the result was an updated ArcGIS 10.6.1. I then used my Python script and re-ran it and the table did not show anymore mean values which were outside of the borders.

• Seriously? Well I went to my ArcGIS dashboard and downloaded the latest installer of ArcGIS (10.6.1). When the download was done, I double-clicked on the .exe-file. Then the files were extracted and the final installer started. I just let it alone until it was done and the result was an updated ArcGIS 10.6.1. I then used my Python script and re-ran it and the table did not show anymore mean values which were outside of the borders. – Cliff Apr 18 '19 at 11:25
• Please edit the Answer to contain the information you added in the comment. Answers which are exceptionally short are automatically flagged as "low-quality", and high-reputation users are offered the opportunity to delete them. – Vince May 6 '19 at 16:57