Source code for spymicmac.ee_tools

"""
spymicmac.ee_tools is a collection of tools for getting GEE data for processing KH-9 Hexagon imagery.
"""
import ee


ee.Initialize()


[docs] def get_landsat_collections(filt_geom=None, sensors='all', tier='all'): """ Return a collection of raw Landsat images filtered by an (optional) geometry, given a list of sensor names and tier levels. Default behavior is to select all sensors and all tiers. Valid sensor names: LC08, LE07, LT05, LT04, LM05, LM04, LM03, LM02, LM01 Valid tier levels: T1, T2. Check Landsat docs for details. :param filt_geom: A geometry object to filter images by. See EE docs for more details. :param sensors: Landsat sensor(s) to select images from. :param tier: Processing tier(s) to select. :return: """ assert tier.lower() in ['all', 't1', 't2'], f"tier is not one of 'all', 't1', 't2': {tier}" if tier == 'all': tiers = ['T1', 'T2'] else: tiers = list(tier.upper()) allSensors = ['LC08', 'LE07', 'LT05', 'LT04', 'LM05', 'LM04', 'LM03', 'LM02', 'LM01'] if isinstance(sensors, str) and sensors.lower() == 'all': getSensors = allSensors else: getSensors = [] if isinstance(sensors, list): for sens in sensors: assert sens.upper() in allSensors, f"{sens} is not a recognized Landsat sensor name" getSensors.append(sens) else: assert isinstance(sensors, str), f"sensors is not a list of strings, or a single string: {sensors}" assert sensors.upper() in allSensors, f"{sensors} is not a recognized Landsat sensor name" getSensors = [sensors] outColls = [] for sens in getSensors: for t in tiers: if filt_geom is not None: outColls.append(ee.ImageCollection(f"LANDSAT/{sens}/C01/{t}".filterBounds(filt_geom))) else: outColls.append(ee.ImageCollection(f"LANDSAT/{sens}/C01/{t}")) if len(outColls) == 1: return outColls[0] else: _out = outColls[0] for coll in outColls[1:]: _out.merge(coll) return _out
[docs] def get_srtm(ver='usgs', filt_geom=None): ''' Return the SRTM DEM, clipped to an optional geometry. :param ver: SRTM version to select, one of 'usgs', 'cgiar' :param filt_geom: A geometry object to clip images to :return: ''' assert ver.lower() in ['usgs', 'cgiar'], f"srtm version is not one of 'usgs', 'cgiar': {ver}" verDict = {'usgs': 'USGS/SRTMGL1_003', 'cgiar': 'CGIAR/SRTM90_V4'} _ver = verDict[ver] if filt_geom is not None: return ee.Image(_ver).clip(filt_geom) else: return ee.Image(_ver)
[docs] def get_alos_dem(filt_geom=None): ''' Return the ALOS DEM, clipped to an optional geometry. :param filt_geom: A geometry object to clip images to :return: ''' if filt_geom is not None: return ee.Image('JAXA/ALOS/AW3D30/V2_2').select('AVE_DSM').clip(filt_geom) else: return ee.Image('JAXA/ALOS/AW3D30/V2_2').select('AVE_DSM')
def get_s2_collection(): pass def get_cloudfree_mosaic(): pass