From c844d49b48e3752ec6d7cc196dc7cffdd9295734 Mon Sep 17 00:00:00 2001 From: CunrenLiang <56097947+CunrenLiang@users.noreply.github.com> Date: Tue, 28 Apr 2020 23:24:02 -0700 Subject: [PATCH] remove system calls --- .../isceobj/Alos2Proc/runDownloadDem.py | 137 +++++++++++++++--- components/isceobj/Alos2Proc/runLook.py | 17 ++- 2 files changed, 128 insertions(+), 26 deletions(-) diff --git a/components/isceobj/Alos2Proc/runDownloadDem.py b/components/isceobj/Alos2Proc/runDownloadDem.py index 36b9ae6..40d2d4e 100644 --- a/components/isceobj/Alos2Proc/runDownloadDem.py +++ b/components/isceobj/Alos2Proc/runDownloadDem.py @@ -34,16 +34,24 @@ def runDownloadDem(self): os.makedirs(demDir, exist_ok=True) os.chdir(demDir) - downloadUrl = 'http://e4ftl01.cr.usgs.gov/MEASURES/SRTMGL1.003/2000.02.11' - cmd = 'dem.py -a stitch -b {} -k -s 1 -c -f -u {}'.format( - bboxStr, - downloadUrl - ) - runCmd(cmd) - cmd = 'fixImageXml.py -i demLat_*_*_Lon_*_*.dem.wgs84 -f' - runCmd(cmd) - cmd = 'rm *.hgt* *.log demLat_*_*_Lon_*_*.dem demLat_*_*_Lon_*_*.dem.vrt demLat_*_*_Lon_*_*.dem.xml' - runCmd(cmd) + # downloadUrl = 'http://e4ftl01.cr.usgs.gov/MEASURES/SRTMGL1.003/2000.02.11' + # cmd = 'dem.py -a stitch -b {} -k -s 1 -c -f -u {}'.format( + # bboxStr, + # downloadUrl + # ) + # runCmd(cmd) + # cmd = 'fixImageXml.py -i demLat_*_*_Lon_*_*.dem.wgs84 -f' + # runCmd(cmd) + # cmd = 'rm *.hgt* *.log demLat_*_*_Lon_*_*.dem demLat_*_*_Lon_*_*.dem.vrt demLat_*_*_Lon_*_*.dem.xml' + # runCmd(cmd) + + #replace the above system calls with function calls + downloadDem(list(bbox), demType='version3', resolution=1, fillingValue=-32768, outputFile=None, userName=None, passWord=None) + imagePathXml((glob.glob('demLat_*_*_Lon_*_*.dem.wgs84'))[0], fullPath=True) + filesRemoved = glob.glob('*.hgt*') + glob.glob('*.log') + glob.glob('demLat_*_*_Lon_*_*.dem') + glob.glob('demLat_*_*_Lon_*_*.dem.vrt') + glob.glob('demLat_*_*_Lon_*_*.dem.xml') + for filex in filesRemoved: + os.remove(filex) + os.chdir('../') self.dem = glob.glob(os.path.join(demDir, 'demLat_*_*_Lon_*_*.dem.wgs84'))[0] @@ -54,16 +62,24 @@ def runDownloadDem(self): os.makedirs(demGeoDir, exist_ok=True) os.chdir(demGeoDir) - downloadUrl = 'http://e4ftl01.cr.usgs.gov/MEASURES/SRTMGL3.003/2000.02.11' - cmd = 'dem.py -a stitch -b {} -k -s 3 -c -f -u {}'.format( - bboxStr, - downloadUrl - ) - runCmd(cmd) - cmd = 'fixImageXml.py -i demLat_*_*_Lon_*_*.dem.wgs84 -f' - runCmd(cmd) - cmd = 'rm *.hgt* *.log demLat_*_*_Lon_*_*.dem demLat_*_*_Lon_*_*.dem.vrt demLat_*_*_Lon_*_*.dem.xml' - runCmd(cmd) + # downloadUrl = 'http://e4ftl01.cr.usgs.gov/MEASURES/SRTMGL3.003/2000.02.11' + # cmd = 'dem.py -a stitch -b {} -k -s 3 -c -f -u {}'.format( + # bboxStr, + # downloadUrl + # ) + # runCmd(cmd) + # cmd = 'fixImageXml.py -i demLat_*_*_Lon_*_*.dem.wgs84 -f' + # runCmd(cmd) + # cmd = 'rm *.hgt* *.log demLat_*_*_Lon_*_*.dem demLat_*_*_Lon_*_*.dem.vrt demLat_*_*_Lon_*_*.dem.xml' + # runCmd(cmd) + + #replace the above system calls with function calls + downloadDem(list(bbox), demType='version3', resolution=3, fillingValue=-32768, outputFile=None, userName=None, passWord=None) + imagePathXml((glob.glob('demLat_*_*_Lon_*_*.dem.wgs84'))[0], fullPath=True) + filesRemoved = glob.glob('*.hgt*') + glob.glob('*.log') + glob.glob('demLat_*_*_Lon_*_*.dem') + glob.glob('demLat_*_*_Lon_*_*.dem.vrt') + glob.glob('demLat_*_*_Lon_*_*.dem.xml') + for filex in filesRemoved: + os.remove(filex) + os.chdir('../') self.demGeo = glob.glob(os.path.join(demGeoDir, 'demLat_*_*_Lon_*_*.dem.wgs84'))[0] @@ -77,10 +93,17 @@ def runDownloadDem(self): #cmd = 'wbd.py {}'.format(bboxStr) #runCmd(cmd) download_wbd(np.int(np.floor(bbox[0])), np.int(np.ceil(bbox[1])), np.int(np.floor(bbox[2])), np.int(np.ceil(bbox[3]))) - cmd = 'fixImageXml.py -i swbdLat_*_*_Lon_*_*.wbd -f' - runCmd(cmd) - cmd = 'rm *.log' - runCmd(cmd) + #cmd = 'fixImageXml.py -i swbdLat_*_*_Lon_*_*.wbd -f' + #runCmd(cmd) + #cmd = 'rm *.log' + #runCmd(cmd) + + #replace the above system calls with function calls + imagePathXml((glob.glob('swbdLat_*_*_Lon_*_*.wbd'))[0], fullPath=True) + filesRemoved = glob.glob('*.log') + for filex in filesRemoved: + os.remove(filex) + os.chdir('../') self.wbd = glob.glob(os.path.join(wbdDir, 'swbdLat_*_*_Lon_*_*.wbd'))[0] @@ -94,6 +117,54 @@ def runDownloadDem(self): self._insar.procDoc.addAllFromCatalog(catalog) +def downloadDem(bbox, demType='version3', resolution=1, fillingValue=-32768, outputFile=None, userName=None, passWord=None): + ''' + bbox: [s, n, w, e] + demType: can be 'version3' or 'nasadem'. nasadem is also tested. + resolution: 1 or 3, NASADEM only available in 1-arc sec resolution + ''' + import numpy as np + import isceobj + from contrib.demUtils import createDemStitcher + + ds = createDemStitcher(demType) + ds.configure() + + if demType == 'version3': + if resolution == 1: + ds._url1 = 'http://e4ftl01.cr.usgs.gov/MEASURES/SRTMGL1.003/2000.02.11' + else: + ds._url3 = 'http://e4ftl01.cr.usgs.gov/MEASURES/SRTMGL3.003/2000.02.11' + elif demType == 'nasadem': + resolution = 1 + #this url is included in the module + #ds._url1 = 'http://e4ftl01.cr.usgs.gov/MEASURES/NASADEM_HGT.001/2000.02.11' + else: + raise Exception('unknown DEM type, currently supported DEM types: version3 and nasadem') + + ds.setUsername(userName) + ds.setPassword(passWord) + + ds._keepAfterFailed = True + ds.setCreateXmlMetadata(True) + ds.setUseLocalDirectory(False) + ds.setFillingValue(fillingValue) + ds.setFilling() + + bbox = [np.int(np.floor(bbox[0])), np.int(np.ceil(bbox[1])), np.int(np.floor(bbox[2])), np.int(np.ceil(bbox[3]))] + if outputFile==None: + outputFile = ds.defaultName(bbox) + + if not(ds.stitchDems(bbox[0:2],bbox[2:4],resolution,outputFile,'./',keep=True)): + print('Could not create a stitched DEM. Some tiles are missing') + else: + #Apply correction EGM96 -> WGS84 + demImg = ds.correct() + + #report downloads + for k,v in list(ds._downloadReport.items()): + print(k,'=',v) + def download_wbd(s, n, w, e): ''' @@ -199,3 +270,21 @@ def download_wbd(s, n, w, e): return outputFile + + +def imagePathXml(imageFile, fullPath=True): + import os + import isceobj + from isceobj.Util.ImageUtil import ImageLib as IML + + img = IML.loadImage(imageFile)[0] + + dirname = os.path.dirname(imageFile) + if fullPath: + fname = os.path.abspath( os.path.join(dirname, os.path.basename(imageFile))) + else: + fname = os.path.basename(imageFile) + + img.filename = fname + img.setAccessMode('READ') + img.renderHdr() diff --git a/components/isceobj/Alos2Proc/runLook.py b/components/isceobj/Alos2Proc/runLook.py index 70c4aa0..f6ff049 100644 --- a/components/isceobj/Alos2Proc/runLook.py +++ b/components/isceobj/Alos2Proc/runLook.py @@ -50,8 +50,21 @@ def runLook(self): create_xml(self._insar.multilookLongitude, width2, length2, 'double') create_xml(self._insar.multilookHeight, width2, length2, 'double') #los has two bands, use look program in isce instead - cmd = "looks.py -i {} -o {} -r {} -a {}".format(self._insar.los, self._insar.multilookLos, self._insar.numberRangeLooks2, self._insar.numberAzimuthLooks2) - runCmd(cmd) + #cmd = "looks.py -i {} -o {} -r {} -a {}".format(self._insar.los, self._insar.multilookLos, self._insar.numberRangeLooks2, self._insar.numberAzimuthLooks2) + #runCmd(cmd) + + #replace the above system call with function call + from mroipac.looks.Looks import Looks + from isceobj.Image import createImage + inImage = createImage() + inImage.load(self._insar.los+'.xml') + + lkObj = Looks() + lkObj.setDownLooks(self._insar.numberAzimuthLooks2) + lkObj.setAcrossLooks(self._insar.numberRangeLooks2) + lkObj.setInputImage(inImage) + lkObj.setOutputFilename(self._insar.multilookLos) + lkObj.looks() #water body #this looking operation has no problems where there is only water and land, but there is also possible no-data area