133 lines
4.2 KiB
Python
133 lines
4.2 KiB
Python
#!/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')
|
|
|