{ "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "\n", " \n", " \n", " \n", "
View source on GitHubNotebook Viewer Run in Google Colab
" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Install Earth Engine API and geemap\n", "Install the [Earth Engine Python API](https://developers.google.com/earth-engine/python_install) and [geemap](https://github.com/gee-community/geemap). The **geemap** Python package is built upon the [ipyleaflet](https://github.com/jupyter-widgets/ipyleaflet) and [folium](https://github.com/python-visualization/folium) packages and implements several methods for interacting with Earth Engine data layers, such as `Map.addLayer()`, `Map.setCenter()`, and `Map.centerObject()`.\n", "The following script checks if the geemap package has been installed. If not, it will install geemap, which automatically installs its [dependencies](https://github.com/gee-community/geemap#dependencies), including earthengine-api, folium, and ipyleaflet." ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "# Installs geemap package\n", "import subprocess\n", "\n", "try:\n", " import geemap\n", "except ImportError:\n", " print('geemap package not installed. Installing ...')\n", " subprocess.check_call([\"python\", '-m', 'pip', 'install', 'geemap'])" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "import ee\n", "import geemap" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Create an interactive map" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "Map = geemap.Map(center=(40, -100), zoom=4)\n", "Map.add_minimap(position='bottomright')\n", "Map" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Add tile layers\n", "\n", "For example, you can Google Map tile layer:" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "url = 'https://mt1.google.com/vt/lyrs=m&x={x}&y={y}&z={z}'\n", "Map.add_tile_layer(url, name='Google Map', attribution='Google')" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Add Google Terrain tile layer:" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "url = 'https://mt1.google.com/vt/lyrs=p&x={x}&y={y}&z={z}'\n", "Map.add_tile_layer(url, name='Google Terrain', attribution='Google')" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Add WMS layers\n", "More WMS layers can be found at ." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "For example, you can add NAIP imagery." ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "url = 'https://services.nationalmap.gov/arcgis/services/USGSNAIPImagery/ImageServer/WMSServer?'\n", "Map.add_wms_layer(url=url, layers='0', name='NAIP Imagery', format='image/png')" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Add USGS 3DEP Elevation Dataset" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "url = 'https://elevation.nationalmap.gov/arcgis/services/3DEPElevation/ImageServer/WMSServer?'\n", "Map.add_wms_layer(\n", " url=url, layers='3DEPElevation:None', name='3DEP Elevation', format='image/png'\n", ")" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Capture user inputs" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "import geemap\n", "from ipywidgets import Label\n", "from ipyleaflet import Marker\n", "\n", "Map = geemap.Map(center=(40, -100), zoom=4)\n", "\n", "label = Label()\n", "display(label)\n", "\n", "coordinates = []\n", "\n", "\n", "def handle_interaction(**kwargs):\n", " latlon = kwargs.get('coordinates')\n", " if kwargs.get('type') == 'mousemove':\n", " label.value = str(latlon)\n", " elif kwargs.get('type') == 'click':\n", " coordinates.append(latlon)\n", " Map.add_layer(Marker(location=latlon))\n", "\n", "\n", "Map.on_interaction(handle_interaction)\n", "\n", "Map" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "print(coordinates)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## SplitMap control" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "import geemap\n", "from ipyleaflet import *\n", "\n", "Map = geemap.Map(center=(47.50, -101), zoom=7)\n", "\n", "right_layer = WMSLayer(\n", " url='https://ndgishub.nd.gov/arcgis/services/Imagery/AerialImage_ND_2017_CIR/ImageServer/WMSServer?',\n", " layers='AerialImage_ND_2017_CIR',\n", " name='AerialImage_ND_2017_CIR',\n", " format='image/png',\n", ")\n", "\n", "left_layer = WMSLayer(\n", " url='https://ndgishub.nd.gov/arcgis/services/Imagery/AerialImage_ND_2018_CIR/ImageServer/WMSServer?',\n", " layers='AerialImage_ND_2018_CIR',\n", " name='AerialImage_ND_2018_CIR',\n", " format='image/png',\n", ")\n", "\n", "control = SplitMapControl(left_layer=left_layer, right_layer=right_layer)\n", "Map.add_control(control)\n", "Map.add_control(LayersControl(position='topright'))\n", "Map.add_control(FullScreenControl())\n", "\n", "Map" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "import geemap\n", "\n", "Map = geemap.Map()\n", "Map.split_map(left_layer='HYBRID', right_layer='ESRI')\n", "Map" ] } ], "metadata": { "kernelspec": { "display_name": "Python 3", "language": "python", "name": "python3" } }, "nbformat": 4, "nbformat_minor": 5 }