Esempio n. 1
0
    def executa(self):

        self.function = SpectreStatisticalStractor()

        self.print_text(u"Organizando dados necessários")

        root_in = str(self.ui.leInFolder.text())
        root_in = path.normpath(root_in)

        imagens_entrada = SerialFile()
        imagens_entrada = imagens_entrada.loadListByRoot(root_in, "tif, img")

        if (len(imagens_entrada) == 0):
            self.console(u"Nenhuma imagem encontrada, abortando função")
            self.finalizar()
            self.console(u"Função finalizada")
            return

        root_out = str(self.ui.leOutFolder.text())
        root_out = path.normpath(root_out)

        paramsIN = TableData()
        paramsIN["images"] = imagens_entrada
        paramsIN["statistics"] = self.statistical_list

        images_saida = self.function.executar(paramsIN)

        self.print_text("Salvando imagens")

        if self.funcao_cancelada():

            return None

        for imagem in images_saida:

            try:
                imagem.saveRasterData(file_path=root_out, ext="tif")
                self.console("Imagem " + imagem.file_name + " salva.")
            except:
                self.console(
                    u"Não foi possivel salvar a imagem: " + imagem.file_name +
                    u". Verifique se o arquivo está sendo usado por outro aplicativo."
                )

        self.print_text(u"Conluído.")
        self.finalizar()
    def executa(self):
        
        self.function = SpectreStatisticalStractor()
        

        self.print_text(u"Organizando dados necessários")
        
        root_in = str(self.ui.leInFolder.text())
        root_in = path.normpath(root_in)
        
        imagens_entrada = SerialFile()
        imagens_entrada = imagens_entrada.loadListByRoot(root_in, "tif, img")
        
        if(len(imagens_entrada)==0):
            self.console(u"Nenhuma imagem encontrada, abortando função")
            self.finalizar()
            self.console(u"Função finalizada")
            return
        
        root_out = str(self.ui.leOutFolder.text())
        root_out = path.normpath(root_out)
        
        paramsIN = TableData()
        paramsIN["images"] = imagens_entrada
        paramsIN["statistics"] = self.statistical_list

        images_saida = self.function.executar(paramsIN)
    
        self.print_text("Salvando imagens")
        
        if self.funcao_cancelada(): 
            
            return None
        
        for imagem in images_saida :

            try:
                imagem.saveRasterData(file_path=root_out, ext="tif")   
                self.console("Imagem "+ imagem.file_name+" salva.")
            except:
                self.console(u"Não foi possivel salvar a imagem: " + imagem.file_name+ u". Verifique se o arquivo está sendo usado por outro aplicativo.")
            
        self.print_text(u"Conluído.")
        self.finalizar()
Esempio n. 3
0
    def __execOperation__(self):

        images = self.paramentrosIN_carregados["images"]
        if self.paramentrosIN_carregados.has_key("conf_algoritimo"):
            conf_algoritimo = self.paramentrosIN_carregados["conf_algoritimo"]
        else:
            conf_algoritimo = dict()
        img_matrix = images.loadListRasterData()

        if img_matrix == None:
            print self.console("Erro no carregamento das imagens")
            threading.currentThread().stop()
            return

        self.imagem_0 = img_matrix[
            0]  # imagem de referencia pra leitura de valores null
        conf_algoritimo["NoData"] = self.imagem_0[0][0]

        self.n_bandas = len(img_matrix)
        self.n_linhas = len(img_matrix[0])
        self.n_colunas = len(img_matrix[0][0])

        sys.stdout.write("Numero de bandas: " + str(self.n_bandas))
        sys.stdout.write(" Numero de linhas: " + str(self.n_linhas))
        print(" Numero de colunas: " + str(self.n_colunas))

        linhas_filtradas = self.filtrar(img_matrix, conf_algoritimo)
        if threading.currentThread().stopped(): return
        results = linhas_filtradas

        imgs_saida = SerialFile()
        imgs_saida.metadata = images.metadata
        i_imagem = 0

        for img in self.paramentrosIN_carregados["images"]:
            img.data = results[i_imagem]
            i_imagem += 1
            imgs_saida.append(img)

        return imgs_saida
Esempio n. 4
0
    def carregarParamIN(self):

        images = SerialFile()
        parametrosIN = TableData()
        root_in = self.ui.leInFolder.text()
        root_in = _fromUtf8(str(root_in) + "\\")
        root_in = str(root_in).replace("\\", "/")

        images.loadListByRoot(root_in)
        self.print_text(u"Numero de imagens encontradas:" + str(len(images)))

        parametrosIN["images"] = images

        conf_algoritimo = TableData()
        conf_algoritimo["window_size"] = self.ui.leWindowSize.text()
        conf_algoritimo["order"] = self.ui.leOrdem.text()
        #if self.ui.checkBox.isChecked() : conf_algoritimo["null_value"] = double(self.ui.leNullValue.text())
        #else : conf_algoritimo["null_value"] = FileData(data= None)

        parametrosIN["conf_algoritimo "] = conf_algoritimo

        return parametrosIN
