Commit 6691c66cbf220948a296f5fa898deb9c30dad195
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
python/envi.py
@@ -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): |