Commit 6691c66cbf220948a296f5fa898deb9c30dad195

Authored by David Mayerich
1 parent a02a8b39

added a save function to the ENVI class that allows saving of edited files imported with Python

Showing 1 changed file with 13 additions and 2 deletions   Show diff stats
@@ -16,6 +16,7 @@ import progressbar @@ -16,6 +16,7 @@ import progressbar
16 class envi_header: 16 class envi_header:
17 def __init__(self, filename = ""): 17 def __init__(self, filename = ""):
18 if filename != "": 18 if filename != "":
  19 + self.initialize()
19 self.load(filename) 20 self.load(filename)
20 else: 21 else:
21 self.initialize() 22 self.initialize()
@@ -193,7 +194,7 @@ class envi_header: @@ -193,7 +194,7 @@ class envi_header:
193 f.write("bands = " + str(self.bands) + "\n") 194 f.write("bands = " + str(self.bands) + "\n")
194 f.write("header offset = " + str(self.header_offset) + "\n") 195 f.write("header offset = " + str(self.header_offset) + "\n")
195 f.write("file type = ENVI Standard" + "\n") 196 f.write("file type = ENVI Standard" + "\n")
196 - f.write("data type = " + str(self.get_envi_type(self.type)) + "\n") 197 + f.write("data type = " + str(self.get_envi_type(self.data_type)) + "\n")
197 f.write("interleave = " + self.interleave + "\n") 198 f.write("interleave = " + self.interleave + "\n")
198 f.write("sensor type = " + self.sensor_type + "\n") 199 f.write("sensor type = " + self.sensor_type + "\n")
199 f.write("byte order = " + str(self.byte_order) + "\n") 200 f.write("byte order = " + str(self.byte_order) + "\n")
@@ -268,7 +269,8 @@ class envi: @@ -268,7 +269,8 @@ class envi:
268 #open the file 269 #open the file
269 self.header = envi_header(headername) 270 self.header = envi_header(headername)
270 self.file = open(filename, "rb") 271 self.file = open(filename, "rb")
271 - 272 +
  273 + # load the entire ENVI file into memory and return it as an array
272 def loadall(self): 274 def loadall(self):
273 X = self.header.samples 275 X = self.header.samples
274 Y = self.header.lines 276 Y = self.header.lines
@@ -286,6 +288,15 @@ class envi: @@ -286,6 +288,15 @@ class envi:
286 elif self.header.interleave == "bil": 288 elif self.header.interleave == "bil":
287 D = numpy.reshape(D, (Y, B, X)) 289 D = numpy.reshape(D, (Y, B, X))
288 return numpy.rollaxis(D, 1) 290 return numpy.rollaxis(D, 1)
  291 +
  292 + #save an updated version of the file (all header information is assumed to be the same)
  293 + def saveall(self, D, filename):
  294 +
  295 + new_header = self.header
  296 + new_header.interleave = "bsq"
  297 + new_header.save(filename + ".hdr")
  298 + D.tofile(filename)
  299 +
289 300
290 #loads all of the pixels where mask != 0 and returns them as a matrix 301 #loads all of the pixels where mask != 0 and returns them as a matrix
291 def loadmask(self, mask): 302 def loadmask(self, mask):