Esempio n. 5
0
    def carregarParamIN(self):
        
        images = SerialFile()
        parametrosIN = TableData()
        root_in = self.ui.leInFolder.text()
        root_in = _fromUtf8(str(root_in) + "\\")
        root_in = str(root_in).replace("\\", "/")

        images.loadListByRoot(root_in)
        self.print_text(u"Numero de imagens encontradas:" + str(len(images)))
        
        parametrosIN["images"] = images
        
        conf_algoritimo = TableData()
        conf_algoritimo["window_size"] = self.ui.leWindowSize.text()
        conf_algoritimo["order"] = self.ui.leOrdem.text()
        #if self.ui.checkBox.isChecked() : conf_algoritimo["null_value"] = double(self.ui.leNullValue.text())
        #else : conf_algoritimo["null_value"] = FileData(data= None)
        
        parametrosIN["conf_algoritimo "] = conf_algoritimo
        
        return parametrosIN
Esempio n. 6
0
    def executa(self):

        self.function = ExtratorSemeaduraColheita()
        self.function.print_text = self.print_text

        root_out = str(self.ui.leOutFolder.text())
        root_in = str(self.ui.leInFolder.text())

        parametrosIN = TableData()
        images = SerialFile(root_path=root_in)
        parametrosIN["images"] = images
        parametrosIN["avanco_semeadura"] = double(
            self.ui.dspASemeadura.value())
        parametrosIN["avanco_colheita"] = double(self.ui.dsbAColheita.value())
        parametrosIN["intervalo_pico"] = str(self.ui.lePPico.text())
        parametrosIN["intervalo_semeadura"] = str(self.ui.lePSemeadura.text())
        parametrosIN["intervalo_colheita"] = str(self.ui.lePColheita.text())
        parametrosIN["null_value"] = double(self.ui.leNullValue.text())
        parametrosIN["prefixo"] = str(self.ui.lePrefixo.text())
        parametrosIN["sufixo"] = str(self.ui.leSufixo.text())
        parametrosIN["mask"] = str(self.ui.leMascara.text())

        images = self.function.executar(parametrosIN)

        if self.funcao_cancelada(): return

        self.print_text(u"Salvando imagens.")

        semeadura = images["imagem_semeadura"]
        semeadura.file_name = self.ui.leImgSemeadura.text()
        semeadura.file_path = str(self.ui.leOutFolder.text())
        semeadura.file_ext = "tif"
        semeadura.saveRasterData()

        colheita = images["imagem_colheita"]
        colheita.file_name = self.ui.leImgColheita.text()
        colheita.file_path = str(self.ui.leOutFolder.text())
        colheita.file_ext = "tif"
        colheita.saveRasterData()

        pico = images["imagem_pico"]
        pico.file_name = self.ui.leImgPico.text()
        pico.file_path = str(self.ui.leOutFolder.text())
        pico.file_ext = "tif"
        pico.saveRasterData()

        self.print_text("Terminado.")
        self.finalizar()
Esempio n. 7
0
    def executa(self):
        
        '''
            Criando arquivos CSVs e VRTs para submeter a interpolação
        '''
        
        self.console(u"Recolhendo informações")
        
        self.function = RasterToCSVeVRT()
        paramIn = TableData()
        paramIn["images"] = SerialFile(root_path=str(self.ui.txInFolder.text()))
        paramIn["out_folder"] = str(self.ui.txOutFolder.text())
        
        self.print_text(u'Interpolando imagens...')

        resultado = self.interpolar_todas_as_imagens(paramIn)
            
        if self.funcao_cancelada():
            #self.console(u"Função interrompida")
            self.finalizar()
        elif resultado is not None:
            self.console(u"Função concluída")
            self.finalizar()
Esempio n. 8
0
            imagem_amplitude.metadata = saida.metadata
            imagem_amplitude.file_name = "imagem_amplitude"
            saida.append(imagem_amplitude)

        self.print_text(
            u"imagens prontas para gravar, statistical stractor completo")

        return saida


if __name__ == '__main__':

    ss = SpectreStatisticalStractor()

    root_ = "C:\\Users\\Paloschi\\Desktop\\data\\Rasters\\TesteFiltro\\entrada\\"
    images = SerialFile(root_path=root_)
    images.loadListByRoot(filtro="tif")

    parametrosIN = TableData()

    parametrosIN["images"] = images
    parametrosIN["null_value"] = 0

    statistics = list()
    statistics.append("media")
    statistics.append("cv")

    parametrosIN["statistics"] = statistics

    ss.data = parametrosIN
    resultados = ss.data
