{ "cells": [ { "cell_type": "markdown", "id": "0", "metadata": {}, "source": [ "\n", " \n", " \n", " \n", "
View source on GitHubNotebook Viewer Run in Google Colab
" ] }, { "cell_type": "markdown", "id": "1", "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, "id": "2", "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, "id": "3", "metadata": {}, "outputs": [], "source": [ "import ee\n", "import geemap" ] }, { "cell_type": "markdown", "id": "4", "metadata": {}, "source": [ "## Create an interactive map" ] }, { "cell_type": "code", "execution_count": null, "id": "5", "metadata": {}, "outputs": [], "source": [ "Map = geemap.Map(center=(40, -100), zoom=4)\n", "Map.add_minimap(position=\"bottomright\")\n", "Map" ] }, { "cell_type": "markdown", "id": "6", "metadata": {}, "source": [ "## Add tile layers\n", "\n", "For example, you can Google Map tile layer:" ] }, { "cell_type": "code", "execution_count": null, "id": "7", "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", "id": "8", "metadata": {}, "source": [ "Add Google Terrain tile layer:" ] }, { "cell_type": "code", "execution_count": null, "id": "9", "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", "id": "10", "metadata": {}, "source": [ "## Add WMS layers\n", "More WMS layers can be found at ." ] }, { "cell_type": "markdown", "id": "11", "metadata": {}, "source": [ "For example, you can add NAIP imagery." ] }, { "cell_type": "code", "execution_count": null, "id": "12", "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", "id": "13", "metadata": {}, "source": [ "Add USGS 3DEP Elevation Dataset" ] }, { "cell_type": "code", "execution_count": null, "id": "14", "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", "id": "15", "metadata": {}, "source": [ "## Capture user inputs" ] }, { "cell_type": "code", "execution_count": null, "id": "16", "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, "id": "17", "metadata": {}, "outputs": [], "source": [ "print(coordinates)" ] }, { "cell_type": "markdown", "id": "18", "metadata": {}, "source": [ "## SplitMap control" ] }, { "cell_type": "code", "execution_count": null, "id": "19", "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, "id": "20", "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 }