资讯详情

python:计算索引的类算法(附完整源码)

python:计算索引类算法

 import numpy as np # Class implemented to calculus the index class IndexCalculation:      def __init__(self, red=None, green=None, blue=None, redEdge=None, nir=None):         # print("Numpy version: " np.__version__)         self.setMatrices(red=red, green=green, blue=blue, redEdge=redEdge, nir=nir)      def setMatrices(self, red=None, green=None, blue=None, redEdge=None, nir=None):         if red is not None:             self.red = red         if green is not None:             self.green = green         if blue is not None:             self.blue = blue         if redEdge is not None:             self.redEdge = redEdge         if nir is not None:             self.nir = nir         return True      def calculation(         self, index="" red=None, green=None, blue=None, redEdge=None, nir=None
    ):
        """ performs the calculation of the index with the values instantiated in the class :str index: abbreviation of index name to perform """
        self.setMatrices(red=red, green=green, blue=blue, redEdge=redEdge, nir=nir)
        funcs = { 
       
            "ARVI2": self.ARVI2,
            "CCCI": self.CCCI,
            "CVI": self.CVI,
            "GLI": self.GLI,
            "NDVI": self.NDVI,
            "BNDVI": self.BNDVI,
            "redEdgeNDVI": self.redEdgeNDVI,
            "GNDVI": self.GNDVI,
            "GBNDVI": self.GBNDVI,
            "GRNDVI": self.GRNDVI,
            "RBNDVI": self.RBNDVI,
            "PNDVI": self.PNDVI,
            "ATSAVI": self.ATSAVI,
            "BWDRVI": self.BWDRVI,
            "CIgreen": self.CIgreen,
            "CIrededge": self.CIrededge,
            "CI": self.CI,
            "CTVI": self.CTVI,
            "GDVI": self.GDVI,
            "EVI": self.EVI,
            "GEMI": self.GEMI,
            "GOSAVI": self.GOSAVI,
            "GSAVI": self.GSAVI,
            "Hue": self.Hue,
            "IVI": self.IVI,
            "IPVI": self.IPVI,
            "I": self.I,
            "RVI": self.RVI,
            "MRVI": self.MRVI,
            "MSAVI": self.MSAVI,
            "NormG": self.NormG,
            "NormNIR": self.NormNIR,
            "NormR": self.NormR,
            "NGRDI": self.NGRDI,
            "RI": self.RI,
            "S": self.S,
            "IF": self.IF,
            "DVI": self.DVI,
            "TVI": self.TVI,
            "NDRE": self.NDRE,
        }

        try:
            return funcs[index]()
        except KeyError:
            print("Index not in the list!")
            return False

    def ARVI2(self):
        """ Atmospherically Resistant Vegetation Index 2 https://www.indexdatabase.de/db/i-single.php?id=396 :return: index −0.18+1.17*(self.nir−self.red)/(self.nir+self.red) """
        return -0.18 + (1.17 * ((self.nir - self.red) / (self.nir + self.red)))

    def CCCI(self):
        """ 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)
        )

    def CVI(self):
        """ 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 """
        return (2 * self.green - self.red - self.blue) / (
            2 * self.green + self.red + self.blue
        )

    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 """
        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 """
        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 """
        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 """
        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 """
        return (self.nir - (self.green + self.blue)) / (
            self.nir + (self.green + self.blue)
        )

    def GRNDVI(self):
        """ 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)
        )

    def RBNDVI(self):
        """ 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 """
        return (self.nir - (self.green + self.red + self.blue)) / (
            self.nir + (self.green + self.red + self.blue)
        )

    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 """
        return a * (
            (self.nir - a * self.red - b)
            / (a * self.nir + self.red - a * b + X * (1 + a**2))
        )

    def BWDRVI(self):
        """ 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 """
        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 """
        return (self.nir / self.redEdge) - 1

    def CI(self):
        """ 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 """
        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 """
        return self.nir - self.green

    def EVI(self):
        """ 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)
        )

    def GEMI(self):
        """ 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
        )
        return n * (1 - 0.25 * n) - (self.red - 0.125) / (1 - self.red)

    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 """
        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 """
        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 """
        return np.arctan(
            ((2 * self.red - self.green - self.blue) / 30.5) * (self.green - self.blue)
        )

    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 """
        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 """
        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 """
        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 """
        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 """
        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 """
        return (
            (2 * self.nir + 1)
            - ((2 * self.nir + 1) ** 2 - 8 * (self.nir - self.red)) ** (1 / 2)
        ) / 2

    def NormG(self):
        """ 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 """
        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 """
        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 """
        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 """
        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 """
        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)])
        return (max - min) / max

    def IF(self):
        """ 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 """
        return self.nir / self.red

    def TVI(self):
        """ Transformed Vegetation Index https://www.indexdatabase.de/db/i-single.php?id=98 :return: index """
        return (self.NDVI() + 0.5) ** (1 / 2)

    def NDRE(self):
        return (self.nir - self.redEdge) / (self.nir + self.redEdge)




标签: 贴片电感cvi1014kz05

锐单商城拥有海量元器件数据手册IC替代型号,打造 电子元器件IC百科大全!

 锐单商城 - 一站式电子元器件采购平台  

 深圳锐单电子有限公司