Esempio n. 9
0
    def __execOperation__(self):

        global nullValue, imagem_media, imagem_sd, imagem_cv, imagem_soma, imagem_min, imagem_max
        global imagem_mediana, imagem_amplitude, images, n_linhas, n_colunas, threads_ready, n_threadings

        print("executando operação")

        images_super = self.paramentrosIN_carregados["images"]
        print("Numero de imagens para ler: " + str(len(images_super)))
        nullValue = np.double(images_super[0].getRasterInformation()["NoData"])
        statistics = self.paramentrosIN_carregados["statistics"]

        print("Estatisticas a fazer: ", statistics)

        do = dict()

        do["Media"] = "media" in statistics
        do["CV"] = "cv" in statistics
        do["SD"] = "sd" in statistics
        do["Soma"] = "soma" in statistics
        do["Min"] = "min" in statistics
        do["Max"] = "max" in statistics
        do["Mediana"] = "mediana" in statistics
        do["Amplitude"] = "amplitude" in statistics

        images = images_super.loadListRasterData()

        print("Numero de imagens lidas: " + str(len(images)))

        n_linhas = len(images[0])
        n_colunas = len(images[0][0])

        for img in images:
            if len(img) != n_linhas or len(img[0]) != n_colunas:
                raise IndexError(
                    "Erro - As imagens precisam ter o mesmo número de linhas e colunas"
                )

        print("numero de colunas e linhas: " + str(n_linhas) + " : " +
              str(n_colunas))

        #imagem_referencia = [[0 for x in range(n_colunas)] for x in range(n_linhas)]
        imagem_referencia = np.zeros((n_linhas, n_colunas))

        imagem_out = dict

        if do["Media"]:
            imagem_out["media"] = array(
                imagem_referencia)  #.astype(dtype="int16")
        if do["CV"]:
            imagem_out["cv"] = array(
                imagem_referencia)  #.astype(dtype="int16")
        if do["SD"]:
            imagem_out["sd"] = array(
                imagem_referencia)  #.astype(dtype="int16")
        if do["Soma"]:
            imagem_out["soma"] = array(
                imagem_referencia)  #.astype(dtype="int16")
        if do["Min"]:
            imagem_out["min"] = array(
                imagem_referencia)  #.astype(dtype="int16")
        if do["Max"]:
            imagem_out["max"] = array(
                imagem_referencia)  #.astype(dtype="int16")
        if do["Mediana"]:
            imagem_out["mediana"] = array(
                imagem_referencia)  #.astype(dtype="int16")
        if do["Amplitude"]:
            imagem_out["amplitude"] = array(
                imagem_referencia)  #.astype(dtype="int16")

        print("processando:")

        numero_de_nucleos = GeneralTools.available_cpu_count()
        n_threadings = int(numero_de_nucleos - 2)
        print("Numero de threads", n_threadings)
        threads_ready = 0

        pool = Pool()
        #pool = multiprocessing.Pool(processes=n_threadings)

        for i in range(0, n_threadings):
            #t = threading.Thread(target=thread_process, args=(n_linhas/n_threadings*i, n_linhas/n_threadings*(i+1)))
            #t.start()
            linha_inicial = n_linhas / n_threadings * i
            linha_final = n_linhas / n_threadings * (i + 1)
            p = Process(target=thread_process,
                        args=(linha_inicial, linha_final))
            p.start()

            #pool.map(thread_process(n_linhas/n_threadings*i, n_linhas/n_threadings*(i+1)))
            #pool.close()

        while (threads_ready < n_threadings):
            pass

        print("Arrumando imagens de saida")

        saida = SerialFile()
        saida.metadata = self.paramentrosIN_carregados["images"][0].metadata

        if do["Media"]:
            imagem_media = RasterFile(data=imagem_media)
            imagem_media.metadata = saida.metadata
            imagem_media.file_name = "imagem_media"
            saida.append(imagem_media)
        if do["CV"]:
            imagem_cv = RasterFile(data=imagem_cv)
            imagem_cv.metadata = saida.metadata
            imagem_cv.file_name = "imagem_coeficiente_variacao"
            saida.append(imagem_cv)
        if do["SD"]:
            imagem_sd = RasterFile(data=imagem_sd)
            imagem_sd.metadata = saida.metadata
            imagem_sd.file_name = "imagem_desvio_padrao"
            saida.append(imagem_sd)
        if do["Soma"]:
            imagem_soma = RasterFile(data=imagem_soma)
            imagem_soma.metadata = saida.metadata
            imagem_soma.file_name = "imagem_soma"
            saida.append(imagem_soma)
        if do["Min"]:
            imagem_min = RasterFile(data=imagem_min)
            imagem_min.metadata = saida.metadata
            imagem_min.file_name = "imagem_minimo"
            saida.append(imagem_min)
        if do["Max"]:
            imagem_max = RasterFile(data=imagem_max)
            imagem_max.metadata = saida.metadata
            imagem_max.file_name = "imagem_maximo"
            saida.append(imagem_max)
        if do["Mediana"]:
            imagem_mediana = RasterFile(data=imagem_mediana)
            imagem_mediana.metadata = saida.metadata
            imagem_mediana.file_name = "imagem_mediana"
            saida.append(imagem_mediana)
        if do["Amplitude"]:
            imagem_amplitude = RasterFile(data=imagem_amplitude)
            imagem_amplitude.metadata = saida.metadata
            imagem_amplitude.file_name = "imagem_amplitude"
            saida.append(imagem_amplitude)

        print("imagens prontas para gravar, statistical stractor completo")

        return saida
