Urban Flood Risk Model Outputs

Hello there,

I am currently trying to use the urban flood risk model to evaluate potential damage costs to built infrastructure and run-off retention. I ran the model using the sample dataset Invest provides alongside an arbitrary value of 17 mm for rainfall depth however I am having some trouble interpreting and locating the outputs.

I am trying to find the values to generate a runoff retention map (m^3) like the following:

.There seems to be a database file but there are only 5 values inside that correspond to the flood risk service outputs not the rest of the runoff retention values. Where are the other values found to generate this map? Are they post-processed or QGIS is able to read it?

On another note, I tried to open the runoff_retention_m3 raster in QGIS hoping to get a map with the classified runoff retention values.

I have included a zip file to the model’s outputs that I am getting. invest_test_outputs.zip (198.9 KB)

Any help on where the rest of those runoff retention values are or post-processing insights would be appreciated!



Hi @rxchelzhxng,
The output folder that you uploaded has everything I would expect (except for the log file, did you take that out?) The files Runoff_retention_finished.tif (unitless index), Runoff_retention_finished_m3.tif (cubic meters), and Q_mm_finished.tif (millimeters) correspond to the runoff retention map on the left of that image. The flood_risk_service_finished.shp file has the summaries per sub-watershed (the sample watersheds data watersheds.gpkg only has one watershed, so there is only one shape in the output). Please see the user’s guide for reference.

Let me know if that helps. Are you not able to open the files in QGIS?


I am able to open the files in QGIS however I am not seeing as many output runoff retention values as the image on the left. Although that could just be because of the sample data. To make sure we are interpreting the same image, I’ve included a screenshot of what I see in QGIS for the runoff_retention_finished_m3.tif.

As for the log file, I don’t have one that is generated when I run the model. Do you know what could be the issue to that?

Thanks once again!

I also did want to ask where the geographical region is for the sample dataset that is provided? If there is a geoJSON file with the coordinates of the boundary/land use land cover that would be great.

Hi @rxchelzhxng,
The sample data covers a different area than the maps in the original image you attached, so it’s going to look different. Do you mean that there’s less variation in the runoff retention values?

The sample dataset location is near San Mateo, California. You can check this by overlaying it with a global map in QGIS. If you want a vector polygon outlining the LULC map area, there are tools in your GIS software to do that. For example in QGIS, Processing > Layer tools > Extract layer extent.


Yes there is less variation but that could just be because of the sample dataset and rainfall depth I specified.

I did try to extract the layer extent and it worked, thank you.

As for another question I had, was the image on the left from my initial post processed in QGIS to only show a blue band? Or was there additional post-processing done in Python?



Hi @rxchelzhxng,
Yes, the sample dataset is relatively simple. There is only one soil group in the area and only a few different curve number values for the landcover codes in the area. So there are relatively few different values that will be in the result.

I’m not quite sure what you mean about the blue band, the model outputs only have one band to start with. It looks like the runoff_retention_m3 output. I don’t think any post processing was done aside from coloring it and adding the key.

Okay that clears things up, thank you!

1 Like

Hi there!

I am opening this thread back up since I have now ran the sample data with a larger rainfall depth of 33.8mm for the urban flood risk mitigation model. I am seeing some strange and high values for the results with the serv_blt.

In the documentation it says that this value is in m^3 but I am not sure how that’s gotten if

affected.build is in $ and the sum of R_m3i is in m^3. Could you clarify the units on this output as well as possibly why the resulting value is in the trillions?

Another question I had was how is the spatial resolution being considered in the calculation? I noticed that for R_m3i it is the pixel area * runoff retention per pixel * rainfall depth.

I have attached my output files (though for some reason the log file is still not being outputted). sample_outputs.zip (196.7 KB)

Thanks so much :slight_smile:

Hi @rxchelzhxng,
Sorry for the confusion! Service.built is in $ * m^3:

Affected.build ($) * R_m3(m^3)

This is a kind of strange unit because it is an indicator of the value, not an exact measure. You can think of it like a unitless index. See the discussion here: Service.built - UFRM model
The documentation is incorrect there where it says just m^3. I’ll correct that.

Regarding the spatial resolution, the two raster inputs are aligned and resampled if needed so that they both have the same pixel size as the original landcover raster. You can see these aligned rasters in the output temp_working_dir_not_for_humans folder. The “runoff retention per pixel” really means “pixel-wise runoff retention”: This is a unitless ratio for each pixel representing the fraction of water on that pixel that’s retained. So the spatial resolution does not affect the values of the output, just the precision:
pixel area (m^2) * runoff retention (unitless) * rainfall depth (mm) * 0.001 (mm/m) = retention volume (m^3)

I hope that helps!

Thanks for clarifying the units on Service.built! I did want to clarify that there was no correlation in the calculations between affected_build and runoff retention/volume? Ideally, we would want a correlation between the two to determine which buildings are exposed to flooding.

I am now wondering if the model can identify which buildings will be affected due to flooding since we know that not all buildings will be prone to flooding eg. those that are on high elevation areas/mountains. Currently, my calculation seems to assume that all buildings in this watershed will flood since I have only one ‘Type’ and ‘Damage’ in the Damage.csv table.

Are there any approaches that consider certain buildings/houses will flood versus others? Initial thoughts are adding a DEM (Digital elevation model) or a shapefile within the watershed for flood-prone areas?