88 lines
3.2 KiB
Python
88 lines
3.2 KiB
Python
|
#!/usr/bin/env python3
|
||
|
|
||
|
#
|
||
|
# Author: Cunren Liang
|
||
|
# Copyright 2015-present, NASA-JPL/Caltech
|
||
|
#
|
||
|
|
||
|
import os
|
||
|
import glob
|
||
|
import shutil
|
||
|
import datetime
|
||
|
import numpy as np
|
||
|
import xml.etree.ElementTree as ET
|
||
|
|
||
|
import isce, isceobj
|
||
|
from isceobj.Alos2Proc.runGeocode import geocode
|
||
|
from isceobj.Alos2Proc.Alos2ProcPublic import getBboxGeo
|
||
|
|
||
|
from StackPulic import loadProduct
|
||
|
|
||
|
def cmdLineParse():
|
||
|
'''
|
||
|
command line parser.
|
||
|
'''
|
||
|
import sys
|
||
|
import argparse
|
||
|
|
||
|
parser = argparse.ArgumentParser(description='geocode')
|
||
|
parser.add_argument('-ref_date_stack_track', dest='ref_date_stack_track', type=str, required=True,
|
||
|
help = 'track parameter of reference date of stack. format: YYMMDD.track.xml')
|
||
|
parser.add_argument('-dem', dest='dem', type=str, required=True,
|
||
|
help = 'dem file used for geocoding')
|
||
|
parser.add_argument('-input', dest='input', type=str, required=True,
|
||
|
help='input file to be geocoded')
|
||
|
parser.add_argument('-bbox', dest='bbox', type=str, default=None,
|
||
|
help = 'user input bounding box, format: s/n/w/e. default: bbox of ref_date_stack_track')
|
||
|
parser.add_argument('-interp_method', dest='interp_method', type=str, default='nearest',
|
||
|
help = 'interpolation method: sinc, bilinear, bicubic, nearest. default: nearest')
|
||
|
parser.add_argument('-nrlks', dest='nrlks', type=int, default=1,
|
||
|
help = 'total number of range looks = number of range looks 1 * number of range looks 2. default: 1')
|
||
|
parser.add_argument('-nalks', dest='nalks', type=int, default=1,
|
||
|
help = 'total number of azimuth looks = number of azimuth looks 1 * number of azimuth looks 2. default: 1')
|
||
|
|
||
|
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
|
||
|
ref_date_stack_track = inps.ref_date_stack_track
|
||
|
demGeo = inps.dem
|
||
|
inputFile = inps.input
|
||
|
bbox = inps.bbox
|
||
|
geocodeInterpMethod = inps.interp_method
|
||
|
numberRangeLooks = inps.nrlks
|
||
|
numberAzimuthLooks = inps.nalks
|
||
|
#######################################################
|
||
|
|
||
|
demFile = os.path.abspath(demGeo)
|
||
|
trackReferenceStack = loadProduct(ref_date_stack_track)
|
||
|
|
||
|
#compute bounding box for geocoding
|
||
|
if bbox is not None:
|
||
|
bbox = [float(x) for x in bbox.split('/')]
|
||
|
if len(bbox)!=4:
|
||
|
raise Exception('user input bbox must have four elements')
|
||
|
else:
|
||
|
img = isceobj.createImage()
|
||
|
img.load(inputFile+'.xml')
|
||
|
bbox = getBboxGeo(trackReferenceStack, useTrackOnly=True, numberOfSamples=img.width, numberOfLines=img.length, numberRangeLooks=numberRangeLooks, numberAzimuthLooks=numberAzimuthLooks)
|
||
|
print('=====================================================================================================')
|
||
|
print('geocode bounding box: {}'.format(bbox))
|
||
|
print('=====================================================================================================')
|
||
|
|
||
|
interpMethod = geocodeInterpMethod
|
||
|
geocode(trackReferenceStack, demFile, inputFile, bbox, numberRangeLooks, numberAzimuthLooks, interpMethod, 0, 0)
|
||
|
|
||
|
|
||
|
|