import math from pymrgeo import MrGeo from pymrgeo.rastermapop import RasterMapOp if __name__ == "__main__": # mrgeo = MrGeo() # forked mrgeo mrgeo = MrGeo(host="localhost", port=12345) # already running, remote mrgeo # sys.exit(1) mrgeo.usedebug() # images = mrgeo.list_images() mrgeo.start() ones = mrgeo.load_image("all-ones-save") # test error handling # foo = 1 / 0 sl = ones.slope() # RasterMapOp.slope(ones, 1) # hundreds = mrgeo.load_image("all-hundreds") # aspect = hundreds.aspect() # slope.save("slope-test") # aspect.save("aspect-test") # print("***** Starting *****")
def main(argv): root = '' month = -1 year = -1 output_postfix = '' try: opts, args = getopt.getopt(argv, "hr:m:y:o:", ["root=", "month=,year=,output-postfix="]) except getopt.GetoptError: print 'multi-landsat.py -r <rootdir> -m <monthnum> -y <year> -o <output-postfix>' sys.exit(2) for opt, arg in opts: if opt == '-h': print 'multi-landsat.py -r <rootdir> -m <monthnum> -y <year> -o <output-postfix>' sys.exit() elif opt in ("-r", "--root"): root = arg elif opt in ("-m", "--month"): month = int(arg) elif opt in ("-y", "--year"): year = int(arg) elif opt in ("-o", "--output-postfix"): output_postfix = arg print 'Root is %s' % (root) print 'Month is %d' % (month) print 'Year is %d' % (year) metadata = load_all_metadata(root) # Filter the metadata to find the most recent imagery for each scene. # It is assumed that the root directory only contains scenes we are # interested in. filtered_metadata = {} for md in metadata: acqdate = parse( md["L1_METADATA_FILE"]["PRODUCT_METADATA"]["DATE_ACQUIRED"]) if acqdate.month == month and acqdate.year == year: wrs_path = int( md["L1_METADATA_FILE"]["PRODUCT_METADATA"]["WRS_PATH"]) wrs_row = int( md["L1_METADATA_FILE"]["PRODUCT_METADATA"]["WRS_ROW"]) key = "%03d%03d" % (wrs_path, wrs_row) if filtered_metadata.get(key) is None: filtered_metadata[key] = md else: existing_acq_date = parse( filtered_metadata[key]["L1_METADATA_FILE"] ["PRODUCT_METADATA"]["DATE_ACQUIRED"]) if acqdate > existing_acq_date: filtered_metadata[key] = md for key in filtered_metadata: print "Processing scene at path %s, row %s, acquired %s, at %s" % ( filtered_metadata[key]["L1_METADATA_FILE"]["PRODUCT_METADATA"] ["WRS_PATH"], filtered_metadata[key]["L1_METADATA_FILE"] ["PRODUCT_METADATA"]["WRS_ROW"], filtered_metadata[key] ["L1_METADATA_FILE"]["PRODUCT_METADATA"]["DATE_ACQUIRED"], filtered_metadata[key]["PARENT_DIR"]) # being a separate image mrgeo = MrGeo() mrgeo.usedebug() mrgeo.start() # Let's go ahead and ingest those images into MrGeo, with each band red_refl = ingest_reflectance_image(mrgeo, filtered_metadata, 4, "landsat-red-refl" + output_postfix) nir_refl = ingest_reflectance_image(mrgeo, filtered_metadata, 5, "landsat-nir-refl" + output_postfix) ndvi = (nir_refl - red_refl) / (nir_refl + red_refl) ndvi.save('landsat-ndvi' + output_postfix) mrgeo.stop() print("***** Done *****")
landsat[band] = pathname pass elif ext == '.json': landsat[ext[1:]] = pathname pass if not landsat.has_key('json'): raise Exception('No JSON metadata file in ' + root) with open(landsat['json']) as metafile: metadata = json.load(metafile) mrgeo = MrGeo() # mrgeo.usedebug() mrgeo.start() bqa = mrgeo.ingest_image(landsat['bqa']) # bqa.export('/data/export/landsat-bqa.tif', singleFile=True) cloud_mask = bqa < 32768 # 0 where clouds, 1 where no clouds # cloud_mask.export('/data/export/landsat-clouds.tif', singleFile=True) red = cloud_mask.con(positiveRaster=mrgeo.ingest_image(landsat[4]), negativeConst=RasterMapOp.nan()) green = cloud_mask.con(positiveRaster=mrgeo.ingest_image(landsat[3]), negativeConst=RasterMapOp.nan()) blue = cloud_mask.con(positiveRaster=mrgeo.ingest_image(landsat[2]), negativeConst=RasterMapOp.nan()) # red = mrgeo.ingest_image(landsat[4]) # green = mrgeo.ingest_image(landsat[3])
def main(argv): root = '' month = -1 year = -1 output_postfix = '' try: opts, args = getopt.getopt(argv,"hr:m:y:o:",["root=","month=,year=,output-postfix="]) except getopt.GetoptError: print 'multi-landsat.py -r <rootdir> -m <monthnum> -y <year> -o <output-postfix>' sys.exit(2) for opt, arg in opts: if opt == '-h': print 'multi-landsat.py -r <rootdir> -m <monthnum> -y <year> -o <output-postfix>' sys.exit() elif opt in ("-r", "--root"): root = arg elif opt in ("-m", "--month"): month = int(arg) elif opt in ("-y", "--year"): year = int(arg) elif opt in ("-o", "--output-postfix"): output_postfix = arg print 'Root is %s' % (root) print 'Month is %d' % (month) print 'Year is %d' % (year) metadata = load_all_metadata(root) # Filter the metadata to find the most recent imagery for each scene. # It is assumed that the root directory only contains scenes we are # interested in. filtered_metadata = {} for md in metadata: acqdate = parse(md["L1_METADATA_FILE"]["PRODUCT_METADATA"]["DATE_ACQUIRED"]) if acqdate.month == month and acqdate.year == year: wrs_path = int(md["L1_METADATA_FILE"]["PRODUCT_METADATA"]["WRS_PATH"]) wrs_row = int(md["L1_METADATA_FILE"]["PRODUCT_METADATA"]["WRS_ROW"]) key = "%03d%03d" % (wrs_path, wrs_row) if filtered_metadata.get(key) is None: filtered_metadata[key] = md else: existing_acq_date = parse(filtered_metadata[key]["L1_METADATA_FILE"]["PRODUCT_METADATA"]["DATE_ACQUIRED"]) if acqdate > existing_acq_date: filtered_metadata[key] = md for key in filtered_metadata: print "Processing scene at path %s, row %s, acquired %s, at %s" % (filtered_metadata[key]["L1_METADATA_FILE"]["PRODUCT_METADATA"]["WRS_PATH"], filtered_metadata[key]["L1_METADATA_FILE"]["PRODUCT_METADATA"]["WRS_ROW"], filtered_metadata[key]["L1_METADATA_FILE"]["PRODUCT_METADATA"]["DATE_ACQUIRED"], filtered_metadata[key]["PARENT_DIR"]) # being a separate image mrgeo = MrGeo() mrgeo.usedebug() mrgeo.start() # Let's go ahead and ingest those images into MrGeo, with each band red_refl = ingest_reflectance_image(mrgeo, filtered_metadata, 4, "landsat-red-refl" + output_postfix) nir_refl = ingest_reflectance_image(mrgeo, filtered_metadata, 5, "landsat-nir-refl" + output_postfix) ndvi = (nir_refl - red_refl) / (nir_refl + nir_refl) ndvi.save('landsat-ndvi' + output_postfix) mrgeo.stop() print("***** Done *****")