def envi_metrics(self, fnm_base, out_sam_base, out_mtc_base, lib_path, obs_path, wl_low, wl_high, run_sam, run_mtc, class_thr): #change to base path obs_path = obs_path[:obs_path.rfind(".")] sam_rule_dat_path = out_sam_base + "/Rule_" + fnm_base + ".dat" sam_rule_hdr_path = out_sam_base + "/Rule_" + fnm_base + ".hdr" sam_csfy_dat_path = out_sam_base + '/Classified_' + fnm_base + ".dat" sam_csfy_hdr_path = out_sam_base + '/Classified_' + fnm_base + ".hdr" mtc_rule_dat_path = out_mtc_base + "/Rule_" + fnm_base + ".dat" mtc_rule_hdr_path = out_mtc_base + "/Rule_" + fnm_base + ".hdr" mtc_csfy_dat_path = out_mtc_base + '/Classified_' + fnm_base + ".dat" mtc_csfy_hdr_path = out_mtc_base + '/Classified_' + fnm_base + ".hdr" self.writeMessage(" Spectral Metrics ENVI") SM_module.SpectralMetrics( lib_path, obs_path, sam_rule_dat_path, sam_csfy_dat_path, mtc_rule_dat_path, mtc_csfy_dat_path, wl_low, wl_high, run_sam, run_mtc, class_thr, len(class_thr)) self.writeMessage(" Generating ENVI headers"); if run_sam == 1: (keys, key_val) = envi_header_io.read_as_is(obs_path + ".hdr") self.write_headers(keys, key_val, sam_rule_hdr_path, sam_csfy_hdr_path, lib_path) if run_mtc == 1: (keys, key_val) = envi_header_io.read_as_is(obs_path + ".hdr") self.write_headers(keys, key_val, mtc_rule_hdr_path, mtc_csfy_hdr_path, lib_path)
def generate_cr_header(self, in_path, out_path, waves, cbands, lowi, highi): (keys, key_val) = envi_header_io.read_as_is(in_path) #subset wavelength W = [] for i in range(lowi, highi+1): W.append(waves[i]) #generate wavelength and band names wls = "{" #wavelengths bns = "{" #band names for w in W: wls += str(w) + ",\n" bns += str(w) + ",\n" for i in range(self.n_features): if i == self.n_features-1: wls += str(waves[len(waves)-1] + 1 + i) + "}\n" bns += self.feature_names[i] + "}\n" else: wls += str(waves[len(waves)-1] + 1 + i) + ",\n" bns += self.feature_names[i] + ",\n" self.writeMessage("subset fwhm") #subset fwhm if 'fwhm' in keys: split = key_val['fwhm'].strip('{} \n\t').split(',') for i in range(len(split)): split[i] = split[i].strip() fwhm = "{" for i in range(lowi, highi+1): fwhm += split[i] + ",\n" for i in range(self.n_features): if i == self.n_features-1: fwhm += "0.0}\n" else: fwhm += "0.0,\n" key_val['fwhm'] = fwhm #add band names if not 'band names' in keys: keys.append('band names') key_val['wavelength'] = wls key_val['band names'] = bns key_val['bands'] = str(cbands + self.n_features) + "\n" #features appended to bands key_val['interleave'] = "bil\n" key_val['data type'] = "4\n" envi_header_io.write_as_is(out_path, keys, key_val)