indices module
hydrafloods.indices
aewinsh(img)
Function to calculate automated water extraction index (AEWI) no shadow Expects image has "green", "nir", "swir1" and "swir2" bands.
Parameters:
Name | Type | Description | Default |
---|---|---|---|
img |
ee.Image |
image to calculate AEWInsh |
required |
Returns:
Type | Description |
---|---|
ee.Image |
AEWInsh image |
Source code in hydrafloods/indices.py
@decorators.keep_attrs
def aewinsh(img):
"""Function to calculate automated water extraction index (AEWI) no shadow
Expects image has "green", "nir", "swir1" and "swir2" bands.
args:
img (ee.Image): image to calculate AEWInsh
returns:
ee.Image: AEWInsh image
"""
return img.expression(
"4.0 * (g-s) - ((0.25*n) + (2.75*w))",
{
"g": img.select("green"),
"s": img.select("swir1"),
"n": img.select("nir"),
"w": img.select("swir2"),
},
).rename("aewinsh")
aewish(img)
Function to calculate automated water extraction index (AEWI) shadow Expects image has "blue", "green", "nir", "swir1" and "swir2" bands.
Parameters:
Name | Type | Description | Default |
---|---|---|---|
img |
ee.Image |
image to calculate AEWIsh |
required |
Returns:
Type | Description |
---|---|
ee.Image |
AEWIsh image |
Source code in hydrafloods/indices.py
@decorators.keep_attrs
def aewish(img):
"""Function to calculate automated water extraction index (AEWI) shadow
Expects image has "blue", "green", "nir", "swir1" and "swir2" bands.
args:
img (ee.Image): image to calculate AEWIsh
returns:
ee.Image: AEWIsh image
"""
return img.expression(
"b+2.5*g-1.5*(n+s)-0.25*w",
{
"b": img.select("blue"),
"g": img.select("green"),
"n": img.select("nir"),
"s": img.select("swir1"),
"w": img.select("swir2"),
},
).rename("aewish")
evi(img)
Function to calculate Enhanced Vegetation Index (EVI). Expects image has "blue", "red", and "nir" bands.
Parameters:
Name | Type | Description | Default |
---|---|---|---|
img |
ee.Image |
image to calculate EVI |
required |
Returns:
Type | Description |
---|---|
ee.Image |
EVI image |
Source code in hydrafloods/indices.py
@decorators.keep_attrs
def evi(img):
"""Function to calculate Enhanced Vegetation Index (EVI).
Expects image has "blue", "red", and "nir" bands.
args:
img (ee.Image): image to calculate EVI
returns:
ee.Image: EVI image
"""
return img.expression(
"2.5*(nir-red)/(nir+6.0*red-7.5*blue+1)",
{
"blue": img.select("blue"),
"red": img.select("red"),
"nir": img.select("nir"),
},
).rename("evi")
gwi(img)
Function to calculate general water index (GWI) Expects image has "green", "red", "nir", and "swir1" bands.
Parameters:
Name | Type | Description | Default |
---|---|---|---|
img |
ee.Image |
image to calculate GWI |
required |
Returns:
Type | Description |
---|---|
ee.Image |
GWI image |
Source code in hydrafloods/indices.py
@decorators.keep_attrs
def gwi(img):
"""Function to calculate general water index (GWI)
Expects image has "green", "red", "nir", and "swir1" bands.
args:
img (ee.Image): image to calculate GWI
returns:
ee.Image: GWI image
"""
return img.expression(
"(g+r)-(n+s)",
{
"g": img.select("green"),
"r": img.select("red"),
"n": img.select("nir"),
"s": img.select("swir1"),
},
).rename("gwi")
lswi(img)
Function to calculate land surface water index (LSWI). Expects image has "nir" and "swir1" bands.
Parameters:
Name | Type | Description | Default |
---|---|---|---|
img |
ee.Image |
image to calculate LSWI |
required |
Returns:
Type | Description |
---|---|
ee.Image |
LSWI image |
Source code in hydrafloods/indices.py
@decorators.keep_attrs
def lswi(img):
"""Function to calculate land surface water index (LSWI).
Expects image has "nir" and "swir1" bands.
args:
img (ee.Image): image to calculate LSWI
returns:
ee.Image: LSWI image
"""
return img.expression(
"(nir-swir)/(nir+swir)", {"nir": img.select("nir"), "swir": img.select("swir1")}
).rename("lswi")
mbwi(img, factor=3)
Function to calculate multi band water index (MBWI). Expects image has "green", "red", "nir", "swir1", and "swir2" bands. https://doi.org/10.1016/j.jag.2018.01.018
Parameters:
Name | Type | Description | Default |
---|---|---|---|
img |
ee.Image |
image to calculate MBWI |
required |
factor |
int,optional |
factor to scale green band for index. default=3 |
3 |
Returns:
Type | Description |
---|---|
ee.Image |
MBWI image |
Source code in hydrafloods/indices.py
@decorators.keep_attrs
def mbwi(img, factor=3):
"""Function to calculate multi band water index (MBWI).
Expects image has "green", "red", "nir", "swir1", and "swir2" bands.
https://doi.org/10.1016/j.jag.2018.01.018
args:
img (ee.Image): image to calculate MBWI
factor (int,optional): factor to scale green band for index. default=3
returns:
ee.Image: MBWI image
"""
return img.expression(
"((factor*green)-red-nir-swir1-swir2)",
{
"factor": factor,
"green": img.select("green"),
"red": img.select("red"),
"nir": img.select("nir"),
"swir1": img.select("swir1"),
"swir2": img.select("swir2"),
},
).rename("mbwi")
mndwi(img)
Function to calculate modified Difference Water Index (MNDWI). Expects image has "green" and "swir1" bands.
Parameters:
Name | Type | Description | Default |
---|---|---|---|
img |
ee.Image |
image to calculate MNDWI |
required |
Returns:
Type | Description |
---|---|
ee.Image |
MNDWI image |
Source code in hydrafloods/indices.py
@decorators.keep_attrs
def mndwi(img):
"""Function to calculate modified Difference Water Index (MNDWI).
Expects image has "green" and "swir1" bands.
args:
img (ee.Image): image to calculate MNDWI
returns:
ee.Image: MNDWI image
"""
return img.normalizedDifference(["green", "swir1"]).rename("mndwi")
mwi(img)
Function to calculate the Modified Water Index (MWI) Expect image has "green", "red", "nir", and "swir1" bands https://doi.org/10.1007/978-3-662-45737-5_51 , https://ieeexplore.ieee.org/document/9011209
Source code in hydrafloods/indices.py
@decorators.keep_attrs
def mwi(img):
"""Function to calculate the Modified Water Index (MWI)
Expect image has "green", "red", "nir", and "swir1" bands
https://doi.org/10.1007/978-3-662-45737-5_51 , https://ieeexplore.ieee.org/document/9011209
"""
# calculate ndvi
ndvi_img = ndvi(img)
# calculate mndwi
mndwi_img = mndwi(img)
# mwi = 1 - (ndvi - mndwi)
return ee.Image.constant(1).subtract(ndvi_img.subtract(mndwi_img)).rename("mwi")
ndpi(img)
Function to calculate nomalized difference polarization index (NDPI). Expects image has "VV" and "VH" bands.
Parameters:
Name | Type | Description | Default |
---|---|---|---|
img |
ee.Image |
image to calculate NDPI |
required |
Returns:
Type | Description |
---|---|
ee.Image |
NPDI image |
Source code in hydrafloods/indices.py
@decorators.keep_attrs
def ndpi(img):
"""Function to calculate nomalized difference polarization index (NDPI).
Expects image has "VV" and "VH" bands.
args:
img (ee.Image): image to calculate NDPI
returns:
ee.Image: NPDI image
"""
return img.expression(
"(VV-VH)/(VV+VH)", {"VV": img.select("VV"), "VH": img.select("VH")}
).rename("ndpi")
ndvi(img)
Function to calculate Normalized Difference Vegetation Index (NDVI). Expects image has "nir" and "red" bands.
Parameters:
Name | Type | Description | Default |
---|---|---|---|
img |
ee.Image |
image to calculate NDVI |
required |
Returns:
Type | Description |
---|---|
ee.Image |
NDVI image |
Source code in hydrafloods/indices.py
@decorators.keep_attrs
def ndvi(img):
"""Function to calculate Normalized Difference Vegetation Index (NDVI).
Expects image has "nir" and "red" bands.
args:
img (ee.Image): image to calculate NDVI
returns:
ee.Image: NDVI image
"""
return img.normalizedDifference(["nir", "red"]).rename("ndvi")
nvhi(img)
Function to calculate nomalized VH index (NVHI). Expects image has "VV" and "VH" bands.
Parameters:
Name | Type | Description | Default |
---|---|---|---|
img |
ee.Image |
image to calculate NVHI |
required |
Returns:
Type | Description |
---|---|
ee.Image |
NVHI image |
Source code in hydrafloods/indices.py
@decorators.keep_attrs
def nvhi(img):
"""Function to calculate nomalized VH index (NVHI).
Expects image has "VV" and "VH" bands.
args:
img (ee.Image): image to calculate NVHI
returns:
ee.Image: NVHI image
"""
return img.expression(
"(VH)/(VV+VH)", {"VV": img.select("VV"), "VH": img.select("VH")}
).rename("nvhi")
nvvi(img)
Function to calculate nomalized VV index (NVVI). Expects image has "VV" and "VH" bands.
Parameters:
Name | Type | Description | Default |
---|---|---|---|
img |
ee.Image |
image to calculate NVVI |
required |
Returns:
Type | Description |
---|---|
ee.Image |
NVVI image |
Source code in hydrafloods/indices.py
@decorators.keep_attrs
def nvvi(img):
"""Function to calculate nomalized VV index (NVVI).
Expects image has "VV" and "VH" bands.
args:
img (ee.Image): image to calculate NVVI
returns:
ee.Image: NVVI image
"""
return img.expression(
"(VV)/(VV+VH)", {"VV": img.select("VV"), "VH": img.select("VH")}
).rename("nvvi")
nwi(img)
Function to calculate new water index (NWI). Expects image has "blue", "nir", "swir1" and "swir2" bands.
Parameters:
Name | Type | Description | Default |
---|---|---|---|
img |
ee.Image |
image to calculate NWI |
required |
Returns:
Type | Description |
---|---|
ee.Image |
NWI image |
Source code in hydrafloods/indices.py
@decorators.keep_attrs
def nwi(img):
"""Function to calculate new water index (NWI).
Expects image has "blue", "nir", "swir1" and "swir2" bands.
args:
img (ee.Image): image to calculate NWI
returns:
ee.Image: NWI image
"""
return img.expression(
"((b-(n+s+w))/(b+(n+s+w)))",
{
"b": img.select("blue"),
"n": img.select("nir"),
"s": img.select("swir1"),
"w": img.select("swir2"),
},
).rename("nwi")
rfi(img)
Function to calculate SAR RFI index. Expects image has "VV" and "VH" bands.
Parameters:
Name | Type | Description | Default |
---|---|---|---|
img |
ee.Image |
image to calculate RFI |
required |
Returns:
Type | Description |
---|---|
ee.Image |
RFI image |
Source code in hydrafloods/indices.py
@decorators.keep_attrs
def rfi(img):
"""Function to calculate SAR RFI index.
Expects image has "VV" and "VH" bands.
args:
img (ee.Image): image to calculate RFI
returns:
ee.Image: RFI image
"""
return img.expression(
"(4*VH)/(VV+VH)", {"VV": img.select("VV"), "VH": img.select("VH")}
).rename("rfi")
vv_vh_abs_sum(img)
Function to calculate the absolute value of the sum of VV and VH bands. Expects image has "VV" and "VH" bands.
Parameters:
Name | Type | Description | Default |
---|---|---|---|
img |
ee.Image |
image to apply calculation |
required |
Returns:
Type | Description |
---|---|
ee.Image |
image name 'vv_vh_abs_sum' |
Source code in hydrafloods/indices.py
@decorators.keep_attrs
def vv_vh_abs_sum(img):
"""Function to calculate the absolute value of the sum of VV and VH bands.
Expects image has "VV" and "VH" bands.
args:
img (ee.Image): image to apply calculation
returns:
ee.Image: image name 'vv_vh_abs_sum'
"""
return img.select("VV").add(img.select("VH")).abs().rename("vv_vh_abs_sum")
vv_vh_ratio(img)
Function to calculate ratio between VV and VH bands. Expects image has "VV" and "VH" bands.
Parameters:
Name | Type | Description | Default |
---|---|---|---|
img |
ee.Image |
image to calculate ration |
required |
Returns:
Type | Description |
---|---|
ee.Image |
ratio image name 'ratio' |
Source code in hydrafloods/indices.py
@decorators.keep_attrs
def vv_vh_ratio(img):
"""Function to calculate ratio between VV and VH bands.
Expects image has "VV" and "VH" bands.
args:
img (ee.Image): image to calculate ration
returns:
ee.Image: ratio image name 'ratio'
"""
return img.expression(
"(VV/VH)", {"VV": img.select("VV"), "VH": img.select("VH")}
).rename("ratio")
wri(img)
Function to calculate water ratio index (WRI). Expects image has "green", "red", "nir" and "swir1" bands.
Parameters:
Name | Type | Description | Default |
---|---|---|---|
img |
ee.Image |
image to calculate WRI |
required |
Returns:
Type | Description |
---|---|
ee.Image |
WRI image |
Source code in hydrafloods/indices.py
@decorators.keep_attrs
def wri(img):
"""Function to calculate water ratio index (WRI).
Expects image has "green", "red", "nir" and "swir1" bands.
args:
img (ee.Image): image to calculate WRI
returns:
ee.Image: WRI image
"""
return img.expression(
"(green+red)/(nir+swir)",
{
"green": img.select("green"),
"red": img.select("red"),
"nir": img.select("nir"),
"swir": img.select("swir1"),
},
).rename("wri")