diff --git a/book/geospatial/geemap.ipynb b/book/geospatial/geemap.ipynb index 7c67f55..f4b1466 100644 --- a/book/geospatial/geemap.ipynb +++ b/book/geospatial/geemap.ipynb @@ -11,7 +11,7 @@ "\n", "## Overview\n", "\n", - "This lecture introduces cloud-based geospatial analysis using the [Google Earth Engine](https://earthengine.google.com) (GEE) API in combination with the [geemap](https://geemap.org) Python package. We will cover core concepts of Earth Engine, visualization techniques, and practical workflows to perform analyses within a Jupyter environment. \n", + "This lecture introduces cloud-based geospatial analysis using the [Google Earth Engine](https://earthengine.google.com) (GEE) API in combination with the [geemap](https://geemap.org) Python package. We will cover core concepts of Earth Engine, visualization techniques, and practical workflows to perform analyses within a Jupyter environment.\n", "\n", "## Learning Objectives\n", "\n", @@ -160,7 +160,7 @@ "\n", "#### Example Maps\n", "\n", - "**Map of the Contiguous United States** \n", + "**Map of the Contiguous United States**\n", "\n", " To center the map on the contiguous United States, use:" ] @@ -353,6 +353,24 @@ "cell_type": "markdown", "id": "30", "metadata": {}, + "source": [ + "You can also add text to the map using the `add_text` method. The text will be displayed at the specified location on the map." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "31", + "metadata": {}, + "outputs": [], + "source": [ + "m.add_text(text=\"Hello from Earth Engine\", position=\"bottomright\")" + ] + }, + { + "cell_type": "markdown", + "id": "32", + "metadata": {}, "source": [ "## Introduction to Interactive Maps and Tools\n", "\n", @@ -364,7 +382,7 @@ { "cell_type": "code", "execution_count": null, - "id": "31", + "id": "33", "metadata": {}, "outputs": [], "source": [ @@ -375,7 +393,7 @@ }, { "cell_type": "markdown", - "id": "32", + "id": "34", "metadata": {}, "source": [ "### Layer Manager\n", @@ -386,7 +404,7 @@ { "cell_type": "code", "execution_count": null, - "id": "33", + "id": "35", "metadata": {}, "outputs": [], "source": [ @@ -406,7 +424,7 @@ }, { "cell_type": "markdown", - "id": "34", + "id": "36", "metadata": {}, "source": [ "### Inspector Tool\n", @@ -417,7 +435,7 @@ { "cell_type": "code", "execution_count": null, - "id": "35", + "id": "37", "metadata": {}, "outputs": [], "source": [ @@ -443,7 +461,7 @@ }, { "cell_type": "markdown", - "id": "36", + "id": "38", "metadata": {}, "source": [ "### Layer Editor\n", @@ -456,7 +474,7 @@ { "cell_type": "code", "execution_count": null, - "id": "37", + "id": "39", "metadata": {}, "outputs": [], "source": [ @@ -474,7 +492,7 @@ }, { "cell_type": "markdown", - "id": "38", + "id": "40", "metadata": {}, "source": [ "#### Multi-Band image" @@ -483,7 +501,7 @@ { "cell_type": "code", "execution_count": null, - "id": "39", + "id": "41", "metadata": {}, "outputs": [], "source": [ @@ -500,7 +518,7 @@ }, { "cell_type": "markdown", - "id": "40", + "id": "42", "metadata": {}, "source": [ "#### Feature Collection" @@ -509,7 +527,7 @@ { "cell_type": "code", "execution_count": null, - "id": "41", + "id": "43", "metadata": {}, "outputs": [], "source": [ @@ -522,7 +540,7 @@ }, { "cell_type": "markdown", - "id": "42", + "id": "44", "metadata": {}, "source": [ "### Draw Control\n", @@ -536,7 +554,7 @@ { "cell_type": "code", "execution_count": null, - "id": "43", + "id": "45", "metadata": {}, "outputs": [], "source": [ @@ -555,7 +573,7 @@ { "cell_type": "code", "execution_count": null, - "id": "44", + "id": "46", "metadata": {}, "outputs": [], "source": [ @@ -567,7 +585,7 @@ }, { "cell_type": "markdown", - "id": "45", + "id": "47", "metadata": {}, "source": [ "## The Earth Engine Data Catalog\n", @@ -578,7 +596,7 @@ "\n", "To browse datasets directly on the Earth Engine website:\n", "\n", - "- View the full catalog: https://developers.google.com/earth-engine/datasets/catalog \n", + "- View the full catalog: https://developers.google.com/earth-engine/datasets/catalog\n", "- Search by tags: https://developers.google.com/earth-engine/datasets/tags\n", "\n", "### Searching Datasets Within Geemap\n", @@ -589,7 +607,7 @@ { "cell_type": "code", "execution_count": null, - "id": "46", + "id": "48", "metadata": {}, "outputs": [], "source": [ @@ -599,7 +617,7 @@ }, { "cell_type": "markdown", - "id": "47", + "id": "49", "metadata": {}, "source": [ "![](https://i.imgur.com/B3rf4QN.jpg)\n", @@ -614,7 +632,7 @@ { "cell_type": "code", "execution_count": null, - "id": "48", + "id": "50", "metadata": {}, "outputs": [], "source": [ @@ -624,7 +642,7 @@ { "cell_type": "code", "execution_count": null, - "id": "49", + "id": "51", "metadata": {}, "outputs": [], "source": [ @@ -637,7 +655,7 @@ }, { "cell_type": "markdown", - "id": "50", + "id": "52", "metadata": {}, "source": [ "To retrieve metadata for a specific dataset, use the `get_metadata` function:" @@ -646,7 +664,7 @@ { "cell_type": "code", "execution_count": null, - "id": "51", + "id": "53", "metadata": {}, "outputs": [], "source": [ @@ -657,7 +675,7 @@ }, { "cell_type": "markdown", - "id": "52", + "id": "54", "metadata": {}, "source": [ "## Earth Engine Data Types\n", @@ -684,7 +702,7 @@ { "cell_type": "code", "execution_count": null, - "id": "53", + "id": "55", "metadata": {}, "outputs": [], "source": [ @@ -694,7 +712,7 @@ }, { "cell_type": "markdown", - "id": "54", + "id": "56", "metadata": {}, "source": [ "#### Visualizing Earth Engine Images\n", @@ -705,7 +723,7 @@ { "cell_type": "code", "execution_count": null, - "id": "55", + "id": "57", "metadata": {}, "outputs": [], "source": [ @@ -722,7 +740,7 @@ }, { "cell_type": "markdown", - "id": "56", + "id": "58", "metadata": {}, "source": [ "### ImageCollection\n", @@ -737,7 +755,7 @@ { "cell_type": "code", "execution_count": null, - "id": "57", + "id": "59", "metadata": {}, "outputs": [], "source": [ @@ -746,7 +764,7 @@ }, { "cell_type": "markdown", - "id": "58", + "id": "60", "metadata": {}, "source": [ "#### Filtering Image Collections\n", @@ -757,7 +775,7 @@ { "cell_type": "code", "execution_count": null, - "id": "59", + "id": "61", "metadata": {}, "outputs": [], "source": [ @@ -769,7 +787,7 @@ { "cell_type": "code", "execution_count": null, - "id": "60", + "id": "62", "metadata": {}, "outputs": [], "source": [ @@ -779,7 +797,7 @@ { "cell_type": "code", "execution_count": null, - "id": "61", + "id": "63", "metadata": {}, "outputs": [], "source": [ @@ -793,7 +811,7 @@ }, { "cell_type": "markdown", - "id": "62", + "id": "64", "metadata": {}, "source": [ "To view the filtered collection on a map:" @@ -802,7 +820,7 @@ { "cell_type": "code", "execution_count": null, - "id": "63", + "id": "65", "metadata": {}, "outputs": [], "source": [ @@ -822,7 +840,7 @@ }, { "cell_type": "markdown", - "id": "64", + "id": "66", "metadata": {}, "source": [ "#### Visualizing Image Collections\n", @@ -833,7 +851,7 @@ { "cell_type": "code", "execution_count": null, - "id": "65", + "id": "67", "metadata": {}, "outputs": [], "source": [ @@ -853,7 +871,7 @@ }, { "cell_type": "markdown", - "id": "66", + "id": "68", "metadata": {}, "source": [ "## Earth Engine Vector Data\n", @@ -868,7 +886,7 @@ { "cell_type": "code", "execution_count": null, - "id": "67", + "id": "69", "metadata": {}, "outputs": [], "source": [ @@ -881,7 +899,7 @@ }, { "cell_type": "markdown", - "id": "68", + "id": "70", "metadata": {}, "source": [ "### Filtering Feature Collections\n", @@ -892,7 +910,7 @@ { "cell_type": "code", "execution_count": null, - "id": "69", + "id": "71", "metadata": {}, "outputs": [], "source": [ @@ -906,7 +924,7 @@ }, { "cell_type": "markdown", - "id": "70", + "id": "72", "metadata": {}, "source": [ "To retrieve properties of the first feature in the collection, use:" @@ -915,7 +933,7 @@ { "cell_type": "code", "execution_count": null, - "id": "71", + "id": "73", "metadata": {}, "outputs": [], "source": [ @@ -925,7 +943,7 @@ }, { "cell_type": "markdown", - "id": "72", + "id": "74", "metadata": {}, "source": [ "You can also convert a FeatureCollection to a Pandas DataFrame for easier analysis with:" @@ -934,7 +952,7 @@ { "cell_type": "code", "execution_count": null, - "id": "73", + "id": "75", "metadata": {}, "outputs": [], "source": [ @@ -944,7 +962,7 @@ { "cell_type": "code", "execution_count": null, - "id": "74", + "id": "76", "metadata": {}, "outputs": [], "source": [ @@ -959,7 +977,7 @@ { "cell_type": "code", "execution_count": null, - "id": "75", + "id": "77", "metadata": {}, "outputs": [], "source": [ @@ -974,7 +992,36 @@ }, { "cell_type": "markdown", - "id": "76", + "id": "78", + "metadata": {}, + "source": [ + "A FeatureCollection can be used to clip an image. The `clipToCollection` method clips an image to the geometry of a feature collection. For example, to clip a Landsat image to the boundary of France:" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "79", + "metadata": {}, + "outputs": [], + "source": [ + "m = geemap.Map(center=(40, -100), zoom=4)\n", + "landsat7 = ee.Image(\"LANDSAT/LE7_TOA_5YEAR/1999_2003\")\n", + "countries = ee.FeatureCollection(\"FAO/GAUL_SIMPLIFIED_500m/2015/level0\")\n", + "fc = countries.filter(ee.Filter.eq(\"ADM0_NAME\", \"Germany\"))\n", + "image = landsat7.clipToCollection(fc)\n", + "m.add_layer(\n", + " image,\n", + " {\"bands\": [\"B4\", \"B3\", \"B2\"], \"min\": 20, \"max\": 200, \"gamma\": 2.0},\n", + " \"Landsat 7\",\n", + ")\n", + "m.center_object(fc, 6)\n", + "m" + ] + }, + { + "cell_type": "markdown", + "id": "80", "metadata": {}, "source": [ "### Visualizing Feature Collections\n", @@ -985,7 +1032,7 @@ { "cell_type": "code", "execution_count": null, - "id": "77", + "id": "81", "metadata": {}, "outputs": [], "source": [ @@ -997,7 +1044,7 @@ }, { "cell_type": "markdown", - "id": "78", + "id": "82", "metadata": {}, "source": [ "Feature collections can also be styled with additional parameters. To apply a custom style, specify options like color and line width:" @@ -1006,7 +1053,7 @@ { "cell_type": "code", "execution_count": null, - "id": "79", + "id": "83", "metadata": {}, "outputs": [], "source": [ @@ -1019,7 +1066,7 @@ }, { "cell_type": "markdown", - "id": "80", + "id": "84", "metadata": {}, "source": [ "Using `add_styled_vector`, you can apply a color palette to style different features by attribute:" @@ -1028,7 +1075,7 @@ { "cell_type": "code", "execution_count": null, - "id": "81", + "id": "85", "metadata": {}, "outputs": [], "source": [ @@ -1052,7 +1099,7 @@ }, { "cell_type": "markdown", - "id": "82", + "id": "86", "metadata": {}, "source": [ "## More Tools for Visualizing Earth Engine Data\n", @@ -1065,7 +1112,7 @@ { "cell_type": "code", "execution_count": null, - "id": "83", + "id": "87", "metadata": {}, "outputs": [], "source": [ @@ -1094,7 +1141,7 @@ }, { "cell_type": "markdown", - "id": "84", + "id": "88", "metadata": {}, "source": [ "Set the plotting options for Landsat to add marker clusters and overlays, enhancing the interactivity of plotted data on the map." @@ -1103,7 +1150,7 @@ { "cell_type": "code", "execution_count": null, - "id": "85", + "id": "89", "metadata": {}, "outputs": [], "source": [ @@ -1112,7 +1159,7 @@ }, { "cell_type": "markdown", - "id": "86", + "id": "90", "metadata": {}, "source": [ "Adjust the plotting options for Hyperion data by setting a bar plot type with marker clusters, suitable for visualizing Hyperion’s data values in bar format." @@ -1121,7 +1168,7 @@ { "cell_type": "code", "execution_count": null, - "id": "87", + "id": "91", "metadata": {}, "outputs": [], "source": [ @@ -1130,7 +1177,7 @@ }, { "cell_type": "markdown", - "id": "88", + "id": "92", "metadata": {}, "source": [ "### Legends\n", @@ -1143,7 +1190,7 @@ { "cell_type": "code", "execution_count": null, - "id": "89", + "id": "93", "metadata": {}, "outputs": [], "source": [ @@ -1152,7 +1199,7 @@ }, { "cell_type": "markdown", - "id": "90", + "id": "94", "metadata": {}, "source": [ "Print out all available built-in legends, which can be used with various data layers to enhance map readability." @@ -1161,7 +1208,7 @@ { "cell_type": "code", "execution_count": null, - "id": "91", + "id": "95", "metadata": {}, "outputs": [], "source": [ @@ -1171,7 +1218,7 @@ }, { "cell_type": "markdown", - "id": "92", + "id": "96", "metadata": {}, "source": [ "Add an NLCD WMS layer along with its corresponding legend, which appears as an overlay, providing users with an informative legend display." @@ -1180,7 +1227,7 @@ { "cell_type": "code", "execution_count": null, - "id": "93", + "id": "97", "metadata": {}, "outputs": [], "source": [ @@ -1193,7 +1240,7 @@ }, { "cell_type": "markdown", - "id": "94", + "id": "98", "metadata": {}, "source": [ "Add an Earth Engine layer for NLCD land cover and display its legend, specifying title, legend type, and dimensions for user convenience." @@ -1202,7 +1249,7 @@ { "cell_type": "code", "execution_count": null, - "id": "95", + "id": "99", "metadata": {}, "outputs": [], "source": [ @@ -1221,7 +1268,7 @@ }, { "cell_type": "markdown", - "id": "96", + "id": "100", "metadata": {}, "source": [ "#### Custom Legends\n", @@ -1232,7 +1279,7 @@ { "cell_type": "code", "execution_count": null, - "id": "97", + "id": "101", "metadata": {}, "outputs": [], "source": [ @@ -1250,7 +1297,7 @@ }, { "cell_type": "markdown", - "id": "98", + "id": "102", "metadata": {}, "source": [ "Define a custom legend using a dictionary that links specific colors to labels. This approach provides flexibility to represent specific categories in the data, such as various land cover types." @@ -1259,7 +1306,7 @@ { "cell_type": "code", "execution_count": null, - "id": "99", + "id": "103", "metadata": {}, "outputs": [], "source": [ @@ -1299,7 +1346,7 @@ }, { "cell_type": "markdown", - "id": "100", + "id": "104", "metadata": {}, "source": [ "### Color Bars\n", @@ -1310,7 +1357,7 @@ { "cell_type": "code", "execution_count": null, - "id": "101", + "id": "105", "metadata": {}, "outputs": [], "source": [ @@ -1330,7 +1377,7 @@ }, { "cell_type": "markdown", - "id": "102", + "id": "106", "metadata": {}, "source": [ "Add a vertical color bar for elevation data, adjusting its orientation and dimensions to fit the map layout." @@ -1339,7 +1386,7 @@ { "cell_type": "code", "execution_count": null, - "id": "103", + "id": "107", "metadata": {}, "outputs": [], "source": [ @@ -1354,7 +1401,7 @@ }, { "cell_type": "markdown", - "id": "104", + "id": "108", "metadata": {}, "source": [ "Make the color bar’s background transparent, which improves visual integration with the map when adding color bars for data layers." @@ -1363,7 +1410,7 @@ { "cell_type": "code", "execution_count": null, - "id": "105", + "id": "109", "metadata": {}, "outputs": [], "source": [ @@ -1379,7 +1426,7 @@ }, { "cell_type": "markdown", - "id": "106", + "id": "110", "metadata": {}, "source": [ "### Split-panel Maps\n", @@ -1390,7 +1437,7 @@ { "cell_type": "code", "execution_count": null, - "id": "107", + "id": "111", "metadata": {}, "outputs": [], "source": [ @@ -1401,7 +1448,7 @@ }, { "cell_type": "markdown", - "id": "108", + "id": "112", "metadata": {}, "source": [ "Use Earth Engine layers in a split-panel map to compare NLCD data from 2001 and 2021. This layout is effective for examining changes between datasets across time." @@ -1410,7 +1457,7 @@ { "cell_type": "code", "execution_count": null, - "id": "109", + "id": "113", "metadata": {}, "outputs": [], "source": [ @@ -1428,7 +1475,7 @@ }, { "cell_type": "markdown", - "id": "110", + "id": "114", "metadata": {}, "source": [ "### Linked Maps\n", @@ -1439,7 +1486,7 @@ { "cell_type": "code", "execution_count": null, - "id": "111", + "id": "115", "metadata": {}, "outputs": [], "source": [ @@ -1480,7 +1527,7 @@ }, { "cell_type": "markdown", - "id": "112", + "id": "116", "metadata": {}, "source": [ "### Timeseries Inspector\n", @@ -1491,7 +1538,7 @@ { "cell_type": "code", "execution_count": null, - "id": "113", + "id": "117", "metadata": {}, "outputs": [], "source": [ @@ -1504,7 +1551,7 @@ }, { "cell_type": "markdown", - "id": "114", + "id": "118", "metadata": {}, "source": [ "Use a timeseries inspector to compare changes in NLCD data across different years. This tool is ideal for temporal data visualization, showing how land cover changes in an interactive format." @@ -1513,7 +1560,7 @@ { "cell_type": "code", "execution_count": null, - "id": "115", + "id": "119", "metadata": {}, "outputs": [], "source": [ @@ -1531,7 +1578,7 @@ }, { "cell_type": "markdown", - "id": "116", + "id": "120", "metadata": {}, "source": [ "### Time Slider\n", @@ -1542,7 +1589,7 @@ { "cell_type": "code", "execution_count": null, - "id": "117", + "id": "121", "metadata": {}, "outputs": [], "source": [ @@ -1565,7 +1612,7 @@ }, { "cell_type": "markdown", - "id": "118", + "id": "122", "metadata": {}, "source": [ "Add a time slider for visualizing NOAA weather data over a 24-hour period, using color-coding to show temperature variations. The slider enables temporal exploration of hourly data." @@ -1574,7 +1621,7 @@ { "cell_type": "code", "execution_count": null, - "id": "119", + "id": "123", "metadata": {}, "outputs": [], "source": [ @@ -1600,7 +1647,7 @@ }, { "cell_type": "markdown", - "id": "120", + "id": "124", "metadata": {}, "source": [ "Add a time slider to visualize Sentinel-2 imagery with specific bands and cloud cover filtering. This feature enables temporal analysis of imagery data, allowing users to explore seasonal and other changes over time." @@ -1609,7 +1656,7 @@ { "cell_type": "code", "execution_count": null, - "id": "121", + "id": "125", "metadata": {}, "outputs": [], "source": [ @@ -1631,7 +1678,7 @@ }, { "cell_type": "markdown", - "id": "122", + "id": "126", "metadata": {}, "source": [ "## Processing of Vector Data\n", @@ -1644,7 +1691,7 @@ { "cell_type": "code", "execution_count": null, - "id": "123", + "id": "127", "metadata": {}, "outputs": [], "source": [ @@ -1657,7 +1704,7 @@ }, { "cell_type": "markdown", - "id": "124", + "id": "128", "metadata": {}, "source": [ "### From Shapefile\n", @@ -1668,7 +1715,7 @@ { "cell_type": "code", "execution_count": null, - "id": "125", + "id": "129", "metadata": {}, "outputs": [], "source": [ @@ -1679,7 +1726,7 @@ { "cell_type": "code", "execution_count": null, - "id": "126", + "id": "130", "metadata": {}, "outputs": [], "source": [ @@ -1690,7 +1737,7 @@ { "cell_type": "code", "execution_count": null, - "id": "127", + "id": "131", "metadata": {}, "outputs": [], "source": [ @@ -1701,7 +1748,7 @@ }, { "cell_type": "markdown", - "id": "128", + "id": "132", "metadata": {}, "source": [ "### From GeoDataFrame\n", @@ -1712,7 +1759,7 @@ { "cell_type": "code", "execution_count": null, - "id": "129", + "id": "133", "metadata": {}, "outputs": [], "source": [ @@ -1725,7 +1772,7 @@ { "cell_type": "code", "execution_count": null, - "id": "130", + "id": "134", "metadata": {}, "outputs": [], "source": [ @@ -1736,7 +1783,7 @@ }, { "cell_type": "markdown", - "id": "131", + "id": "135", "metadata": {}, "source": [ "### To GeoJSON\n", @@ -1747,7 +1794,7 @@ { "cell_type": "code", "execution_count": null, - "id": "132", + "id": "136", "metadata": {}, "outputs": [], "source": [ @@ -1762,7 +1809,7 @@ { "cell_type": "code", "execution_count": null, - "id": "133", + "id": "137", "metadata": {}, "outputs": [], "source": [ @@ -1771,7 +1818,7 @@ }, { "cell_type": "markdown", - "id": "134", + "id": "138", "metadata": {}, "source": [ "### To Shapefile\n", @@ -1782,7 +1829,7 @@ { "cell_type": "code", "execution_count": null, - "id": "135", + "id": "139", "metadata": {}, "outputs": [], "source": [ @@ -1791,7 +1838,7 @@ }, { "cell_type": "markdown", - "id": "136", + "id": "140", "metadata": {}, "source": [ "### To GeoDataFrame\n", @@ -1802,7 +1849,7 @@ { "cell_type": "code", "execution_count": null, - "id": "137", + "id": "141", "metadata": {}, "outputs": [], "source": [ @@ -1813,7 +1860,7 @@ { "cell_type": "code", "execution_count": null, - "id": "138", + "id": "142", "metadata": {}, "outputs": [], "source": [ @@ -1822,7 +1869,7 @@ }, { "cell_type": "markdown", - "id": "139", + "id": "143", "metadata": {}, "source": [ "### To DataFrame\n", @@ -1833,7 +1880,7 @@ { "cell_type": "code", "execution_count": null, - "id": "140", + "id": "144", "metadata": {}, "outputs": [], "source": [ @@ -1843,7 +1890,7 @@ }, { "cell_type": "markdown", - "id": "141", + "id": "145", "metadata": {}, "source": [ "### To CSV\n", @@ -1854,7 +1901,7 @@ { "cell_type": "code", "execution_count": null, - "id": "142", + "id": "146", "metadata": {}, "outputs": [], "source": [ @@ -1863,7 +1910,7 @@ }, { "cell_type": "markdown", - "id": "143", + "id": "147", "metadata": {}, "source": [ "## Processing of Raster Data\n", @@ -1878,7 +1925,7 @@ { "cell_type": "code", "execution_count": null, - "id": "144", + "id": "148", "metadata": {}, "outputs": [], "source": [ @@ -1905,7 +1952,7 @@ { "cell_type": "code", "execution_count": null, - "id": "145", + "id": "149", "metadata": {}, "outputs": [], "source": [ @@ -1917,7 +1964,7 @@ { "cell_type": "code", "execution_count": null, - "id": "146", + "id": "150", "metadata": {}, "outputs": [], "source": [ @@ -1928,7 +1975,7 @@ { "cell_type": "code", "execution_count": null, - "id": "147", + "id": "151", "metadata": {}, "outputs": [], "source": [ @@ -1938,7 +1985,7 @@ { "cell_type": "code", "execution_count": null, - "id": "148", + "id": "152", "metadata": {}, "outputs": [], "source": [ @@ -1948,7 +1995,7 @@ { "cell_type": "code", "execution_count": null, - "id": "149", + "id": "153", "metadata": {}, "outputs": [], "source": [ @@ -1958,7 +2005,7 @@ { "cell_type": "code", "execution_count": null, - "id": "150", + "id": "154", "metadata": {}, "outputs": [], "source": [ @@ -1967,7 +2014,7 @@ }, { "cell_type": "markdown", - "id": "151", + "id": "155", "metadata": {}, "source": [ "#### Extracting Pixel Values Along a Transect\n", @@ -1978,7 +2025,7 @@ { "cell_type": "code", "execution_count": null, - "id": "152", + "id": "156", "metadata": {}, "outputs": [], "source": [ @@ -1998,7 +2045,7 @@ { "cell_type": "code", "execution_count": null, - "id": "153", + "id": "157", "metadata": {}, "outputs": [], "source": [ @@ -2014,7 +2061,7 @@ { "cell_type": "code", "execution_count": null, - "id": "154", + "id": "158", "metadata": {}, "outputs": [], "source": [ @@ -2028,7 +2075,7 @@ { "cell_type": "code", "execution_count": null, - "id": "155", + "id": "159", "metadata": {}, "outputs": [], "source": [ @@ -2046,7 +2093,7 @@ { "cell_type": "code", "execution_count": null, - "id": "156", + "id": "160", "metadata": {}, "outputs": [], "source": [ @@ -2055,7 +2102,7 @@ }, { "cell_type": "markdown", - "id": "157", + "id": "161", "metadata": {}, "source": [ "### Zonal Statistics\n", @@ -2068,7 +2115,7 @@ { "cell_type": "code", "execution_count": null, - "id": "158", + "id": "162", "metadata": {}, "outputs": [], "source": [ @@ -2098,7 +2145,7 @@ { "cell_type": "code", "execution_count": null, - "id": "159", + "id": "163", "metadata": {}, "outputs": [], "source": [ @@ -2111,7 +2158,7 @@ { "cell_type": "code", "execution_count": null, - "id": "160", + "id": "164", "metadata": {}, "outputs": [], "source": [ @@ -2128,7 +2175,7 @@ }, { "cell_type": "markdown", - "id": "161", + "id": "165", "metadata": {}, "source": [ "#### Zonal Statistics by Group\n", @@ -2139,7 +2186,7 @@ { "cell_type": "code", "execution_count": null, - "id": "162", + "id": "166", "metadata": {}, "outputs": [], "source": [ @@ -2163,7 +2210,7 @@ { "cell_type": "code", "execution_count": null, - "id": "163", + "id": "167", "metadata": {}, "outputs": [], "source": [ @@ -2182,7 +2229,7 @@ { "cell_type": "code", "execution_count": null, - "id": "164", + "id": "168", "metadata": {}, "outputs": [], "source": [ @@ -2200,7 +2247,7 @@ }, { "cell_type": "markdown", - "id": "165", + "id": "169", "metadata": {}, "source": [ "#### Zonal Statistics with Two Images\n", @@ -2211,7 +2258,7 @@ { "cell_type": "code", "execution_count": null, - "id": "166", + "id": "170", "metadata": {}, "outputs": [], "source": [ @@ -2225,7 +2272,7 @@ { "cell_type": "code", "execution_count": null, - "id": "167", + "id": "171", "metadata": {}, "outputs": [], "source": [ @@ -2237,7 +2284,7 @@ { "cell_type": "code", "execution_count": null, - "id": "168", + "id": "172", "metadata": {}, "outputs": [], "source": [ @@ -2248,7 +2295,7 @@ { "cell_type": "code", "execution_count": null, - "id": "169", + "id": "173", "metadata": {}, "outputs": [], "source": [ @@ -2258,7 +2305,7 @@ { "cell_type": "code", "execution_count": null, - "id": "170", + "id": "174", "metadata": {}, "outputs": [], "source": [ @@ -2267,7 +2314,7 @@ }, { "cell_type": "markdown", - "id": "171", + "id": "175", "metadata": {}, "source": [ "### Map Algebra\n", @@ -2278,7 +2325,7 @@ { "cell_type": "code", "execution_count": null, - "id": "172", + "id": "176", "metadata": {}, "outputs": [], "source": [ @@ -2303,7 +2350,7 @@ { "cell_type": "code", "execution_count": null, - "id": "173", + "id": "177", "metadata": {}, "outputs": [], "source": [ @@ -2331,7 +2378,7 @@ }, { "cell_type": "markdown", - "id": "174", + "id": "178", "metadata": {}, "source": [ "## Working with Local Geospatial Data\n", @@ -2346,7 +2393,7 @@ { "cell_type": "code", "execution_count": null, - "id": "175", + "id": "179", "metadata": {}, "outputs": [], "source": [ @@ -2357,7 +2404,7 @@ }, { "cell_type": "markdown", - "id": "176", + "id": "180", "metadata": {}, "source": [ "#### Multi-Band Raster Data" @@ -2366,7 +2413,7 @@ { "cell_type": "code", "execution_count": null, - "id": "177", + "id": "181", "metadata": {}, "outputs": [], "source": [ @@ -2380,7 +2427,7 @@ { "cell_type": "code", "execution_count": null, - "id": "178", + "id": "182", "metadata": {}, "outputs": [], "source": [ @@ -2392,7 +2439,7 @@ { "cell_type": "code", "execution_count": null, - "id": "179", + "id": "183", "metadata": {}, "outputs": [], "source": [ @@ -2403,7 +2450,7 @@ }, { "cell_type": "markdown", - "id": "180", + "id": "184", "metadata": {}, "source": [ "### Vector Data\n", @@ -2416,7 +2463,7 @@ { "cell_type": "code", "execution_count": null, - "id": "181", + "id": "185", "metadata": {}, "outputs": [], "source": [ @@ -2431,7 +2478,7 @@ { "cell_type": "code", "execution_count": null, - "id": "182", + "id": "186", "metadata": {}, "outputs": [], "source": [ @@ -2445,7 +2492,7 @@ { "cell_type": "code", "execution_count": null, - "id": "183", + "id": "187", "metadata": {}, "outputs": [], "source": [ @@ -2460,7 +2507,7 @@ { "cell_type": "code", "execution_count": null, - "id": "184", + "id": "188", "metadata": {}, "outputs": [], "source": [ @@ -2484,7 +2531,7 @@ { "cell_type": "code", "execution_count": null, - "id": "185", + "id": "189", "metadata": {}, "outputs": [], "source": [ @@ -2508,7 +2555,7 @@ }, { "cell_type": "markdown", - "id": "186", + "id": "190", "metadata": {}, "source": [ "#### Shapefile" @@ -2517,7 +2564,7 @@ { "cell_type": "code", "execution_count": null, - "id": "187", + "id": "191", "metadata": {}, "outputs": [], "source": [ @@ -2528,7 +2575,7 @@ { "cell_type": "code", "execution_count": null, - "id": "188", + "id": "192", "metadata": {}, "outputs": [], "source": [ @@ -2540,7 +2587,7 @@ }, { "cell_type": "markdown", - "id": "189", + "id": "193", "metadata": {}, "source": [ "#### GeoDataFrame" @@ -2549,7 +2596,7 @@ { "cell_type": "code", "execution_count": null, - "id": "190", + "id": "194", "metadata": {}, "outputs": [], "source": [ @@ -2563,7 +2610,7 @@ }, { "cell_type": "markdown", - "id": "191", + "id": "195", "metadata": {}, "source": [ "#### GeoPackage" @@ -2572,7 +2619,7 @@ { "cell_type": "code", "execution_count": null, - "id": "192", + "id": "196", "metadata": {}, "outputs": [], "source": [ @@ -2584,7 +2631,7 @@ }, { "cell_type": "markdown", - "id": "193", + "id": "197", "metadata": {}, "source": [ "#### CSV to Vector\n", @@ -2595,7 +2642,7 @@ { "cell_type": "code", "execution_count": null, - "id": "194", + "id": "198", "metadata": {}, "outputs": [], "source": [ @@ -2606,7 +2653,7 @@ { "cell_type": "code", "execution_count": null, - "id": "195", + "id": "199", "metadata": {}, "outputs": [], "source": [ @@ -2618,7 +2665,7 @@ { "cell_type": "code", "execution_count": null, - "id": "196", + "id": "200", "metadata": {}, "outputs": [], "source": [ @@ -2628,7 +2675,7 @@ { "cell_type": "code", "execution_count": null, - "id": "197", + "id": "201", "metadata": {}, "outputs": [], "source": [ @@ -2638,7 +2685,7 @@ { "cell_type": "code", "execution_count": null, - "id": "198", + "id": "202", "metadata": {}, "outputs": [], "source": [ @@ -2649,7 +2696,7 @@ { "cell_type": "code", "execution_count": null, - "id": "199", + "id": "203", "metadata": {}, "outputs": [], "source": [ @@ -2664,7 +2711,7 @@ { "cell_type": "code", "execution_count": null, - "id": "200", + "id": "204", "metadata": {}, "outputs": [], "source": [ @@ -2674,7 +2721,7 @@ { "cell_type": "code", "execution_count": null, - "id": "201", + "id": "205", "metadata": {}, "outputs": [], "source": [ @@ -2696,7 +2743,7 @@ { "cell_type": "code", "execution_count": null, - "id": "202", + "id": "206", "metadata": {}, "outputs": [], "source": [ @@ -2715,7 +2762,7 @@ }, { "cell_type": "markdown", - "id": "203", + "id": "207", "metadata": {}, "source": [ "## Accessing Cloud Optimized GeoTIFFs\n", @@ -2728,7 +2775,7 @@ { "cell_type": "code", "execution_count": null, - "id": "204", + "id": "208", "metadata": {}, "outputs": [], "source": [ @@ -2741,7 +2788,7 @@ { "cell_type": "code", "execution_count": null, - "id": "205", + "id": "209", "metadata": {}, "outputs": [], "source": [ @@ -2750,7 +2797,7 @@ }, { "cell_type": "markdown", - "id": "206", + "id": "210", "metadata": {}, "source": [ "The COG functions also allow inspection of data, such as viewing the bounds and available bands in the GeoTIFF file. The pre- and post-event images can be compared in a split map view to analyze changes due to the fire." @@ -2759,7 +2806,7 @@ { "cell_type": "code", "execution_count": null, - "id": "207", + "id": "211", "metadata": {}, "outputs": [], "source": [ @@ -2769,7 +2816,7 @@ { "cell_type": "code", "execution_count": null, - "id": "208", + "id": "212", "metadata": {}, "outputs": [], "source": [ @@ -2780,7 +2827,7 @@ { "cell_type": "code", "execution_count": null, - "id": "209", + "id": "213", "metadata": {}, "outputs": [], "source": [ @@ -2791,7 +2838,7 @@ }, { "cell_type": "markdown", - "id": "210", + "id": "214", "metadata": {}, "source": [ "### SpatioTemporal Asset Catalog (STAC)\n", @@ -2802,7 +2849,7 @@ { "cell_type": "code", "execution_count": null, - "id": "211", + "id": "215", "metadata": {}, "outputs": [], "source": [ @@ -2812,7 +2859,7 @@ { "cell_type": "code", "execution_count": null, - "id": "212", + "id": "216", "metadata": {}, "outputs": [], "source": [ @@ -2822,7 +2869,7 @@ { "cell_type": "code", "execution_count": null, - "id": "213", + "id": "217", "metadata": {}, "outputs": [], "source": [ @@ -2832,7 +2879,7 @@ { "cell_type": "code", "execution_count": null, - "id": "214", + "id": "218", "metadata": {}, "outputs": [], "source": [ @@ -2842,7 +2889,7 @@ { "cell_type": "code", "execution_count": null, - "id": "215", + "id": "219", "metadata": {}, "outputs": [], "source": [ @@ -2854,7 +2901,7 @@ }, { "cell_type": "markdown", - "id": "216", + "id": "220", "metadata": {}, "source": [ "## Exporting Earth Engine Data\n", @@ -2870,7 +2917,7 @@ { "cell_type": "code", "execution_count": null, - "id": "217", + "id": "221", "metadata": {}, "outputs": [], "source": [ @@ -2889,7 +2936,7 @@ }, { "cell_type": "markdown", - "id": "218", + "id": "222", "metadata": {}, "source": [ "Add a rectangle to the map." @@ -2898,7 +2945,7 @@ { "cell_type": "code", "execution_count": null, - "id": "219", + "id": "223", "metadata": {}, "outputs": [], "source": [ @@ -2910,7 +2957,7 @@ }, { "cell_type": "markdown", - "id": "220", + "id": "224", "metadata": {}, "source": [ "To local drive" @@ -2919,7 +2966,7 @@ { "cell_type": "code", "execution_count": null, - "id": "221", + "id": "225", "metadata": {}, "outputs": [], "source": [ @@ -2928,7 +2975,7 @@ }, { "cell_type": "markdown", - "id": "222", + "id": "226", "metadata": {}, "source": [ "Check image projection." @@ -2937,7 +2984,7 @@ { "cell_type": "code", "execution_count": null, - "id": "223", + "id": "227", "metadata": {}, "outputs": [], "source": [ @@ -2948,7 +2995,7 @@ { "cell_type": "code", "execution_count": null, - "id": "224", + "id": "228", "metadata": {}, "outputs": [], "source": [ @@ -2958,7 +3005,7 @@ }, { "cell_type": "markdown", - "id": "225", + "id": "229", "metadata": {}, "source": [ "Specify region, crs, and crs_transform." @@ -2967,7 +3014,7 @@ { "cell_type": "code", "execution_count": null, - "id": "226", + "id": "230", "metadata": {}, "outputs": [], "source": [ @@ -2982,7 +3029,7 @@ }, { "cell_type": "markdown", - "id": "227", + "id": "231", "metadata": {}, "source": [ "To Google Drive" @@ -2991,7 +3038,7 @@ { "cell_type": "code", "execution_count": null, - "id": "228", + "id": "232", "metadata": {}, "outputs": [], "source": [ @@ -3003,7 +3050,7 @@ { "cell_type": "code", "execution_count": null, - "id": "229", + "id": "233", "metadata": {}, "outputs": [], "source": [ @@ -3012,7 +3059,7 @@ }, { "cell_type": "markdown", - "id": "230", + "id": "234", "metadata": {}, "source": [ "### Exporting Image Collections\n", @@ -3023,7 +3070,7 @@ { "cell_type": "code", "execution_count": null, - "id": "231", + "id": "235", "metadata": {}, "outputs": [], "source": [ @@ -3039,7 +3086,7 @@ { "cell_type": "code", "execution_count": null, - "id": "232", + "id": "236", "metadata": {}, "outputs": [], "source": [ @@ -3048,7 +3095,7 @@ }, { "cell_type": "markdown", - "id": "233", + "id": "237", "metadata": {}, "source": [ "To local drive" @@ -3057,7 +3104,7 @@ { "cell_type": "code", "execution_count": null, - "id": "234", + "id": "238", "metadata": {}, "outputs": [], "source": [ @@ -3066,7 +3113,7 @@ }, { "cell_type": "markdown", - "id": "235", + "id": "239", "metadata": {}, "source": [ "To Google Drive" @@ -3075,7 +3122,7 @@ { "cell_type": "code", "execution_count": null, - "id": "236", + "id": "240", "metadata": {}, "outputs": [], "source": [ @@ -3084,7 +3131,7 @@ }, { "cell_type": "markdown", - "id": "237", + "id": "241", "metadata": {}, "source": [ "### Exporting Feature Collections\n", @@ -3095,7 +3142,7 @@ { "cell_type": "code", "execution_count": null, - "id": "238", + "id": "242", "metadata": {}, "outputs": [], "source": [ @@ -3109,7 +3156,7 @@ }, { "cell_type": "markdown", - "id": "239", + "id": "243", "metadata": {}, "source": [ "To local drive" @@ -3118,7 +3165,7 @@ { "cell_type": "code", "execution_count": null, - "id": "240", + "id": "244", "metadata": {}, "outputs": [], "source": [ @@ -3128,7 +3175,7 @@ { "cell_type": "code", "execution_count": null, - "id": "241", + "id": "245", "metadata": {}, "outputs": [], "source": [ @@ -3138,7 +3185,7 @@ { "cell_type": "code", "execution_count": null, - "id": "242", + "id": "246", "metadata": {}, "outputs": [], "source": [ @@ -3148,7 +3195,7 @@ { "cell_type": "code", "execution_count": null, - "id": "243", + "id": "247", "metadata": {}, "outputs": [], "source": [ @@ -3158,7 +3205,7 @@ { "cell_type": "code", "execution_count": null, - "id": "244", + "id": "248", "metadata": {}, "outputs": [], "source": [ @@ -3169,7 +3216,7 @@ { "cell_type": "code", "execution_count": null, - "id": "245", + "id": "249", "metadata": {}, "outputs": [], "source": [ @@ -3179,7 +3226,7 @@ }, { "cell_type": "markdown", - "id": "246", + "id": "250", "metadata": {}, "source": [ "To Google Drive" @@ -3188,7 +3235,7 @@ { "cell_type": "code", "execution_count": null, - "id": "247", + "id": "251", "metadata": {}, "outputs": [], "source": [ @@ -3199,7 +3246,7 @@ }, { "cell_type": "markdown", - "id": "248", + "id": "252", "metadata": {}, "source": [ "## Creating Timelapse Animations\n", @@ -3212,7 +3259,7 @@ { "cell_type": "code", "execution_count": null, - "id": "249", + "id": "253", "metadata": {}, "outputs": [], "source": [ @@ -3226,7 +3273,7 @@ { "cell_type": "code", "execution_count": null, - "id": "250", + "id": "254", "metadata": {}, "outputs": [], "source": [ @@ -3246,7 +3293,7 @@ { "cell_type": "code", "execution_count": null, - "id": "251", + "id": "255", "metadata": {}, "outputs": [], "source": [ @@ -3260,7 +3307,7 @@ { "cell_type": "code", "execution_count": null, - "id": "252", + "id": "256", "metadata": {}, "outputs": [], "source": [ @@ -3280,7 +3327,7 @@ }, { "cell_type": "markdown", - "id": "253", + "id": "257", "metadata": {}, "source": [ "### Sentinel-2 Timelapse\n", @@ -3291,7 +3338,7 @@ { "cell_type": "code", "execution_count": null, - "id": "254", + "id": "258", "metadata": {}, "outputs": [], "source": [ @@ -3301,7 +3348,7 @@ }, { "cell_type": "markdown", - "id": "255", + "id": "259", "metadata": {}, "source": [ "Pan and zoom the map to an area of interest. Use the drawing tools to draw a rectangle on the map. If no rectangle is drawn, the default rectangle shown below will be used." @@ -3310,7 +3357,7 @@ { "cell_type": "code", "execution_count": null, - "id": "256", + "id": "260", "metadata": {}, "outputs": [], "source": [ @@ -3324,7 +3371,7 @@ { "cell_type": "code", "execution_count": null, - "id": "257", + "id": "261", "metadata": {}, "outputs": [], "source": [ @@ -3345,7 +3392,7 @@ }, { "cell_type": "markdown", - "id": "258", + "id": "262", "metadata": {}, "source": [ "### MODIS Timelapse\n", @@ -3356,7 +3403,7 @@ { "cell_type": "code", "execution_count": null, - "id": "259", + "id": "263", "metadata": {}, "outputs": [], "source": [ @@ -3367,7 +3414,7 @@ { "cell_type": "code", "execution_count": null, - "id": "260", + "id": "264", "metadata": {}, "outputs": [], "source": [ @@ -3381,7 +3428,7 @@ { "cell_type": "code", "execution_count": null, - "id": "261", + "id": "265", "metadata": {}, "outputs": [], "source": [ @@ -3401,7 +3448,7 @@ }, { "cell_type": "markdown", - "id": "262", + "id": "266", "metadata": {}, "source": [ "MODIS temperature" @@ -3410,7 +3457,7 @@ { "cell_type": "code", "execution_count": null, - "id": "263", + "id": "267", "metadata": {}, "outputs": [], "source": [ @@ -3421,7 +3468,7 @@ { "cell_type": "code", "execution_count": null, - "id": "264", + "id": "268", "metadata": {}, "outputs": [], "source": [ @@ -3435,7 +3482,7 @@ { "cell_type": "code", "execution_count": null, - "id": "265", + "id": "269", "metadata": {}, "outputs": [], "source": [ @@ -3455,7 +3502,7 @@ }, { "cell_type": "markdown", - "id": "266", + "id": "270", "metadata": {}, "source": [ "### GOES Timelapse\n", @@ -3466,7 +3513,7 @@ { "cell_type": "code", "execution_count": null, - "id": "267", + "id": "271", "metadata": {}, "outputs": [], "source": [ @@ -3480,7 +3527,7 @@ { "cell_type": "code", "execution_count": null, - "id": "268", + "id": "272", "metadata": {}, "outputs": [], "source": [ @@ -3493,7 +3540,7 @@ { "cell_type": "code", "execution_count": null, - "id": "269", + "id": "273", "metadata": {}, "outputs": [], "source": [ @@ -3507,7 +3554,7 @@ { "cell_type": "code", "execution_count": null, - "id": "270", + "id": "274", "metadata": {}, "outputs": [], "source": [ @@ -3520,7 +3567,7 @@ { "cell_type": "code", "execution_count": null, - "id": "271", + "id": "275", "metadata": {}, "outputs": [], "source": [ @@ -3534,7 +3581,7 @@ { "cell_type": "code", "execution_count": null, - "id": "272", + "id": "276", "metadata": {}, "outputs": [], "source": [ @@ -3546,7 +3593,7 @@ }, { "cell_type": "markdown", - "id": "273", + "id": "277", "metadata": {}, "source": [ "## Charting\n", @@ -3561,7 +3608,7 @@ { "cell_type": "code", "execution_count": null, - "id": "274", + "id": "278", "metadata": {}, "outputs": [], "source": [ @@ -3573,7 +3620,7 @@ }, { "cell_type": "markdown", - "id": "275", + "id": "279", "metadata": {}, "source": [ "Initialize Earth Engine using `geemap.ee_initialize()`." @@ -3582,7 +3629,7 @@ { "cell_type": "code", "execution_count": null, - "id": "276", + "id": "280", "metadata": {}, "outputs": [], "source": [ @@ -3591,7 +3638,7 @@ }, { "cell_type": "markdown", - "id": "277", + "id": "281", "metadata": {}, "source": [ "#### feature_by_feature\n", @@ -3602,7 +3649,7 @@ { "cell_type": "code", "execution_count": null, - "id": "278", + "id": "282", "metadata": {}, "outputs": [], "source": [ @@ -3613,7 +3660,7 @@ { "cell_type": "code", "execution_count": null, - "id": "279", + "id": "283", "metadata": {}, "outputs": [], "source": [ @@ -3623,7 +3670,7 @@ { "cell_type": "code", "execution_count": null, - "id": "280", + "id": "284", "metadata": {}, "outputs": [], "source": [ @@ -3654,7 +3701,7 @@ { "cell_type": "code", "execution_count": null, - "id": "281", + "id": "285", "metadata": {}, "outputs": [], "source": [ @@ -3673,7 +3720,7 @@ }, { "cell_type": "markdown", - "id": "282", + "id": "286", "metadata": {}, "source": [ "![](https://i.imgur.com/MZa99Vf.png)" @@ -3681,7 +3728,7 @@ }, { "cell_type": "markdown", - "id": "283", + "id": "287", "metadata": {}, "source": [ "#### feature.by_property\n", @@ -3692,7 +3739,7 @@ { "cell_type": "code", "execution_count": null, - "id": "284", + "id": "288", "metadata": {}, "outputs": [], "source": [ @@ -3703,7 +3750,7 @@ { "cell_type": "code", "execution_count": null, - "id": "285", + "id": "289", "metadata": {}, "outputs": [], "source": [ @@ -3713,7 +3760,7 @@ { "cell_type": "code", "execution_count": null, - "id": "286", + "id": "290", "metadata": {}, "outputs": [], "source": [ @@ -3724,7 +3771,7 @@ { "cell_type": "code", "execution_count": null, - "id": "287", + "id": "291", "metadata": {}, "outputs": [], "source": [ @@ -3737,7 +3784,7 @@ { "cell_type": "code", "execution_count": null, - "id": "288", + "id": "292", "metadata": {}, "outputs": [], "source": [ @@ -3756,7 +3803,7 @@ }, { "cell_type": "markdown", - "id": "289", + "id": "293", "metadata": {}, "source": [ "![](https://i.imgur.com/6RhuUc7.png)" @@ -3764,7 +3811,7 @@ }, { "cell_type": "markdown", - "id": "290", + "id": "294", "metadata": {}, "source": [ "#### feature_groups\n", @@ -3775,7 +3822,7 @@ { "cell_type": "code", "execution_count": null, - "id": "291", + "id": "295", "metadata": {}, "outputs": [], "source": [ @@ -3786,7 +3833,7 @@ { "cell_type": "code", "execution_count": null, - "id": "292", + "id": "296", "metadata": {}, "outputs": [], "source": [ @@ -3802,7 +3849,7 @@ { "cell_type": "code", "execution_count": null, - "id": "293", + "id": "297", "metadata": {}, "outputs": [], "source": [ @@ -3822,7 +3869,7 @@ }, { "cell_type": "markdown", - "id": "294", + "id": "298", "metadata": {}, "source": [ "![](https://i.imgur.com/YFZlJtc.png)" @@ -3830,7 +3877,7 @@ }, { "cell_type": "markdown", - "id": "295", + "id": "299", "metadata": {}, "source": [ "#### feature_histogram\n", @@ -3841,7 +3888,7 @@ { "cell_type": "code", "execution_count": null, - "id": "296", + "id": "300", "metadata": {}, "outputs": [], "source": [ @@ -3853,7 +3900,7 @@ { "cell_type": "code", "execution_count": null, - "id": "297", + "id": "301", "metadata": {}, "outputs": [], "source": [ @@ -3863,7 +3910,7 @@ { "cell_type": "code", "execution_count": null, - "id": "298", + "id": "302", "metadata": {}, "outputs": [], "source": [ @@ -3874,7 +3921,7 @@ { "cell_type": "code", "execution_count": null, - "id": "299", + "id": "303", "metadata": {}, "outputs": [], "source": [ @@ -3892,7 +3939,7 @@ }, { "cell_type": "markdown", - "id": "300", + "id": "304", "metadata": {}, "source": [ "![](https://i.imgur.com/ErIp7Oy.png)\n", @@ -3907,7 +3954,7 @@ { "cell_type": "code", "execution_count": null, - "id": "301", + "id": "305", "metadata": {}, "outputs": [], "source": [ @@ -3920,7 +3967,7 @@ { "cell_type": "code", "execution_count": null, - "id": "302", + "id": "306", "metadata": {}, "outputs": [], "source": [ @@ -3931,7 +3978,7 @@ { "cell_type": "code", "execution_count": null, - "id": "303", + "id": "307", "metadata": {}, "outputs": [], "source": [ @@ -3951,7 +3998,7 @@ }, { "cell_type": "markdown", - "id": "304", + "id": "308", "metadata": {}, "source": [ "![](https://i.imgur.com/y4rp3dK.png)" @@ -3959,7 +4006,7 @@ }, { "cell_type": "markdown", - "id": "305", + "id": "309", "metadata": {}, "source": [ "#### image_regions\n", @@ -3971,7 +4018,7 @@ { "cell_type": "code", "execution_count": null, - "id": "306", + "id": "310", "metadata": {}, "outputs": [], "source": [ @@ -3984,7 +4031,7 @@ { "cell_type": "code", "execution_count": null, - "id": "307", + "id": "311", "metadata": {}, "outputs": [], "source": [ @@ -3995,7 +4042,7 @@ { "cell_type": "code", "execution_count": null, - "id": "308", + "id": "312", "metadata": {}, "outputs": [], "source": [ @@ -4007,7 +4054,7 @@ { "cell_type": "code", "execution_count": null, - "id": "309", + "id": "313", "metadata": {}, "outputs": [], "source": [ @@ -4028,7 +4075,7 @@ }, { "cell_type": "markdown", - "id": "310", + "id": "314", "metadata": {}, "source": [ "![](https://i.imgur.com/5WJVCNY.png)" @@ -4036,7 +4083,7 @@ }, { "cell_type": "markdown", - "id": "311", + "id": "315", "metadata": {}, "source": [ "#### image_by_class\n", @@ -4047,7 +4094,7 @@ { "cell_type": "code", "execution_count": null, - "id": "312", + "id": "316", "metadata": {}, "outputs": [], "source": [ @@ -4067,7 +4114,7 @@ { "cell_type": "code", "execution_count": null, - "id": "313", + "id": "317", "metadata": {}, "outputs": [], "source": [ @@ -4090,7 +4137,7 @@ }, { "cell_type": "markdown", - "id": "314", + "id": "318", "metadata": {}, "source": [ "![](https://i.imgur.com/XqYHvBV.png)" @@ -4098,7 +4145,7 @@ }, { "cell_type": "markdown", - "id": "315", + "id": "319", "metadata": {}, "source": [ "#### image_histogram\n", @@ -4109,7 +4156,7 @@ { "cell_type": "code", "execution_count": null, - "id": "316", + "id": "320", "metadata": {}, "outputs": [], "source": [ @@ -4126,7 +4173,7 @@ { "cell_type": "code", "execution_count": null, - "id": "317", + "id": "321", "metadata": {}, "outputs": [], "source": [ @@ -4147,7 +4194,7 @@ }, { "cell_type": "markdown", - "id": "318", + "id": "322", "metadata": {}, "source": [ "![](https://i.imgur.com/mY4yoYH.png)\n", @@ -4162,7 +4209,7 @@ { "cell_type": "code", "execution_count": null, - "id": "319", + "id": "323", "metadata": {}, "outputs": [], "source": [ @@ -4182,7 +4229,7 @@ { "cell_type": "code", "execution_count": null, - "id": "320", + "id": "324", "metadata": {}, "outputs": [], "source": [ @@ -4195,7 +4242,7 @@ { "cell_type": "code", "execution_count": null, - "id": "321", + "id": "325", "metadata": {}, "outputs": [], "source": [ @@ -4219,7 +4266,7 @@ }, { "cell_type": "markdown", - "id": "322", + "id": "326", "metadata": {}, "source": [ "![](https://i.imgur.com/r9zSJh6.png)" @@ -4227,7 +4274,7 @@ }, { "cell_type": "markdown", - "id": "323", + "id": "327", "metadata": {}, "source": [ "#### image_series_by_region\n", @@ -4238,7 +4285,7 @@ { "cell_type": "code", "execution_count": null, - "id": "324", + "id": "328", "metadata": {}, "outputs": [], "source": [ @@ -4256,7 +4303,7 @@ { "cell_type": "code", "execution_count": null, - "id": "325", + "id": "329", "metadata": {}, "outputs": [], "source": [ @@ -4271,7 +4318,7 @@ { "cell_type": "code", "execution_count": null, - "id": "326", + "id": "330", "metadata": {}, "outputs": [], "source": [ @@ -4298,7 +4345,7 @@ }, { "cell_type": "markdown", - "id": "327", + "id": "331", "metadata": {}, "source": [ "![](https://i.imgur.com/rnILSfI.png)" @@ -4306,7 +4353,7 @@ }, { "cell_type": "markdown", - "id": "328", + "id": "332", "metadata": {}, "source": [ "#### image_doy_series\n", @@ -4317,7 +4364,7 @@ { "cell_type": "code", "execution_count": null, - "id": "329", + "id": "333", "metadata": {}, "outputs": [], "source": [ @@ -4337,7 +4384,7 @@ { "cell_type": "code", "execution_count": null, - "id": "330", + "id": "334", "metadata": {}, "outputs": [], "source": [ @@ -4350,7 +4397,7 @@ { "cell_type": "code", "execution_count": null, - "id": "331", + "id": "335", "metadata": {}, "outputs": [], "source": [ @@ -4370,7 +4417,7 @@ }, { "cell_type": "markdown", - "id": "332", + "id": "336", "metadata": {}, "source": [ "![](https://i.imgur.com/F0z088e.png)" @@ -4378,7 +4425,7 @@ }, { "cell_type": "markdown", - "id": "333", + "id": "337", "metadata": {}, "source": [ "#### image_doy_series_by_year\n", @@ -4389,7 +4436,7 @@ { "cell_type": "code", "execution_count": null, - "id": "334", + "id": "338", "metadata": {}, "outputs": [], "source": [ @@ -4414,7 +4461,7 @@ { "cell_type": "code", "execution_count": null, - "id": "335", + "id": "339", "metadata": {}, "outputs": [], "source": [ @@ -4427,7 +4474,7 @@ { "cell_type": "code", "execution_count": null, - "id": "336", + "id": "340", "metadata": {}, "outputs": [], "source": [ @@ -4448,7 +4495,7 @@ }, { "cell_type": "markdown", - "id": "337", + "id": "341", "metadata": {}, "source": [ "![](https://i.imgur.com/ui6zpbl.png)" @@ -4456,7 +4503,7 @@ }, { "cell_type": "markdown", - "id": "338", + "id": "342", "metadata": {}, "source": [ "#### image_doy_series_by_region\n", @@ -4467,7 +4514,7 @@ { "cell_type": "code", "execution_count": null, - "id": "339", + "id": "343", "metadata": {}, "outputs": [], "source": [ @@ -4485,7 +4532,7 @@ { "cell_type": "code", "execution_count": null, - "id": "340", + "id": "344", "metadata": {}, "outputs": [], "source": [ @@ -4498,7 +4545,7 @@ { "cell_type": "code", "execution_count": null, - "id": "341", + "id": "345", "metadata": {}, "outputs": [], "source": [ @@ -4525,7 +4572,7 @@ }, { "cell_type": "markdown", - "id": "342", + "id": "346", "metadata": {}, "source": [ "![](https://i.imgur.com/eGqGoRs.png)\n", @@ -4540,7 +4587,7 @@ { "cell_type": "code", "execution_count": null, - "id": "343", + "id": "347", "metadata": {}, "outputs": [], "source": [ @@ -4574,7 +4621,7 @@ { "cell_type": "code", "execution_count": null, - "id": "344", + "id": "348", "metadata": {}, "outputs": [], "source": [ @@ -4585,7 +4632,7 @@ { "cell_type": "code", "execution_count": null, - "id": "345", + "id": "349", "metadata": {}, "outputs": [], "source": [ @@ -4607,7 +4654,7 @@ }, { "cell_type": "markdown", - "id": "346", + "id": "350", "metadata": {}, "source": [ "![](https://i.imgur.com/zkPlZIO.png)" @@ -4616,7 +4663,7 @@ { "cell_type": "code", "execution_count": null, - "id": "347", + "id": "351", "metadata": {}, "outputs": [], "source": [ @@ -4627,7 +4674,7 @@ { "cell_type": "code", "execution_count": null, - "id": "348", + "id": "352", "metadata": {}, "outputs": [], "source": [ @@ -4648,7 +4695,7 @@ }, { "cell_type": "markdown", - "id": "349", + "id": "353", "metadata": {}, "source": [ "![](https://i.imgur.com/WHUHjH6.png)" @@ -4656,7 +4703,7 @@ }, { "cell_type": "markdown", - "id": "350", + "id": "354", "metadata": {}, "source": [ " #### Transect Line Plot\n", @@ -4667,7 +4714,7 @@ { "cell_type": "code", "execution_count": null, - "id": "351", + "id": "355", "metadata": {}, "outputs": [], "source": [ @@ -4700,7 +4747,7 @@ { "cell_type": "code", "execution_count": null, - "id": "352", + "id": "356", "metadata": {}, "outputs": [], "source": [ @@ -4723,7 +4770,7 @@ }, { "cell_type": "markdown", - "id": "353", + "id": "357", "metadata": {}, "source": [ "![](https://i.imgur.com/k3XRita.png)" @@ -4731,7 +4778,7 @@ }, { "cell_type": "markdown", - "id": "354", + "id": "358", "metadata": {}, "source": [ "#### Metadata Scatter Plot\n", @@ -4742,7 +4789,7 @@ { "cell_type": "code", "execution_count": null, - "id": "355", + "id": "359", "metadata": {}, "outputs": [], "source": [ @@ -4765,7 +4812,7 @@ { "cell_type": "code", "execution_count": null, - "id": "356", + "id": "360", "metadata": {}, "outputs": [], "source": [ @@ -4776,7 +4823,7 @@ { "cell_type": "code", "execution_count": null, - "id": "357", + "id": "361", "metadata": {}, "outputs": [], "source": [ @@ -4796,7 +4843,7 @@ }, { "cell_type": "markdown", - "id": "358", + "id": "362", "metadata": {}, "source": [ "![](https://i.imgur.com/3COY3xd.png)" @@ -4804,7 +4851,7 @@ }, { "cell_type": "markdown", - "id": "359", + "id": "363", "metadata": {}, "source": [ "#### Mapped Function Scatter & Line Plot\n", @@ -4815,7 +4862,7 @@ { "cell_type": "code", "execution_count": null, - "id": "360", + "id": "364", "metadata": {}, "outputs": [], "source": [ @@ -4836,7 +4883,7 @@ { "cell_type": "code", "execution_count": null, - "id": "361", + "id": "365", "metadata": {}, "outputs": [], "source": [ @@ -4855,7 +4902,7 @@ }, { "cell_type": "markdown", - "id": "362", + "id": "366", "metadata": {}, "source": [ "![](https://i.imgur.com/7qcxvey.png)\n", @@ -4870,7 +4917,7 @@ { "cell_type": "code", "execution_count": null, - "id": "363", + "id": "367", "metadata": {}, "outputs": [], "source": [ @@ -4880,7 +4927,7 @@ { "cell_type": "code", "execution_count": null, - "id": "364", + "id": "368", "metadata": {}, "outputs": [], "source": [ @@ -4896,7 +4943,7 @@ { "cell_type": "code", "execution_count": null, - "id": "365", + "id": "369", "metadata": {}, "outputs": [], "source": [ @@ -4915,7 +4962,7 @@ }, { "cell_type": "markdown", - "id": "366", + "id": "370", "metadata": {}, "source": [ "![](https://i.imgur.com/vuxNmuh.png)" @@ -4923,7 +4970,7 @@ }, { "cell_type": "markdown", - "id": "367", + "id": "371", "metadata": {}, "source": [ "#### Computed DataTable chart\n", @@ -4934,7 +4981,7 @@ { "cell_type": "code", "execution_count": null, - "id": "368", + "id": "372", "metadata": {}, "outputs": [], "source": [ @@ -4989,7 +5036,7 @@ { "cell_type": "code", "execution_count": null, - "id": "369", + "id": "373", "metadata": {}, "outputs": [], "source": [ @@ -5000,7 +5047,7 @@ { "cell_type": "code", "execution_count": null, - "id": "370", + "id": "374", "metadata": {}, "outputs": [], "source": [ @@ -5021,7 +5068,7 @@ }, { "cell_type": "markdown", - "id": "371", + "id": "375", "metadata": {}, "source": [ "![](https://i.imgur.com/PWei7QC.png)" @@ -5029,7 +5076,7 @@ }, { "cell_type": "markdown", - "id": "372", + "id": "376", "metadata": {}, "source": [ "#### Interval chart\n", @@ -5040,7 +5087,7 @@ { "cell_type": "code", "execution_count": null, - "id": "373", + "id": "377", "metadata": {}, "outputs": [], "source": [ @@ -5134,7 +5181,7 @@ { "cell_type": "code", "execution_count": null, - "id": "374", + "id": "378", "metadata": {}, "outputs": [], "source": [ @@ -5145,7 +5192,7 @@ { "cell_type": "code", "execution_count": null, - "id": "375", + "id": "379", "metadata": {}, "outputs": [], "source": [ @@ -5171,7 +5218,7 @@ }, { "cell_type": "markdown", - "id": "376", + "id": "380", "metadata": {}, "source": [ "![](https://i.imgur.com/i8ZrGPR.png)" @@ -5179,7 +5226,131 @@ }, { "cell_type": "markdown", - "id": "377", + "id": "381", + "metadata": {}, + "source": [ + "## Exercises\n", + "\n", + "### Exercise 1: Visualizing DEM Data\n", + "\n", + "Find a DEM dataset in the [Earth Engine Data Catalog](https://developers.google.com/earth-engine/datasets) and clip it to a specific area (e.g., your country, state, or city). Display it with an appropriate color palette. For example, the sample map below shows the DEM of the state of Colorado.\n", + "\n", + "![](https://i.imgur.com/OLeSt7n.png)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "382", + "metadata": {}, + "outputs": [], + "source": [] + }, + { + "cell_type": "markdown", + "id": "383", + "metadata": {}, + "source": [ + "### Exercise 2: Cloud-Free Composite with Sentinel-2 or Landsat\n", + "\n", + "Use Sentinel-2 or Landsat-9 data to create a cloud-free composite for a specific year in a region of your choice.\n", + "\n", + "Use [Sentinel-2](https://developers.google.com/earth-engine/datasets/catalog/COPERNICUS_S2_SR_HARMONIZED) or [Landsat-9 data](https://developers.google.com/earth-engine/datasets/catalog/landsat-9) data to create a cloud-free composite for a specific year in a region of your choice. Display the imagery on the map with a proper band combination. For example, the sample map below shows a cloud-free false-color composite of Sentinel-2 imagery of the year 2021 for the state of Colorado.\n", + "\n", + "![](https://i.imgur.com/xkxpkS1.png)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "384", + "metadata": {}, + "outputs": [], + "source": [] + }, + { + "cell_type": "markdown", + "id": "385", + "metadata": {}, + "source": [ + "### Exercise 3: Visualizing NAIP Imagery\n", + "\n", + "Use [NAIP](https://developers.google.com/earth-engine/datasets/catalog/USDA_NAIP_DOQQ) imagery to create a cloud-free imagery for a U.S. county of your choice. For example, the sample map below shows a cloud-free true-color composite of NAIP imagery for Knox County, Tennessee. Keep in mind that there might be some counties with the same name in different states, so make sure to select the correct county for the selected state.\n", + "\n", + "![](https://i.imgur.com/iZSGqGS.png)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "386", + "metadata": {}, + "outputs": [], + "source": [] + }, + { + "cell_type": "markdown", + "id": "387", + "metadata": {}, + "source": [ + "### Exercise 4: Visualizing Watershed Boundaries\n", + "\n", + "Visualize the [USGS Watershed Boundary Dataset](https://developers.google.com/earth-engine/datasets/catalog/USGS_WBD_2017_HUC04) with outline color only, no fill color.\n", + "\n", + "![](https://i.imgur.com/PLlNFq3.png)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "388", + "metadata": {}, + "outputs": [], + "source": [] + }, + { + "cell_type": "markdown", + "id": "389", + "metadata": {}, + "source": [ + "### Exercise 5: Visualizing Land Cover Change\n", + "\n", + "Use the [USGS National Land Cover Database](https://developers.google.com/earth-engine/datasets/catalog/USGS_NLCD_RELEASES_2019_REL_NLCD) and [US Census States](https://developers.google.com/earth-engine/datasets/catalog/TIGER_2018_States) to create a split-panel map for visualizing land cover change (2001-2019) for a US state of your choice. Make sure you add the NLCD legend to the map.\n", + "\n", + "![](https://i.imgur.com/Au7Q5Ln.png)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "390", + "metadata": {}, + "outputs": [], + "source": [] + }, + { + "cell_type": "markdown", + "id": "391", + "metadata": {}, + "source": [ + "### Exercise 6: Creating a Landsat Timelapse Animation\n", + "\n", + "Generate a timelapse animation using Landsat data to show changes over time for a selected region.\n", + "\n", + "![Spain](https://github.com/user-attachments/assets/f12839c0-1c30-404d-b0ab-0fa12ce12d24)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "392", + "metadata": {}, + "outputs": [], + "source": [] + }, + { + "cell_type": "markdown", + "id": "393", "metadata": {}, "source": [ "## Summary\n", @@ -5190,7 +5361,7 @@ ], "metadata": { "kernelspec": { - "display_name": "Python 3 (ipykernel)", + "display_name": "geo", "language": "python", "name": "python3" }, diff --git a/book/geospatial/geemap.md b/book/geospatial/geemap.md index d22daf9..d0874ca 100644 --- a/book/geospatial/geemap.md +++ b/book/geospatial/geemap.md @@ -3045,7 +3045,6 @@ Generate a timelapse animation using Landsat data to show changes over time for ``` - ## Summary This lecture introduced **geemap**, a Python library designed to streamline geospatial data visualization and analysis in the **Google Earth Engine (GEE)** environment. Geemap enables users to perform GIS and remote sensing tasks with GEE data interactively in Python notebooks. Key topics included setting up GEE with geemap, loading and manipulating data from the Earth Engine Data Catalog, and processing vector and raster data. Techniques for creating animated timelapses using data from Landsat, Sentinel, MODIS, and GOES illustrated dynamic landscape monitoring, while interactive charting tools, like scatter plots and time series, supported data exploration and trend analysis. The lecture also covered exporting images and features in multiple formats, such as GeoTIFF, Shapefile, and CSV, to facilitate data sharing. Overall, this session provided a foundational understanding of geemap's capabilities, enabling users to efficiently visualize, analyze, and derive insights from Earth observation data in a Python setting.