# Installs geemap package import subprocess try: import geemap except ImportError: print("geemap package not installed. Installing ...") subprocess.check_call(["python", "-m", "pip", "install", "-U", "geemap"]) import ee import geemap Map = geemap.Map(center=[40, -100], zoom=4) Map.add_basemap("HYBRID") # Add Google Satellite Map # Retrieves ee.Feature() of the last drawing object. Map.draw_last_feature # Retrieves ee.Feature() of all drawing objects. Map.draw_features import ipywidgets as widgets from ipyleaflet import WidgetControl from geemap import geojson_to_ee Map = geemap.Map(center=[40, -100], zoom=4) Map.add_basemap("HYBRID") # Add # Add Earth Engine dataset image = ee.Image("USGS/SRTMGL1_003") # Set visualization parameters. vis_params = { "min": 0, "max": 4000, "palette": ["006633", "E5FFCC", "662A00", "D8D8D8", "F5F5F5"], } # Get basemap layers base_layers = Map.layers # Add Earth Engine DEM to map Map.addLayer(image, vis_params, "SRTM DEM") # An empty list for storing drawing geometries feat_list = [] # Get the DrawControl dc = Map.draw_control # Handle draw events def handle_draw(self, action, geo_json): geom = geojson_to_ee(geo_json, False) feature = ee.Feature(geom) feat_list.append(feature) collection = ee.FeatureCollection(feat_list) clip_image = image.clipToCollection(collection) Map.layers = base_layers[:3] Map.addLayer(clip_image, vis_params, "SRTM DEM") # Map.addLayer(ee.Image().paint(collection, 0, 2), {'palette': 'red'}, 'EE Geometry') Map.addLayer(collection, {}, "Drawing Features") dc.on_draw(handle_draw) # # Add a button to the map # button = widgets.Button(description="Clear drawings") # btn_control = WidgetControl(widget=button, position='bottomright') # Map.add_control(btn_control) # # Handle click event # def on_button_clicked(b): # dc.clear() # button.on_click(on_button_clicked) Map # Print out the geojson of the last drawing object dc.last_draw