def distribuir_kc(dia, semeadura_, colheita_, ano_inicio, dia_inicio, periodo_kc, kc_vetorizado, path_img_referencia, path_out): threading.currentThread().terminada = False imagem_kc = RasterFile(file_full_path=path_img_referencia) imagem_kc.getLoadJustMetaData() imagem_kc.file_path = path_out n_linhas = len(semeadura_) n_colunas = len(semeadura_[0]) delta_c = (colheita_ - semeadura_) #.astype(np.float32) tempo_em_campo = (dia + 1 - semeadura_) #.astype(np.float32) i_FKc = np.zeros((n_linhas, n_colunas)).astype(np.float32) for i in range(n_linhas): mask = ((tempo_em_campo[i] > 0) & (tempo_em_campo[i] <= delta_c[i])) i_FKc[i][mask] = ( (tempo_em_campo[i][mask] - 1) * periodo_kc) / delta_c[i][mask] i_FKc[i][mask] = np.ceil(i_FKc[i][mask]) i_FKc[i][mask] = [kc_vetorizado[index] for index in i_FKc[i][mask]] imagem_kc.file_name = str( datetime.datetime(ano_inicio, 1, 1) + datetime.timedelta(dia + dia_inicio - 1))[:10] imagem_kc.metadata.update(nodata=0) imagem_kc.metadata.update(dtype="float32") imagem_kc.saveRasterData(band_matrix=i_FKc) threading.currentThread().terminada = True return
def distribuir_kc(dia, semeadura_, colheita_, ano_inicio, dia_inicio, periodo_kc, kc_vetorizado, path_img_referencia, path_out): threading.currentThread().terminada = False imagem_kc = RasterFile(file_full_path = path_img_referencia) imagem_kc.getLoadJustMetaData() imagem_kc.file_path = path_out n_linhas = len(semeadura_) n_colunas = len(semeadura_[0]) delta_c = (colheita_ - semeadura_)#.astype(np.float32) tempo_em_campo = (dia+1 - semeadura_)#.astype(np.float32) i_FKc = np.zeros((n_linhas, n_colunas)).astype(np.float32) for i in range(n_linhas) : mask = ((tempo_em_campo[i] > 0) & (tempo_em_campo[i] <= delta_c[i])) i_FKc[i][mask] = ((tempo_em_campo[i][mask]-1) * periodo_kc)/delta_c[i][mask] i_FKc[i][mask] = np.ceil(i_FKc[i][mask]) i_FKc[i][mask] = [kc_vetorizado[index] for index in i_FKc[i][mask]] imagem_kc.file_name = str(datetime.datetime(ano_inicio, 1, 1) + datetime.timedelta(dia + dia_inicio - 1))[:10] imagem_kc.metadata.update(nodata=0) imagem_kc.metadata.update(dtype="float32") imagem_kc.saveRasterData(band_matrix = i_FKc) threading.currentThread().terminada = True return
def __execOperation__(self): serie_imagem_in = self.paramentrosIN_carregados["In"].loadListByRoot() serie_imagem_out = self.paramentrosIN_carregados["Out_config"] imagem_in_factor = float(serie_imagem_in.mutiply_factor) imagem_out_factor = float(serie_imagem_out.mutiply_factor) n_imagens = len(serie_imagem_in) if n_imagens is 0: self.console(u"Erro: Nenhuma imagem encontrada na pasta especificada.") self.console(u"Cancelando função.") threading.currentThread().stop() return self.console(u"Construindo série temporal diária...") for i in range(n_imagens): self.progresso = (i / float(n_imagens)) * 100 """Recupera a data correspondente a imagem atual do laço """ data = serie_imagem_in.getDate_time(i) dia_mes = data.day """Calcula quantos dias tem no decend atual""" if dia_mes <= 10: duracao = 10 elif dia_mes <= 20: duracao = 10 else: duracao = int(calendar.monthrange(data.year, data.month)[1]) - 20 if threading.currentThread().stopped(): print "thread parada, retornando da função" return imagem_ = serie_imagem_in[i].loadRasterData() imagem_ *= imagem_in_factor if self.paramentrosIN_carregados["Operation"] == "dividir valores": imagem_ = imagem_ / float(duracao) imagem_ = numpy.round(imagem_, 4) elif self.paramentrosIN_carregados["Operation"] == "manter valores": pass imagem_ *= imagem_out_factor # imagem_ = self.compactar(imagem_) for ii in range(0, duracao): img = RasterFile() img.file_path = serie_imagem_out.root_path data_img = data + timedelta(ii) img.file_name = ( serie_imagem_out.prefixo + data_img.strftime(serie_imagem_out.date_mask) + serie_imagem_out.sufixo ) img.data = imagem_ img.file_ext = "tif" metadata = serie_imagem_in[i].metadata # metadata.update(nodata=0) img.saveRasterData(metadata=metadata) print metadata self.console(u"Série temporal diária concluída.")
def __execOperation__(self): serie_imagem_in = self.paramentrosIN_carregados["In"].loadListByRoot() serie_imagem_out = self.paramentrosIN_carregados["Out_config"] #imagem_in_factor = float(serie_imagem_in.mutiply_factor) #imagem_out_factor = float(serie_imagem_out.mutiply_factor) n_imagens = len(serie_imagem_in) if n_imagens is 0 : self.console(u"Erro: Nenhuma imagem encontrada na pasta especificada.") self.console(u"Cancelando função.") threading.currentThread().stop() return self.console(u"Construindo série temporal diária...") for i in range(n_imagens): self.setProgresso(i, n_imagens) '''Recupera a data correspondente a imagem atual do laço ''' try: data = serie_imagem_in.getDate_time(i) dia_mes = data.day '''Calcula quantos dias tem no decend atual''' if dia_mes <= 10: duracao = 10 elif dia_mes <= 20: duracao = 10 else : duracao = int(calendar.monthrange(data.year, data.month)[1]) - 20 if threading.currentThread().stopped() : print "thread parada, retornando da função" return imagem_ = serie_imagem_in[i].loadRasterData() imagem_ = numpy.ma.masked_array(imagem_, mask=(imagem_ == serie_imagem_in[i].metadata["nodata"])) if self.paramentrosIN_carregados["Operation"] == "dividir valores": imagem_ = (imagem_ / float(duracao)) imagem_[numpy.isinf(imagem_)] = 0 elif self.paramentrosIN_carregados["Operation"] == "manter valores": pass for ii in range (0, duracao): img = RasterFile() img.file_path = serie_imagem_out.root_path data_img = data + timedelta(ii) img.file_name = serie_imagem_out.prefixo + data_img.strftime(serie_imagem_out.date_mask) + serie_imagem_out.sufixo img.data = imagem_ img.file_ext = "tif" metadata = serie_imagem_in[i].metadata img.metadata = metadata img.metadata.update(dtype = img.data.dtype) img.saveRasterData(metadata=metadata) except: self.console(u"Erro na imagem: " + serie_imagem_in[i].file_name) self.console(u"Série temporal diária concluída.")
def distribuir_kc(data_minima, data_maxima, semeadura_, colheita_, periodo_kc, kc_vetorizado, path_img_referencia, i, path_out): import ctypes import ConfigParser config = ConfigParser.RawConfigParser() config.read('workspace.properties') company = config.get('Version', 'company') product = config.get('Version', 'product') subproduct = config.get('Version', 'subproduct') version = config.get('Version', 'Version') myappid = (company + "." + product + "." + subproduct + "." + version) ctypes.windll.shell32.SetCurrentProcessExplicitAppUserModelID(myappid) threading.currentThread().terminada = False imagem_kc = RasterFile(file_full_path=path_img_referencia) imagem_kc.loadRasterData() imagem_kc.file_path = path_out #print imagem_kc.metadata n_linhas = len(semeadura_) n_colunas = len(colheita_[0]) delta_total = (data_maxima - data_minima).days + 1 for i_dia in range(0, delta_total): imagem_kc_ = np.zeros((n_linhas, n_colunas)) imagem_kc_ = array(imagem_kc_).astype(dtype="uint8") dia = data_minima + timedelta(i_dia) imagem_kc.data = array(semeadura_) imagem_kc.file_name = str(dia.date()) #if delta_total > 1 : #progresso = (i_dia/float(delta_total))*100 for i_linha in range(0, n_linhas): progress(i_linha / float(n_linhas - 1)) for i_coluna in range(0, n_colunas): try: Ds = Ds_DC_to_date(semeadura_[i_linha][i_coluna]) Dc = Ds_DC_to_date(colheita_[i_linha][i_coluna]) delta_c = (Dc - Ds).days + 1 if (dia >= Ds and dia <= Dc): k = dia - Ds i_FKc = int((k * periodo_kc).days / delta_c) Kc = kc_vetorizado[i_FKc] imagem_kc_[i_linha][i_coluna] = Kc except: pass imagem_kc.metadata.update(nodata=0) imagem_kc.saveRasterData(band_matrix=imagem_kc_) print "retornando do processo", i #threading.currentThread().stopped = True threading.currentThread().terminada = True return None