mirror of
https://github.com/TheAlgorithms/Python.git
synced 2025-07-04 16:57:32 +08:00
Optimized recursive_bubble_sort (#2410)
* optimized recursive_bubble_sort * Fixed doctest error due whitespace * reduce loop times for optimization * fixup! Format Python code with psf/black push Co-authored-by: github-actions <${GITHUB_ACTOR}@users.noreply.github.com>
This commit is contained in:
@ -10,98 +10,98 @@ import numpy as np
|
||||
# Class implemented to calculus the index
|
||||
class IndexCalculation:
|
||||
"""
|
||||
# Class Summary
|
||||
This algorithm consists in calculating vegetation indices, these
|
||||
indices can be used for precision agriculture for example (or remote
|
||||
sensing). There are functions to define the data and to calculate the
|
||||
implemented indices.
|
||||
# Class Summary
|
||||
This algorithm consists in calculating vegetation indices, these
|
||||
indices can be used for precision agriculture for example (or remote
|
||||
sensing). There are functions to define the data and to calculate the
|
||||
implemented indices.
|
||||
|
||||
# Vegetation index
|
||||
https://en.wikipedia.org/wiki/Vegetation_Index
|
||||
A Vegetation Index (VI) is a spectral transformation of two or more bands
|
||||
designed to enhance the contribution of vegetation properties and allow
|
||||
reliable spatial and temporal inter-comparisons of terrestrial
|
||||
photosynthetic activity and canopy structural variations
|
||||
# Vegetation index
|
||||
https://en.wikipedia.org/wiki/Vegetation_Index
|
||||
A Vegetation Index (VI) is a spectral transformation of two or more bands
|
||||
designed to enhance the contribution of vegetation properties and allow
|
||||
reliable spatial and temporal inter-comparisons of terrestrial
|
||||
photosynthetic activity and canopy structural variations
|
||||
|
||||
# Information about channels (Wavelength range for each)
|
||||
* nir - near-infrared
|
||||
https://www.malvernpanalytical.com/br/products/technology/near-infrared-spectroscopy
|
||||
Wavelength Range 700 nm to 2500 nm
|
||||
* Red Edge
|
||||
https://en.wikipedia.org/wiki/Red_edge
|
||||
Wavelength Range 680 nm to 730 nm
|
||||
* red
|
||||
https://en.wikipedia.org/wiki/Color
|
||||
Wavelength Range 635 nm to 700 nm
|
||||
* blue
|
||||
https://en.wikipedia.org/wiki/Color
|
||||
Wavelength Range 450 nm to 490 nm
|
||||
* green
|
||||
https://en.wikipedia.org/wiki/Color
|
||||
Wavelength Range 520 nm to 560 nm
|
||||
# Information about channels (Wavelength range for each)
|
||||
* nir - near-infrared
|
||||
https://www.malvernpanalytical.com/br/products/technology/near-infrared-spectroscopy
|
||||
Wavelength Range 700 nm to 2500 nm
|
||||
* Red Edge
|
||||
https://en.wikipedia.org/wiki/Red_edge
|
||||
Wavelength Range 680 nm to 730 nm
|
||||
* red
|
||||
https://en.wikipedia.org/wiki/Color
|
||||
Wavelength Range 635 nm to 700 nm
|
||||
* blue
|
||||
https://en.wikipedia.org/wiki/Color
|
||||
Wavelength Range 450 nm to 490 nm
|
||||
* green
|
||||
https://en.wikipedia.org/wiki/Color
|
||||
Wavelength Range 520 nm to 560 nm
|
||||
|
||||
|
||||
# Implemented index list
|
||||
#"abbreviationOfIndexName" -- list of channels used
|
||||
# Implemented index list
|
||||
#"abbreviationOfIndexName" -- list of channels used
|
||||
|
||||
#"ARVI2" -- red, nir
|
||||
#"CCCI" -- red, redEdge, nir
|
||||
#"CVI" -- red, green, nir
|
||||
#"GLI" -- red, green, blue
|
||||
#"NDVI" -- red, nir
|
||||
#"BNDVI" -- blue, nir
|
||||
#"redEdgeNDVI" -- red, redEdge
|
||||
#"GNDVI" -- green, nir
|
||||
#"GBNDVI" -- green, blue, nir
|
||||
#"GRNDVI" -- red, green, nir
|
||||
#"RBNDVI" -- red, blue, nir
|
||||
#"PNDVI" -- red, green, blue, nir
|
||||
#"ATSAVI" -- red, nir
|
||||
#"BWDRVI" -- blue, nir
|
||||
#"CIgreen" -- green, nir
|
||||
#"CIrededge" -- redEdge, nir
|
||||
#"CI" -- red, blue
|
||||
#"CTVI" -- red, nir
|
||||
#"GDVI" -- green, nir
|
||||
#"EVI" -- red, blue, nir
|
||||
#"GEMI" -- red, nir
|
||||
#"GOSAVI" -- green, nir
|
||||
#"GSAVI" -- green, nir
|
||||
#"Hue" -- red, green, blue
|
||||
#"IVI" -- red, nir
|
||||
#"IPVI" -- red, nir
|
||||
#"I" -- red, green, blue
|
||||
#"RVI" -- red, nir
|
||||
#"MRVI" -- red, nir
|
||||
#"MSAVI" -- red, nir
|
||||
#"NormG" -- red, green, nir
|
||||
#"NormNIR" -- red, green, nir
|
||||
#"NormR" -- red, green, nir
|
||||
#"NGRDI" -- red, green
|
||||
#"RI" -- red, green
|
||||
#"S" -- red, green, blue
|
||||
#"IF" -- red, green, blue
|
||||
#"DVI" -- red, nir
|
||||
#"TVI" -- red, nir
|
||||
#"NDRE" -- redEdge, nir
|
||||
#"ARVI2" -- red, nir
|
||||
#"CCCI" -- red, redEdge, nir
|
||||
#"CVI" -- red, green, nir
|
||||
#"GLI" -- red, green, blue
|
||||
#"NDVI" -- red, nir
|
||||
#"BNDVI" -- blue, nir
|
||||
#"redEdgeNDVI" -- red, redEdge
|
||||
#"GNDVI" -- green, nir
|
||||
#"GBNDVI" -- green, blue, nir
|
||||
#"GRNDVI" -- red, green, nir
|
||||
#"RBNDVI" -- red, blue, nir
|
||||
#"PNDVI" -- red, green, blue, nir
|
||||
#"ATSAVI" -- red, nir
|
||||
#"BWDRVI" -- blue, nir
|
||||
#"CIgreen" -- green, nir
|
||||
#"CIrededge" -- redEdge, nir
|
||||
#"CI" -- red, blue
|
||||
#"CTVI" -- red, nir
|
||||
#"GDVI" -- green, nir
|
||||
#"EVI" -- red, blue, nir
|
||||
#"GEMI" -- red, nir
|
||||
#"GOSAVI" -- green, nir
|
||||
#"GSAVI" -- green, nir
|
||||
#"Hue" -- red, green, blue
|
||||
#"IVI" -- red, nir
|
||||
#"IPVI" -- red, nir
|
||||
#"I" -- red, green, blue
|
||||
#"RVI" -- red, nir
|
||||
#"MRVI" -- red, nir
|
||||
#"MSAVI" -- red, nir
|
||||
#"NormG" -- red, green, nir
|
||||
#"NormNIR" -- red, green, nir
|
||||
#"NormR" -- red, green, nir
|
||||
#"NGRDI" -- red, green
|
||||
#"RI" -- red, green
|
||||
#"S" -- red, green, blue
|
||||
#"IF" -- red, green, blue
|
||||
#"DVI" -- red, nir
|
||||
#"TVI" -- red, nir
|
||||
#"NDRE" -- redEdge, nir
|
||||
|
||||
#list of all index implemented
|
||||
#allIndex = ["ARVI2", "CCCI", "CVI", "GLI", "NDVI", "BNDVI", "redEdgeNDVI",
|
||||
"GNDVI", "GBNDVI", "GRNDVI", "RBNDVI", "PNDVI", "ATSAVI",
|
||||
"BWDRVI", "CIgreen", "CIrededge", "CI", "CTVI", "GDVI", "EVI",
|
||||
"GEMI", "GOSAVI", "GSAVI", "Hue", "IVI", "IPVI", "I", "RVI",
|
||||
"MRVI", "MSAVI", "NormG", "NormNIR", "NormR", "NGRDI", "RI",
|
||||
"S", "IF", "DVI", "TVI", "NDRE"]
|
||||
#list of all index implemented
|
||||
#allIndex = ["ARVI2", "CCCI", "CVI", "GLI", "NDVI", "BNDVI", "redEdgeNDVI",
|
||||
"GNDVI", "GBNDVI", "GRNDVI", "RBNDVI", "PNDVI", "ATSAVI",
|
||||
"BWDRVI", "CIgreen", "CIrededge", "CI", "CTVI", "GDVI", "EVI",
|
||||
"GEMI", "GOSAVI", "GSAVI", "Hue", "IVI", "IPVI", "I", "RVI",
|
||||
"MRVI", "MSAVI", "NormG", "NormNIR", "NormR", "NGRDI", "RI",
|
||||
"S", "IF", "DVI", "TVI", "NDRE"]
|
||||
|
||||
#list of index with not blue channel
|
||||
#notBlueIndex = ["ARVI2", "CCCI", "CVI", "NDVI", "redEdgeNDVI", "GNDVI",
|
||||
"GRNDVI", "ATSAVI", "CIgreen", "CIrededge", "CTVI", "GDVI",
|
||||
"GEMI", "GOSAVI", "GSAVI", "IVI", "IPVI", "RVI", "MRVI",
|
||||
"MSAVI", "NormG", "NormNIR", "NormR", "NGRDI", "RI", "DVI",
|
||||
"TVI", "NDRE"]
|
||||
#list of index with not blue channel
|
||||
#notBlueIndex = ["ARVI2", "CCCI", "CVI", "NDVI", "redEdgeNDVI", "GNDVI",
|
||||
"GRNDVI", "ATSAVI", "CIgreen", "CIrededge", "CTVI", "GDVI",
|
||||
"GEMI", "GOSAVI", "GSAVI", "IVI", "IPVI", "RVI", "MRVI",
|
||||
"MSAVI", "NormG", "NormNIR", "NormR", "NGRDI", "RI", "DVI",
|
||||
"TVI", "NDRE"]
|
||||
|
||||
#list of index just with RGB channels
|
||||
#RGBIndex = ["GLI", "CI", "Hue", "I", "NGRDI", "RI", "S", "IF"]
|
||||
#list of index just with RGB channels
|
||||
#RGBIndex = ["GLI", "CI", "Hue", "I", "NGRDI", "RI", "S", "IF"]
|
||||
"""
|
||||
|
||||
def __init__(self, red=None, green=None, blue=None, redEdge=None, nir=None):
|
||||
@ -189,9 +189,9 @@ class IndexCalculation:
|
||||
|
||||
def CCCI(self):
|
||||
"""
|
||||
Canopy Chlorophyll Content Index
|
||||
https://www.indexdatabase.de/db/i-single.php?id=224
|
||||
:return: index
|
||||
Canopy Chlorophyll Content Index
|
||||
https://www.indexdatabase.de/db/i-single.php?id=224
|
||||
:return: index
|
||||
"""
|
||||
return ((self.nir - self.redEdge) / (self.nir + self.redEdge)) / (
|
||||
(self.nir - self.red) / (self.nir + self.red)
|
||||
@ -199,17 +199,17 @@ class IndexCalculation:
|
||||
|
||||
def CVI(self):
|
||||
"""
|
||||
Chlorophyll vegetation index
|
||||
https://www.indexdatabase.de/db/i-single.php?id=391
|
||||
:return: index
|
||||
Chlorophyll vegetation index
|
||||
https://www.indexdatabase.de/db/i-single.php?id=391
|
||||
:return: index
|
||||
"""
|
||||
return self.nir * (self.red / (self.green ** 2))
|
||||
|
||||
def GLI(self):
|
||||
"""
|
||||
self.green leaf index
|
||||
https://www.indexdatabase.de/db/i-single.php?id=375
|
||||
:return: index
|
||||
self.green leaf index
|
||||
https://www.indexdatabase.de/db/i-single.php?id=375
|
||||
:return: index
|
||||
"""
|
||||
return (2 * self.green - self.red - self.blue) / (
|
||||
2 * self.green + self.red + self.blue
|
||||
@ -217,43 +217,43 @@ class IndexCalculation:
|
||||
|
||||
def NDVI(self):
|
||||
"""
|
||||
Normalized Difference self.nir/self.red Normalized Difference Vegetation
|
||||
Index, Calibrated NDVI - CDVI
|
||||
https://www.indexdatabase.de/db/i-single.php?id=58
|
||||
:return: index
|
||||
Normalized Difference self.nir/self.red Normalized Difference Vegetation
|
||||
Index, Calibrated NDVI - CDVI
|
||||
https://www.indexdatabase.de/db/i-single.php?id=58
|
||||
:return: index
|
||||
"""
|
||||
return (self.nir - self.red) / (self.nir + self.red)
|
||||
|
||||
def BNDVI(self):
|
||||
"""
|
||||
Normalized Difference self.nir/self.blue self.blue-normalized difference
|
||||
vegetation index
|
||||
https://www.indexdatabase.de/db/i-single.php?id=135
|
||||
:return: index
|
||||
Normalized Difference self.nir/self.blue self.blue-normalized difference
|
||||
vegetation index
|
||||
https://www.indexdatabase.de/db/i-single.php?id=135
|
||||
:return: index
|
||||
"""
|
||||
return (self.nir - self.blue) / (self.nir + self.blue)
|
||||
|
||||
def redEdgeNDVI(self):
|
||||
"""
|
||||
Normalized Difference self.rededge/self.red
|
||||
https://www.indexdatabase.de/db/i-single.php?id=235
|
||||
:return: index
|
||||
Normalized Difference self.rededge/self.red
|
||||
https://www.indexdatabase.de/db/i-single.php?id=235
|
||||
:return: index
|
||||
"""
|
||||
return (self.redEdge - self.red) / (self.redEdge + self.red)
|
||||
|
||||
def GNDVI(self):
|
||||
"""
|
||||
Normalized Difference self.nir/self.green self.green NDVI
|
||||
https://www.indexdatabase.de/db/i-single.php?id=401
|
||||
:return: index
|
||||
Normalized Difference self.nir/self.green self.green NDVI
|
||||
https://www.indexdatabase.de/db/i-single.php?id=401
|
||||
:return: index
|
||||
"""
|
||||
return (self.nir - self.green) / (self.nir + self.green)
|
||||
|
||||
def GBNDVI(self):
|
||||
"""
|
||||
self.green-self.blue NDVI
|
||||
https://www.indexdatabase.de/db/i-single.php?id=186
|
||||
:return: index
|
||||
self.green-self.blue NDVI
|
||||
https://www.indexdatabase.de/db/i-single.php?id=186
|
||||
:return: index
|
||||
"""
|
||||
return (self.nir - (self.green + self.blue)) / (
|
||||
self.nir + (self.green + self.blue)
|
||||
@ -261,9 +261,9 @@ class IndexCalculation:
|
||||
|
||||
def GRNDVI(self):
|
||||
"""
|
||||
self.green-self.red NDVI
|
||||
https://www.indexdatabase.de/db/i-single.php?id=185
|
||||
:return: index
|
||||
self.green-self.red NDVI
|
||||
https://www.indexdatabase.de/db/i-single.php?id=185
|
||||
:return: index
|
||||
"""
|
||||
return (self.nir - (self.green + self.red)) / (
|
||||
self.nir + (self.green + self.red)
|
||||
@ -271,17 +271,17 @@ class IndexCalculation:
|
||||
|
||||
def RBNDVI(self):
|
||||
"""
|
||||
self.red-self.blue NDVI
|
||||
https://www.indexdatabase.de/db/i-single.php?id=187
|
||||
:return: index
|
||||
self.red-self.blue NDVI
|
||||
https://www.indexdatabase.de/db/i-single.php?id=187
|
||||
:return: index
|
||||
"""
|
||||
return (self.nir - (self.blue + self.red)) / (self.nir + (self.blue + self.red))
|
||||
|
||||
def PNDVI(self):
|
||||
"""
|
||||
Pan NDVI
|
||||
https://www.indexdatabase.de/db/i-single.php?id=188
|
||||
:return: index
|
||||
Pan NDVI
|
||||
https://www.indexdatabase.de/db/i-single.php?id=188
|
||||
:return: index
|
||||
"""
|
||||
return (self.nir - (self.green + self.red + self.blue)) / (
|
||||
self.nir + (self.green + self.red + self.blue)
|
||||
@ -289,9 +289,9 @@ class IndexCalculation:
|
||||
|
||||
def ATSAVI(self, X=0.08, a=1.22, b=0.03):
|
||||
"""
|
||||
Adjusted transformed soil-adjusted VI
|
||||
https://www.indexdatabase.de/db/i-single.php?id=209
|
||||
:return: index
|
||||
Adjusted transformed soil-adjusted VI
|
||||
https://www.indexdatabase.de/db/i-single.php?id=209
|
||||
:return: index
|
||||
"""
|
||||
return a * (
|
||||
(self.nir - a * self.red - b)
|
||||
@ -300,58 +300,58 @@ class IndexCalculation:
|
||||
|
||||
def BWDRVI(self):
|
||||
"""
|
||||
self.blue-wide dynamic range vegetation index
|
||||
https://www.indexdatabase.de/db/i-single.php?id=136
|
||||
:return: index
|
||||
self.blue-wide dynamic range vegetation index
|
||||
https://www.indexdatabase.de/db/i-single.php?id=136
|
||||
:return: index
|
||||
"""
|
||||
return (0.1 * self.nir - self.blue) / (0.1 * self.nir + self.blue)
|
||||
|
||||
def CIgreen(self):
|
||||
"""
|
||||
Chlorophyll Index self.green
|
||||
https://www.indexdatabase.de/db/i-single.php?id=128
|
||||
:return: index
|
||||
Chlorophyll Index self.green
|
||||
https://www.indexdatabase.de/db/i-single.php?id=128
|
||||
:return: index
|
||||
"""
|
||||
return (self.nir / self.green) - 1
|
||||
|
||||
def CIrededge(self):
|
||||
"""
|
||||
Chlorophyll Index self.redEdge
|
||||
https://www.indexdatabase.de/db/i-single.php?id=131
|
||||
:return: index
|
||||
Chlorophyll Index self.redEdge
|
||||
https://www.indexdatabase.de/db/i-single.php?id=131
|
||||
:return: index
|
||||
"""
|
||||
return (self.nir / self.redEdge) - 1
|
||||
|
||||
def CI(self):
|
||||
"""
|
||||
Coloration Index
|
||||
https://www.indexdatabase.de/db/i-single.php?id=11
|
||||
:return: index
|
||||
Coloration Index
|
||||
https://www.indexdatabase.de/db/i-single.php?id=11
|
||||
:return: index
|
||||
"""
|
||||
return (self.red - self.blue) / self.red
|
||||
|
||||
def CTVI(self):
|
||||
"""
|
||||
Corrected Transformed Vegetation Index
|
||||
https://www.indexdatabase.de/db/i-single.php?id=244
|
||||
:return: index
|
||||
Corrected Transformed Vegetation Index
|
||||
https://www.indexdatabase.de/db/i-single.php?id=244
|
||||
:return: index
|
||||
"""
|
||||
ndvi = self.NDVI()
|
||||
return ((ndvi + 0.5) / (abs(ndvi + 0.5))) * (abs(ndvi + 0.5) ** (1 / 2))
|
||||
|
||||
def GDVI(self):
|
||||
"""
|
||||
Difference self.nir/self.green self.green Difference Vegetation Index
|
||||
https://www.indexdatabase.de/db/i-single.php?id=27
|
||||
:return: index
|
||||
Difference self.nir/self.green self.green Difference Vegetation Index
|
||||
https://www.indexdatabase.de/db/i-single.php?id=27
|
||||
:return: index
|
||||
"""
|
||||
return self.nir - self.green
|
||||
|
||||
def EVI(self):
|
||||
"""
|
||||
Enhanced Vegetation Index
|
||||
https://www.indexdatabase.de/db/i-single.php?id=16
|
||||
:return: index
|
||||
Enhanced Vegetation Index
|
||||
https://www.indexdatabase.de/db/i-single.php?id=16
|
||||
:return: index
|
||||
"""
|
||||
return 2.5 * (
|
||||
(self.nir - self.red) / (self.nir + 6 * self.red - 7.5 * self.blue + 1)
|
||||
@ -359,9 +359,9 @@ class IndexCalculation:
|
||||
|
||||
def GEMI(self):
|
||||
"""
|
||||
Global Environment Monitoring Index
|
||||
https://www.indexdatabase.de/db/i-single.php?id=25
|
||||
:return: index
|
||||
Global Environment Monitoring Index
|
||||
https://www.indexdatabase.de/db/i-single.php?id=25
|
||||
:return: index
|
||||
"""
|
||||
n = (2 * (self.nir ** 2 - self.red ** 2) + 1.5 * self.nir + 0.5 * self.red) / (
|
||||
self.nir + self.red + 0.5
|
||||
@ -370,27 +370,27 @@ class IndexCalculation:
|
||||
|
||||
def GOSAVI(self, Y=0.16):
|
||||
"""
|
||||
self.green Optimized Soil Adjusted Vegetation Index
|
||||
https://www.indexdatabase.de/db/i-single.php?id=29
|
||||
mit Y = 0,16
|
||||
:return: index
|
||||
self.green Optimized Soil Adjusted Vegetation Index
|
||||
https://www.indexdatabase.de/db/i-single.php?id=29
|
||||
mit Y = 0,16
|
||||
:return: index
|
||||
"""
|
||||
return (self.nir - self.green) / (self.nir + self.green + Y)
|
||||
|
||||
def GSAVI(self, L=0.5):
|
||||
"""
|
||||
self.green Soil Adjusted Vegetation Index
|
||||
https://www.indexdatabase.de/db/i-single.php?id=31
|
||||
mit L = 0,5
|
||||
:return: index
|
||||
self.green Soil Adjusted Vegetation Index
|
||||
https://www.indexdatabase.de/db/i-single.php?id=31
|
||||
mit L = 0,5
|
||||
:return: index
|
||||
"""
|
||||
return ((self.nir - self.green) / (self.nir + self.green + L)) * (1 + L)
|
||||
|
||||
def Hue(self):
|
||||
"""
|
||||
Hue
|
||||
https://www.indexdatabase.de/db/i-single.php?id=34
|
||||
:return: index
|
||||
Hue
|
||||
https://www.indexdatabase.de/db/i-single.php?id=34
|
||||
:return: index
|
||||
"""
|
||||
return np.arctan(
|
||||
((2 * self.red - self.green - self.blue) / 30.5) * (self.green - self.blue)
|
||||
@ -398,51 +398,51 @@ class IndexCalculation:
|
||||
|
||||
def IVI(self, a=None, b=None):
|
||||
"""
|
||||
Ideal vegetation index
|
||||
https://www.indexdatabase.de/db/i-single.php?id=276
|
||||
b=intercept of vegetation line
|
||||
a=soil line slope
|
||||
:return: index
|
||||
Ideal vegetation index
|
||||
https://www.indexdatabase.de/db/i-single.php?id=276
|
||||
b=intercept of vegetation line
|
||||
a=soil line slope
|
||||
:return: index
|
||||
"""
|
||||
return (self.nir - b) / (a * self.red)
|
||||
|
||||
def IPVI(self):
|
||||
"""
|
||||
Infraself.red percentage vegetation index
|
||||
https://www.indexdatabase.de/db/i-single.php?id=35
|
||||
:return: index
|
||||
Infraself.red percentage vegetation index
|
||||
https://www.indexdatabase.de/db/i-single.php?id=35
|
||||
:return: index
|
||||
"""
|
||||
return (self.nir / ((self.nir + self.red) / 2)) * (self.NDVI() + 1)
|
||||
|
||||
def I(self): # noqa: E741,E743
|
||||
"""
|
||||
Intensity
|
||||
https://www.indexdatabase.de/db/i-single.php?id=36
|
||||
:return: index
|
||||
Intensity
|
||||
https://www.indexdatabase.de/db/i-single.php?id=36
|
||||
:return: index
|
||||
"""
|
||||
return (self.red + self.green + self.blue) / 30.5
|
||||
|
||||
def RVI(self):
|
||||
"""
|
||||
Ratio-Vegetation-Index
|
||||
http://www.seos-project.eu/modules/remotesensing/remotesensing-c03-s01-p01.html
|
||||
:return: index
|
||||
Ratio-Vegetation-Index
|
||||
http://www.seos-project.eu/modules/remotesensing/remotesensing-c03-s01-p01.html
|
||||
:return: index
|
||||
"""
|
||||
return self.nir / self.red
|
||||
|
||||
def MRVI(self):
|
||||
"""
|
||||
Modified Normalized Difference Vegetation Index RVI
|
||||
https://www.indexdatabase.de/db/i-single.php?id=275
|
||||
:return: index
|
||||
Modified Normalized Difference Vegetation Index RVI
|
||||
https://www.indexdatabase.de/db/i-single.php?id=275
|
||||
:return: index
|
||||
"""
|
||||
return (self.RVI() - 1) / (self.RVI() + 1)
|
||||
|
||||
def MSAVI(self):
|
||||
"""
|
||||
Modified Soil Adjusted Vegetation Index
|
||||
https://www.indexdatabase.de/db/i-single.php?id=44
|
||||
:return: index
|
||||
Modified Soil Adjusted Vegetation Index
|
||||
https://www.indexdatabase.de/db/i-single.php?id=44
|
||||
:return: index
|
||||
"""
|
||||
return (
|
||||
(2 * self.nir + 1)
|
||||
@ -451,51 +451,51 @@ class IndexCalculation:
|
||||
|
||||
def NormG(self):
|
||||
"""
|
||||
Norm G
|
||||
https://www.indexdatabase.de/db/i-single.php?id=50
|
||||
:return: index
|
||||
Norm G
|
||||
https://www.indexdatabase.de/db/i-single.php?id=50
|
||||
:return: index
|
||||
"""
|
||||
return self.green / (self.nir + self.red + self.green)
|
||||
|
||||
def NormNIR(self):
|
||||
"""
|
||||
Norm self.nir
|
||||
https://www.indexdatabase.de/db/i-single.php?id=51
|
||||
:return: index
|
||||
Norm self.nir
|
||||
https://www.indexdatabase.de/db/i-single.php?id=51
|
||||
:return: index
|
||||
"""
|
||||
return self.nir / (self.nir + self.red + self.green)
|
||||
|
||||
def NormR(self):
|
||||
"""
|
||||
Norm R
|
||||
https://www.indexdatabase.de/db/i-single.php?id=52
|
||||
:return: index
|
||||
Norm R
|
||||
https://www.indexdatabase.de/db/i-single.php?id=52
|
||||
:return: index
|
||||
"""
|
||||
return self.red / (self.nir + self.red + self.green)
|
||||
|
||||
def NGRDI(self):
|
||||
"""
|
||||
Normalized Difference self.green/self.red Normalized self.green self.red
|
||||
difference index, Visible Atmospherically Resistant Indices self.green
|
||||
(VIself.green)
|
||||
https://www.indexdatabase.de/db/i-single.php?id=390
|
||||
:return: index
|
||||
Normalized Difference self.green/self.red Normalized self.green self.red
|
||||
difference index, Visible Atmospherically Resistant Indices self.green
|
||||
(VIself.green)
|
||||
https://www.indexdatabase.de/db/i-single.php?id=390
|
||||
:return: index
|
||||
"""
|
||||
return (self.green - self.red) / (self.green + self.red)
|
||||
|
||||
def RI(self):
|
||||
"""
|
||||
Normalized Difference self.red/self.green self.redness Index
|
||||
https://www.indexdatabase.de/db/i-single.php?id=74
|
||||
:return: index
|
||||
Normalized Difference self.red/self.green self.redness Index
|
||||
https://www.indexdatabase.de/db/i-single.php?id=74
|
||||
:return: index
|
||||
"""
|
||||
return (self.red - self.green) / (self.red + self.green)
|
||||
|
||||
def S(self):
|
||||
"""
|
||||
Saturation
|
||||
https://www.indexdatabase.de/db/i-single.php?id=77
|
||||
:return: index
|
||||
Saturation
|
||||
https://www.indexdatabase.de/db/i-single.php?id=77
|
||||
:return: index
|
||||
"""
|
||||
max = np.max([np.max(self.red), np.max(self.green), np.max(self.blue)])
|
||||
min = np.min([np.min(self.red), np.min(self.green), np.min(self.blue)])
|
||||
@ -503,26 +503,26 @@ class IndexCalculation:
|
||||
|
||||
def IF(self):
|
||||
"""
|
||||
Shape Index
|
||||
https://www.indexdatabase.de/db/i-single.php?id=79
|
||||
:return: index
|
||||
Shape Index
|
||||
https://www.indexdatabase.de/db/i-single.php?id=79
|
||||
:return: index
|
||||
"""
|
||||
return (2 * self.red - self.green - self.blue) / (self.green - self.blue)
|
||||
|
||||
def DVI(self):
|
||||
"""
|
||||
Simple Ratio self.nir/self.red Difference Vegetation Index, Vegetation Index
|
||||
Number (VIN)
|
||||
https://www.indexdatabase.de/db/i-single.php?id=12
|
||||
:return: index
|
||||
Simple Ratio self.nir/self.red Difference Vegetation Index, Vegetation Index
|
||||
Number (VIN)
|
||||
https://www.indexdatabase.de/db/i-single.php?id=12
|
||||
:return: index
|
||||
"""
|
||||
return self.nir / self.red
|
||||
|
||||
def TVI(self):
|
||||
"""
|
||||
Transformed Vegetation Index
|
||||
https://www.indexdatabase.de/db/i-single.php?id=98
|
||||
:return: index
|
||||
Transformed Vegetation Index
|
||||
https://www.indexdatabase.de/db/i-single.php?id=98
|
||||
:return: index
|
||||
"""
|
||||
return (self.NDVI() + 0.5) ** (1 / 2)
|
||||
|
||||
|
Reference in New Issue
Block a user