Esempio n. 10
0
    def __execOperation__(self):
        
        self.print_text(u"Iniciando função")


        images_super = self.paramentrosIN_carregados["images"]
        self.console(u"Número de imagens para ler: " + str(len(images_super)))
        nullValue = self.paramentrosIN_carregados["null_value"]
        statistics = self.paramentrosIN_carregados["statistics"]
        
        #self.print_text("Estatisticas a fazer: ", statistics)
        
        doMedia = "media" in statistics 
        doCV = "cv" in statistics
        doSD = "sd" in statistics
        doSoma = "soma" in statistics
        doMin = "min" in statistics
        doMax = "max" in statistics
        doMediana = "mediana" in statistics
        doAmplitude = "amplitude" in statistics
        
        images = images_super.loadListRasterData()
        
        #self.print_text("Numero de imagens lidas: " + str(len(images)))
        
        n_linhas = len(images[0])
        n_colunas = len(images[0][0])
        
        for img in images:
            if len(img) != n_linhas or len(img[0]) != n_colunas:
                raise IndexError("Erro - As imagens precisam ter o mesmo número de linhas e colunas")
                
                
        #self.print_text("numero de colunas e linhas: " + str(n_linhas) + " : " + str(n_colunas))
        
        #imagem_referencia = [[0 for x in range(n_colunas)] for x in range(n_linhas)]  
        imagem_referencia = np.zeros((n_linhas, n_colunas))
        
        if doMedia : imagem_media = array(imagem_referencia).astype(dtype="float32")
        if doCV : imagem_cv = array(imagem_referencia).astype(dtype="float32")
        if doSD : imagem_sd = array(imagem_referencia)#.astype(dtype="int16")
        if doSoma : imagem_soma = array(imagem_referencia).astype(dtype="float32")
        if doMin : imagem_min = array(imagem_referencia).astype(dtype="float32")
        if doMax : imagem_max = array(imagem_referencia).astype(dtype="float32")
        if doMediana : imagem_mediana = array(imagem_referencia)#.astype(dtype="int16")
        if doAmplitude : imagem_amplitude = array(imagem_referencia).astype(dtype="float32")
        
        

        self.print_text(u"Processando:")
        
        
        #progress( 0.0)
        
        for i_linha in range(0, n_linhas):
            
            #status = i_linha+1/float(n_linhas)
            #progress(float(i_linha/float(n_linhas)))
            self.progresso = (float(i_linha/float(n_linhas)))*100

            for i_coluna in range(0, n_colunas):
                    line = list()
                    
                
                    if threading.currentThread().stopped() : return 

                #if nullValue != None and float(nullValue) == images[1][i_linha][i_coluna] :
                    #pass
                
                #else:              
                    for img in images:
                        line.append(img[i_linha][i_coluna])
                    
                    mean = None
                    sd = None
                    
                    if doCV : 

                        mean = np.nanmean(line)
                        sd = np.nanstd(line) 
                        
                        divisor = mean * 100
                        if divisor != 0 : cv = sd / mean * 100 
                        else : cv = 0
                        
                        imagem_cv[i_linha][i_coluna] = cv
        
                        
                    
                    if doMedia : 
                        if mean == None : mean = np.nanmean(line) # calcula a média
                        imagem_media[i_linha][i_coluna] = mean
                    
                    
                    if doSD : 
                        if sd == None : sd = np.nanstd(line)  # calcula o desvio padrão
                        imagem_sd[i_linha][i_coluna] = sd
                        
                    if doSoma : 
                        soma = np.nansum(line)
                        imagem_soma[i_linha][i_coluna] = soma
                    
                    minimo = None 
                    if doMin : 
                        minimo = np.nanmin(line)
                        imagem_min[i_linha][i_coluna] = minimo
                    
                    maximo = None
                    if doMax : 
                        maximo = np.nanmax(line)
                        imagem_max[i_linha][i_coluna] = maximo
                    
                    if doMediana :
                        mediana = np.nanmedian(line)
                        imagem_mediana[i_linha][i_coluna] = mediana
                    
                    if doAmplitude :
                        if minimo == None : minimo = np.nanmin(line)
                        if maximo == None : maximo = np.nanmax(line)
                        amplitude = maximo - minimo
                        imagem_amplitude[i_linha][i_coluna] = amplitude
        
        self.print_text(u"Arrumando imagens de saida")
        
        saida = SerialFile ()
        saida.metadata = self.paramentrosIN_carregados["images"][0].metadata
        
        if doMedia: 
            imagem_media = RasterFile(data = imagem_media)
            imagem_media.metadata = saida.metadata
            imagem_media.file_name = "imagem_media"
            saida.append(imagem_media) 
        if doCV:
            imagem_cv = RasterFile(data = imagem_cv)
            imagem_cv.metadata = saida.metadata
            imagem_cv.file_name = "imagem_coeficiente_variacao"
            saida.append(imagem_cv)
        if doSD : 
            imagem_sd = RasterFile(data = imagem_sd)
            imagem_sd.metadata = saida.metadata
            imagem_sd.file_name = "imagem_desvio_padrao"
            saida.append(imagem_sd)
        if doSoma : 
            imagem_soma = RasterFile(data = imagem_soma)
            imagem_soma.metadata = saida.metadata
            imagem_soma.file_name = "imagem_soma"
            saida.append(imagem_soma)
        if doMin : 
            imagem_min = RasterFile(data = imagem_min)
            imagem_min.metadata = saida.metadata
            imagem_min.file_name = "imagem_minimo"
            saida.append(imagem_min)
        if doMax : 
            imagem_max = RasterFile(data = imagem_max)
            imagem_max.metadata = saida.metadata
            imagem_max.file_name = "imagem_maximo"
            saida.append(imagem_max)
        if doMediana : 
            imagem_mediana = RasterFile(data = imagem_mediana)
            imagem_mediana.metadata = saida.metadata
            imagem_mediana.file_name = "imagem_mediana"
            saida.append(imagem_mediana)
        if doAmplitude : 
            imagem_amplitude = RasterFile(data = imagem_amplitude)
            imagem_amplitude.metadata = saida.metadata
            imagem_amplitude.file_name = "imagem_amplitude"
            saida.append(imagem_amplitude)
            
        self.print_text(u"imagens prontas para gravar, statistical stractor completo")

        return saida
