예제 #1
0
파일: tester.py 프로젝트: jdunbar921/mrgeo
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 *****")
예제 #2
0
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 *****")
예제 #3
0
파일: landsat.py 프로젝트: hufh/mrgeo
                        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])
예제 #4
0
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 *****")