Example #1
0
	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)
Example #2
0
	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)