Esempio n. 11
0
    def __execOperation__(self):
        
        images = self.paramentrosIN_carregados["images"]
        if self.paramentrosIN_carregados.has_key("conf_algoritimo") : conf_algoritimo = self.paramentrosIN_carregados["conf_algoritimo"]
        else : conf_algoritimo = dict()
        img_matrix = images.loadListRasterData()
        
        if img_matrix == None:
            print self.console("Erro no carregamento das imagens")
            threading.currentThread().stop() 
            return
        
        self.imagem_0 = img_matrix[0] # imagem de referencia pra leitura de valores null
        conf_algoritimo["NoData"] = self.imagem_0[0][0]
        #conf_algoritimo["NoData"] = double(images[0].getRasterInformation()["NoData"])

        self.n_bandas = len(img_matrix)
        self.n_linhas = len(img_matrix[0])
        self.n_colunas = len(img_matrix[0][0])
        
        sys.stdout.write("Numero de bandas: " + str(self.n_bandas))
        sys.stdout.write(" Numero de linhas: " + str(self.n_linhas))
        print(" Numero de colunas: " + str(self.n_colunas))
        
        
    
        linhas_filtradas = self.filtrar(img_matrix, conf_algoritimo)
        if threading.currentThread().stopped()  : return 
        results = linhas_filtradas
        
        #results = np.zeros((self.n_bandas, self.n_linhas, self.n_colunas,))
        #results = array(results).astype(dtype="int16")

        #i_imagem = 0
        #i_linha = 0
        #i_coluna = 0
        
        #sys.stdout.write( "Criando nova série de imagens com valores filtrados: ")
        #progress( 0.0 )
        
        #print ("numero de colunas", self.n_colunas)

        #for linha in linhas_filtradas:
            
            #i_imagem=0      
            #progress( (i_linha+1) / float(self.n_linhas))  
              
            #while self.imagem_0[i_linha][i_coluna] == conf_algoritimo["NoData"]:
                #i_coluna+=1
                #if i_coluna>=self.n_colunas:
                    #i_coluna=0
                    #i_linha+=1
                    
            #for pixel in linha:
                #results[i_imagem][i_linha][i_coluna] = pixel
                #i_imagem+=1
            #i_coluna+=1
 
            #if i_coluna>=self.n_colunas:
                    #i_coluna=0
                    #i_linha+=1   
        
        imgs_saida = SerialFile()
        imgs_saida.metadata = images.metadata
        i_imagem = 0
        for img in self.paramentrosIN_carregados["images"]:
            img.data = results[i_imagem]
            i_imagem+=1
            imgs_saida.append(img)
        
        #saida = TableData()
        #saida["images"] = img_saida
        
        return imgs_saida
Esempio n. 12
0
# -*- coding: utf-8 -*-
'''
Created on Aug 17, 2015

@author: Paloschi
'''

from Modelo.beans import SerialFile
import rasterio
from numpy.core.numeric import array
import numpy

pathIn = "C:\\Users\\Paloschi\\Desktop\\New folder\\recortadas"
pathOut = "C:\Users\Paloschi\Desktop\New folder\EVI2"

imagens_rgb = SerialFile(root_path=pathIn)
imagens_rgb.loadListByRoot(filtro = "tif")

for img in imagens_rgb:
    with rasterio.open(img.file_full_path) as raster:
        r, g, b = raster.read()
        metadata = raster.meta
        
        '''EVI2= 2,5 [(N-R) / (N + 2,4R+1)] '''
        
    N = r.astype(rasterio.float64)# vermelho é o infravermelho próximo 
    R = b.astype(rasterio.float64) # azul é o vermelho
    
    #print r
    #print b
    
