ISCE_INSAR/components/isceobj/LineAccessor/test/driverPy.py

116 lines
3.9 KiB
Python
Raw Normal View History

2019-01-16 19:40:08 +00:00
#!/usr/bin/env python3
#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
#
# Giangi Sacco
# NASA Jet Propulsion Laboratory
# California Institute of Technology
# (C) 2009 All Rights Reserved
#
#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
import sys
import os
import math
import struct
sys.path.append(os.environ['HOME'] + '/LineAccessor/')
import array
import fortranSrc
from install.LineAccessorPy import LineAccessorPy
def main():
choice = 1
if len(sys.argv) > 1:
choice = int(sys.argv[1])
if choice == 1 or choice == 2:
LAGet = LineAccessorPy()
LAGet.createLineAccessorObject()
infile = "testFile"
fileSize = 4*4*10#10 lines 4 columns float type i.e. sizeof(float) = 4
#create test file 160 bytes with integer from 0 to 159
buffer = array.array('B')
for i in range(fileSize):
buffer.append(i)
fout = open(infile, "wb")
buffer.tofile(fout)
fout.close()
filemode = 'read'
endian = 'l'
machineEnd = LAGet.getMachineEndianness()
#choice = 1 test machine and file endianness being the same
if choice == 1:
if machineEnd == 'b':
endian = 'b'
else :
if machineEnd == 'l':
endian = 'b'
type = "FLOAT";# using numpy nomenclature for variable type
col = 4;# width of the tile. this means 10 lines in total. each line is col*sizeof(float) = 4*4 = 16 bytes.
row = 3;# height of the tile.
# create image object to read from
LAGet.initLineAccessor(infile,filemode,endian,type,row,col)
LASet = LineAccessorPy()
LASet.createLineAccessorObject()
outfile = "testOutP";
if choice == 1:
outfile += "1"
else:
outfile += "2"
filemode1 = "writeread";
# create image objet to write into
LASet.initLineAccessor(outfile, filemode1, endian, type, row,col);
#get the address of teh objects.
addressGet = LAGet.getLineAccessorPointer()
addressSet = LASet.getLineAccessorPointer()
fortranSrc.testImageSetGet(addressGet,addressSet,choice);
#need to do flushing and free memory
LASet.finalizeLineAccessor();
LAGet.finalizeLineAccessor();
elif choice == 3:
LAGet = LineAccessorPy()
LAGet.createLineAccessorObject()
infile = "testSwap"
outfile = "testSwapOutP"
type = "FLOAT";
fileSize = 4*4*10#10 lines 4 columns float type i.e. sizeof(float) = 4
#create test file 160 bytes with integer from 0 to 159
buffer = array.array('B')
for i in range(fileSize):
buffer.append(i)
fout = open(infile, "wb")
buffer.tofile(fout)
fout.close()
LAGet.convertFileEndianness(infile,outfile,type);
elif choice == 4:
LAGet = LineAccessorPy()
LAGet.createLineAccessorObject()
infile = "testFileBand"
outfile = "testFileBandOutP"
fileSize = 4*4*10#10 lines 4 columns float type i.e. sizeof(float) = 4
#create test file 160 bytes with integer from 0 to 159
buffer = array.array('B')
for i in range(fileSize):
buffer.append(i)
fout = open(infile, "wb")
buffer.tofile(fout)
fout.close()
type = "FLOAT";# using numpy nomenclature for variable type
col = 4;# width of the tile. this means 10 lines in total. each line is col*sizeof(float) = 4*4 = 16 bytes.
bandIn = 1 # BSQ
bandOut = 3 # BIL
numBands = 2
LAGet.changeBandScheme(infile,outfile,type,col,numBands,bandIn,bandOut)
else:
raise("Error. Wrong selection")
if __name__ == "__main__":
sys.exit(main())