{ "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "# Fluvial flood inundation mapping quick start" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### [![Open In Colab](https://colab.research.google.com/assets/colab-badge.svg)](https://colab.research.google.com/github/passah2o/pygeoflood/blob/master/doc/examples/fim_workflow_combined.ipynb)\n", "\n", "On Google Colab, run the following command to install pygeoflood:\n", "\n", "```bash\n", "%pip install git+https://github.com/passah2o/pygeoflood\n", "```\n" ] }, { "cell_type": "markdown", "metadata": { "id": "Bs031yHfIwQK" }, "source": [ "### Import libraries\n" ] }, { "cell_type": "code", "execution_count": 1, "metadata": {}, "outputs": [], "source": [ "from pathlib import Path\n", "from pygeoflood import PyGeoFlood" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Instantiate **pygeoflood** model class\n" ] }, { "cell_type": "code", "execution_count": 2, "metadata": {}, "outputs": [], "source": [ "pgf = PyGeoFlood(dem_path=\"data/OC1mTest.tif\")" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Set paths to input datasets\n" ] }, { "cell_type": "code", "execution_count": 3, "metadata": {}, "outputs": [], "source": [ "pgf.flowline_path = \"data/Flowline.shp\"\n", "pgf.catchment_path = \"data/Catchment.shp\"\n", "\n", "# # we are not using these datasets for this example\n", "# pgf.streamflow_forecast_path = \"data/prod_nwm.t00z.analysis_assim.channel_rt.tm00.conus.nc\"\n", "# pgf.custom_flowline_path = Path(data_dir, \"NHDPlus_H_1209_HU4_GDB.gdb\")" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Download example input datasets if necessary\n" ] }, { "cell_type": "code", "execution_count": 4, "metadata": {}, "outputs": [], "source": [ "# make data directory if it doesn't exist\n", "if not Path(\"data\").is_dir():\n", " Path(\"data\").mkdir()\n", "# download input datasets if they doesn't exist\n", "# DEM from USGS 3DEP\n", "if not pgf.dem_path.is_file():\n", " !curl https://utexas.box.com/shared/static/id0in7w8yn38o59sexa50aqunsr7mzk0.tif -Lso data/OC1mTest.tif\n", "# flowlines and catchments from NFIE (NHD MR) dataset\n", "# https://www.arcgis.com/home/webmap/viewer.html?webmap=9766a82973b34f18b43dafa20c5ef535\n", "if not pgf.flowline_path.is_file():\n", " !curl -sL https://utexas.box.com/shared/static/s1vlnymonbidnhul52oja7s83ky1212j.tgz | tar -xz -C data\n", "if not pgf.catchment_path.is_file():\n", " !curl -sL https://utexas.box.com/shared/static/jzawwvmb2tjl4yqtnitgvfjcc4ho4tg5.tgz | tar -xz -C data" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Run full fluvial flood inundation mapping workflow\n" ] }, { "cell_type": "code", "execution_count": 5, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Running apply_nonlinear_filter with parameters:\n", " custom_dem = None\n", " custom_path = None\n", " method = PeronaMalik2\n", " smoothing_quantile = 0.9\n", " time_increment = 0.1\n", " n_iter = 50\n", " sigma_squared = 0.05\n", "Computing slope of raw DTM\n", "DEM slope array shape: (3378, 4750)\n", "Computing lambda = q-q-based nonlinear filtering threshold\n", "DEM smoothing Quantile: 0.9\n", "Edge Threshold Value: 0.34356024861335754\n", "Filtered DEM written to data/OC1mTest_filtered.tif\n", "apply_nonlinear_filter completed in 10.7802 seconds\n", "\n", "Running calculate_slope with parameters:\n", " custom_filtered_dem = None\n", " custom_path = None\n", " slope statistics\n", " min angle: 0.0\n", " max angle: 54.863846043721324\n", " mean slope: 0.13960592\n", " stdev slope: 0.15432632\n", "Slope raster written to data/OC1mTest_slope.tif\n", "calculate_slope completed in 1.2883 seconds\n", "\n", "Running calculate_curvature with parameters:\n", " custom_filtered_dem = None\n", " custom_path = None\n", " method = geometric\n", " using geometric curvature\n", " curvature statistics\n", " non-nan curvature cell number: 16045500\n", " non-nan finite curvature cell number: mean: -0.00031314598\n", " standard deviation: 0.112147875\n", "Curvature raster written to data/OC1mTest_curvature.tif\n", "calculate_curvature completed in 1.3863 seconds\n", "\n", "Running fill_depressions with parameters:\n", " custom_filtered_dem = None\n", " custom_path = None\n", "./whitebox_tools --run=\"FillDepressions\" --dem='/Users/markwang/repos/pygeoflood/examples/data/OC1mTest_filtered.tif' --output='/Users/markwang/repos/pygeoflood/examples/data/OC1mTest_filled.tif' --fix_flats -v --compress_rasters=True\n", "\n", "******************************\n", "* Welcome to FillDepressions *\n", "* Powered by WhiteboxTools *\n", "* www.whiteboxgeo.com *\n", "******************************\n", "Reading data...\n", "Fixing flow on flats...\n", "Flats increment value: 0.000002\n", "Saving data...\n", "Output file written\n", "Elapsed Time (excluding I/O): 0.190s\n", "Filled DEM written to data/OC1mTest_filled.tif\n", "fill_depressions completed in 8.0148 seconds\n", "\n", "Running calculate_mfd_flow_accumulation with parameters:\n", " custom_filled_dem = None\n", " custom_path = None\n", "./whitebox_tools --run=\"QuinnFlowAccumulation\" --dem='/Users/markwang/repos/pygeoflood/examples/data/OC1mTest_filled.tif' --output='/Users/markwang/repos/pygeoflood/examples/data/OC1mTest_mfd_fac.tif' --out_type=cells --exponent=1.0 -v --compress_rasters=True\n", "\n", "************************************\n", "* Welcome to QuinnFlowAccumulation *\n", "* Powered by WhiteboxTools *\n", "* www.whiteboxgeo.com *\n", "************************************\n", "Saving data...\n", "Output file written\n", "\n", "Elapsed Time (Including I/O): 4.702s\n", "MFD flow accumulation raster written to data/OC1mTest_mfd_fac.tif\n", "calculate_mfd_flow_accumulation completed in 4.7655 seconds\n", "\n", "Running calculate_d8_flow_direction with parameters:\n", " custom_filled_dem = None\n", " custom_filtered_dem = None\n", " custom_path = None\n", "./whitebox_tools --run=\"D8Pointer\" --dem='/Users/markwang/repos/pygeoflood/examples/data/OC1mTest_filled.tif' --output='/Users/markwang/repos/pygeoflood/examples/data/OC1mTest_d8_fdr.tif' -v --compress_rasters=True\n", "\n", "****************************\n", "* Welcome to D8Pointer *\n", "* Powered by WhiteboxTools *\n", "* www.whiteboxgeo.com *\n", "****************************\n", "Reading data...\n", "Saving data...\n", "Output file written\n", "Elapsed Time (excluding I/O): 0.251s\n", "D8 flow direction raster written to data/OC1mTest_d8_fdr.tif\n", "calculate_d8_flow_direction completed in 1.9938 seconds\n", "\n", "Running find_outlets with parameters:\n", " custom_d8_fdr = None\n", " custom_path = None\n", "Outlets raster written to data/OC1mTest_outlets.tif\n", "find_outlets completed in 0.2224 seconds\n", "\n", "Running delineate_basins with parameters:\n", " custom_d8_fdr = None\n", " custom_path = None\n", "./whitebox_tools --run=\"Basins\" --d8_pntr='/Users/markwang/repos/pygeoflood/examples/data/OC1mTest_d8_fdr.tif' --output='/Users/markwang/repos/pygeoflood/examples/data/OC1mTest_basins.tif' -v --compress_rasters=True\n", "\n", "****************************\n", "* Welcome to Basins *\n", "* Powered by WhiteboxTools *\n", "* www.whiteboxgeo.com *\n", "****************************\n", "Reading data...\n", "Saving data...\n", "Output file written\n", "Elapsed Time (excluding I/O): 0.465s\n", "Basins raster written to data/OC1mTest_basins.tif\n", "delineate_basins completed in 1.0381 seconds\n", "\n", "Running define_skeleton with parameters:\n", " custom_curvature = None\n", " custom_mfd_fac = None\n", " custom_path = None\n", " fac_threshold = 3000\n", " write_flow_skeleton = False\n", " write_curvature_skeleton = False\n", "Curvature mean: -0.00031413726\n", "Curvature standard deviation: 0.11232527\n", "Curvature Projection: EPSG:6343\n", "Mean upstream flow: 2617.3564\n", "Combined skeleton written to data/OC1mTest_combined_skeleton.tif\n", "define_skeleton completed in 0.7782 seconds\n", "\n", "Running find_endpoints with parameters:\n", " custom_flowline = None\n", " custom_path = None\n", "Endpoints csv written to data/OC1mTest_endpoints.csv\n", "find_endpoints completed in 0.0330 seconds\n", "\n", "Running calculate_binary_hand with parameters:\n", " custom_dem = None\n", " custom_flowline = None\n", " custom_path = None\n", "Binary HAND raster written to data/OC1mTest_binary_hand.tif\n", "calculate_binary_hand completed in 4.9416 seconds\n", "\n", "Running extract_channel_network with parameters:\n", " custom_flowline = None\n", " custom_curvature = None\n", " custom_mfd_fac = None\n", " custom_endpoints = None\n", " custom_binary_hand = None\n", " custom_path = None\n", " retrace_flowline = True\n", " vector_extension = shp\n", " write_cost_function = False\n", " use_custom_flowline = False\n", " no_flowline = False\n", " custom_weight_curvature = None\n", " custom_weight_mfd_fac = None\n", " custom_weight_binary_hand = None\n", " custom_weight_custom_flowline = None\n", "Retracing flowline...\n", "Cost function weights:\n", "curvature 0.2520 (mean flow accumulation)\n", "mfd_fac 1.0000\n", "binary_hand 0.7500\n", "custom_flowline 0.0000\n", "0.25195235 1 0.75 0\n", "Cost min: 0.5028838188775905\n", "Cost max: inf\n", "cost shape: (3378, 4750)\n", "Creating path 1/1: RAM usage: 12.00/16.00 GB (75.0%)\n", "Number of endpoints: 1\n", "Channel network raster written to data/OC1mTest_channel_network_raster.tif\n", "Channel network vector written to data/OC1mTest_channel_network.shp\n", "extract_channel_network completed in 2.0418 seconds\n", "\n", "Running calculate_hand with parameters:\n", " custom_filled_dem = None\n", " custom_channel_network_raster = None\n", " custom_path = None\n", "./whitebox_tools --run=\"ElevationAboveStream\" --dem='/Users/markwang/repos/pygeoflood/examples/data/OC1mTest_filled.tif' --streams='/Users/markwang/repos/pygeoflood/examples/data/OC1mTest_channel_network_raster.tif' --output='/Users/markwang/repos/pygeoflood/examples/data/OC1mTest_HAND.tif' -v --compress_rasters=True\n", "\n", "***********************************\n", "* Welcome to ElevationAboveStream *\n", "* Powered by WhiteboxTools *\n", "* www.whiteboxgeo.com *\n", "***********************************\n", "Reading DEM data...\n", "Reading streams data...\n", "Saving data...\n", "Output file written\n", "Elapsed Time (excluding I/O): 0.644s\n", "**********************************************************************************\n", "WARNING: Interior pit cells were found within the input DEM. It is likely that the\n", "DEM needs to be processed to remove topographic depressions and flats prior to\n", "running this tool.\n", "**********************************************************************************\n", "HAND raster written to data/OC1mTest_HAND.tif\n", "calculate_hand completed in 5.1220 seconds\n", "\n", "Running segment_channel_network with parameters:\n", " custom_channel_network_vector = None\n", " custom_path = None\n", " vector_extension = shp\n", " segment_length = 1000\n", "Segmented channel network written to data/OC1mTest_segmented_channel_network.shp\n", "segment_channel_network completed in 0.7907 seconds\n", "\n", "Running delineate_segment_catchments with parameters:\n", " custom_segmented_channel_network = None\n", " custom_d8_fdr = None\n", " custom_path = None\n", "./whitebox_tools --run=\"Watershed\" --d8_pntr='/Users/markwang/repos/pygeoflood/examples/data/OC1mTest_d8_fdr.tif' --pour_pts='/Users/markwang/repos/pygeoflood/examples/data/OC1mTest_segmented_channel_network_raster.tif' --output='/Users/markwang/repos/pygeoflood/examples/data/OC1mTest_segment_catchments.tif' -v --compress_rasters=True\n", "\n", "****************************\n", "* Welcome to Watershed *\n", "* Powered by WhiteboxTools *\n", "* www.whiteboxgeo.com *\n", "****************************\n", "Reading data...\n", "Saving data...\n", "Output file written\n", "Elapsed Time (excluding I/O): 0.841s\n", "Segment catchments written to data/OC1mTest_segment_catchments.tif\n", "delineate_segment_catchments completed in 1.5538 seconds\n", "\n", "Running calculate_src with parameters:\n", " custom_dem = None\n", " custom_segmented_channel_network = None\n", " custom_segment_catchments_raster = None\n", " custom_catchments = None\n", " custom_hand = None\n", " custom_path = None\n", " min_slope = 1e-06\n", " max_stage = 20\n", " incr_stage = 0.1\n", " custom_roughness_path = None\n", "River attributes written to data/OC1mTest_river_attributes.csv\n", "Synthetic rating curves written to data/OC1mTest_src.csv\n", "calculate_src completed in 3.4749 seconds\n", "\n", "Running calculate_flood_stage with parameters:\n", " custom_src = None\n", " custom_streamflow_forecast_path = None\n", " custom_path = None\n", " custom_Q = 500\n", "Applying custom streamflow to each segment: 500 cms\n", "Flood stages written to data/OC1mTest_flood_stage.csv\n", "calculate_flood_stage completed in 0.0042 seconds\n", "\n", "Running inundate with parameters:\n", " custom_hand = None\n", " custom_flood_stage = None\n", " custom_segment_catchments_raster = None\n", " custom_path = None\n", "Flood inundation raster written to data/OC1mTest_fim.tif\n", "inundate completed in 0.9615 seconds\n", "\n", "run_fim_workflow completed in 49.1919 seconds\n", "\n" ] } ], "source": [ "# set constant flowrate since we don't have a streamflow forecast\n", "# see docs for `PyGeoFlood.config` and `PyGeoFlood.calculate_flood_stage`\n", "\n", "pgf.config = {\"calculate_flood_stage\": {\"custom_Q\": 500}}\n", "\n", "pgf.run_fim_workflow()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Plot flood inundation map\n" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [ { "data": { "image/png": "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", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "import matplotlib.pyplot as plt\n", "import numpy as np\n", "import rasterio as rio\n", "\n", "with rio.open(pgf.fim_path) as ds:\n", " fim = ds.read(1)\n", " fim[fim == ds.nodata] = np.nan\n", "\n", "plt.imshow(fim, cmap=\"Blues\")\n", "plt.colorbar()\n", "plt.show()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "All output files are saved in the `data` directory and can be downloaded for viewing with a GIS software such as QGIS\n" ] }, { "cell_type": "code", "execution_count": 7, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Paths written to data/paths.txt\n" ] } ], "source": [ "# save output data file paths we can load our PyGeoFlood instance later with\n", "# pgf = PyGeoFlood.from_paths(\"data/paths.txt\")\n", "pgf.to_paths(\"data/paths.txt\")" ] } ], "metadata": { "colab": { "authorship_tag": "ABX9TyMNCi84+7QiD4ra1kbkEbpz", "include_colab_link": true, "provenance": [] }, "kernelspec": { "display_name": "Python 3", "name": "python3" }, "language_info": { "codemirror_mode": { "name": "ipython", "version": 3 }, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", "version": "3.12.7" } }, "nbformat": 4, "nbformat_minor": 0 }