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)
def write_headers(self, keys, keyval, rule_hdr_path, csfy_hdr_path, lib_path): keep_fields = ["description","samples","lines","bands","header offset","file type","data type","interleave","byte order","band names","x start","y start"] remo_fields = [] # # removel all fields not in 'keep_fields # for key in keyval.keys(): if not( key in keep_fields ): remo_fields.append(key) for key in remo_fields: keyval.pop(key) keys.remove(key) header = self.get_lib_sample_names(lib_path) # # build 'band names' string # h_str = "{" for i in range(len(header)): if i == len(header) - 1: h_str = h_str + header[i] + "}\n" else: h_str = h_str + header[i] + "," if not( "byte order" in keys ): keys.append("byte order") keyval["byte order"] = "0\n" if not( "band names" in keys ): keys.append("band names") keyval["band names"] = h_str keyval["bands"] = str(len(header)) + "\n" keyval["interleave"] = "bsq\n" keyval["data type"] = "4\n" envi_header_io.write_as_is(rule_hdr_path, keys, keyval) # # modify key-value header pairs for classification file # keyval["bands"] = "1\n" keyval["band names"] = "{Classification}\n" keyval["data type"] = "12\n" envi_header_io.write_as_is(csfy_hdr_path, keys, keyval)