Esempio n. 13
0
    def __execOperation__(self):
        
        global nullValue, imagem_media, imagem_sd, imagem_cv, imagem_soma, imagem_min, imagem_max
        global imagem_mediana, imagem_amplitude, images, n_linhas, n_colunas, threads_ready, n_threadings
        
        print("executando operação")
        
        images_super = self.paramentrosIN_carregados["images"]
        print("Numero de imagens para ler: " + str(len(images_super)))
        nullValue = np.double(images_super[0].getRasterInformation()["NoData"])
        statistics = self.paramentrosIN_carregados["statistics"]
        
        print("Estatisticas a fazer: ", statistics)
        
        do = dict()
        
        do["Media"] = "media" in statistics 
        do["CV"] = "cv" in statistics
        do["SD"] = "sd" in statistics
        do["Soma"] = "soma" in statistics
        do["Min"] = "min" in statistics
        do["Max"] = "max" in statistics
        do["Mediana"] = "mediana" in statistics
        do["Amplitude"] = "amplitude" in statistics
        
        images = images_super.loadListRasterData()
        
        print("Numero de imagens lidas: " + str(len(images)))
        
        n_linhas = len(images[0])
        n_colunas = len(images[0][0])
        
        for img in images:
            if len(img) != n_linhas or len(img[0]) != n_colunas:
                raise IndexError("Erro - As imagens precisam ter o mesmo número de linhas e colunas")
                   
        print("numero de colunas e linhas: " + str(n_linhas) + " : " + str(n_colunas))
        
        #imagem_referencia = [[0 for x in range(n_colunas)] for x in range(n_linhas)]  
        imagem_referencia = np.zeros((n_linhas, n_colunas))
        
        imagem_out = dict
        
        if do["Media"] : imagem_out["media"] = array(imagem_referencia)#.astype(dtype="int16")
        if do["CV"] : imagem_out["cv"] = array(imagem_referencia)#.astype(dtype="int16")
        if do["SD"] : imagem_out["sd"] = array(imagem_referencia)#.astype(dtype="int16")
        if do["Soma"] : imagem_out["soma"] = array(imagem_referencia)#.astype(dtype="int16")
        if do["Min"] : imagem_out["min"] = array(imagem_referencia)#.astype(dtype="int16")
        if do["Max"] : imagem_out["max"] = array(imagem_referencia)#.astype(dtype="int16")
        if do["Mediana"] : imagem_out["mediana"] = array(imagem_referencia)#.astype(dtype="int16")
        if do["Amplitude"] : imagem_out["amplitude"] = array(imagem_referencia)#.astype(dtype="int16")

        print("processando:") 
        
        numero_de_nucleos = GeneralTools.available_cpu_count()
        n_threadings = int(numero_de_nucleos-2)
        print ("Numero de threads", n_threadings)
        threads_ready = 0
        
        pool = Pool()
        #pool = multiprocessing.Pool(processes=n_threadings)

        for i in range(0, n_threadings):
            #t = threading.Thread(target=thread_process, args=(n_linhas/n_threadings*i, n_linhas/n_threadings*(i+1)))
            #t.start()
            linha_inicial = n_linhas/n_threadings*i
            linha_final = n_linhas/n_threadings*(i+1)
            p = Process(target= thread_process, args=(linha_inicial, linha_final))
            p.start()
            
            #pool.map(thread_process(n_linhas/n_threadings*i, n_linhas/n_threadings*(i+1)))
            #pool.close()
           
        
                    
        
        while (threads_ready < n_threadings):
            pass
       
        print("Arrumando imagens de saida")
        
        saida = SerialFile ()
        saida.metadata = self.paramentrosIN_carregados["images"][0].metadata
        
        if do["Media"]: 
            imagem_media = RasterFile(data = imagem_media)
            imagem_media.metadata = saida.metadata
            imagem_media.file_name = "imagem_media"
            saida.append(imagem_media) 
        if do["CV"]:
            imagem_cv = RasterFile(data = imagem_cv)
            imagem_cv.metadata = saida.metadata
            imagem_cv.file_name = "imagem_coeficiente_variacao"
            saida.append(imagem_cv)
        if do["SD"] : 
            imagem_sd = RasterFile(data = imagem_sd)
            imagem_sd.metadata = saida.metadata
            imagem_sd.file_name = "imagem_desvio_padrao"
            saida.append(imagem_sd)
        if do["Soma"] : 
            imagem_soma = RasterFile(data = imagem_soma)
            imagem_soma.metadata = saida.metadata
            imagem_soma.file_name = "imagem_soma"
            saida.append(imagem_soma)
        if do["Min"] : 
            imagem_min = RasterFile(data = imagem_min)
            imagem_min.metadata = saida.metadata
            imagem_min.file_name = "imagem_minimo"
            saida.append(imagem_min)
        if do["Max"] : 
            imagem_max = RasterFile(data = imagem_max)
            imagem_max.metadata = saida.metadata
            imagem_max.file_name = "imagem_maximo"
            saida.append(imagem_max)
        if do["Mediana"] : 
            imagem_mediana = RasterFile(data = imagem_mediana)
            imagem_mediana.metadata = saida.metadata
            imagem_mediana.file_name = "imagem_mediana"
            saida.append(imagem_mediana)
        if do["Amplitude"] : 
            imagem_amplitude = RasterFile(data = imagem_amplitude)
            imagem_amplitude.metadata = saida.metadata
            imagem_amplitude.file_name = "imagem_amplitude"
            saida.append(imagem_amplitude)
            
        print("imagens prontas para gravar, statistical stractor completo")

        return saida
Esempio n. 14
0
    def __execOperation__(self):
        
        imagensIN = self.paramentrosIN_carregados["images"]
        outFolder = self.paramentrosIN_carregados["out_folder"]
        
        imagensIN.loadListByRoot()
        
        listaCSV = SerialFile()
        listaVRT = SerialFile()
        
        n_imagens = len(imagensIN)
        i_imagem = 0
        self.setProgresso(i_imagem, n_imagens)
        
        for img in imagensIN :

            matriz = img.loadRasterData()
            nome_img = img.file_name
            info = img.getRasterInformation()
    
            xmin = float(info["xmin"])
            xmax = float(info["xmax"])
            nx = float(info["nx"])
            x_pixelSize = (xmax - xmin) / nx
        
            ymin = float(info["ymin"])
            ymax = float(info["ymax"])
            ny = float(info["ny"])
            y_pixelSize = (ymax - ymin) / ny    
        
            n_linhas = len(matriz)
            n_colunas = len(matriz[0]) 
            
            csv_file = FileData(file_path=outFolder, file_name = nome_img, ext = "csv")
            file_csv_path = csv_file.file_full_path
            
            init_y_position = ymin + (y_pixelSize/2)
            init_x_position = xmin + (x_pixelSize/2)
            
            with open(file_csv_path,'w') as csv:
                csv.write("Easting,Northing,Value\n")
                for i_linha in range(0, n_linhas):
                    progress(i_linha/float(n_linhas-1))
                        
                    cy = init_y_position + (y_pixelSize * i_linha)
                    cy = str(cy)
                    for i_coluna in range(0, n_colunas):
                        
                        value = matriz[i_linha][i_coluna]
                        if threading.current_thread().stopped() : return None

                        cx = init_x_position + (x_pixelSize * i_coluna)
                        line = str(cx) + ',' + cy + ',' + str(value) + '\n'
                        csv.write(line)

            listaCSV.append(csv_file)
            
            vrt_file = csv_file
            vrt_file.file_ext = "vrt"
                
            root = etree.Element("OGRVRTDataSource")
            csv_node = etree.Element("OGRVRTLayer", name=csv_file.file_name)   
            root.append(csv_node)
                                      
            csv_node.append(etree.XML("<SrcDataSource>" +file_csv_path+"</SrcDataSource>"))
            csv_node.append(etree.XML("<GeometryType>wkbPoint</GeometryType>"))
            csv_node.append(etree.XML('<GeometryField encoding="PointFromColumns" x="Easting" y="Northing" z="Value"/>'))
                
            tree = etree.ElementTree(root)
            tree.write(vrt_file.file_full_path, pretty_print=True)
            
            listaVRT.append(vrt_file)
            
            i_imagem = i_imagem + 1.0
            self.setProgresso(i_imagem, n_imagens)

        saida = TableData()
        saida["CSVs"] = listaCSV
        saida["VRTs"] = listaVRT
        
        return saida
