Skip to main content

HYDrologic Remote sensing Analysis for Floods

Project description

hydra-floods

docs License: GPL v3 PyPI version hydra-floods

Introduction

The Hydrologic Remote Sensing Analysis for Floods (or HYDRAFloods) is an open source Python application for downloading, processing, and delivering surface water maps derived from remote sensing data. The bases behind the tool is to provide sensor agnostic approaches to produce surface water maps. Furthermore, there are workflows that leverage multiple remote sensing dataset in conjunction to provide daily surface water maps for flood application.

Installation

The recommended way to get up and started using the hydrafloods packages is via a Docker Image. Using the Docker image will prevent any issues because of any dependencies for differing operating systems. To pull the pre-built image and start a new container, use the following command:

docker run -it \
  -v ~/<PROJECT-DIR>/:/mnt/<PROJECT-DIR> \
  --name hydrafloods_container kmarkert/hydrafloods

This command should be a one-time process to download the package and start the container. Additionally, this command will mount a local directory (i.e. ~/<PROEJCT-DIR>) for use within the Docker Container which allows you to edit files locally and use within the container. Be sure to change <PROJECTD-DIR> within the command to an exisiting local directory.

To use the hydrafloods package successfully, Google Cloud and Earth Engine authentication is necessary. Tointialize the Google Cloud environment and authenticate using your credentials, run the following command:

gcloud init

To authenticate the Earth Engine Python API with your credentials, run the following:

earthengine authenticate

For more information on setup and installation of the hydrafloods package or how to install it using conda, please see the Installation Docs.

Example

To highlight a quick example of the hydrafloods API and simplicity to produce high-quality surface water maps we provide a quick example of mapping surface water using Sentinel-1 over the confluence of the Mekong and Tonle Sap rivers, which experiences frequent flooding.

# import the hydrafloods and ee package
import hydrafloods as hf
import ee
ee.Initialize()

# specify start and end time as well as geographic region to process
start_time = "2019-10-05"
end_time =  "2019-10-06"
region = ee.Geometry.Rectangle([104, 11.5, 106, 12.5 ])

# get the Sentinel-1 collection
# the hf.dataset classes performs the spatial-temporal filtering for you
s1 = hf.datasets.Sentinel1(region, start_time, end_time)

# apply a water mapping function to the S1 dataset
# this applies the "Edge Otsu" algorithm from https://doi.org/10.3390/rs12152469
water_imgs = s1.apply_func(
    hf.thresholding.edge_otsu,
    initial_threshold=-14,
    edge_buffer=300
)

# take the mode from multiple images
# since this is just imagery from one day, it will simply mosaic the images
water_map = ee.Image(water_imgs.collection.mode())

# export the water map
hf.geeutils.export_image(
    water_map,
    region,
    "users/<YOUR_USERNAME>/water_map_example",
    scale=30,
)

(This script is complete, it should run "as is")

At the end of the script execution, there will be an Earth Engine export task running the process on the EE servers for use later in the EE platform. The resulting surface water image should look like the following figure. It should be noted that hydrafloods can scale quickly and easily by simply changing the start or end time and region to process, allowing for processing of surface water maps with minimal effort in terms of coding.

Quick Start Results

__Figure 1.__ Sentinel-1 backscatter image (left) and resulting surface water map (right) from 2019-10-05 for a region in Cambodia as in the example.

Learn more about the package throughout the documentation such as installation, the algorithms available, or setting up the package to run operationally using the CLI.

Get in touch

Contribute

Contributions are welcome, and they are greatly appreciated! Every little bit helps, and credit will always be given. Please see the Contributing Guidelines for details on where to contribute and how to get started.

License

hydrafloods is available under the open source GNU General Public License v3.0.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

hydrafloods-0.2.7.tar.gz (46.8 kB view details)

Uploaded Source

Built Distribution

hydrafloods-0.2.7-py3-none-any.whl (61.7 kB view details)

Uploaded Python 3

File details

Details for the file hydrafloods-0.2.7.tar.gz.

File metadata

  • Download URL: hydrafloods-0.2.7.tar.gz
  • Upload date:
  • Size: 46.8 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.2.0 pkginfo/1.5.0.1 requests/2.23.0 setuptools/46.1.3 requests-toolbelt/0.9.1 tqdm/4.51.0 CPython/3.6.10

File hashes

Hashes for hydrafloods-0.2.7.tar.gz
Algorithm Hash digest
SHA256 99291d1e9b457d5815f3cff60b6ba4dffca31b87a10bf47030d5faf2bb5beddb
MD5 93e92d47766c313751351e5281e5185e
BLAKE2b-256 3d66d557b4ae0c8c2b7d2f75c9778c9b43dfe5b472c24c4fc104fb8f363f94ba

See more details on using hashes here.

File details

Details for the file hydrafloods-0.2.7-py3-none-any.whl.

File metadata

  • Download URL: hydrafloods-0.2.7-py3-none-any.whl
  • Upload date:
  • Size: 61.7 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.2.0 pkginfo/1.5.0.1 requests/2.23.0 setuptools/46.1.3 requests-toolbelt/0.9.1 tqdm/4.51.0 CPython/3.6.10

File hashes

Hashes for hydrafloods-0.2.7-py3-none-any.whl
Algorithm Hash digest
SHA256 e1b599f0edbbac804fa0e7edc8e153c01583e9d737daa66a5e8d33d6b704c61f
MD5 4f1d8dc3c71004d1500ab9ad99f8a98b
BLAKE2b-256 3b6ba93b585955cd14860ec9f0e5e1e6d7dd73409aa04b25b0c731289d2f550a

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page