def extractProductForCompare(diff_tar,tarStorage,tiffsStorage,fmaskShellCall,quadsFolder,outRasterFolder): print "call to extractProductForCompare with: "+ diff_tar try: # call download_landsat_data_by_sceneid.php using the downloadScene function # in the event of a DownloadError, retry downloadScene up to 5 times, with a 5 second delay btw calls retry(1, 5, DownloadError,downloadScene, diff_tar) # now extract the downloaded file accordingly extractedPath = checkExisting(os.path.join(LSF.tarStorage, diff_tar+".tar.gz"), tiffsStorage) #do the other pre-processing stuff rasterAnalysis_GDAL.runFmask(extractedPath,LSF.fmaskShellCall) # get DN min number from each band in the scene and write to database dnminExists = checkForDNminExist(extractedPath) # May not be needed in final design, used during testing if dnminExists == False: dnMinDict = rasterAnalysis_GDAL.getDNmin(extractedPath) # fix bug introduced by me in commit de5df07c4ca3ff71ae4d7da27b6018fe1bc2df04 writeDNminToDB(dnMinDict,extractedPath) # create quads from the input scene quadPaths = rasterAnalysis_GDAL.cropToQuad(extractedPath,outRasterFolder,quadsFolder) writeQuadToDB(quadPaths) # get cloud cover percentage for each quad quadCCDict = getQuadCCpercent(quadPaths) # ========================================================================= # write input scene quads cloud cover percentage to the landsat_metadata table in the database writeQuadsCCtoDB(quadCCDict,extractedPath) print os.getcwd() except Exception as e: print "Error in extractProductForCompare" # make sure we've returned to the original directory before raising this exception raise
def extractedTar(quadsceneID): sceneID=quadsceneID[:-2] # guarantee that level 1 product tar file for sceneID now exists in /lsfdata/eros_data/extractedTars tar(sceneID) # if /lsfdata/extractedTars/sceneID doesn't contain the level 1 product band files, extract them from the tar file # if not(re.search(sceneID, ' '.join(glob.glob(os.path.join(LSF.tiffsStorage, '*'))))): # make sure that the existing tar is valid existingTar=os.path.join(LSF.tarStorage, sceneID+".tar.gz") err=localLib.validTar(existingTar) if err: raise Exception(err) # for now use checkExisting. change to use tarHandling class when completed extractedPath = landsatFactTools_GDAL.checkExisting(existingTar, LSF.tiffsStorage) rasterAnalysis_GDAL.runFmask(extractedPath,LSF.fmaskShellCall) # get DN min number from each band in the scene and write to database dnminExists = landsatFactTools_GDAL.checkForDNminExist(extractedPath) # May not be needed in final design, used during testing if dnminExists == False: dnMinDict = rasterAnalysis_GDAL.getDNmin(extractedPath) # fix bug introduced by me in commit de5df07c4ca3ff71ae4d7da27b6018fe1bc2df04 landsatFactTools_GDAL.writeDNminToDB(dnMinDict,extractedPath)
# check to see if the tar file has been extracted, if not extract the files print "Checking for: "+tar extractedPath = landsatFactTools_GDAL.checkExisting(inNewSceneTar, tiffsStorage) # run Fmask # jdm 4/22/15: after spending a couple of days trying to get FMASK installed on cloud4 # I have not been able to get it to work. Therefore, for now I am commenting this out # rasterAnalysis_GDAL.runFmask(extractedPath,Fmaskexe) #BM's original print extractedPath runFmaskBool = rasterAnalysis_GDAL.runFmask(extractedPath,fmaskShellCall) #print "Fmask Boolean: "+runFmaskBool if (runFmaskBool == True): # get DN min number from each band in the scene and write to database wrs2Name=tar[3:9] dnminExists = landsatFactTools_GDAL.checkForDNminExist(extractedPath) # May not be needed in final design, used during testing if dnminExists == False: dnMinDict = rasterAnalysis_GDAL.getDNmin(extractedPath) landsatFactTools_GDAL.writeDNminToDB(dnMinDict,extractedPath) # create quads from the input scene quadPaths = rasterAnalysis_GDAL.cropToQuad(extractedPath,projectStorage,quadsFolder) landsatFactTools_GDAL.writeQuadToDB(quadPaths) # get cloud cover percentage for each quad # write input scene quads cloud cover percentage to the landsat_metadata table in the database quadCCDict=landsatFactTools_GDAL.readAndWriteQuadCC(quadPaths, extractedPath) # for each quad this finds the closest scene that passes the cloud cover threshold for processing quadTiffList2Process = landsatFactTools_GDAL.getNextBestQuad(quadCCDict,cloudCoverThreshold) # ========================================================================= #jdm: Need to make sure the next best quads we are going to be comparing to are actually extracted #and pre-processed to a level appropriate for differencing. print "quadTiffList2Process: ", quadTiffList2Process #TO-DO: create/call a function in landsatFactTools_GDAL called extractProductForCompare() #loop through quadTiffList2Process and get unique list of data to download