Esempio n. 15
0
        if doAmplitude : 
            imagem_amplitude = RasterFile(data = imagem_amplitude)
            imagem_amplitude.metadata = saida.metadata
            imagem_amplitude.file_name = "imagem_amplitude"
            saida.append(imagem_amplitude)
            
        self.print_text(u"imagens prontas para gravar, statistical stractor completo")

        return saida
    
if __name__ == '__main__':   
    
    ss = SpectreStatisticalStractor()
    
    root_ = "C:\\Users\\Paloschi\\Desktop\\data\\Rasters\\TesteFiltro\\entrada\\"
    images = SerialFile(root_path  =  root_)
    images.loadListByRoot(filtro = "tif")
    
    parametrosIN = TableData()
    
    parametrosIN["images"] = images
    parametrosIN["null_value"] = 0
    
    statistics = list()
    statistics.append("media")
    statistics.append("cv")
    
    parametrosIN["statistics"] = statistics

    ss.data = parametrosIN
    resultados = ss.data
Esempio n. 16
0
    def __execOperation__(self):

        self.print_text(u"Iniciando função")

        images_super = self.paramentrosIN_carregados["images"]
        self.console(u"Número de imagens para ler: " + str(len(images_super)))
        #nullValue = self.paramentrosIN_carregados["null_value"]
        statistics = self.paramentrosIN_carregados["statistics"]

        #self.print_text("Estatisticas a fazer: ", statistics)

        doMedia = "media" in statistics
        doCV = "cv" in statistics
        doSD = "sd" in statistics
        doSoma = "soma" in statistics
        doMin = "min" in statistics
        doMax = "max" in statistics
        doMediana = "mediana" in statistics
        doAmplitude = "amplitude" in statistics

        imagem_referencia = images_super[0].loadRasterData()
        n_linhas = len(imagem_referencia)
        n_colunas = len(imagem_referencia[0])

        for img in images_super:
            img = img.loadRasterData()
            if len(img) != n_linhas or len(img[0]) != n_colunas:
                raise IndexError(
                    "Erro - As imagens precisam ter o mesmo número de linhas e colunas"
                )

        imagem_referencia = np.zeros((n_linhas, n_colunas))

        if doMedia:
            imagem_media = array(imagem_referencia).astype(dtype="float32")
        if doCV: imagem_cv = array(imagem_referencia).astype(dtype="float32")
        if doSD: imagem_sd = array(imagem_referencia)  #.astype(dtype="int16")
        if doSoma:
            imagem_soma = array(imagem_referencia).astype(dtype="float32")
        if doMin: imagem_min = array(imagem_referencia).astype(dtype="float32")
        if doMax: imagem_max = array(imagem_referencia).astype(dtype="float32")
        if doMediana:
            imagem_mediana = array(imagem_referencia)  #.astype(dtype="int16")
        if doAmplitude:
            imagem_amplitude = array(imagem_referencia).astype(dtype="float32")

        self.print_text(u"Processando:")

        if doSoma:
            n_imagens = len(images_super)
            self.print_text(u"Somando Imagens:")
            progress(0.0)
            for i in range(n_imagens - 1):
                imagem_soma += images_super[i + 1].loadRasterData()
                self.setProgresso(i, n_imagens)

        #progress( 0.0)

        if doMedia or doCV or doSD or doMin or doMax or doMediana or doAmplitude:
            images = images_super.loadListRasterData()

            for i_linha in range(0, n_linhas):

                #status = i_linha+1/float(n_linhas)
                #progress(float(i_linha/float(n_linhas)))
                self.progresso = (float(i_linha / float(n_linhas))) * 100

                for i_coluna in range(0, n_colunas):
                    line = list()
                    if threading.currentThread().stopped(): return

                    for img in images:
                        line.append(img[i_linha][i_coluna])

                    mean = None
                    sd = None

                    if doCV:
                        mean = np.nanmean(line)
                        sd = np.nanstd(line)
                        divisor = mean * 100
                        if divisor != 0: cv = sd / mean * 100
                        else: cv = 0
                        imagem_cv[i_linha][i_coluna] = cv

                    if doMedia:
                        if mean == None:
                            mean = np.nanmean(line)  # calcula a média
                        imagem_media[i_linha][i_coluna] = mean

                    if doSD:
                        if sd == None:
                            sd = np.nanstd(line)  # calcula o desvio padrão
                        imagem_sd[i_linha][i_coluna] = sd

                    #if doSoma :
                    #soma = np.nansum(line)
                    #imagem_soma[i_linha][i_coluna] = soma

                    minimo = None
                    if doMin:
                        minimo = np.nanmin(line)
                        imagem_min[i_linha][i_coluna] = minimo

                    maximo = None
                    if doMax:
                        maximo = np.nanmax(line)
                        imagem_max[i_linha][i_coluna] = maximo

                    if doMediana:
                        mediana = np.nanmedian(line)
                        imagem_mediana[i_linha][i_coluna] = mediana

                    if doAmplitude:
                        if minimo == None: minimo = np.nanmin(line)
                        if maximo == None: maximo = np.nanmax(line)
                        amplitude = maximo - minimo
                        imagem_amplitude[i_linha][i_coluna] = amplitude

        self.print_text(u"Arrumando imagens de saida")

        saida = SerialFile()
        saida.metadata = self.paramentrosIN_carregados["images"][0].metadata

        if doMedia:
            imagem_media = RasterFile(data=imagem_media)
            imagem_media.metadata = saida.metadata
            imagem_media.file_name = "imagem_media"
            saida.append(imagem_media)
        if doCV:
            imagem_cv = RasterFile(data=imagem_cv)
            imagem_cv.metadata = saida.metadata
            imagem_cv.file_name = "imagem_coeficiente_variacao"
            saida.append(imagem_cv)
        if doSD:
            imagem_sd = RasterFile(data=imagem_sd)
            imagem_sd.metadata = saida.metadata
            imagem_sd.file_name = "imagem_desvio_padrao"
            saida.append(imagem_sd)
        if doSoma:
            imagem_soma = RasterFile(data=imagem_soma)
            imagem_soma.metadata = saida.metadata
            imagem_soma.file_name = "imagem_soma"
            saida.append(imagem_soma)
        if doMin:
            imagem_min = RasterFile(data=imagem_min)
            imagem_min.metadata = saida.metadata
            imagem_min.file_name = "imagem_minimo"
            saida.append(imagem_min)
        if doMax:
            imagem_max = RasterFile(data=imagem_max)
            imagem_max.metadata = saida.metadata
            imagem_max.file_name = "imagem_maximo"
            saida.append(imagem_max)
        if doMediana:
            imagem_mediana = RasterFile(data=imagem_mediana)
            imagem_mediana.metadata = saida.metadata
            imagem_mediana.file_name = "imagem_mediana"
            saida.append(imagem_mediana)
        if doAmplitude:
            imagem_amplitude = RasterFile(data=imagem_amplitude)
            imagem_amplitude.metadata = saida.metadata
            imagem_amplitude.file_name = "imagem_amplitude"
            saida.append(imagem_amplitude)

        self.print_text(
            u"imagens prontas para gravar, statistical stractor completo")

        return saida
