In ArcMap, Zonal Statistics uses the centre points of the Rasters pixels to link to the under or overlying polygons.

Some of the polygons that I am using are small enough that they do not overlap the centroid point of the overlying raster pixel and subsequently do not retrieve any data.

enter image description here

Rough picture illustrates 4 raster cells and 4 polygons that would fail to retrieve zonal statistics data because they do not overlap the centroids of the pixels.

Model Based Approach?

At this point I am considering developing a model that defers to marginally displaced versions of the raster if Zonal Statistics initially fails (Displacing rasters so that the centroid of the pixel is artificially moved from the centre to the midpoint between the centre point and the top right corner (Doing this 4 times for each quadrant of the pixel)).

This model would conduct the initial Zonal Statistics on the polygon feature set before extracting all those polygons which failed to collect any data from the Rasters (because they were too small and didn't overlap a pixel centroid). It would then attempt zonal statistics with 4 blank rasters, all of which have been offset marginally so that the chance of a polygon overlapping is multiplied by 4. Once it has been determined which offset works for each polygon I could then offset the polygons relevant to the right offset or create offset versions of each raster layer that I am doing zonal statistics for.

Whilst I think this model would ultimately work it would be overly complex and convoluted to setup. Is there an alternative way that this issue can be gotten around?

  • 1
    How about converting the raster to polygons and then run for example Intersect and Summary Statistics? – BERA Jan 9 '17 at 12:50
  • I think converting a raster to polygons dissolves the internal pixel boundaries. In this case i would need thousands of polygons, each with the corresponding pixel value as an attribute. – Jamie Jan 9 '17 at 12:54
  • 1
    I see no problem with thousands of polygons, should work. Another way would be to resample the raster to smaller pixels – BERA Jan 9 '17 at 12:55
  • You're right! I hadn't realise that the process had dissolved the raster in to separate polygons based on value. Edit: Just found an issue with this - raster to polygon demands an integer type raster unfortunately – Jamie Jan 9 '17 at 12:59
  • Convert to integer with Reclassify (Spatial Analyst license. You can also reclassify with QGIS) – BERA Jan 9 '17 at 14:13

You could convert the raster to point and perform a Near operation


Buffer your null polygons by half of the cell size of your raster and then perform the zonal statistics, which I think would be the best approach

| improve this answer | |
  • 1
    Yep think the buffering idea makes sense. Essentially same level of error as the model I described and many times easier. Thanks very much. – Jamie Jan 9 '17 at 14:13

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.