Seasonal QF Sum Greater Than Annual QF in InVEST Output

I am working with QuickFlow (QF) outputs from the InVEST Seasonal Water Yield model.
I have 12 monthly QF raster outputs as well as an annual QF raster produced by the model.

My goal is to create seasonal QF rasters for:

  • Pre-monsoon (Jan–May)

  • Monsoon (Jun–Sep)

  • Post-monsoon (Oct–Dec)

I calculated each seasonal raster by summing the relevant monthly rasters in ArcGIS Raster Calculator.
However, when I sum the three seasonal rasters, the result is larger than the annual QF raster from InVEST — in some cases, the difference is significant.


What I have checked so far:

  1. I verified that the monthly rasters and the annual raster have the same spatial extent, projection, and resolution.

  2. I handled NoData values using Con(IsNull(...), 0, ...) to avoid empty cells being counted.

  3. I compared pixel-by-pixel sums for sample locations and found that the sum of months > annual QF value at those pixels.


Questions for the InVEST team/community:

  • Does the annual QF output from InVEST use a different calculation method than simply summing monthly rasters (e.g., adjustments for infiltration, storage, or rounding)?

  • Could this difference be due to unit conversions, masking, or hydrological balance constraints in the model?

  • What is the recommended approach to calculate season-wise QF values that match the model’s annual output?

@abir ,

The model calculates the annual QF raster by summing the 12 monthly QF rasters pixelwise. I confirm that on the SWY sample data, the sum of the 12 monthly rasters in QGIS is equal to the annual raster. You could try this on the sample data to check your methods.

If you are familiar with Python, you can check out the code here: invest/src/natcap/invest/seasonal_water_yield/seasonal_water_yield.py at b23a2d27f92f77b5be8112d7fd1f548f2e77d4e9 · natcap/invest · GitHub

Hi @abir ,

It’s possible that differences are due to rounding errors, such as might occur during unit conversions. Which version of InVEST are you using?

-Jesse