Esempio n. 17
0
# -*- coding: utf-8 -*-
'''
Created on Aug 17, 2015

@author: Paloschi
'''

from Modelo.beans import SerialFile
import rasterio
from numpy.core.numeric import array
import numpy

pathIn = "C:\\Users\\Paloschi\\Desktop\\New folder\\recortadas"
pathOut = "C:\Users\Paloschi\Desktop\New folder\EVI2"

imagens_rgb = SerialFile(root_path=pathIn)
imagens_rgb.loadListByRoot(filtro="tif")

for img in imagens_rgb:
    with rasterio.open(img.file_full_path) as raster:
        r, g, b = raster.read()
        metadata = raster.meta
        '''EVI2= 2,5 [(N-R) / (N + 2,4R+1)] '''

    N = r.astype(rasterio.float64)  # vermelho é o infravermelho próximo
    R = b.astype(rasterio.float64)  # azul é o vermelho

    #print r
    #print b

    #print N
Esempio n. 18
0
            for p in processes:
                p.join()

            results = [output.get() for p in processes]

            print(results)

            i_linhas += n_threadings


if __name__ == '__main__':

    ss = SpectreStatisticalStractor_MT()

    root_ = "C:\\Users\\rennan.paloschi\\Desktop\\Dados_Gerais\\raster\\pesada"
    images = SerialFile(root_path=root_)
    images.loadListByRoot(filtro="tif")

    linha = list()
    for img in images:
        linha.append(img.loadRasterData()[0][:])

    print(len(linha), "----------------------------------")
    print(len(linha[0]), "----------------------------------")

    parametrosIN = TableData()

    parametrosIN["images"] = images

    statistics = list()
    statistics.append("media")
Esempio n. 19
0
            csv_node.append(etree.XML("<GeometryType>wkbPoint</GeometryType>"))
            csv_node.append(etree.XML('<GeometryField encoding="PointFromColumns" x="Easting" y="Northing" z="Value"/>'))
                
            tree = etree.ElementTree(root)
            tree.write(vrt_file.file_full_path, pretty_print=True)
            
            listaVRT.append(vrt_file)
            
            i_imagem = i_imagem + 1.0
            self.setProgresso(i_imagem, n_imagens)

        saida = TableData()
        saida["CSVs"] = listaCSV
        saida["VRTs"] = listaVRT
        
        return saida

if __name__ == '__main__':   
    
    img_teste_path = "C:\\Users\\rennan.paloschi\\Desktop\\Dados_Gerais\\raster\\ECMWF\\Teste_raster_csv\\Imagens"
    img_teste = SerialFile(root_path=img_teste_path)
    img_teste.loadListByRoot()
    
    paramIN = dict()
    paramIN["images"] = img_teste
    paramIN["out_folder"] = "C:\\Users\\rennan.paloschi\\Desktop\\Dados_Gerais\\raster\\ECMWF\\Teste_raster_csv\\Saida\\"
    
    f = RasterToCSVeVRT()
    
    f.executar(paramIN)