#!/usr/bin/env python3 # # Author: Cunren Liang # Copyright 2015-present, NASA-JPL/Caltech # import os import glob import datetime import numpy as np import isce, isceobj from isceobj.Alos2Proc.runGeo2Rdr import geo2RdrCPU from isceobj.Alos2Proc.runGeo2Rdr import geo2RdrGPU from StackPulic import loadTrack from StackPulic import hasGPU def cmdLineParse(): ''' command line parser. ''' import sys import argparse parser = argparse.ArgumentParser(description='compute range and azimuth offsets') parser.add_argument('-date', dest='date', type=str, required=True, help = 'date. format: YYMMDD') parser.add_argument('-date_par_dir', dest='date_par_dir', type=str, default='./', help = 'date parameter directory. default: ./') parser.add_argument('-lat', dest='lat', type=str, required=True, help = 'latitude file') parser.add_argument('-lon', dest='lon', type=str, required=True, help = 'longtitude file') parser.add_argument('-hgt', dest='hgt', type=str, required=True, help = 'height file') parser.add_argument('-nrlks1', dest='nrlks1', type=int, default=1, help = 'number of range looks 1. default: 1') parser.add_argument('-nalks1', dest='nalks1', type=int, default=1, help = 'number of azimuth looks 1. default: 1') #parser.add_argument('-gpu', dest='gpu', type=int, default=1, # help = 'use GPU when available. 0: no. 1: yes (default)') parser.add_argument('-gpu', dest='gpu', action='store_true', default=False, help='use GPU when available') if len(sys.argv) <= 1: print('') parser.print_help() sys.exit(1) else: return parser.parse_args() if __name__ == '__main__': inps = cmdLineParse() #get user parameters from input date = inps.date dateParDir = os.path.join('../', inps.date_par_dir) latitude = os.path.join('../', inps.lat) longitude = os.path.join('../', inps.lon) height = os.path.join('../', inps.hgt) numberRangeLooks1 = inps.nrlks1 numberAzimuthLooks1 = inps.nalks1 useGPU = inps.gpu ####################################################### insarDir = 'insar' os.makedirs(insarDir, exist_ok=True) os.chdir(insarDir) ml1 = '_{}rlks_{}alks'.format(numberRangeLooks1, numberAzimuthLooks1) rangeOffset = date + ml1 + '_rg.off' azimuthOffset = date + ml1 + '_az.off' if not os.path.isfile(os.path.basename(latitude)): latitudeLink = True os.symlink(latitude, os.path.basename(latitude)) os.symlink(latitude+'.vrt', os.path.basename(latitude)+'.vrt') os.symlink(latitude+'.xml', os.path.basename(latitude)+'.xml') else: latitudeLink = False if not os.path.isfile(os.path.basename(longitude)): longitudeLink = True os.symlink(longitude, os.path.basename(longitude)) os.symlink(longitude+'.vrt', os.path.basename(longitude)+'.vrt') os.symlink(longitude+'.xml', os.path.basename(longitude)+'.xml') else: longitudeLink = False if not os.path.isfile(os.path.basename(height)): heightLink = True os.symlink(height, os.path.basename(height)) os.symlink(height+'.vrt', os.path.basename(height)+'.vrt') os.symlink(height+'.xml', os.path.basename(height)+'.xml') else: heightLink = False track = loadTrack(dateParDir, date) if useGPU and hasGPU(): geo2RdrGPU(track, numberRangeLooks1, numberAzimuthLooks1, latitude, longitude, height, rangeOffset, azimuthOffset) else: geo2RdrCPU(track, numberRangeLooks1, numberAzimuthLooks1, latitude, longitude, height, rangeOffset, azimuthOffset) if latitudeLink == True: os.remove(os.path.basename(latitude)) os.remove(os.path.basename(latitude)+'.vrt') os.remove(os.path.basename(latitude)+'.xml') if longitudeLink == True: os.remove(os.path.basename(longitude)) os.remove(os.path.basename(longitude)+'.vrt') os.remove(os.path.basename(longitude)+'.xml') if heightLink == True: os.remove(os.path.basename(height)) os.remove(os.path.basename(height)+'.vrt') os.remove(os.path.basename(height)+'.xml')