{ "cells": [ { "cell_type": "code", "execution_count": 17, "metadata": {}, "outputs": [ { "data": { "text/html": [ "\n", " \n", " " ], "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "import ee\n", "import geemap\n", "import geopandas as gpd\n", "from shapely.ops import transform\n", "from shapely.geometry import Point, Polygon\n", "ee.Initialize()\n", "\n", "import pandas as pd" ] }, { "cell_type": "code", "execution_count": 18, "metadata": {}, "outputs": [ { "data": { "text/html": [ "\n", " \n", " " ], "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "gdf = gpd.read_file(\"/home/patel_zeel/NDVI_PERG/golvada he 10 2023-24.kml\").to_crs(epsg=7761)\n", "gdf = gdf[gdf.index == 0]\n", "def shape_3d_to_2d(shape):\n", " if shape.has_z:\n", " return transform(lambda x, y, z: (x, y), shape)\n", " else:\n", " return shape\n", "gdf['geometry'] = gdf['geometry'].apply(shape_3d_to_2d)" ] }, { "cell_type": "code", "execution_count": 19, "metadata": {}, "outputs": [ { "data": { "text/html": [ "\n", " \n", " " ], "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "text/plain": [ "" ] }, "execution_count": 19, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "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", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "gdf_buffer = gdf.copy()\n", "gdf_buffer['geometry'] = gdf_buffer.buffer(150)\n", "\n", "import matplotlib.pyplot as plt\n", "fig, ax = plt.subplots()\n", "x, y = gdf['geometry'].iloc[0].exterior.xy\n", "\n", "# draw radius 100 circle around every point\n", "for xx, yy in zip(x, y):\n", " circle = Point(xx, yy).buffer(100)\n", " x, y = circle.exterior.xy\n", " ax.plot(x, y, color='red', alpha=0.4)\n", "\n", "ax.scatter(x, y, color='red')\n", "gdf.plot(ax=ax, color='red', alpha=0.5)\n", "gdf_buffer.plot(ax=ax, color='blue', alpha=0.5)\n", "x, y = gdf_buffer['geometry'].iloc[0].exterior.xy\n", "ax.scatter(x, y, color='blue')" ] }, { "cell_type": "code", "execution_count": 20, "metadata": {}, "outputs": [ { "data": { "text/html": [ "\n", " \n", " " ], "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "text/plain": [ "[(1185457.5105933622, 1182892.6895726854),\n", " (1185175.8443153254, 1182641.6578253345),\n", " (1185217.153251467, 1182624.707424486),\n", " (1185146.7602187786, 1182386.0097827152),\n", " (1185131.2540349402, 1182293.5429618917),\n", " (1185122.3549087541, 1182237.7445688043),\n", " (1185093.6174084186, 1182102.3065841596),\n", " (1185092.577862544, 1182102.910371741),\n", " (1185326.8892249228, 1182087.3440637167),\n", " (1185322.1797508083, 1182049.4571764688),\n", " (1185440.8723587177, 1182031.0202683723),\n", " (1185491.0782031054, 1182290.0808980586),\n", " (1185540.484813571, 1182487.7896127307),\n", " (1185629.8051462148, 1182803.5311916363),\n", " (1185457.5105933622, 1182892.6895726854)]" ] }, "execution_count": 20, "metadata": {}, "output_type": "execute_result" } ], "source": [ "polygon = gdf.geometry.item()\n", "points = list(polygon.exterior.coords)\n", "points" ] }, { "cell_type": "code", "execution_count": 21, "metadata": {}, "outputs": [ { "data": { "text/html": [ "\n", " \n", " " ], "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "import numpy as np" ] }, { "cell_type": "code", "execution_count": 22, "metadata": {}, "outputs": [ { "data": { "text/html": [ "\n", " \n", " " ], "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "text/plain": [ "{'type': 'FeatureCollection',\n", " 'features': [{'id': '0',\n", " 'type': 'Feature',\n", " 'properties': {'Name': 'kelava 25 he',\n", " 'Description': '
kelava irrigation he 25 
Year 2022-23
'},\n", " 'geometry': {'type': 'Polygon',\n", " 'coordinates': [[[1185457.5105933622, 1182892.6895726854],\n", " [1185175.8443153254, 1182641.6578253345],\n", " [1185217.153251467, 1182624.707424486],\n", " [1185146.7602187786, 1182386.0097827152],\n", " [1185131.2540349402, 1182293.5429618917],\n", " [1185122.3549087541, 1182237.7445688043],\n", " [1185093.6174084186, 1182102.3065841596],\n", " [1185092.577862544, 1182102.910371741],\n", " [1185326.8892249228, 1182087.3440637167],\n", " [1185322.1797508083, 1182049.4571764688],\n", " [1185440.8723587177, 1182031.0202683723],\n", " [1185491.0782031054, 1182290.0808980586],\n", " [1185540.484813571, 1182487.7896127307],\n", " [1185629.8051462148, 1182803.5311916363],\n", " [1185457.5105933622, 1182892.6895726854]]]}}],\n", " 'crs': {'type': 'name', 'properties': {'name': 'urn:ogc:def:crs:EPSG::7761'}}}" ] }, "execution_count": 22, "metadata": {}, "output_type": "execute_result" } ], "source": [ "import json\n", "json.loads(gdf.to_json())" ] }, { "cell_type": "code", "execution_count": 23, "metadata": {}, "outputs": [ { "data": { "text/html": [ "\n", " \n", " " ], "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" }, { "name": "stderr", "output_type": "stream", "text": [ "/opt/anaconda3/envs/zeel_py310/lib/python3.10/site-packages/eerepr/repr.py:57: UserWarning: Getting info failed with: 'Collection query aborted after accumulating over 5000 elements.'. Falling back to string repr.\n", " warn(f\"Getting info failed with: '{e}'. Falling back to string repr.\")\n" ] }, { "data": { "text/html": [ "
<ee.imagecollection.ImageCollection object at 0x7f4811b9e050>
" ], "text/plain": [ "" ] }, "execution_count": 23, "metadata": {}, "output_type": "execute_result" } ], "source": [ "collection = ee.ImageCollection('COPERNICUS/S2_SR_HARMONIZED').filterBounds(ee.Geometry(gdf.iloc[0].geometry.__geo_interface__)).filterDate('2020-01-01', '2020-01-10')\n", "collection" ] }, { "cell_type": "code", "execution_count": 24, "metadata": {}, "outputs": [ { "data": { "text/html": [ "\n", " \n", " " ], "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "# get first image from collection\n", "image = collection.first()" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "image.clamp(0, 1)" ] }, { "cell_type": "code", "execution_count": 33, "metadata": {}, "outputs": [ { "data": { "text/html": [ "\n", " \n", " " ], "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "text/html": [ "
    • type:Image
    • id:COPERNICUS/S2_SR_HARMONIZED/20200103T054229_20200103T054832_T43QCG
    • version:1729693238711098
        • id:B1
        • crs:EPSG:32643
          • 0:60
          • 1:0
          • 2:300000
          • 3:0
          • 4:-60
          • 5:2700000
          • type:PixelType
          • max:65535
          • min:0
          • precision:int
          • 0:1830
          • 1:1830
        • id:B2
        • crs:EPSG:32643
          • 0:10
          • 1:0
          • 2:300000
          • 3:0
          • 4:-10
          • 5:2700000
          • type:PixelType
          • max:65535
          • min:0
          • precision:int
          • 0:10980
          • 1:10980
        • id:B3
        • crs:EPSG:32643
          • 0:10
          • 1:0
          • 2:300000
          • 3:0
          • 4:-10
          • 5:2700000
          • type:PixelType
          • max:65535
          • min:0
          • precision:int
          • 0:10980
          • 1:10980
        • id:B4
        • crs:EPSG:32643
          • 0:10
          • 1:0
          • 2:300000
          • 3:0
          • 4:-10
          • 5:2700000
          • type:PixelType
          • max:65535
          • min:0
          • precision:int
          • 0:10980
          • 1:10980
        • id:B5
        • crs:EPSG:32643
          • 0:20
          • 1:0
          • 2:300000
          • 3:0
          • 4:-20
          • 5:2700000
          • type:PixelType
          • max:65535
          • min:0
          • precision:int
          • 0:5490
          • 1:5490
        • id:B6
        • crs:EPSG:32643
          • 0:20
          • 1:0
          • 2:300000
          • 3:0
          • 4:-20
          • 5:2700000
          • type:PixelType
          • max:65535
          • min:0
          • precision:int
          • 0:5490
          • 1:5490
        • id:B7
        • crs:EPSG:32643
          • 0:20
          • 1:0
          • 2:300000
          • 3:0
          • 4:-20
          • 5:2700000
          • type:PixelType
          • max:65535
          • min:0
          • precision:int
          • 0:5490
          • 1:5490
        • id:B8
        • crs:EPSG:32643
          • 0:10
          • 1:0
          • 2:300000
          • 3:0
          • 4:-10
          • 5:2700000
          • type:PixelType
          • max:65535
          • min:0
          • precision:int
          • 0:10980
          • 1:10980
        • id:B8A
        • crs:EPSG:32643
          • 0:20
          • 1:0
          • 2:300000
          • 3:0
          • 4:-20
          • 5:2700000
          • type:PixelType
          • max:65535
          • min:0
          • precision:int
          • 0:5490
          • 1:5490
        • id:B9
        • crs:EPSG:32643
          • 0:60
          • 1:0
          • 2:300000
          • 3:0
          • 4:-60
          • 5:2700000
          • type:PixelType
          • max:65535
          • min:0
          • precision:int
          • 0:1830
          • 1:1830
        • id:B11
        • crs:EPSG:32643
          • 0:20
          • 1:0
          • 2:300000
          • 3:0
          • 4:-20
          • 5:2700000
          • type:PixelType
          • max:65535
          • min:0
          • precision:int
          • 0:5490
          • 1:5490
        • id:B12
        • crs:EPSG:32643
          • 0:20
          • 1:0
          • 2:300000
          • 3:0
          • 4:-20
          • 5:2700000
          • type:PixelType
          • max:65535
          • min:0
          • precision:int
          • 0:5490
          • 1:5490
        • id:AOT
        • crs:EPSG:32643
          • 0:10
          • 1:0
          • 2:300000
          • 3:0
          • 4:-10
          • 5:2700000
          • type:PixelType
          • max:65535
          • min:0
          • precision:int
          • 0:10980
          • 1:10980
        • id:WVP
        • crs:EPSG:32643
          • 0:10
          • 1:0
          • 2:300000
          • 3:0
          • 4:-10
          • 5:2700000
          • type:PixelType
          • max:4294967295
          • min:0
          • precision:int
          • 0:10980
          • 1:10980
        • id:SCL
        • crs:EPSG:32643
          • 0:20
          • 1:0
          • 2:300000
          • 3:0
          • 4:-20
          • 5:2700000
          • type:PixelType
          • max:255
          • min:0
          • precision:int
          • 0:5490
          • 1:5490
        • id:TCI_R
        • crs:EPSG:32643
          • 0:10
          • 1:0
          • 2:300000
          • 3:0
          • 4:-10
          • 5:2700000
          • type:PixelType
          • max:255
          • min:0
          • precision:int
          • 0:10980
          • 1:10980
        • id:TCI_G
        • crs:EPSG:32643
          • 0:10
          • 1:0
          • 2:300000
          • 3:0
          • 4:-10
          • 5:2700000
          • type:PixelType
          • max:255
          • min:0
          • precision:int
          • 0:10980
          • 1:10980
        • id:TCI_B
        • crs:EPSG:32643
          • 0:10
          • 1:0
          • 2:300000
          • 3:0
          • 4:-10
          • 5:2700000
          • type:PixelType
          • max:255
          • min:0
          • precision:int
          • 0:10980
          • 1:10980
        • id:MSK_CLDPRB
        • crs:EPSG:32643
          • 0:20
          • 1:0
          • 2:300000
          • 3:0
          • 4:-20
          • 5:2700000
          • type:PixelType
          • max:255
          • min:0
          • precision:int
          • 0:5490
          • 1:5490
        • id:MSK_SNWPRB
        • crs:EPSG:32643
          • 0:20
          • 1:0
          • 2:300000
          • 3:0
          • 4:-20
          • 5:2700000
          • type:PixelType
          • max:255
          • min:0
          • precision:int
          • 0:5490
          • 1:5490
        • id:QA10
        • crs:EPSG:32643
          • 0:10
          • 1:0
          • 2:300000
          • 3:0
          • 4:-10
          • 5:2700000
          • type:PixelType
          • max:65535
          • min:0
          • precision:int
          • 0:10980
          • 1:10980
        • id:QA20
        • crs:EPSG:32643
          • 0:20
          • 1:0
          • 2:300000
          • 3:0
          • 4:-20
          • 5:2700000
          • type:PixelType
          • max:4294967295
          • min:0
          • precision:int
          • 0:5490
          • 1:5490
        • id:QA60
        • crs:EPSG:32643
          • 0:60
          • 1:0
          • 2:300000
          • 3:0
          • 4:-60
          • 5:2700000
          • type:PixelType
          • max:65535
          • min:0
          • precision:int
          • 0:1830
          • 1:1830
        • id:MSK_CLASSI_OPAQUE
        • crs:EPSG:4326
          • 0:1
          • 1:0
          • 2:0
          • 3:0
          • 4:1
          • 5:0
          • type:PixelType
          • max:255
          • min:0
          • precision:int
        • id:MSK_CLASSI_CIRRUS
        • crs:EPSG:4326
          • 0:1
          • 1:0
          • 2:0
          • 3:0
          • 4:1
          • 5:0
          • type:PixelType
          • max:255
          • min:0
          • precision:int
        • id:MSK_CLASSI_SNOW_ICE
        • crs:EPSG:4326
          • 0:1
          • 1:0
          • 2:0
          • 3:0
          • 4:1
          • 5:0
          • type:PixelType
          • max:255
          • min:0
          • precision:int
        • id:B1_1
        • crs:EPSG:32643
          • 0:60
          • 1:0
          • 2:300000
          • 3:0
          • 4:-60
          • 5:2700000
          • type:PixelType
          • max:65535
          • min:0
          • precision:int
          • 0:1830
          • 1:1830
        • id:B2_1
        • crs:EPSG:32643
          • 0:10
          • 1:0
          • 2:300000
          • 3:0
          • 4:-10
          • 5:2700000
          • type:PixelType
          • max:65535
          • min:0
          • precision:int
          • 0:10980
          • 1:10980
        • id:B3_1
        • crs:EPSG:32643
          • 0:10
          • 1:0
          • 2:300000
          • 3:0
          • 4:-10
          • 5:2700000
          • type:PixelType
          • max:65535
          • min:0
          • precision:int
          • 0:10980
          • 1:10980
        • id:B4_1
        • crs:EPSG:32643
          • 0:10
          • 1:0
          • 2:300000
          • 3:0
          • 4:-10
          • 5:2700000
          • type:PixelType
          • max:65535
          • min:0
          • precision:int
          • 0:10980
          • 1:10980
        • id:B5_1
        • crs:EPSG:32643
          • 0:20
          • 1:0
          • 2:300000
          • 3:0
          • 4:-20
          • 5:2700000
          • type:PixelType
          • max:65535
          • min:0
          • precision:int
          • 0:5490
          • 1:5490
        • id:B6_1
        • crs:EPSG:32643
          • 0:20
          • 1:0
          • 2:300000
          • 3:0
          • 4:-20
          • 5:2700000
          • type:PixelType
          • max:65535
          • min:0
          • precision:int
          • 0:5490
          • 1:5490
        • id:B7_1
        • crs:EPSG:32643
          • 0:20
          • 1:0
          • 2:300000
          • 3:0
          • 4:-20
          • 5:2700000
          • type:PixelType
          • max:65535
          • min:0
          • precision:int
          • 0:5490
          • 1:5490
        • id:B8_1
        • crs:EPSG:32643
          • 0:10
          • 1:0
          • 2:300000
          • 3:0
          • 4:-10
          • 5:2700000
          • type:PixelType
          • max:65535
          • min:0
          • precision:int
          • 0:10980
          • 1:10980
        • id:B8A_1
        • crs:EPSG:32643
          • 0:20
          • 1:0
          • 2:300000
          • 3:0
          • 4:-20
          • 5:2700000
          • type:PixelType
          • max:65535
          • min:0
          • precision:int
          • 0:5490
          • 1:5490
        • id:B9_1
        • crs:EPSG:32643
          • 0:60
          • 1:0
          • 2:300000
          • 3:0
          • 4:-60
          • 5:2700000
          • type:PixelType
          • max:65535
          • min:0
          • precision:int
          • 0:1830
          • 1:1830
        • id:B11_1
        • crs:EPSG:32643
          • 0:20
          • 1:0
          • 2:300000
          • 3:0
          • 4:-20
          • 5:2700000
          • type:PixelType
          • max:65535
          • min:0
          • precision:int
          • 0:5490
          • 1:5490
        • id:B12_1
        • crs:EPSG:32643
          • 0:20
          • 1:0
          • 2:300000
          • 3:0
          • 4:-20
          • 5:2700000
          • type:PixelType
          • max:65535
          • min:0
          • precision:int
          • 0:5490
          • 1:5490
        • id:AOT_1
        • crs:EPSG:32643
          • 0:10
          • 1:0
          • 2:300000
          • 3:0
          • 4:-10
          • 5:2700000
          • type:PixelType
          • max:65535
          • min:0
          • precision:int
          • 0:10980
          • 1:10980
        • id:WVP_1
        • crs:EPSG:32643
          • 0:10
          • 1:0
          • 2:300000
          • 3:0
          • 4:-10
          • 5:2700000
          • type:PixelType
          • max:4294967295
          • min:0
          • precision:int
          • 0:10980
          • 1:10980
        • id:SCL_1
        • crs:EPSG:32643
          • 0:20
          • 1:0
          • 2:300000
          • 3:0
          • 4:-20
          • 5:2700000
          • type:PixelType
          • max:255
          • min:0
          • precision:int
          • 0:5490
          • 1:5490
        • id:TCI_R_1
        • crs:EPSG:32643
          • 0:10
          • 1:0
          • 2:300000
          • 3:0
          • 4:-10
          • 5:2700000
          • type:PixelType
          • max:255
          • min:0
          • precision:int
          • 0:10980
          • 1:10980
        • id:TCI_G_1
        • crs:EPSG:32643
          • 0:10
          • 1:0
          • 2:300000
          • 3:0
          • 4:-10
          • 5:2700000
          • type:PixelType
          • max:255
          • min:0
          • precision:int
          • 0:10980
          • 1:10980
        • id:TCI_B_1
        • crs:EPSG:32643
          • 0:10
          • 1:0
          • 2:300000
          • 3:0
          • 4:-10
          • 5:2700000
          • type:PixelType
          • max:255
          • min:0
          • precision:int
          • 0:10980
          • 1:10980
        • id:MSK_CLDPRB_1
        • crs:EPSG:32643
          • 0:20
          • 1:0
          • 2:300000
          • 3:0
          • 4:-20
          • 5:2700000
          • type:PixelType
          • max:255
          • min:0
          • precision:int
          • 0:5490
          • 1:5490
        • id:MSK_SNWPRB_1
        • crs:EPSG:32643
          • 0:20
          • 1:0
          • 2:300000
          • 3:0
          • 4:-20
          • 5:2700000
          • type:PixelType
          • max:255
          • min:0
          • precision:int
          • 0:5490
          • 1:5490
        • id:QA10_1
        • crs:EPSG:32643
          • 0:10
          • 1:0
          • 2:300000
          • 3:0
          • 4:-10
          • 5:2700000
          • type:PixelType
          • max:65535
          • min:0
          • precision:int
          • 0:10980
          • 1:10980
        • id:QA20_1
        • crs:EPSG:32643
          • 0:20
          • 1:0
          • 2:300000
          • 3:0
          • 4:-20
          • 5:2700000
          • type:PixelType
          • max:4294967295
          • min:0
          • precision:int
          • 0:5490
          • 1:5490
        • id:QA60_1
        • crs:EPSG:32643
          • 0:60
          • 1:0
          • 2:300000
          • 3:0
          • 4:-60
          • 5:2700000
          • type:PixelType
          • max:65535
          • min:0
          • precision:int
          • 0:1830
          • 1:1830
        • id:MSK_CLASSI_OPAQUE_1
        • crs:EPSG:4326
          • 0:1
          • 1:0
          • 2:0
          • 3:0
          • 4:1
          • 5:0
          • type:PixelType
          • max:255
          • min:0
          • precision:int
        • id:MSK_CLASSI_CIRRUS_1
        • crs:EPSG:4326
          • 0:1
          • 1:0
          • 2:0
          • 3:0
          • 4:1
          • 5:0
          • type:PixelType
          • max:255
          • min:0
          • precision:int
        • id:MSK_CLASSI_SNOW_ICE_1
        • crs:EPSG:4326
          • 0:1
          • 1:0
          • 2:0
          • 3:0
          • 4:1
          • 5:0
          • type:PixelType
          • max:255
          • min:0
          • precision:int
        • id:B1_1_1
        • crs:EPSG:32643
          • 0:60
          • 1:0
          • 2:300000
          • 3:0
          • 4:-60
          • 5:2700000
          • type:PixelType
          • max:65535
          • min:0
          • precision:int
          • 0:1830
          • 1:1830
        • id:B2_1_1
        • crs:EPSG:32643
          • 0:10
          • 1:0
          • 2:300000
          • 3:0
          • 4:-10
          • 5:2700000
          • type:PixelType
          • max:65535
          • min:0
          • precision:int
          • 0:10980
          • 1:10980
        • id:B3_1_1
        • crs:EPSG:32643
          • 0:10
          • 1:0
          • 2:300000
          • 3:0
          • 4:-10
          • 5:2700000
          • type:PixelType
          • max:65535
          • min:0
          • precision:int
          • 0:10980
          • 1:10980
        • id:B4_1_1
        • crs:EPSG:32643
          • 0:10
          • 1:0
          • 2:300000
          • 3:0
          • 4:-10
          • 5:2700000
          • type:PixelType
          • max:65535
          • min:0
          • precision:int
          • 0:10980
          • 1:10980
        • id:B5_1_1
        • crs:EPSG:32643
          • 0:20
          • 1:0
          • 2:300000
          • 3:0
          • 4:-20
          • 5:2700000
          • type:PixelType
          • max:65535
          • min:0
          • precision:int
          • 0:5490
          • 1:5490
        • id:B6_1_1
        • crs:EPSG:32643
          • 0:20
          • 1:0
          • 2:300000
          • 3:0
          • 4:-20
          • 5:2700000
          • type:PixelType
          • max:65535
          • min:0
          • precision:int
          • 0:5490
          • 1:5490
        • id:B7_1_1
        • crs:EPSG:32643
          • 0:20
          • 1:0
          • 2:300000
          • 3:0
          • 4:-20
          • 5:2700000
          • type:PixelType
          • max:65535
          • min:0
          • precision:int
          • 0:5490
          • 1:5490
        • id:B8_1_1
        • crs:EPSG:32643
          • 0:10
          • 1:0
          • 2:300000
          • 3:0
          • 4:-10
          • 5:2700000
          • type:PixelType
          • max:65535
          • min:0
          • precision:int
          • 0:10980
          • 1:10980
        • id:B8A_1_1
        • crs:EPSG:32643
          • 0:20
          • 1:0
          • 2:300000
          • 3:0
          • 4:-20
          • 5:2700000
          • type:PixelType
          • max:65535
          • min:0
          • precision:int
          • 0:5490
          • 1:5490
        • id:B9_1_1
        • crs:EPSG:32643
          • 0:60
          • 1:0
          • 2:300000
          • 3:0
          • 4:-60
          • 5:2700000
          • type:PixelType
          • max:65535
          • min:0
          • precision:int
          • 0:1830
          • 1:1830
        • id:B11_1_1
        • crs:EPSG:32643
          • 0:20
          • 1:0
          • 2:300000
          • 3:0
          • 4:-20
          • 5:2700000
          • type:PixelType
          • max:65535
          • min:0
          • precision:int
          • 0:5490
          • 1:5490
        • id:B12_1_1
        • crs:EPSG:32643
          • 0:20
          • 1:0
          • 2:300000
          • 3:0
          • 4:-20
          • 5:2700000
          • type:PixelType
          • max:65535
          • min:0
          • precision:int
          • 0:5490
          • 1:5490
        • id:AOT_1_1
        • crs:EPSG:32643
          • 0:10
          • 1:0
          • 2:300000
          • 3:0
          • 4:-10
          • 5:2700000
          • type:PixelType
          • max:65535
          • min:0
          • precision:int
          • 0:10980
          • 1:10980
        • id:WVP_1_1
        • crs:EPSG:32643
          • 0:10
          • 1:0
          • 2:300000
          • 3:0
          • 4:-10
          • 5:2700000
          • type:PixelType
          • max:4294967295
          • min:0
          • precision:int
          • 0:10980
          • 1:10980
        • id:SCL_1_1
        • crs:EPSG:32643
          • 0:20
          • 1:0
          • 2:300000
          • 3:0
          • 4:-20
          • 5:2700000
          • type:PixelType
          • max:255
          • min:0
          • precision:int
          • 0:5490
          • 1:5490
        • id:TCI_R_1_1
        • crs:EPSG:32643
          • 0:10
          • 1:0
          • 2:300000
          • 3:0
          • 4:-10
          • 5:2700000
          • type:PixelType
          • max:255
          • min:0
          • precision:int
          • 0:10980
          • 1:10980
        • id:TCI_G_1_1
        • crs:EPSG:32643
          • 0:10
          • 1:0
          • 2:300000
          • 3:0
          • 4:-10
          • 5:2700000
          • type:PixelType
          • max:255
          • min:0
          • precision:int
          • 0:10980
          • 1:10980
        • id:TCI_B_1_1
        • crs:EPSG:32643
          • 0:10
          • 1:0
          • 2:300000
          • 3:0
          • 4:-10
          • 5:2700000
          • type:PixelType
          • max:255
          • min:0
          • precision:int
          • 0:10980
          • 1:10980
        • id:MSK_CLDPRB_1_1
        • crs:EPSG:32643
          • 0:20
          • 1:0
          • 2:300000
          • 3:0
          • 4:-20
          • 5:2700000
          • type:PixelType
          • max:255
          • min:0
          • precision:int
          • 0:5490
          • 1:5490
        • id:MSK_SNWPRB_1_1
        • crs:EPSG:32643
          • 0:20
          • 1:0
          • 2:300000
          • 3:0
          • 4:-20
          • 5:2700000
          • type:PixelType
          • max:255
          • min:0
          • precision:int
          • 0:5490
          • 1:5490
        • id:QA10_1_1
        • crs:EPSG:32643
          • 0:10
          • 1:0
          • 2:300000
          • 3:0
          • 4:-10
          • 5:2700000
          • type:PixelType
          • max:65535
          • min:0
          • precision:int
          • 0:10980
          • 1:10980
        • id:QA20_1_1
        • crs:EPSG:32643
          • 0:20
          • 1:0
          • 2:300000
          • 3:0
          • 4:-20
          • 5:2700000
          • type:PixelType
          • max:4294967295
          • min:0
          • precision:int
          • 0:5490
          • 1:5490
        • id:QA60_1_1
        • crs:EPSG:32643
          • 0:60
          • 1:0
          • 2:300000
          • 3:0
          • 4:-60
          • 5:2700000
          • type:PixelType
          • max:65535
          • min:0
          • precision:int
          • 0:1830
          • 1:1830
        • id:MSK_CLASSI_OPAQUE_1_1
        • crs:EPSG:4326
          • 0:1
          • 1:0
          • 2:0
          • 3:0
          • 4:1
          • 5:0
          • type:PixelType
          • max:255
          • min:0
          • precision:int
        • id:MSK_CLASSI_CIRRUS_1_1
        • crs:EPSG:4326
          • 0:1
          • 1:0
          • 2:0
          • 3:0
          • 4:1
          • 5:0
          • type:PixelType
          • max:255
          • min:0
          • precision:int
        • id:MSK_CLASSI_SNOW_ICE_1_1
        • crs:EPSG:4326
          • 0:1
          • 1:0
          • 2:0
          • 3:0
          • 4:1
          • 5:0
          • type:PixelType
          • max:255
          • min:0
          • precision:int
      • AOT_RETRIEVAL_ACCURACY:0
      • CLOUDY_PIXEL_PERCENTAGE:31.922709
      • CLOUD_COVERAGE_ASSESSMENT:31.922709
      • CLOUD_SHADOW_PERCENTAGE:0.198579
      • DARK_FEATURES_PERCENTAGE:0.549102
      • DATASTRIP_ID:S2B_OPER_MSI_L2A_DS_EPAE_20200103T090132_S20200103T054832_N02.13
      • DATATAKE_IDENTIFIER:GS2B_20200103T054229_014760_N02.13
      • DATATAKE_TYPE:INS-NOBS
      • DEGRADED_MSI_DATA_PERCENTAGE:0
      • FORMAT_CORRECTNESS:PASSED
      • GENERAL_QUALITY:PASSED
      • GENERATION_TIME:1578042092000
      • GEOMETRIC_QUALITY:PASSED
      • GRANULE_ID:L2A_T43QCG_A014760_20200103T054832
      • HIGH_PROBA_CLOUDS_PERCENTAGE:7.175779
      • MEAN_INCIDENCE_AZIMUTH_ANGLE_B1:228.866693947
      • MEAN_INCIDENCE_AZIMUTH_ANGLE_B10:231.181075346
      • MEAN_INCIDENCE_AZIMUTH_ANGLE_B11:229.390344022
      • MEAN_INCIDENCE_AZIMUTH_ANGLE_B12:228.693796089
      • MEAN_INCIDENCE_AZIMUTH_ANGLE_B2:234.499920967
      • MEAN_INCIDENCE_AZIMUTH_ANGLE_B3:232.023517476
      • MEAN_INCIDENCE_AZIMUTH_ANGLE_B4:230.59537529
      • MEAN_INCIDENCE_AZIMUTH_ANGLE_B5:229.956341503
      • MEAN_INCIDENCE_AZIMUTH_ANGLE_B6:229.518495929
      • MEAN_INCIDENCE_AZIMUTH_ANGLE_B7:229.037434243
      • MEAN_INCIDENCE_AZIMUTH_ANGLE_B8:233.108324536
      • MEAN_INCIDENCE_AZIMUTH_ANGLE_B8A:228.7554452
      • MEAN_INCIDENCE_AZIMUTH_ANGLE_B9:228.681896618
      • MEAN_INCIDENCE_ZENITH_ANGLE_B1:3.84876005888
      • MEAN_INCIDENCE_ZENITH_ANGLE_B10:3.45177233793
      • MEAN_INCIDENCE_ZENITH_ANGLE_B11:3.60137297281
      • MEAN_INCIDENCE_ZENITH_ANGLE_B12:3.78570081137
      • MEAN_INCIDENCE_ZENITH_ANGLE_B2:3.2782764992
      • MEAN_INCIDENCE_ZENITH_ANGLE_B3:3.37551363359
      • MEAN_INCIDENCE_ZENITH_ANGLE_B4:3.48451409456
      • MEAN_INCIDENCE_ZENITH_ANGLE_B5:3.54599791747
      • MEAN_INCIDENCE_ZENITH_ANGLE_B6:3.61605291573
      • MEAN_INCIDENCE_ZENITH_ANGLE_B7:3.6859370775
      • MEAN_INCIDENCE_ZENITH_ANGLE_B8:3.32377205921
      • MEAN_INCIDENCE_ZENITH_ANGLE_B8A:3.76323633487
      • MEAN_INCIDENCE_ZENITH_ANGLE_B9:3.93447100737
      • MEAN_SOLAR_AZIMUTH_ANGLE:156.635542399
      • MEAN_SOLAR_ZENITH_ANGLE:50.4236448912
      • MEDIUM_PROBA_CLOUDS_PERCENTAGE:19.061849
      • MGRS_TILE:43QCG
      • NODATA_PIXEL_PERCENTAGE:7e-06
      • NOT_VEGETATED_PERCENTAGE:25.851753
      • PROCESSING_BASELINE:02.13
      • PRODUCT_ID:S2B_MSIL2A_20200103T054229_N0213_R005_T43QCG_20200103T090132
      • RADIATIVE_TRANSFER_ACCURACY:0
      • RADIOMETRIC_QUALITY:PASSED
      • REFLECTANCE_CONVERSION_CORRECTION:1.03421965737
      • SATURATED_DEFECTIVE_PIXEL_PERCENTAGE:0
      • SENSING_ORBIT_DIRECTION:DESCENDING
      • SENSING_ORBIT_NUMBER:5
      • SENSOR_QUALITY:PASSED
      • SNOW_ICE_PERCENTAGE:0
      • SOLAR_IRRADIANCE_B1:1874.3
      • SOLAR_IRRADIANCE_B10:365.41
      • SOLAR_IRRADIANCE_B11:247.08
      • SOLAR_IRRADIANCE_B12:87.75
      • SOLAR_IRRADIANCE_B2:1959.75
      • SOLAR_IRRADIANCE_B3:1824.93
      • SOLAR_IRRADIANCE_B4:1512.79
      • SOLAR_IRRADIANCE_B5:1425.78
      • SOLAR_IRRADIANCE_B6:1291.13
      • SOLAR_IRRADIANCE_B7:1175.57
      • SOLAR_IRRADIANCE_B8:1041.28
      • SOLAR_IRRADIANCE_B8A:953.93
      • SOLAR_IRRADIANCE_B9:817.58
      • SPACECRAFT_NAME:Sentinel-2B
      • THIN_CIRRUS_PERCENTAGE:5.685081
      • UNCLASSIFIED_PERCENTAGE:23.282081
      • VEGETATION_PERCENTAGE:17.555073
      • WATER_PERCENTAGE:0.640701
      • WATER_VAPOUR_RETRIEVAL_ACCURACY:0
      • system:asset_size:1657256589
        • type:LinearRing
            • 0:74.11016540745601
            • 1:24.410902070189405
            • 0:74.11015304070706
            • 1:24.41090268552488
            • 0:73.02774900042658
            • 1:24.400670996155263
            • 0:73.02770404977073
            • 1:24.400633859210657
            • 0:73.02765432478664
            • 1:24.400602059690048
            • 0:73.02765153226005
            • 1:24.40058724459411
            • 0:73.03524590991442
            • 1:23.905101331454237
            • 0:73.04263691932812
            • 1:23.40958874371405
            • 0:73.04267736331765
            • 1:23.409547741651778
            • 0:73.04271195238107
            • 1:23.409502480476807
            • 0:73.0427280759271
            • 1:23.409499872731466
            • 0:74.11691932286789
            • 1:23.41926657630988
            • 0:74.11696421791991
            • 1:23.41930339484835
            • 0:74.11701386233618
            • 1:23.419334786767944
            • 0:74.11701681949414
            • 1:23.41934958311633
            • 0:74.11368048838503
            • 1:23.915101382828507
            • 0:74.11025251236038
            • 1:24.410813246431026
            • 0:74.11021209640668
            • 1:24.410854510840057
            • 0:74.11017759497592
            • 1:24.41090002461655
            • 0:74.11016540745601
            • 1:24.410902070189405
      • system:index:20200103T054229_20200103T054832_T43QCG
      • system:time_end:1578030739975
      • system:time_start:1578030739975
" ], "text/plain": [ "" ] }, "execution_count": 33, "metadata": {}, "output_type": "execute_result" } ], "source": [ "image.addBands([image, image])" ] }, { "cell_type": "code", "execution_count": 35, "metadata": {}, "outputs": [ { "data": { "text/html": [ "\n", " \n", " " ], "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "text/plain": [ "(, 78)" ] }, "execution_count": 35, "metadata": {}, "output_type": "execute_result" } ], "source": [ "image, 26*3" ] }, { "cell_type": "code", "execution_count": 13, "metadata": {}, "outputs": [ { "data": { "text/html": [ "\n", " \n", " " ], "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "text/html": [ "
    • type:Image
    • id:COPERNICUS/S2_SR_HARMONIZED/20200103T054229_20200103T054832_T43QCG
    • version:1729686309598954
        • id:B2
        • crs:EPSG:32643
          • 0:10
          • 1:0
          • 2:300000
          • 3:0
          • 4:-10
          • 5:2700000
          • type:PixelType
          • max:65535
          • min:0
          • precision:int
          • 0:10980
          • 1:10980
      • AOT_RETRIEVAL_ACCURACY:0
      • CLOUDY_PIXEL_PERCENTAGE:31.922709
      • CLOUD_COVERAGE_ASSESSMENT:31.922709
      • CLOUD_SHADOW_PERCENTAGE:0.198579
      • DARK_FEATURES_PERCENTAGE:0.549102
      • DATASTRIP_ID:S2B_OPER_MSI_L2A_DS_EPAE_20200103T090132_S20200103T054832_N02.13
      • DATATAKE_IDENTIFIER:GS2B_20200103T054229_014760_N02.13
      • DATATAKE_TYPE:INS-NOBS
      • DEGRADED_MSI_DATA_PERCENTAGE:0
      • FORMAT_CORRECTNESS:PASSED
      • GENERAL_QUALITY:PASSED
      • GENERATION_TIME:1578042092000
      • GEOMETRIC_QUALITY:PASSED
      • GRANULE_ID:L2A_T43QCG_A014760_20200103T054832
      • HIGH_PROBA_CLOUDS_PERCENTAGE:7.175779
      • MEAN_INCIDENCE_AZIMUTH_ANGLE_B1:228.866693947
      • MEAN_INCIDENCE_AZIMUTH_ANGLE_B10:231.181075346
      • MEAN_INCIDENCE_AZIMUTH_ANGLE_B11:229.390344022
      • MEAN_INCIDENCE_AZIMUTH_ANGLE_B12:228.693796089
      • MEAN_INCIDENCE_AZIMUTH_ANGLE_B2:234.499920967
      • MEAN_INCIDENCE_AZIMUTH_ANGLE_B3:232.023517476
      • MEAN_INCIDENCE_AZIMUTH_ANGLE_B4:230.59537529
      • MEAN_INCIDENCE_AZIMUTH_ANGLE_B5:229.956341503
      • MEAN_INCIDENCE_AZIMUTH_ANGLE_B6:229.518495929
      • MEAN_INCIDENCE_AZIMUTH_ANGLE_B7:229.037434243
      • MEAN_INCIDENCE_AZIMUTH_ANGLE_B8:233.108324536
      • MEAN_INCIDENCE_AZIMUTH_ANGLE_B8A:228.7554452
      • MEAN_INCIDENCE_AZIMUTH_ANGLE_B9:228.681896618
      • MEAN_INCIDENCE_ZENITH_ANGLE_B1:3.84876005888
      • MEAN_INCIDENCE_ZENITH_ANGLE_B10:3.45177233793
      • MEAN_INCIDENCE_ZENITH_ANGLE_B11:3.60137297281
      • MEAN_INCIDENCE_ZENITH_ANGLE_B12:3.78570081137
      • MEAN_INCIDENCE_ZENITH_ANGLE_B2:3.2782764992
      • MEAN_INCIDENCE_ZENITH_ANGLE_B3:3.37551363359
      • MEAN_INCIDENCE_ZENITH_ANGLE_B4:3.48451409456
      • MEAN_INCIDENCE_ZENITH_ANGLE_B5:3.54599791747
      • MEAN_INCIDENCE_ZENITH_ANGLE_B6:3.61605291573
      • MEAN_INCIDENCE_ZENITH_ANGLE_B7:3.6859370775
      • MEAN_INCIDENCE_ZENITH_ANGLE_B8:3.32377205921
      • MEAN_INCIDENCE_ZENITH_ANGLE_B8A:3.76323633487
      • MEAN_INCIDENCE_ZENITH_ANGLE_B9:3.93447100737
      • MEAN_SOLAR_AZIMUTH_ANGLE:156.635542399
      • MEAN_SOLAR_ZENITH_ANGLE:50.4236448912
      • MEDIUM_PROBA_CLOUDS_PERCENTAGE:19.061849
      • MGRS_TILE:43QCG
      • NODATA_PIXEL_PERCENTAGE:7e-06
      • NOT_VEGETATED_PERCENTAGE:25.851753
      • PROCESSING_BASELINE:02.13
      • PRODUCT_ID:S2B_MSIL2A_20200103T054229_N0213_R005_T43QCG_20200103T090132
      • RADIATIVE_TRANSFER_ACCURACY:0
      • RADIOMETRIC_QUALITY:PASSED
      • REFLECTANCE_CONVERSION_CORRECTION:1.03421965737
      • SATURATED_DEFECTIVE_PIXEL_PERCENTAGE:0
      • SENSING_ORBIT_DIRECTION:DESCENDING
      • SENSING_ORBIT_NUMBER:5
      • SENSOR_QUALITY:PASSED
      • SNOW_ICE_PERCENTAGE:0
      • SOLAR_IRRADIANCE_B1:1874.3
      • SOLAR_IRRADIANCE_B10:365.41
      • SOLAR_IRRADIANCE_B11:247.08
      • SOLAR_IRRADIANCE_B12:87.75
      • SOLAR_IRRADIANCE_B2:1959.75
      • SOLAR_IRRADIANCE_B3:1824.93
      • SOLAR_IRRADIANCE_B4:1512.79
      • SOLAR_IRRADIANCE_B5:1425.78
      • SOLAR_IRRADIANCE_B6:1291.13
      • SOLAR_IRRADIANCE_B7:1175.57
      • SOLAR_IRRADIANCE_B8:1041.28
      • SOLAR_IRRADIANCE_B8A:953.93
      • SOLAR_IRRADIANCE_B9:817.58
      • SPACECRAFT_NAME:Sentinel-2B
      • THIN_CIRRUS_PERCENTAGE:5.685081
      • UNCLASSIFIED_PERCENTAGE:23.282081
      • VEGETATION_PERCENTAGE:17.555073
      • WATER_PERCENTAGE:0.640701
      • WATER_VAPOUR_RETRIEVAL_ACCURACY:0
      • system:asset_size:1657256589
        • type:LinearRing
            • 0:74.11016540745601
            • 1:24.410902070189405
            • 0:74.11015304070706
            • 1:24.41090268552488
            • 0:73.02774900042658
            • 1:24.400670996155263
            • 0:73.02770404977073
            • 1:24.400633859210657
            • 0:73.02765432478664
            • 1:24.400602059690048
            • 0:73.02765153226005
            • 1:24.40058724459411
            • 0:73.03524590991442
            • 1:23.905101331454237
            • 0:73.04263691932812
            • 1:23.40958874371405
            • 0:73.04267736331765
            • 1:23.409547741651778
            • 0:73.04271195238107
            • 1:23.409502480476807
            • 0:73.0427280759271
            • 1:23.409499872731466
            • 0:74.11691932286789
            • 1:23.41926657630988
            • 0:74.11696421791991
            • 1:23.41930339484835
            • 0:74.11701386233618
            • 1:23.419334786767944
            • 0:74.11701681949414
            • 1:23.41934958311633
            • 0:74.11368048838503
            • 1:23.915101382828507
            • 0:74.11025251236038
            • 1:24.410813246431026
            • 0:74.11021209640668
            • 1:24.410854510840057
            • 0:74.11017759497592
            • 1:24.41090002461655
            • 0:74.11016540745601
            • 1:24.410902070189405
      • system:index:20200103T054229_20200103T054832_T43QCG
      • system:time_end:1578030739975
      • system:time_start:1578030739975
" ], "text/plain": [ "" ] }, "execution_count": 13, "metadata": {}, "output_type": "execute_result" } ], "source": [ "b2 = image.select('B2')\n", "b2" ] }, { "cell_type": "code", "execution_count": 19, "metadata": {}, "outputs": [ { "data": { "text/html": [ "\n", " \n", " " ], "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "text/html": [ "
    • type:Image
        • id:B2
        • crs:EPSG:32643
          • 0:10
          • 1:0
          • 2:300000
          • 3:0
          • 4:-10
          • 5:2700000
          • type:PixelType
          • max:4294836227.5
          • min:-4294836222.5
          • precision:double
          • 0:10980
          • 1:10980
" ], "text/plain": [ "" ] }, "execution_count": 19, "metadata": {}, "output_type": "execute_result" } ], "source": [ "b2.subtract(b2).multiply(b2).add(2.5)" ] }, { "cell_type": "code", "execution_count": 23, "metadata": {}, "outputs": [ { "data": { "text/html": [ "\n", " \n", " " ], "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "text/plain": [ "{'type': 'Image',\n", " 'bands': [{'id': 'B2',\n", " 'data_type': {'type': 'PixelType',\n", " 'precision': 'int',\n", " 'min': 0,\n", " 'max': 65535},\n", " 'dimensions': [10980, 10980],\n", " 'crs': 'EPSG:32643',\n", " 'crs_transform': [10, 0, 300000, 0, -10, 2700000]}],\n", " 'version': 1729686309598954,\n", " 'id': 'COPERNICUS/S2_SR_HARMONIZED/20200103T054229_20200103T054832_T43QCG',\n", " 'properties': {'DATATAKE_IDENTIFIER': 'GS2B_20200103T054229_014760_N02.13',\n", " 'AOT_RETRIEVAL_ACCURACY': 0,\n", " 'SPACECRAFT_NAME': 'Sentinel-2B',\n", " 'SATURATED_DEFECTIVE_PIXEL_PERCENTAGE': 0,\n", " 'MEAN_INCIDENCE_AZIMUTH_ANGLE_B8A': 228.7554452,\n", " 'CLOUD_SHADOW_PERCENTAGE': 0.198579,\n", " 'MEAN_SOLAR_AZIMUTH_ANGLE': 156.635542399,\n", " 'system:footprint': {'type': 'LinearRing',\n", " 'coordinates': [[74.11016540745601, 24.410902070189405],\n", " [74.11015304070706, 24.41090268552488],\n", " [73.02774900042658, 24.400670996155263],\n", " [73.02770404977073, 24.400633859210657],\n", " [73.02765432478664, 24.400602059690048],\n", " [73.02765153226005, 24.40058724459411],\n", " [73.03524590991442, 23.905101331454237],\n", " [73.04263691932812, 23.40958874371405],\n", " [73.04267736331765, 23.409547741651778],\n", " [73.04271195238107, 23.409502480476807],\n", " [73.0427280759271, 23.409499872731466],\n", " [74.11691932286789, 23.41926657630988],\n", " [74.11696421791991, 23.41930339484835],\n", " [74.11701386233618, 23.419334786767944],\n", " [74.11701681949414, 23.41934958311633],\n", " [74.11368048838503, 23.915101382828507],\n", " [74.11025251236038, 24.410813246431026],\n", " [74.11021209640668, 24.410854510840057],\n", " [74.11017759497592, 24.41090002461655],\n", " [74.11016540745601, 24.410902070189405]]},\n", " 'VEGETATION_PERCENTAGE': 17.555073,\n", " 'SOLAR_IRRADIANCE_B12': 87.75,\n", " 'SOLAR_IRRADIANCE_B10': 365.41,\n", " 'SENSOR_QUALITY': 'PASSED',\n", " 'SOLAR_IRRADIANCE_B11': 247.08,\n", " 'GENERATION_TIME': 1578042092000,\n", " 'SOLAR_IRRADIANCE_B8A': 953.93,\n", " 'FORMAT_CORRECTNESS': 'PASSED',\n", " 'CLOUD_COVERAGE_ASSESSMENT': 31.922709,\n", " 'THIN_CIRRUS_PERCENTAGE': 5.685081,\n", " 'system:time_end': 1578030739975,\n", " 'WATER_VAPOUR_RETRIEVAL_ACCURACY': 0,\n", " 'system:time_start': 1578030739975,\n", " 'DATASTRIP_ID': 'S2B_OPER_MSI_L2A_DS_EPAE_20200103T090132_S20200103T054832_N02.13',\n", " 'PROCESSING_BASELINE': '02.13',\n", " 'SENSING_ORBIT_NUMBER': 5,\n", " 'NODATA_PIXEL_PERCENTAGE': 7e-06,\n", " 'SENSING_ORBIT_DIRECTION': 'DESCENDING',\n", " 'GENERAL_QUALITY': 'PASSED',\n", " 'GRANULE_ID': 'L2A_T43QCG_A014760_20200103T054832',\n", " 'REFLECTANCE_CONVERSION_CORRECTION': 1.03421965737,\n", " 'MEDIUM_PROBA_CLOUDS_PERCENTAGE': 19.061849,\n", " 'MEAN_INCIDENCE_AZIMUTH_ANGLE_B8': 233.108324536,\n", " 'DATATAKE_TYPE': 'INS-NOBS',\n", " 'MEAN_INCIDENCE_AZIMUTH_ANGLE_B9': 228.681896618,\n", " 'MEAN_INCIDENCE_AZIMUTH_ANGLE_B6': 229.518495929,\n", " 'MEAN_INCIDENCE_AZIMUTH_ANGLE_B7': 229.037434243,\n", " 'MEAN_INCIDENCE_AZIMUTH_ANGLE_B4': 230.59537529,\n", " 'MEAN_INCIDENCE_ZENITH_ANGLE_B1': 3.84876005888,\n", " 'NOT_VEGETATED_PERCENTAGE': 25.851753,\n", " 'MEAN_INCIDENCE_AZIMUTH_ANGLE_B5': 229.956341503,\n", " 'RADIOMETRIC_QUALITY': 'PASSED',\n", " 'MEAN_INCIDENCE_AZIMUTH_ANGLE_B2': 234.499920967,\n", " 'MEAN_INCIDENCE_AZIMUTH_ANGLE_B3': 232.023517476,\n", " 'MEAN_INCIDENCE_ZENITH_ANGLE_B5': 3.54599791747,\n", " 'MEAN_INCIDENCE_AZIMUTH_ANGLE_B1': 228.866693947,\n", " 'MEAN_INCIDENCE_ZENITH_ANGLE_B4': 3.48451409456,\n", " 'MEAN_INCIDENCE_ZENITH_ANGLE_B3': 3.37551363359,\n", " 'MEAN_INCIDENCE_ZENITH_ANGLE_B2': 3.2782764992,\n", " 'MEAN_INCIDENCE_ZENITH_ANGLE_B9': 3.93447100737,\n", " 'MEAN_INCIDENCE_ZENITH_ANGLE_B8': 3.32377205921,\n", " 'MEAN_INCIDENCE_ZENITH_ANGLE_B7': 3.6859370775,\n", " 'DARK_FEATURES_PERCENTAGE': 0.549102,\n", " 'HIGH_PROBA_CLOUDS_PERCENTAGE': 7.175779,\n", " 'MEAN_INCIDENCE_ZENITH_ANGLE_B6': 3.61605291573,\n", " 'UNCLASSIFIED_PERCENTAGE': 23.282081,\n", " 'MEAN_SOLAR_ZENITH_ANGLE': 50.4236448912,\n", " 'MEAN_INCIDENCE_ZENITH_ANGLE_B8A': 3.76323633487,\n", " 'RADIATIVE_TRANSFER_ACCURACY': 0,\n", " 'MGRS_TILE': '43QCG',\n", " 'CLOUDY_PIXEL_PERCENTAGE': 31.922709,\n", " 'PRODUCT_ID': 'S2B_MSIL2A_20200103T054229_N0213_R005_T43QCG_20200103T090132',\n", " 'MEAN_INCIDENCE_ZENITH_ANGLE_B10': 3.45177233793,\n", " 'SOLAR_IRRADIANCE_B9': 817.58,\n", " 'SNOW_ICE_PERCENTAGE': 0,\n", " 'DEGRADED_MSI_DATA_PERCENTAGE': 0,\n", " 'MEAN_INCIDENCE_ZENITH_ANGLE_B11': 3.60137297281,\n", " 'MEAN_INCIDENCE_ZENITH_ANGLE_B12': 3.78570081137,\n", " 'SOLAR_IRRADIANCE_B6': 1291.13,\n", " 'MEAN_INCIDENCE_AZIMUTH_ANGLE_B10': 231.181075346,\n", " 'SOLAR_IRRADIANCE_B5': 1425.78,\n", " 'MEAN_INCIDENCE_AZIMUTH_ANGLE_B11': 229.390344022,\n", " 'SOLAR_IRRADIANCE_B8': 1041.28,\n", " 'MEAN_INCIDENCE_AZIMUTH_ANGLE_B12': 228.693796089,\n", " 'SOLAR_IRRADIANCE_B7': 1175.57,\n", " 'SOLAR_IRRADIANCE_B2': 1959.75,\n", " 'SOLAR_IRRADIANCE_B1': 1874.3,\n", " 'SOLAR_IRRADIANCE_B4': 1512.79,\n", " 'GEOMETRIC_QUALITY': 'PASSED',\n", " 'SOLAR_IRRADIANCE_B3': 1824.93,\n", " 'system:asset_size': 1657256589,\n", " 'WATER_PERCENTAGE': 0.640701,\n", " 'system:index': '20200103T054229_20200103T054832_T43QCG'}}" ] }, "execution_count": 23, "metadata": {}, "output_type": "execute_result" } ], "source": [ "b2.getInfo()" ] }, { "cell_type": "code", "execution_count": 15, "metadata": {}, "outputs": [ { "data": { "text/html": [ "\n", " \n", " " ], "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "text/plain": [ "{'type': 'Polygon',\n", " 'coordinates': [[[-122.52021789550781, 37.76885797689413],\n", " [-122.51060485839844, 37.76885797689413],\n", " [-122.51060485839844, 37.77478500000001],\n", " [-122.52021789550781, 37.77478500000001],\n", " [-122.52021789550781, 37.76885797689413]]]}" ] }, "execution_count": 15, "metadata": {}, "output_type": "execute_result" } ], "source": [ "ee_polygon.getInfo()" ] }, { "cell_type": "code", "execution_count": 12, "metadata": {}, "outputs": [ { "data": { "text/html": [ "\n", " \n", " " ], "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "import geemap.foliumap as gee_folium" ] }, { "cell_type": "code", "execution_count": 14, "metadata": {}, "outputs": [ { "data": { "text/html": [ "\n", " \n", " " ], "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "m = gee_folium.Map()" ] }, { "cell_type": "code", "execution_count": 26, "metadata": {}, "outputs": [ { "data": { "text/html": [ "\n", " \n", " " ], "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "text/plain": [ "7272.727272727272" ] }, "execution_count": 26, "metadata": {}, "output_type": "execute_result" } ], "source": [ "1/2.75e-05 * 0.2" ] }, { "cell_type": "code", "execution_count": 15, "metadata": {}, "outputs": [ { "data": { "text/html": [ "\n", " \n", " " ], "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" }, { "name": "stdout", "output_type": "stream", "text": [ "\u001b[0;31mSignature:\u001b[0m\n", "\u001b[0mm\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0maddLayer\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m\u001b[0m\n", "\u001b[0;34m\u001b[0m \u001b[0mee_object\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0;34m\u001b[0m\n", "\u001b[0;34m\u001b[0m \u001b[0mvis_params\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0;34m{\u001b[0m\u001b[0;34m}\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0;34m\u001b[0m\n", "\u001b[0;34m\u001b[0m \u001b[0mname\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0;34m'Layer untitled'\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0;34m\u001b[0m\n", "\u001b[0;34m\u001b[0m \u001b[0mshown\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0;32mTrue\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0;34m\u001b[0m\n", "\u001b[0;34m\u001b[0m \u001b[0mopacity\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0;36m1.0\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0;34m\u001b[0m\n", "\u001b[0;34m\u001b[0m \u001b[0;34m**\u001b[0m\u001b[0mkwargs\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0;34m\u001b[0m\n", "\u001b[0;34m\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", "\u001b[0;31mSource:\u001b[0m \n", " \u001b[0;32mdef\u001b[0m \u001b[0madd_layer\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m\u001b[0m\n", "\u001b[0;34m\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0;34m\u001b[0m\n", "\u001b[0;34m\u001b[0m \u001b[0mee_object\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0;34m\u001b[0m\n", "\u001b[0;34m\u001b[0m \u001b[0mvis_params\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0;34m{\u001b[0m\u001b[0;34m}\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0;34m\u001b[0m\n", "\u001b[0;34m\u001b[0m \u001b[0mname\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0;34m\"Layer untitled\"\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0;34m\u001b[0m\n", "\u001b[0;34m\u001b[0m \u001b[0mshown\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0;32mTrue\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0;34m\u001b[0m\n", "\u001b[0;34m\u001b[0m \u001b[0mopacity\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0;36m1.0\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0;34m\u001b[0m\n", "\u001b[0;34m\u001b[0m \u001b[0;34m**\u001b[0m\u001b[0mkwargs\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0;34m\u001b[0m\n", "\u001b[0;34m\u001b[0m \u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\n", "\u001b[0;34m\u001b[0m \u001b[0;34m\"\"\"Adds a given EE object to the map as a layer.\u001b[0m\n", "\u001b[0;34m\u001b[0m\n", "\u001b[0;34m Args:\u001b[0m\n", "\u001b[0;34m ee_object (Collection|Feature|Image|MapId): The object to add to the map.\u001b[0m\n", "\u001b[0;34m vis_params (dict, optional): The visualization parameters. Defaults to {}.\u001b[0m\n", "\u001b[0;34m name (str, optional): The name of the layer. Defaults to 'Layer untitled'.\u001b[0m\n", "\u001b[0;34m shown (bool, optional): A flag indicating whether the layer should be on by default. Defaults to True.\u001b[0m\n", "\u001b[0;34m opacity (float, optional): The layer's opacity represented as a number between 0 and 1. Defaults to 1.\u001b[0m\n", "\u001b[0;34m \"\"\"\u001b[0m\u001b[0;34m\u001b[0m\n", "\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\n", "\u001b[0;34m\u001b[0m \u001b[0mlayer\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mEEFoliumTileLayer\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mee_object\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mvis_params\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mname\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mshown\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mopacity\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;34m**\u001b[0m\u001b[0mkwargs\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\n", "\u001b[0;34m\u001b[0m \u001b[0mlayer\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0madd_to\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mself\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\n", "\u001b[0;34m\u001b[0m \u001b[0marc_add_layer\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mlayer\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0murl_format\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mname\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mshown\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mopacity\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", "\u001b[0;31mFile:\u001b[0m /opt/anaconda3/envs/zeel_py310/lib/python3.10/site-packages/geemap/foliumap.py\n", "\u001b[0;31mType:\u001b[0m method" ] } ], "source": [ "m.addLayer??" ] }, { "cell_type": "code", "execution_count": 5, "metadata": {}, "outputs": [ { "data": { "text/html": [ "\n", " \n", " " ], "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "text/plain": [ "Index(['2023-01', '2023-02', '2023-03', '2023-04', '2023-05', '2023-06',\n", " '2023-07', '2023-08', '2023-09', '2023-10', '2023-11', '2023-12',\n", " '2024-01'],\n", " dtype='object')" ] }, "execution_count": 5, "metadata": {}, "output_type": "execute_result" } ], "source": [ "start = \"2023-01\"\n", "end = \"2024-01\"\n", "pd.date_range(start, end, freq='MS').strftime(\"%Y-%m\")" ] }, { "cell_type": "code", "execution_count": 6, "metadata": {}, "outputs": [ { "data": { "text/html": [ "\n", " \n", " " ], "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" }, { "name": "stdout", "output_type": "stream", "text": [ "{'type': 'Polygon', 'coordinates': (((73.19791470947145, 24.01977640858627), (73.1951165609439, 24.01754094149261), (73.1955205367043, 24.01738340683521), (73.19480033400262, 24.01523619312771), (73.19463695073262, 24.01440311871703), (73.19454286010809, 24.0139003560814), (73.1942443392165, 24.0126807914708), (73.1942341944796, 24.0126863557728), (73.19653511275247, 24.01252023885471), (73.19648432210984, 24.01217871972386), (73.19764861281237, 24.01199930187962), (73.1981728693097, 24.01433254741455), (73.1986819814156, 24.01611200638915), (73.19959745133227, 24.01895266153662), (73.19791470947145, 24.01977640858627)),)}\n", "\n" ] }, { "data": { "text/html": [ "
    • type:FeatureCollection
      • system:index:String
        • type:Feature
        • id:0
          • type:Polygon
                • 0:73.19791470947145
                • 1:24.01977640858627
                • 0:73.1951165609439
                • 1:24.01754094149261
                • 0:73.1955205367043
                • 1:24.01738340683521
                • 0:73.19480033400262
                • 1:24.01523619312771
                • 0:73.19463695073262
                • 1:24.01440311871703
                • 0:73.19454286010809
                • 1:24.0139003560814
                • 0:73.1942443392165
                • 1:24.0126807914708
                • 0:73.1942341944796
                • 1:24.0126863557728
                • 0:73.19653511275247
                • 1:24.01252023885471
                • 0:73.19648432210984
                • 1:24.01217871972386
                • 0:73.19764861281237
                • 1:24.01199930187962
                • 0:73.1981728693097
                • 1:24.01433254741455
                • 0:73.1986819814156
                • 1:24.01611200638915
                • 0:73.19959745133227
                • 1:24.01895266153662
                • 0:73.19791470947145
                • 1:24.01977640858627
    " ], "text/plain": [ "" ] }, "execution_count": 6, "metadata": {}, "output_type": "execute_result" } ], "source": [ "gdf = gpd.read_file(\"/home/patel_zeel/Mean_NDVI/golvada he 10 2023-24.kml\")\n", "gdf = gdf.to_crs(epsg=4326)\n", "def poly_3d_to_2d(shape):\n", " if shape.has_z:\n", " return transform(lambda x, y, z: (x, y), shape)\n", " else:\n", " return shape\n", "gdf['geometry'] = gdf['geometry'].apply(poly_3d_to_2d)\n", "gdf = gdf.to_crs(epsg=4326)\n", "first_item = gdf.iloc[0].geometry.__geo_interface__\n", "print(first_item)\n", "print(type(first_item))\n", "ee_geometry = ee.Geometry(first_item)\n", "ee_feature_collection = ee.FeatureCollection(ee_geometry)\n", "ee_feature_collection\n" ] }, { "cell_type": "code", "execution_count": 7, "metadata": {}, "outputs": [ { "data": { "text/html": [ "\n", " \n", " " ], "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" }, { "name": "stdout", "output_type": "stream", "text": [ "['LANDSAT/LC08/C02/T1_TOA/LC08_148043_20230405', 'LANDSAT/LC08/C02/T1_TOA/LC08_148043_20230421', 'LANDSAT/LC08/C02/T1_TOA/LC08_148043_20230507', 'LANDSAT/LC08/C02/T1_TOA/LC08_148043_20230523', 'LANDSAT/LC08/C02/T1_TOA/LC08_148043_20230608', 'LANDSAT/LC08/C02/T1_TOA/LC08_148043_20230624', 'LANDSAT/LC08/C02/T1_TOA/LC08_148043_20230811', 'LANDSAT/LC08/C02/T1_TOA/LC08_148043_20230827', 'LANDSAT/LC08/C02/T1_TOA/LC08_148044_20230405', 'LANDSAT/LC08/C02/T1_TOA/LC08_148044_20230421', 'LANDSAT/LC08/C02/T1_TOA/LC08_148044_20230507', 'LANDSAT/LC08/C02/T1_TOA/LC08_148044_20230523', 'LANDSAT/LC08/C02/T1_TOA/LC08_148044_20230608', 'LANDSAT/LC08/C02/T1_TOA/LC08_148044_20230811', 'LANDSAT/LC08/C02/T1_TOA/LC08_148044_20230827']\n" ] } ], "source": [ "dataset = ee.ImageCollection('LANDSAT/LC08/C02/T1_TOA').filterBounds(ee_geometry).filterDate('2023-04', '2023-09')\n", "# print image IDs\n", "image_ids = dataset.aggregate_array('system:id').getInfo()\n", "print(image_ids)\n", "\n", "# true_color_432 = dataset.select(['B4', 'B3', 'B2'])\n", "# print(\"Number of images in the collection: \", true_color_432.size().getInfo())" ] }, { "cell_type": "code", "execution_count": 136, "metadata": {}, "outputs": [ { "data": { "text/html": [ "\n", " \n", " " ], "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" }, { "name": "stdout", "output_type": "stream", "text": [ "Image ID: LC08_148044_20230115\n", "New Image ID: LC08_148044_20230115\n" ] } ], "source": [ "# pick the second image in the collection\n", "image = dataset.toList(true_color_432.size()).get(1)\n", "image = ee.Image(image)\n", "# print image id\n", "print(\"Image ID: \", image.id().getInfo())\n", "# replace id with \"anonymous\"\n", "image = image.set('id', 'anonymous')\n", "# print new image id\n", "print(\"New Image ID: \", image.id().getInfo())" ] }, { "cell_type": "code", "execution_count": 10, "metadata": {}, "outputs": [ { "data": { "text/html": [ "\n", " \n", " " ], "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" }, { "name": "stdout", "output_type": "stream", "text": [ "Computing statistics ...\n" ] }, { "data": { "text/plain": [ "{'type': 'FeatureCollection',\n", " 'columns': {'mean': 'Float', 'system:index': 'String'},\n", " 'features': [{'type': 'Feature',\n", " 'geometry': {'type': 'Polygon',\n", " 'coordinates': [[[73.19791470947145, 24.01977640858627],\n", " [73.1951165609439, 24.01754094149261],\n", " [73.1955205367043, 24.01738340683521],\n", " [73.19480033400262, 24.01523619312771],\n", " [73.19463695073262, 24.01440311871703],\n", " [73.19454286010809, 24.0139003560814],\n", " [73.1942443392165, 24.0126807914708],\n", " [73.1942341944796, 24.0126863557728],\n", " [73.19653511275247, 24.01252023885471],\n", " [73.19648432210984, 24.01217871972386],\n", " [73.19764861281237, 24.01199930187962],\n", " [73.1981728693097, 24.01433254741455],\n", " [73.1986819814156, 24.01611200638915],\n", " [73.19959745133227, 24.01895266153662],\n", " [73.19791470947145, 24.01977640858627]]]},\n", " 'id': '0',\n", " 'properties': {'mean': 0.7695880858277654}}]}" ] }, "execution_count": 10, "metadata": {}, "output_type": "execute_result" } ], "source": [ "geemap.zonal_stats(dataset.qualityMosaic(\"B4\").select([\"B4\"]), ee_feature_collection, statistics_type='mean', scale=10, return_fc=True).getInfo()" ] }, { "cell_type": "code", "execution_count": 61, "metadata": {}, "outputs": [ { "data": { "text/html": [ "\n", " \n", " " ], "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "text/plain": [ "[{'type': 'Feature',\n", " 'geometry': {'type': 'Polygon',\n", " 'coordinates': [[[73.19791470947145, 24.01977640858627],\n", " [73.1951165609439, 24.01754094149261],\n", " [73.1955205367043, 24.01738340683521],\n", " [73.19480033400262, 24.01523619312771],\n", " [73.19463695073262, 24.01440311871703],\n", " [73.19454286010809, 24.0139003560814],\n", " [73.1942443392165, 24.0126807914708],\n", " [73.1942341944796, 24.0126863557728],\n", " [73.19653511275247, 24.01252023885471],\n", " [73.19648432210984, 24.01217871972386],\n", " [73.19764861281237, 24.01199930187962],\n", " [73.1981728693097, 24.01433254741455],\n", " [73.1986819814156, 24.01611200638915],\n", " [73.19959745133227, 24.01895266153662],\n", " [73.19791470947145, 24.01977640858627]]]},\n", " 'id': '0',\n", " 'properties': {'mean': 0.7695880858277654}}]" ] }, "execution_count": 61, "metadata": {}, "output_type": "execute_result" } ], "source": [ "features.getInfo()['features']" ] }, { "cell_type": "code", "execution_count": 69, "metadata": {}, "outputs": [ { "data": { "text/html": [ "\n", " \n", " " ], "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "text/plain": [ "'20210125'" ] }, "execution_count": 69, "metadata": {}, "output_type": "execute_result" } ], "source": [ "import re\n", "\n", "re.findall(r\"LC08_\\d+_(\\d+)_NDVI\", \"LC08_148043_20210125_NDVI\")[0]" ] }, { "cell_type": "code", "execution_count": 72, "metadata": {}, "outputs": [ { "data": { "text/html": [ "\n", " \n", " " ], "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "text/html": [ "
    <ee.image.Image object at 0x7fd10c62b820>
    " ], "text/plain": [ "" ] }, "execution_count": 72, "metadata": {}, "output_type": "execute_result" } ], "source": [ "dataset.qualityMosaic('NDVI')" ] }, { "cell_type": "code", "execution_count": 116, "metadata": {}, "outputs": [ { "data": { "text/html": [ "\n", " \n", " " ], "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "text/plain": [ "'2023-01-01'" ] }, "execution_count": 116, "metadata": {}, "output_type": "execute_result" } ], "source": [ "start = '2023-01-01'\n", "start.format(\"YYYY-MM\")" ] }, { "cell_type": "code", "execution_count": 110, "metadata": {}, "outputs": [ { "data": { "text/html": [ "\n", " \n", " " ], "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" }, { "name": "stdout", "output_type": "stream", "text": [ "['2023-01-01', '2023-02-01', '2023-03-01', '2023-04-01', '2023-05-01', '2023-06-01', '2023-07-01', '2023-08-01', '2023-09-01', '2023-10-01', '2023-11-01', '2023-12-01', '2024-01-01']\n" ] } ], "source": [ "import pandas as pd\n", "start_date = '2023-01'\n", "end_date = '2024-01'\n", "\n", "# get 1st day of each month\n", "dates = pd.date_range(start_date, end_date, freq='MS').strftime(\"%Y-%m-%d\").tolist()\n", "print(dates)" ] }, { "cell_type": "code", "execution_count": 138, "metadata": {}, "outputs": [ { "data": { "text/html": [ "\n", " \n", " " ], "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" }, { "name": "stdout", "output_type": "stream", "text": [ "\u001b[0;31mSignature:\u001b[0m\n", "\u001b[0mgeemap\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mzonal_stats\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m\u001b[0m\n", "\u001b[0;34m\u001b[0m \u001b[0min_value_raster\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0;34m\u001b[0m\n", "\u001b[0;34m\u001b[0m \u001b[0min_zone_vector\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0;34m\u001b[0m\n", "\u001b[0;34m\u001b[0m \u001b[0mout_file_path\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0;32mNone\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0;34m\u001b[0m\n", "\u001b[0;34m\u001b[0m \u001b[0mstat_type\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0;34m'MEAN'\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0;34m\u001b[0m\n", "\u001b[0;34m\u001b[0m \u001b[0mscale\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0;32mNone\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0;34m\u001b[0m\n", "\u001b[0;34m\u001b[0m \u001b[0mcrs\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0;32mNone\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0;34m\u001b[0m\n", "\u001b[0;34m\u001b[0m \u001b[0mtile_scale\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0;36m1.0\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0;34m\u001b[0m\n", "\u001b[0;34m\u001b[0m \u001b[0mreturn_fc\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0;32mFalse\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0;34m\u001b[0m\n", "\u001b[0;34m\u001b[0m \u001b[0mverbose\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0;32mTrue\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0;34m\u001b[0m\n", "\u001b[0;34m\u001b[0m \u001b[0mtimeout\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0;36m300\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0;34m\u001b[0m\n", "\u001b[0;34m\u001b[0m \u001b[0mproxies\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0;32mNone\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0;34m\u001b[0m\n", "\u001b[0;34m\u001b[0m \u001b[0;34m**\u001b[0m\u001b[0mkwargs\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0;34m\u001b[0m\n", "\u001b[0;34m\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", "\u001b[0;31mSource:\u001b[0m \n", "\u001b[0;32mdef\u001b[0m \u001b[0mzonal_stats\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m\u001b[0m\n", "\u001b[0;34m\u001b[0m \u001b[0min_value_raster\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0;34m\u001b[0m\n", "\u001b[0;34m\u001b[0m \u001b[0min_zone_vector\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0;34m\u001b[0m\n", "\u001b[0;34m\u001b[0m \u001b[0mout_file_path\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0;32mNone\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0;34m\u001b[0m\n", "\u001b[0;34m\u001b[0m \u001b[0mstat_type\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0;34m\"MEAN\"\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0;34m\u001b[0m\n", "\u001b[0;34m\u001b[0m \u001b[0mscale\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0;32mNone\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0;34m\u001b[0m\n", "\u001b[0;34m\u001b[0m \u001b[0mcrs\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0;32mNone\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0;34m\u001b[0m\n", "\u001b[0;34m\u001b[0m \u001b[0mtile_scale\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0;36m1.0\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0;34m\u001b[0m\n", "\u001b[0;34m\u001b[0m \u001b[0mreturn_fc\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0;32mFalse\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0;34m\u001b[0m\n", "\u001b[0;34m\u001b[0m \u001b[0mverbose\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0;32mTrue\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0;34m\u001b[0m\n", "\u001b[0;34m\u001b[0m \u001b[0mtimeout\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0;36m300\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0;34m\u001b[0m\n", "\u001b[0;34m\u001b[0m \u001b[0mproxies\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0;32mNone\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0;34m\u001b[0m\n", "\u001b[0;34m\u001b[0m \u001b[0;34m**\u001b[0m\u001b[0mkwargs\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0;34m\u001b[0m\n", "\u001b[0;34m\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\n", "\u001b[0;34m\u001b[0m \u001b[0;34m\"\"\"Summarizes the values of a raster within the zones of another dataset and exports the results as a csv, shp, json, kml, or kmz.\u001b[0m\n", "\u001b[0;34m\u001b[0m\n", "\u001b[0;34m Args:\u001b[0m\n", "\u001b[0;34m in_value_raster (object): An ee.Image or ee.ImageCollection that contains the values on which to calculate a statistic.\u001b[0m\n", "\u001b[0;34m in_zone_vector (object): An ee.FeatureCollection that defines the zones.\u001b[0m\n", "\u001b[0;34m out_file_path (str): Output file path that will contain the summary of the values in each zone. The file type can be: csv, shp, json, kml, kmz\u001b[0m\n", "\u001b[0;34m stat_type (str, optional): Statistical type to be calculated. Defaults to 'MEAN'. For 'HIST', you can provide three parameters: max_buckets, min_bucket_width, and max_raw. For 'FIXED_HIST', you must provide three parameters: hist_min, hist_max, and hist_steps.\u001b[0m\n", "\u001b[0;34m scale (float, optional): A nominal scale in meters of the projection to work in. Defaults to None.\u001b[0m\n", "\u001b[0;34m crs (str, optional): The projection to work in. If unspecified, the projection of the image's first band is used. If specified in addition to scale, rescaled to the specified scale. Defaults to None.\u001b[0m\n", "\u001b[0;34m tile_scale (float, optional): A scaling factor used to reduce aggregation tile size; using a larger tileScale (e.g. 2 or 4) may enable computations that run out of memory with the default. Defaults to 1.0.\u001b[0m\n", "\u001b[0;34m verbose (bool, optional): Whether to print descriptive text when the programming is running. Default to True.\u001b[0m\n", "\u001b[0;34m return_fc (bool, optional): Whether to return the results as an ee.FeatureCollection. Defaults to False.\u001b[0m\n", "\u001b[0;34m timeout (int, optional): Timeout in seconds. Default to 300.\u001b[0m\n", "\u001b[0;34m proxies (dict, optional): A dictionary of proxy servers to use for the request. Default to None.\u001b[0m\n", "\u001b[0;34m \"\"\"\u001b[0m\u001b[0;34m\u001b[0m\n", "\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\n", "\u001b[0;34m\u001b[0m \u001b[0;32mif\u001b[0m \u001b[0misinstance\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0min_value_raster\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mee\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mImageCollection\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\n", "\u001b[0;34m\u001b[0m \u001b[0min_value_raster\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0min_value_raster\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mtoBands\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\n", "\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\n", "\u001b[0;34m\u001b[0m \u001b[0;32mif\u001b[0m \u001b[0;32mnot\u001b[0m \u001b[0misinstance\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0min_value_raster\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mee\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mImage\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\n", "\u001b[0;34m\u001b[0m \u001b[0mprint\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m\"The input raster must be an ee.Image.\"\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\n", "\u001b[0;34m\u001b[0m \u001b[0;32mreturn\u001b[0m\u001b[0;34m\u001b[0m\n", "\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\n", "\u001b[0;34m\u001b[0m \u001b[0;32mif\u001b[0m \u001b[0;32mnot\u001b[0m \u001b[0misinstance\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0min_zone_vector\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mee\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mFeatureCollection\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\n", "\u001b[0;34m\u001b[0m \u001b[0mprint\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m\"The input zone data must be an ee.FeatureCollection.\"\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\n", "\u001b[0;34m\u001b[0m \u001b[0;32mreturn\u001b[0m\u001b[0;34m\u001b[0m\n", "\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\n", "\u001b[0;34m\u001b[0m \u001b[0;32mif\u001b[0m \u001b[0mout_file_path\u001b[0m \u001b[0;32mis\u001b[0m \u001b[0;32mNone\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\n", "\u001b[0;34m\u001b[0m \u001b[0mout_file_path\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mos\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mpath\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mjoin\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mos\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mgetcwd\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;34m\"zonal_stats.csv\"\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\n", "\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\n", "\u001b[0;34m\u001b[0m \u001b[0;32mif\u001b[0m \u001b[0;34m\"statistics_type\"\u001b[0m \u001b[0;32min\u001b[0m \u001b[0mkwargs\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\n", "\u001b[0;34m\u001b[0m \u001b[0mstat_type\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mkwargs\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mpop\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m\"statistics_type\"\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\n", "\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\n", "\u001b[0;34m\u001b[0m \u001b[0mallowed_formats\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0;34m[\u001b[0m\u001b[0;34m\"csv\"\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;34m\"geojson\"\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;34m\"kml\"\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;34m\"kmz\"\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;34m\"shp\"\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m\u001b[0m\n", "\u001b[0;34m\u001b[0m \u001b[0mfilename\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mos\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mpath\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mabspath\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mout_file_path\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\n", "\u001b[0;34m\u001b[0m \u001b[0mbasename\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mos\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mpath\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mbasename\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mfilename\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\n", "\u001b[0;34m\u001b[0m \u001b[0;31m# name = os.path.splitext(basename)[0]\u001b[0m\u001b[0;34m\u001b[0m\n", "\u001b[0;34m\u001b[0m \u001b[0mfiletype\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mos\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mpath\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0msplitext\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mbasename\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0;36m1\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0;36m1\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mlower\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\n", "\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\n", "\u001b[0;34m\u001b[0m \u001b[0;32mif\u001b[0m \u001b[0;32mnot\u001b[0m \u001b[0;34m(\u001b[0m\u001b[0mfiletype\u001b[0m \u001b[0;32min\u001b[0m \u001b[0mallowed_formats\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\n", "\u001b[0;34m\u001b[0m \u001b[0mprint\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m\u001b[0m\n", "\u001b[0;34m\u001b[0m \u001b[0;34m\"The file type must be one of the following: {}\"\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mformat\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m\u001b[0m\n", "\u001b[0;34m\u001b[0m \u001b[0;34m\", \"\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mjoin\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mallowed_formats\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\n", "\u001b[0;34m\u001b[0m \u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\n", "\u001b[0;34m\u001b[0m \u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\n", "\u001b[0;34m\u001b[0m \u001b[0;32mreturn\u001b[0m\u001b[0;34m\u001b[0m\n", "\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\n", "\u001b[0;34m\u001b[0m \u001b[0;31m# Parameters for histogram\u001b[0m\u001b[0;34m\u001b[0m\n", "\u001b[0;34m\u001b[0m \u001b[0;31m# The maximum number of buckets to use when building a histogram; will be rounded up to a power of 2.\u001b[0m\u001b[0;34m\u001b[0m\n", "\u001b[0;34m\u001b[0m \u001b[0mmax_buckets\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0;32mNone\u001b[0m\u001b[0;34m\u001b[0m\n", "\u001b[0;34m\u001b[0m \u001b[0;31m# The minimum histogram bucket width, or null to allow any power of 2.\u001b[0m\u001b[0;34m\u001b[0m\n", "\u001b[0;34m\u001b[0m \u001b[0mmin_bucket_width\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0;32mNone\u001b[0m\u001b[0;34m\u001b[0m\n", "\u001b[0;34m\u001b[0m \u001b[0;31m# The number of values to accumulate before building the initial histogram.\u001b[0m\u001b[0;34m\u001b[0m\n", "\u001b[0;34m\u001b[0m \u001b[0mmax_raw\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0;32mNone\u001b[0m\u001b[0;34m\u001b[0m\n", "\u001b[0;34m\u001b[0m \u001b[0mhist_min\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0;36m1.0\u001b[0m \u001b[0;31m# The lower (inclusive) bound of the first bucket.\u001b[0m\u001b[0;34m\u001b[0m\n", "\u001b[0;34m\u001b[0m \u001b[0mhist_max\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0;36m100.0\u001b[0m \u001b[0;31m# The upper (exclusive) bound of the last bucket.\u001b[0m\u001b[0;34m\u001b[0m\n", "\u001b[0;34m\u001b[0m \u001b[0mhist_steps\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0;36m10\u001b[0m \u001b[0;31m# The number of buckets to use.\u001b[0m\u001b[0;34m\u001b[0m\n", "\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\n", "\u001b[0;34m\u001b[0m \u001b[0;32mif\u001b[0m \u001b[0;34m\"max_buckets\"\u001b[0m \u001b[0;32min\u001b[0m \u001b[0mkwargs\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mkeys\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\n", "\u001b[0;34m\u001b[0m \u001b[0mmax_buckets\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mkwargs\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0;34m\"max_buckets\"\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m\u001b[0m\n", "\u001b[0;34m\u001b[0m \u001b[0;32mif\u001b[0m \u001b[0;34m\"min_bucket_width\"\u001b[0m \u001b[0;32min\u001b[0m \u001b[0mkwargs\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mkeys\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\n", "\u001b[0;34m\u001b[0m \u001b[0mmin_bucket_width\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mkwargs\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0;34m\"min_bucket\"\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m\u001b[0m\n", "\u001b[0;34m\u001b[0m \u001b[0;32mif\u001b[0m \u001b[0;34m\"max_raw\"\u001b[0m \u001b[0;32min\u001b[0m \u001b[0mkwargs\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mkeys\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\n", "\u001b[0;34m\u001b[0m \u001b[0mmax_raw\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mkwargs\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0;34m\"max_raw\"\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m\u001b[0m\n", "\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\n", "\u001b[0;34m\u001b[0m \u001b[0;32mif\u001b[0m \u001b[0misinstance\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mstat_type\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mstr\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\n", "\u001b[0;34m\u001b[0m \u001b[0;32mif\u001b[0m \u001b[0;34m(\u001b[0m\u001b[0;34m\u001b[0m\n", "\u001b[0;34m\u001b[0m \u001b[0mstat_type\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mupper\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m \u001b[0;34m==\u001b[0m \u001b[0;34m\"FIXED_HIST\"\u001b[0m\u001b[0;34m\u001b[0m\n", "\u001b[0;34m\u001b[0m \u001b[0;32mand\u001b[0m \u001b[0;34m(\u001b[0m\u001b[0;34m\"hist_min\"\u001b[0m \u001b[0;32min\u001b[0m \u001b[0mkwargs\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mkeys\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\n", "\u001b[0;34m\u001b[0m \u001b[0;32mand\u001b[0m \u001b[0;34m(\u001b[0m\u001b[0;34m\"hist_max\"\u001b[0m \u001b[0;32min\u001b[0m \u001b[0mkwargs\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mkeys\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\n", "\u001b[0;34m\u001b[0m \u001b[0;32mand\u001b[0m \u001b[0;34m(\u001b[0m\u001b[0;34m\"hist_steps\"\u001b[0m \u001b[0;32min\u001b[0m \u001b[0mkwargs\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mkeys\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\n", "\u001b[0;34m\u001b[0m \u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\n", "\u001b[0;34m\u001b[0m \u001b[0mhist_min\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mkwargs\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0;34m\"hist_min\"\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m\u001b[0m\n", "\u001b[0;34m\u001b[0m \u001b[0mhist_max\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mkwargs\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0;34m\"hist_max\"\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m\u001b[0m\n", "\u001b[0;34m\u001b[0m \u001b[0mhist_steps\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mkwargs\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0;34m\"hist_steps\"\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m\u001b[0m\n", "\u001b[0;34m\u001b[0m \u001b[0;32melif\u001b[0m \u001b[0mstat_type\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mupper\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m \u001b[0;34m==\u001b[0m \u001b[0;34m\"FIXED_HIST\"\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\n", "\u001b[0;34m\u001b[0m \u001b[0mprint\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m\u001b[0m\n", "\u001b[0;34m\u001b[0m \u001b[0;34m\"To use fixedHistogram, please provide these three parameters: hist_min, hist_max, and hist_steps.\"\u001b[0m\u001b[0;34m\u001b[0m\n", "\u001b[0;34m\u001b[0m \u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\n", "\u001b[0;34m\u001b[0m \u001b[0;32mreturn\u001b[0m\u001b[0;34m\u001b[0m\n", "\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\n", "\u001b[0;34m\u001b[0m \u001b[0mallowed_statistics\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0;34m{\u001b[0m\u001b[0;34m\u001b[0m\n", "\u001b[0;34m\u001b[0m \u001b[0;34m\"COUNT\"\u001b[0m\u001b[0;34m:\u001b[0m \u001b[0mee\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mReducer\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mcount\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0;34m\u001b[0m\n", "\u001b[0;34m\u001b[0m \u001b[0;34m\"MEAN\"\u001b[0m\u001b[0;34m:\u001b[0m \u001b[0mee\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mReducer\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mmean\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0;34m\u001b[0m\n", "\u001b[0;34m\u001b[0m \u001b[0;34m\"MEAN_UNWEIGHTED\"\u001b[0m\u001b[0;34m:\u001b[0m \u001b[0mee\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mReducer\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mmean\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0munweighted\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0;34m\u001b[0m\n", "\u001b[0;34m\u001b[0m \u001b[0;34m\"MAXIMUM\"\u001b[0m\u001b[0;34m:\u001b[0m \u001b[0mee\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mReducer\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mmax\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0;34m\u001b[0m\n", "\u001b[0;34m\u001b[0m \u001b[0;34m\"MEDIAN\"\u001b[0m\u001b[0;34m:\u001b[0m \u001b[0mee\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mReducer\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mmedian\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0;34m\u001b[0m\n", "\u001b[0;34m\u001b[0m \u001b[0;34m\"MINIMUM\"\u001b[0m\u001b[0;34m:\u001b[0m \u001b[0mee\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mReducer\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mmin\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0;34m\u001b[0m\n", "\u001b[0;34m\u001b[0m \u001b[0;34m\"MODE\"\u001b[0m\u001b[0;34m:\u001b[0m \u001b[0mee\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mReducer\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mmode\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0;34m\u001b[0m\n", "\u001b[0;34m\u001b[0m \u001b[0;34m\"STD\"\u001b[0m\u001b[0;34m:\u001b[0m \u001b[0mee\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mReducer\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mstdDev\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0;34m\u001b[0m\n", "\u001b[0;34m\u001b[0m \u001b[0;34m\"MIN_MAX\"\u001b[0m\u001b[0;34m:\u001b[0m \u001b[0mee\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mReducer\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mminMax\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0;34m\u001b[0m\n", "\u001b[0;34m\u001b[0m \u001b[0;34m\"SUM\"\u001b[0m\u001b[0;34m:\u001b[0m \u001b[0mee\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mReducer\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0msum\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0;34m\u001b[0m\n", "\u001b[0;34m\u001b[0m \u001b[0;34m\"VARIANCE\"\u001b[0m\u001b[0;34m:\u001b[0m \u001b[0mee\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mReducer\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mvariance\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0;34m\u001b[0m\n", "\u001b[0;34m\u001b[0m \u001b[0;34m\"HIST\"\u001b[0m\u001b[0;34m:\u001b[0m \u001b[0mee\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mReducer\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mhistogram\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m\u001b[0m\n", "\u001b[0;34m\u001b[0m \u001b[0mmaxBuckets\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0mmax_buckets\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mminBucketWidth\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0mmin_bucket_width\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mmaxRaw\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0mmax_raw\u001b[0m\u001b[0;34m\u001b[0m\n", "\u001b[0;34m\u001b[0m \u001b[0;34m)\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0;34m\u001b[0m\n", "\u001b[0;34m\u001b[0m \u001b[0;34m\"FIXED_HIST\"\u001b[0m\u001b[0;34m:\u001b[0m \u001b[0mee\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mReducer\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mfixedHistogram\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mhist_min\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mhist_max\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mhist_steps\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0;34m\u001b[0m\n", "\u001b[0;34m\u001b[0m \u001b[0;34m\"COMBINED_COUNT_MEAN\"\u001b[0m\u001b[0;34m:\u001b[0m \u001b[0mee\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mReducer\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mcount\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mcombine\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m\u001b[0m\n", "\u001b[0;34m\u001b[0m \u001b[0mee\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mReducer\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mmean\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0msharedInputs\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0;32mTrue\u001b[0m\u001b[0;34m\u001b[0m\n", "\u001b[0;34m\u001b[0m \u001b[0;34m)\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0;34m\u001b[0m\n", "\u001b[0;34m\u001b[0m \u001b[0;34m\"COMBINED_COUNT_MEAN_UNWEIGHTED\"\u001b[0m\u001b[0;34m:\u001b[0m \u001b[0mee\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mReducer\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mcount\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mcombine\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m\u001b[0m\n", "\u001b[0;34m\u001b[0m \u001b[0mee\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mReducer\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mmean\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0munweighted\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0msharedInputs\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0;32mTrue\u001b[0m\u001b[0;34m\u001b[0m\n", "\u001b[0;34m\u001b[0m \u001b[0;34m)\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0;34m\u001b[0m\n", "\u001b[0;34m\u001b[0m \u001b[0;34m}\u001b[0m\u001b[0;34m\u001b[0m\n", "\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\n", "\u001b[0;34m\u001b[0m \u001b[0;32mif\u001b[0m \u001b[0misinstance\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mstat_type\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mstr\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\n", "\u001b[0;34m\u001b[0m \u001b[0;32mif\u001b[0m \u001b[0;32mnot\u001b[0m \u001b[0;34m(\u001b[0m\u001b[0mstat_type\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mupper\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m \u001b[0;32min\u001b[0m \u001b[0mallowed_statistics\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mkeys\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\n", "\u001b[0;34m\u001b[0m \u001b[0mprint\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m\u001b[0m\n", "\u001b[0;34m\u001b[0m \u001b[0;34m\"The statistics type must be one of the following: {}\"\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mformat\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m\u001b[0m\n", "\u001b[0;34m\u001b[0m \u001b[0;34m\", \"\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mjoin\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mlist\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mallowed_statistics\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mkeys\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\n", "\u001b[0;34m\u001b[0m \u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\n", "\u001b[0;34m\u001b[0m \u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\n", "\u001b[0;34m\u001b[0m \u001b[0;32mreturn\u001b[0m\u001b[0;34m\u001b[0m\n", "\u001b[0;34m\u001b[0m \u001b[0mreducer\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mallowed_statistics\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0mstat_type\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mupper\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m\u001b[0m\n", "\u001b[0;34m\u001b[0m \u001b[0;32melif\u001b[0m \u001b[0misinstance\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mstat_type\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mee\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mReducer\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\n", "\u001b[0;34m\u001b[0m \u001b[0mreducer\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mstat_type\u001b[0m\u001b[0;34m\u001b[0m\n", "\u001b[0;34m\u001b[0m \u001b[0;32melse\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\n", "\u001b[0;34m\u001b[0m \u001b[0;32mraise\u001b[0m \u001b[0mValueError\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m\"statistics_type must be either a string or ee.Reducer.\"\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\n", "\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\n", "\u001b[0;34m\u001b[0m \u001b[0;32mif\u001b[0m \u001b[0mscale\u001b[0m \u001b[0;32mis\u001b[0m \u001b[0;32mNone\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\n", "\u001b[0;34m\u001b[0m \u001b[0mscale\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0min_value_raster\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mprojection\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mnominalScale\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mmultiply\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;36m10\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\n", "\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\n", "\u001b[0;34m\u001b[0m \u001b[0;32mtry\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\n", "\u001b[0;34m\u001b[0m \u001b[0;32mif\u001b[0m \u001b[0mverbose\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\n", "\u001b[0;34m\u001b[0m \u001b[0mprint\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m\"Computing statistics ...\"\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\n", "\u001b[0;34m\u001b[0m \u001b[0mresult\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0min_value_raster\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mreduceRegions\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m\u001b[0m\n", "\u001b[0;34m\u001b[0m \u001b[0mcollection\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0min_zone_vector\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0;34m\u001b[0m\n", "\u001b[0;34m\u001b[0m \u001b[0mreducer\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0mreducer\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0;34m\u001b[0m\n", "\u001b[0;34m\u001b[0m \u001b[0mscale\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0mscale\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0;34m\u001b[0m\n", "\u001b[0;34m\u001b[0m \u001b[0mcrs\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0mcrs\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0;34m\u001b[0m\n", "\u001b[0;34m\u001b[0m \u001b[0mtileScale\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0mtile_scale\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0;34m\u001b[0m\n", "\u001b[0;34m\u001b[0m \u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\n", "\u001b[0;34m\u001b[0m \u001b[0;32mif\u001b[0m \u001b[0mreturn_fc\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\n", "\u001b[0;34m\u001b[0m \u001b[0;32mreturn\u001b[0m \u001b[0mresult\u001b[0m\u001b[0;34m\u001b[0m\n", "\u001b[0;34m\u001b[0m \u001b[0;32melse\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\n", "\u001b[0;34m\u001b[0m \u001b[0mee_export_vector\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mresult\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mfilename\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mtimeout\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0mtimeout\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mproxies\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0mproxies\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\n", "\u001b[0;34m\u001b[0m \u001b[0;32mexcept\u001b[0m \u001b[0mException\u001b[0m \u001b[0;32mas\u001b[0m \u001b[0me\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\n", "\u001b[0;34m\u001b[0m \u001b[0;32mraise\u001b[0m \u001b[0mException\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0me\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", "\u001b[0;31mFile:\u001b[0m /opt/anaconda3/envs/zeel_py310/lib/python3.10/site-packages/geemap/common.py\n", "\u001b[0;31mType:\u001b[0m function" ] } ], "source": [ "geemap.zonal_stats??" ] }, { "cell_type": "code", "execution_count": 139, "metadata": {}, "outputs": [ { "data": { "text/html": [ "\n", " \n", " " ], "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "import pandas as pd" ] }, { "cell_type": "code", "execution_count": 140, "metadata": {}, "outputs": [ { "data": { "text/html": [ "\n", " \n", " " ], "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" }, { "name": "stdout", "output_type": "stream", "text": [ "\u001b[0;31mSignature:\u001b[0m\n", "\u001b[0mpd\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mmerge\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m\u001b[0m\n", "\u001b[0;34m\u001b[0m \u001b[0mleft\u001b[0m\u001b[0;34m:\u001b[0m \u001b[0;34m'DataFrame | Series'\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0;34m\u001b[0m\n", "\u001b[0;34m\u001b[0m \u001b[0mright\u001b[0m\u001b[0;34m:\u001b[0m \u001b[0;34m'DataFrame | Series'\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0;34m\u001b[0m\n", "\u001b[0;34m\u001b[0m \u001b[0mhow\u001b[0m\u001b[0;34m:\u001b[0m \u001b[0;34m'MergeHow'\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0;34m'inner'\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0;34m\u001b[0m\n", "\u001b[0;34m\u001b[0m \u001b[0mon\u001b[0m\u001b[0;34m:\u001b[0m \u001b[0;34m'IndexLabel | None'\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0;32mNone\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0;34m\u001b[0m\n", "\u001b[0;34m\u001b[0m \u001b[0mleft_on\u001b[0m\u001b[0;34m:\u001b[0m \u001b[0;34m'IndexLabel | None'\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0;32mNone\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0;34m\u001b[0m\n", "\u001b[0;34m\u001b[0m \u001b[0mright_on\u001b[0m\u001b[0;34m:\u001b[0m \u001b[0;34m'IndexLabel | None'\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0;32mNone\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0;34m\u001b[0m\n", "\u001b[0;34m\u001b[0m \u001b[0mleft_index\u001b[0m\u001b[0;34m:\u001b[0m \u001b[0;34m'bool'\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0;32mFalse\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0;34m\u001b[0m\n", "\u001b[0;34m\u001b[0m \u001b[0mright_index\u001b[0m\u001b[0;34m:\u001b[0m \u001b[0;34m'bool'\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0;32mFalse\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0;34m\u001b[0m\n", "\u001b[0;34m\u001b[0m \u001b[0msort\u001b[0m\u001b[0;34m:\u001b[0m \u001b[0;34m'bool'\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0;32mFalse\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0;34m\u001b[0m\n", "\u001b[0;34m\u001b[0m \u001b[0msuffixes\u001b[0m\u001b[0;34m:\u001b[0m \u001b[0;34m'Suffixes'\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0;34m(\u001b[0m\u001b[0;34m'_x'\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;34m'_y'\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0;34m\u001b[0m\n", "\u001b[0;34m\u001b[0m \u001b[0mcopy\u001b[0m\u001b[0;34m:\u001b[0m \u001b[0;34m'bool | None'\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0;32mNone\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0;34m\u001b[0m\n", "\u001b[0;34m\u001b[0m \u001b[0mindicator\u001b[0m\u001b[0;34m:\u001b[0m \u001b[0;34m'str | bool'\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0;32mFalse\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0;34m\u001b[0m\n", "\u001b[0;34m\u001b[0m \u001b[0mvalidate\u001b[0m\u001b[0;34m:\u001b[0m \u001b[0;34m'str | None'\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0;32mNone\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0;34m\u001b[0m\n", "\u001b[0;34m\u001b[0m\u001b[0;34m)\u001b[0m \u001b[0;34m->\u001b[0m \u001b[0;34m'DataFrame'\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", "\u001b[0;31mDocstring:\u001b[0m\n", "Merge DataFrame or named Series objects with a database-style join.\n", "\n", "A named Series object is treated as a DataFrame with a single named column.\n", "\n", "The join is done on columns or indexes. If joining columns on\n", "columns, the DataFrame indexes *will be ignored*. Otherwise if joining indexes\n", "on indexes or indexes on a column or columns, the index will be passed on.\n", "When performing a cross merge, no column specifications to merge on are\n", "allowed.\n", "\n", ".. warning::\n", "\n", " If both key columns contain rows where the key is a null value, those\n", " rows will be matched against each other. This is different from usual SQL\n", " join behaviour and can lead to unexpected results.\n", "\n", "Parameters\n", "----------\n", "left : DataFrame or named Series\n", "right : DataFrame or named Series\n", " Object to merge with.\n", "how : {'left', 'right', 'outer', 'inner', 'cross'}, default 'inner'\n", " Type of merge to be performed.\n", "\n", " * left: use only keys from left frame, similar to a SQL left outer join;\n", " preserve key order.\n", " * right: use only keys from right frame, similar to a SQL right outer join;\n", " preserve key order.\n", " * outer: use union of keys from both frames, similar to a SQL full outer\n", " join; sort keys lexicographically.\n", " * inner: use intersection of keys from both frames, similar to a SQL inner\n", " join; preserve the order of the left keys.\n", " * cross: creates the cartesian product from both frames, preserves the order\n", " of the left keys.\n", "\n", " .. versionadded:: 1.2.0\n", "\n", "on : label or list\n", " Column or index level names to join on. These must be found in both\n", " DataFrames. If `on` is None and not merging on indexes then this defaults\n", " to the intersection of the columns in both DataFrames.\n", "left_on : label or list, or array-like\n", " Column or index level names to join on in the left DataFrame. Can also\n", " be an array or list of arrays of the length of the left DataFrame.\n", " These arrays are treated as if they are columns.\n", "right_on : label or list, or array-like\n", " Column or index level names to join on in the right DataFrame. Can also\n", " be an array or list of arrays of the length of the right DataFrame.\n", " These arrays are treated as if they are columns.\n", "left_index : bool, default False\n", " Use the index from the left DataFrame as the join key(s). If it is a\n", " MultiIndex, the number of keys in the other DataFrame (either the index\n", " or a number of columns) must match the number of levels.\n", "right_index : bool, default False\n", " Use the index from the right DataFrame as the join key. Same caveats as\n", " left_index.\n", "sort : bool, default False\n", " Sort the join keys lexicographically in the result DataFrame. If False,\n", " the order of the join keys depends on the join type (how keyword).\n", "suffixes : list-like, default is (\"_x\", \"_y\")\n", " A length-2 sequence where each element is optionally a string\n", " indicating the suffix to add to overlapping column names in\n", " `left` and `right` respectively. Pass a value of `None` instead\n", " of a string to indicate that the column name from `left` or\n", " `right` should be left as-is, with no suffix. At least one of the\n", " values must not be None.\n", "copy : bool, default True\n", " If False, avoid copy if possible.\n", "indicator : bool or str, default False\n", " If True, adds a column to the output DataFrame called \"_merge\" with\n", " information on the source of each row. The column can be given a different\n", " name by providing a string argument. The column will have a Categorical\n", " type with the value of \"left_only\" for observations whose merge key only\n", " appears in the left DataFrame, \"right_only\" for observations\n", " whose merge key only appears in the right DataFrame, and \"both\"\n", " if the observation's merge key is found in both DataFrames.\n", "\n", "validate : str, optional\n", " If specified, checks if merge is of specified type.\n", "\n", " * \"one_to_one\" or \"1:1\": check if merge keys are unique in both\n", " left and right datasets.\n", " * \"one_to_many\" or \"1:m\": check if merge keys are unique in left\n", " dataset.\n", " * \"many_to_one\" or \"m:1\": check if merge keys are unique in right\n", " dataset.\n", " * \"many_to_many\" or \"m:m\": allowed, but does not result in checks.\n", "\n", "Returns\n", "-------\n", "DataFrame\n", " A DataFrame of the two merged objects.\n", "\n", "See Also\n", "--------\n", "merge_ordered : Merge with optional filling/interpolation.\n", "merge_asof : Merge on nearest keys.\n", "DataFrame.join : Similar method using indices.\n", "\n", "Examples\n", "--------\n", ">>> df1 = pd.DataFrame({'lkey': ['foo', 'bar', 'baz', 'foo'],\n", "... 'value': [1, 2, 3, 5]})\n", ">>> df2 = pd.DataFrame({'rkey': ['foo', 'bar', 'baz', 'foo'],\n", "... 'value': [5, 6, 7, 8]})\n", ">>> df1\n", " lkey value\n", "0 foo 1\n", "1 bar 2\n", "2 baz 3\n", "3 foo 5\n", ">>> df2\n", " rkey value\n", "0 foo 5\n", "1 bar 6\n", "2 baz 7\n", "3 foo 8\n", "\n", "Merge df1 and df2 on the lkey and rkey columns. The value columns have\n", "the default suffixes, _x and _y, appended.\n", "\n", ">>> df1.merge(df2, left_on='lkey', right_on='rkey')\n", " lkey value_x rkey value_y\n", "0 foo 1 foo 5\n", "1 foo 1 foo 8\n", "2 foo 5 foo 5\n", "3 foo 5 foo 8\n", "4 bar 2 bar 6\n", "5 baz 3 baz 7\n", "\n", "Merge DataFrames df1 and df2 with specified left and right suffixes\n", "appended to any overlapping columns.\n", "\n", ">>> df1.merge(df2, left_on='lkey', right_on='rkey',\n", "... suffixes=('_left', '_right'))\n", " lkey value_left rkey value_right\n", "0 foo 1 foo 5\n", "1 foo 1 foo 8\n", "2 foo 5 foo 5\n", "3 foo 5 foo 8\n", "4 bar 2 bar 6\n", "5 baz 3 baz 7\n", "\n", "Merge DataFrames df1 and df2, but raise an exception if the DataFrames have\n", "any overlapping columns.\n", "\n", ">>> df1.merge(df2, left_on='lkey', right_on='rkey', suffixes=(False, False))\n", "Traceback (most recent call last):\n", "...\n", "ValueError: columns overlap but no suffix specified:\n", " Index(['value'], dtype='object')\n", "\n", ">>> df1 = pd.DataFrame({'a': ['foo', 'bar'], 'b': [1, 2]})\n", ">>> df2 = pd.DataFrame({'a': ['foo', 'baz'], 'c': [3, 4]})\n", ">>> df1\n", " a b\n", "0 foo 1\n", "1 bar 2\n", ">>> df2\n", " a c\n", "0 foo 3\n", "1 baz 4\n", "\n", ">>> df1.merge(df2, how='inner', on='a')\n", " a b c\n", "0 foo 1 3\n", "\n", ">>> df1.merge(df2, how='left', on='a')\n", " a b c\n", "0 foo 1 3.0\n", "1 bar 2 NaN\n", "\n", ">>> df1 = pd.DataFrame({'left': ['foo', 'bar']})\n", ">>> df2 = pd.DataFrame({'right': [7, 8]})\n", ">>> df1\n", " left\n", "0 foo\n", "1 bar\n", ">>> df2\n", " right\n", "0 7\n", "1 8\n", "\n", ">>> df1.merge(df2, how='cross')\n", " left right\n", "0 foo 7\n", "1 foo 8\n", "2 bar 7\n", "3 bar 8\n", "\u001b[0;31mSource:\u001b[0m \n", "\u001b[0;34m@\u001b[0m\u001b[0mSubstitution\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m\"\\nleft : DataFrame or named Series\"\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\n", "\u001b[0;34m\u001b[0m\u001b[0;34m@\u001b[0m\u001b[0mAppender\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0m_merge_doc\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mindents\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0;36m0\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\n", "\u001b[0;34m\u001b[0m\u001b[0;32mdef\u001b[0m \u001b[0mmerge\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m\u001b[0m\n", "\u001b[0;34m\u001b[0m \u001b[0mleft\u001b[0m\u001b[0;34m:\u001b[0m \u001b[0mDataFrame\u001b[0m \u001b[0;34m|\u001b[0m \u001b[0mSeries\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0;34m\u001b[0m\n", "\u001b[0;34m\u001b[0m \u001b[0mright\u001b[0m\u001b[0;34m:\u001b[0m \u001b[0mDataFrame\u001b[0m \u001b[0;34m|\u001b[0m \u001b[0mSeries\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0;34m\u001b[0m\n", "\u001b[0;34m\u001b[0m \u001b[0mhow\u001b[0m\u001b[0;34m:\u001b[0m \u001b[0mMergeHow\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0;34m\"inner\"\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0;34m\u001b[0m\n", "\u001b[0;34m\u001b[0m \u001b[0mon\u001b[0m\u001b[0;34m:\u001b[0m \u001b[0mIndexLabel\u001b[0m \u001b[0;34m|\u001b[0m \u001b[0;32mNone\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0;32mNone\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0;34m\u001b[0m\n", "\u001b[0;34m\u001b[0m \u001b[0mleft_on\u001b[0m\u001b[0;34m:\u001b[0m \u001b[0mIndexLabel\u001b[0m \u001b[0;34m|\u001b[0m \u001b[0;32mNone\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0;32mNone\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0;34m\u001b[0m\n", "\u001b[0;34m\u001b[0m \u001b[0mright_on\u001b[0m\u001b[0;34m:\u001b[0m \u001b[0mIndexLabel\u001b[0m \u001b[0;34m|\u001b[0m \u001b[0;32mNone\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0;32mNone\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0;34m\u001b[0m\n", "\u001b[0;34m\u001b[0m \u001b[0mleft_index\u001b[0m\u001b[0;34m:\u001b[0m \u001b[0mbool\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0;32mFalse\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0;34m\u001b[0m\n", "\u001b[0;34m\u001b[0m \u001b[0mright_index\u001b[0m\u001b[0;34m:\u001b[0m \u001b[0mbool\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0;32mFalse\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0;34m\u001b[0m\n", "\u001b[0;34m\u001b[0m \u001b[0msort\u001b[0m\u001b[0;34m:\u001b[0m \u001b[0mbool\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0;32mFalse\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0;34m\u001b[0m\n", "\u001b[0;34m\u001b[0m \u001b[0msuffixes\u001b[0m\u001b[0;34m:\u001b[0m \u001b[0mSuffixes\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0;34m(\u001b[0m\u001b[0;34m\"_x\"\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;34m\"_y\"\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0;34m\u001b[0m\n", "\u001b[0;34m\u001b[0m \u001b[0mcopy\u001b[0m\u001b[0;34m:\u001b[0m \u001b[0mbool\u001b[0m \u001b[0;34m|\u001b[0m \u001b[0;32mNone\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0;32mNone\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0;34m\u001b[0m\n", "\u001b[0;34m\u001b[0m \u001b[0mindicator\u001b[0m\u001b[0;34m:\u001b[0m \u001b[0mstr\u001b[0m \u001b[0;34m|\u001b[0m \u001b[0mbool\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0;32mFalse\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0;34m\u001b[0m\n", "\u001b[0;34m\u001b[0m \u001b[0mvalidate\u001b[0m\u001b[0;34m:\u001b[0m \u001b[0mstr\u001b[0m \u001b[0;34m|\u001b[0m \u001b[0;32mNone\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0;32mNone\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0;34m\u001b[0m\n", "\u001b[0;34m\u001b[0m\u001b[0;34m)\u001b[0m \u001b[0;34m->\u001b[0m \u001b[0mDataFrame\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\n", "\u001b[0;34m\u001b[0m \u001b[0mleft_df\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0m_validate_operand\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mleft\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\n", "\u001b[0;34m\u001b[0m \u001b[0mright_df\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0m_validate_operand\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mright\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\n", "\u001b[0;34m\u001b[0m \u001b[0;32mif\u001b[0m \u001b[0mhow\u001b[0m \u001b[0;34m==\u001b[0m \u001b[0;34m\"cross\"\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\n", "\u001b[0;34m\u001b[0m \u001b[0;32mreturn\u001b[0m \u001b[0m_cross_merge\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m\u001b[0m\n", "\u001b[0;34m\u001b[0m \u001b[0mleft_df\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0;34m\u001b[0m\n", "\u001b[0;34m\u001b[0m \u001b[0mright_df\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0;34m\u001b[0m\n", "\u001b[0;34m\u001b[0m \u001b[0mon\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0mon\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0;34m\u001b[0m\n", "\u001b[0;34m\u001b[0m \u001b[0mleft_on\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0mleft_on\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0;34m\u001b[0m\n", "\u001b[0;34m\u001b[0m \u001b[0mright_on\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0mright_on\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0;34m\u001b[0m\n", "\u001b[0;34m\u001b[0m \u001b[0mleft_index\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0mleft_index\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0;34m\u001b[0m\n", "\u001b[0;34m\u001b[0m \u001b[0mright_index\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0mright_index\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0;34m\u001b[0m\n", "\u001b[0;34m\u001b[0m \u001b[0msort\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0msort\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0;34m\u001b[0m\n", "\u001b[0;34m\u001b[0m \u001b[0msuffixes\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0msuffixes\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0;34m\u001b[0m\n", "\u001b[0;34m\u001b[0m \u001b[0mindicator\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0mindicator\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0;34m\u001b[0m\n", "\u001b[0;34m\u001b[0m \u001b[0mvalidate\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0mvalidate\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0;34m\u001b[0m\n", "\u001b[0;34m\u001b[0m \u001b[0mcopy\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0mcopy\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0;34m\u001b[0m\n", "\u001b[0;34m\u001b[0m \u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\n", "\u001b[0;34m\u001b[0m \u001b[0;32melse\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\n", "\u001b[0;34m\u001b[0m \u001b[0mop\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0m_MergeOperation\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m\u001b[0m\n", "\u001b[0;34m\u001b[0m \u001b[0mleft_df\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0;34m\u001b[0m\n", "\u001b[0;34m\u001b[0m \u001b[0mright_df\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0;34m\u001b[0m\n", "\u001b[0;34m\u001b[0m \u001b[0mhow\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0mhow\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0;34m\u001b[0m\n", "\u001b[0;34m\u001b[0m \u001b[0mon\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0mon\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0;34m\u001b[0m\n", "\u001b[0;34m\u001b[0m \u001b[0mleft_on\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0mleft_on\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0;34m\u001b[0m\n", "\u001b[0;34m\u001b[0m \u001b[0mright_on\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0mright_on\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0;34m\u001b[0m\n", "\u001b[0;34m\u001b[0m \u001b[0mleft_index\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0mleft_index\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0;34m\u001b[0m\n", "\u001b[0;34m\u001b[0m \u001b[0mright_index\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0mright_index\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0;34m\u001b[0m\n", "\u001b[0;34m\u001b[0m \u001b[0msort\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0msort\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0;34m\u001b[0m\n", "\u001b[0;34m\u001b[0m \u001b[0msuffixes\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0msuffixes\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0;34m\u001b[0m\n", "\u001b[0;34m\u001b[0m \u001b[0mindicator\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0mindicator\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0;34m\u001b[0m\n", "\u001b[0;34m\u001b[0m \u001b[0mvalidate\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0mvalidate\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0;34m\u001b[0m\n", "\u001b[0;34m\u001b[0m \u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\n", "\u001b[0;34m\u001b[0m \u001b[0;32mreturn\u001b[0m \u001b[0mop\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mget_result\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mcopy\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0mcopy\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", "\u001b[0;31mFile:\u001b[0m /opt/anaconda3/envs/zeel_py310/lib/python3.10/site-packages/pandas/core/reshape/merge.py\n", "\u001b[0;31mType:\u001b[0m function" ] } ], "source": [ "pd.merge??" ] }, { "cell_type": "code", "execution_count": 163, "metadata": {}, "outputs": [ { "data": { "text/html": [ "\n", " \n", " " ], "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "text/html": [ "
      • type:Image
      • id:LANDSAT/LC08/C02/T1_TOA/LC08_148044_20230115
      • version:1728577061133366
          • id:B1
          • crs:EPSG:32643
            • 0:30
            • 1:0
            • 2:221685
            • 3:0
            • 4:-30
            • 5:2673915
            • type:PixelType
            • precision:float
            • 0:7671
            • 1:7831
          • id:B2
          • crs:EPSG:32643
            • 0:30
            • 1:0
            • 2:221685
            • 3:0
            • 4:-30
            • 5:2673915
            • type:PixelType
            • precision:float
            • 0:7671
            • 1:7831
          • id:B3
          • crs:EPSG:32643
            • 0:30
            • 1:0
            • 2:221685
            • 3:0
            • 4:-30
            • 5:2673915
            • type:PixelType
            • precision:float
            • 0:7671
            • 1:7831
          • id:B4
          • crs:EPSG:32643
            • 0:30
            • 1:0
            • 2:221685
            • 3:0
            • 4:-30
            • 5:2673915
            • type:PixelType
            • precision:float
            • 0:7671
            • 1:7831
          • id:B5
          • crs:EPSG:32643
            • 0:30
            • 1:0
            • 2:221685
            • 3:0
            • 4:-30
            • 5:2673915
            • type:PixelType
            • precision:float
            • 0:7671
            • 1:7831
          • id:B6
          • crs:EPSG:32643
            • 0:30
            • 1:0
            • 2:221685
            • 3:0
            • 4:-30
            • 5:2673915
            • type:PixelType
            • precision:float
            • 0:7671
            • 1:7831
          • id:B7
          • crs:EPSG:32643
            • 0:30
            • 1:0
            • 2:221685
            • 3:0
            • 4:-30
            • 5:2673915
            • type:PixelType
            • precision:float
            • 0:7671
            • 1:7831
          • id:B8
          • crs:EPSG:32643
            • 0:15
            • 1:0
            • 2:221692.5
            • 3:0
            • 4:-15
            • 5:2673907.5
            • type:PixelType
            • precision:float
            • 0:15341
            • 1:15661
          • id:B9
          • crs:EPSG:32643
            • 0:30
            • 1:0
            • 2:221685
            • 3:0
            • 4:-30
            • 5:2673915
            • type:PixelType
            • precision:float
            • 0:7671
            • 1:7831
          • id:B10
          • crs:EPSG:32643
            • 0:30
            • 1:0
            • 2:221685
            • 3:0
            • 4:-30
            • 5:2673915
            • type:PixelType
            • precision:float
            • 0:7671
            • 1:7831
          • id:B11
          • crs:EPSG:32643
            • 0:30
            • 1:0
            • 2:221685
            • 3:0
            • 4:-30
            • 5:2673915
            • type:PixelType
            • precision:float
            • 0:7671
            • 1:7831
          • id:QA_PIXEL
          • crs:EPSG:32643
            • 0:30
            • 1:0
            • 2:221685
            • 3:0
            • 4:-30
            • 5:2673915
            • type:PixelType
            • max:65535
            • min:0
            • precision:int
            • 0:7671
            • 1:7831
          • id:QA_RADSAT
          • crs:EPSG:32643
            • 0:30
            • 1:0
            • 2:221685
            • 3:0
            • 4:-30
            • 5:2673915
            • type:PixelType
            • max:65535
            • min:0
            • precision:int
            • 0:7671
            • 1:7831
          • id:SAA
          • crs:EPSG:32643
            • 0:30
            • 1:0
            • 2:221685
            • 3:0
            • 4:-30
            • 5:2673915
            • type:PixelType
            • max:32767
            • min:-32768
            • precision:int
            • 0:7671
            • 1:7831
          • id:SZA
          • crs:EPSG:32643
            • 0:30
            • 1:0
            • 2:221685
            • 3:0
            • 4:-30
            • 5:2673915
            • type:PixelType
            • max:32767
            • min:-32768
            • precision:int
            • 0:7671
            • 1:7831
          • id:VAA
          • crs:EPSG:32643
            • 0:30
            • 1:0
            • 2:221685
            • 3:0
            • 4:-30
            • 5:2673915
            • type:PixelType
            • max:32767
            • min:-32768
            • precision:int
            • 0:7671
            • 1:7831
          • id:VZA
          • crs:EPSG:32643
            • 0:30
            • 1:0
            • 2:221685
            • 3:0
            • 4:-30
            • 5:2673915
            • type:PixelType
            • max:32767
            • min:-32768
            • precision:int
            • 0:7671
            • 1:7831
        • CLOUD_COVER:0.04
        • CLOUD_COVER_LAND:0.04
        • COLLECTION_CATEGORY:T1
        • COLLECTION_NUMBER:2
        • DATA_SOURCE_ELEVATION:GLS2000
        • DATA_SOURCE_TIRS_STRAY_LIGHT_CORRECTION:TIRS
        • DATE_ACQUIRED:2023-01-15
        • DATE_PRODUCT_GENERATED:1675122294000
        • DATUM:WGS84
        • EARTH_SUN_DISTANCE:0.9836383
        • ELLIPSOID:WGS84
        • GEOMETRIC_RMSE_MODEL:7.591
        • GEOMETRIC_RMSE_MODEL_X:5.31
        • GEOMETRIC_RMSE_MODEL_Y:5.425
        • GEOMETRIC_RMSE_VERIFY:4.289
        • GRID_CELL_SIZE_PANCHROMATIC:15
        • GRID_CELL_SIZE_REFLECTIVE:30
        • GRID_CELL_SIZE_THERMAL:30
        • GROUND_CONTROL_POINTS_MODEL:685
        • GROUND_CONTROL_POINTS_VERIFY:186
        • GROUND_CONTROL_POINTS_VERSION:5
        • IMAGE_QUALITY_OLI:9
        • IMAGE_QUALITY_TIRS:9
        • K1_CONSTANT_BAND_10:774.8853
        • K1_CONSTANT_BAND_11:480.8883
        • K2_CONSTANT_BAND_10:1321.0789
        • K2_CONSTANT_BAND_11:1201.1442
        • LANDSAT_PRODUCT_ID:LC08_L1TP_148044_20230115_20230130_02_T1
        • LANDSAT_SCENE_ID:LC81480442023015LGN00
        • MAP_PROJECTION:UTM
        • NADIR_OFFNADIR:NADIR
        • ORIENTATION:NORTH_UP
        • PANCHROMATIC_LINES:15661
        • PANCHROMATIC_SAMPLES:15341
        • PROCESSING_LEVEL:L1TP
        • PROCESSING_SOFTWARE_VERSION:LPGS_16.2.0
        • RADIANCE_ADD_BAND_1:-64.88466
        • RADIANCE_ADD_BAND_10:0.1
        • RADIANCE_ADD_BAND_11:0.1
        • RADIANCE_ADD_BAND_2:-66.44268
        • RADIANCE_ADD_BAND_3:-61.22636
        • RADIANCE_ADD_BAND_4:-51.62952
        • RADIANCE_ADD_BAND_5:-31.59469
        • RADIANCE_ADD_BAND_6:-7.85731
        • RADIANCE_ADD_BAND_7:-2.64833
        • RADIANCE_ADD_BAND_8:-58.4304
        • RADIANCE_ADD_BAND_9:-12.34792
        • RADIANCE_MULT_BAND_1:0.012977
        • RADIANCE_MULT_BAND_10:0.0003342
        • RADIANCE_MULT_BAND_11:0.0003342
        • RADIANCE_MULT_BAND_2:0.013289
        • RADIANCE_MULT_BAND_3:0.012245
        • RADIANCE_MULT_BAND_4:0.010326
        • RADIANCE_MULT_BAND_5:0.0063189
        • RADIANCE_MULT_BAND_6:0.0015715
        • RADIANCE_MULT_BAND_7:0.00052967
        • RADIANCE_MULT_BAND_8:0.011686
        • RADIANCE_MULT_BAND_9:0.0024696
        • REFLECTANCE_ADD_BAND_1:-0.1
        • REFLECTANCE_ADD_BAND_2:-0.1
        • REFLECTANCE_ADD_BAND_3:-0.1
        • REFLECTANCE_ADD_BAND_4:-0.1
        • REFLECTANCE_ADD_BAND_5:-0.1
        • REFLECTANCE_ADD_BAND_6:-0.1
        • REFLECTANCE_ADD_BAND_7:-0.1
        • REFLECTANCE_ADD_BAND_8:-0.1
        • REFLECTANCE_ADD_BAND_9:-0.1
        • REFLECTANCE_MULT_BAND_1:2e-05
        • REFLECTANCE_MULT_BAND_2:2e-05
        • REFLECTANCE_MULT_BAND_3:2e-05
        • REFLECTANCE_MULT_BAND_4:2e-05
        • REFLECTANCE_MULT_BAND_5:2e-05
        • REFLECTANCE_MULT_BAND_6:2e-05
        • REFLECTANCE_MULT_BAND_7:2e-05
        • REFLECTANCE_MULT_BAND_8:2e-05
        • REFLECTANCE_MULT_BAND_9:2e-05
        • REFLECTIVE_LINES:7831
        • REFLECTIVE_SAMPLES:7671
        • REQUEST_ID:1631847_00022
        • RESAMPLING_OPTION:CUBIC_CONVOLUTION
        • ROLL_ANGLE:-0.001
        • SATURATION_BAND_1:N
        • SATURATION_BAND_2:N
        • SATURATION_BAND_3:N
        • SATURATION_BAND_4:N
        • SATURATION_BAND_5:N
        • SATURATION_BAND_6:N
        • SATURATION_BAND_7:Y
        • SATURATION_BAND_8:N
        • SATURATION_BAND_9:N
        • SCENE_CENTER_TIME:05:33:07.2544160Z
        • SENSOR_ID:OLI_TIRS
        • SPACECRAFT_ID:LANDSAT_8
        • STATION_ID:LGN
        • SUN_AZIMUTH:148.67360104
        • SUN_ELEVATION:39.17034349
        • TARGET_WRS_PATH:148
        • TARGET_WRS_ROW:44
        • THERMAL_LINES:7831
        • THERMAL_SAMPLES:7671
        • TIRS_SSM_MODEL:FINAL
        • TIRS_SSM_POSITION_STATUS:ESTIMATED
        • TRUNCATION_OLI:UPPER
        • UTM_ZONE:43
        • WRS_PATH:148
        • WRS_ROW:44
        • WRS_TYPE:2
        • system:asset_size:1223935931
          • type:LinearRing
              • 0:72.31883641964504
              • 1:22.52056460806495
              • 0:72.29786773945534
              • 1:22.42936978641094
              • 0:72.29790667636928
              • 1:22.42736139148
              • 0:72.30336790848062
              • 1:22.426188648118245
              • 0:72.91869001515637
              • 1:22.30172835792067
              • 0:73.56730118878409
              • 1:22.167716185850985
              • 0:74.09737210807053
              • 1:22.056060171921665
              • 0:74.0993441010931
              • 1:22.056071041671355
              • 0:74.10397180462448
              • 1:22.07490056623611
              • 0:74.1329028941469
              • 1:22.19375917371582
              • 0:74.338430292183
              • 1:23.033751135411748
              • 0:74.47374505900434
              • 1:23.582190648182443
              • 0:74.52477957148619
              • 1:23.788055785032157
              • 0:74.52361975586437
              • 1:23.788584893320223
              • 0:73.58117794062672
              • 1:23.982739409188408
              • 0:72.7016330176871
              • 1:24.15813876032298
              • 0:72.69921791350811
              • 1:24.158102347091965
              • 0:72.60125718541295
              • 1:23.739508350574084
              • 0:72.50666704989243
              • 1:23.333219126751594
              • 0:72.41253287124782
              • 1:22.926903337749174
              • 0:72.31883641964504
              • 1:22.52056460806495
        • system:index:LC08_148044_20230115
        • system:time_end:1673760787254
        • system:time_start:1673760787254
    " ], "text/plain": [ "" ] }, "execution_count": 163, "metadata": {}, "output_type": "execute_result" } ], "source": [ "first_item\n", "ee_object = geemap.gdf_to_ee(first_item)\n", "image = dataset.toList(true_color_432.size()).get(1)\n", "image = ee.Image(image)\n", "image" ] }, { "cell_type": "code", "execution_count": 232, "metadata": {}, "outputs": [ { "data": { "text/html": [ "\n", " \n", " " ], "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "application/vnd.jupyter.widget-view+json": { "model_id": "d5625c7aabcf4d92a42515ca045ef758", "version_major": 2, "version_minor": 0 }, "text/plain": [ "Map(center=[27.0, 72.0], controls=(WidgetControl(options=['position', 'transparent_bg'], widget=SearchDataGUI(…" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "import geemap\n", "Map = geemap.Map(center=(27.0, 72.0), zoom=17)\n", "\n", "wmts_url = \"https://wayback.maptiles.arcgis.com/arcgis/rest/services/World_Imagery/MapServer/WMTS/1.0.0\"\n", "\n", "Map.add_tile_layer(\"https://wayback.maptiles.arcgis.com/arcgis/rest/services/World_Imagery/WMTS/1.0.0/default028mm/MapServer/tile/56450/{z}/{y}/{x}\")\n", "Map" ] }, { "cell_type": "code", "execution_count": 249, "metadata": {}, "outputs": [ { "data": { "text/html": [ "\n", " \n", " " ], "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "text/html": [ "" ], "text/plain": [ "" ] }, "execution_count": 249, "metadata": {}, "output_type": "execute_result" } ], "source": [ "import geemap.foliumap as geemap\n", "Map = geemap.Map(center=(27.0, 72.0), zoom=17)\n", "\n", "wmts_url = \"https://wayback.maptiles.arcgis.com/arcgis/rest/services/World_Imagery/MapServer/WMTS/1.0.0\"\n", "\n", "Map.add_tile_layer(\"https://wayback.maptiles.arcgis.com/arcgis/rest/services/World_Imagery/WMTS/1.0.0/GoogleMapsCompatible/MapServer/tile/56450/{z}/{y}/{x}\")\n", "Map" ] }, { "cell_type": "code", "execution_count": 268, "metadata": {}, "outputs": [ { "data": { "text/html": [ "\n", " \n", " " ], "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "application/vnd.jupyter.widget-view+json": { "model_id": "ad7f77aad13a49ce9cc3518d296d1138", "version_major": 2, "version_minor": 0 }, "text/plain": [ "Map(center=[27.0, 72.0], controls=(ZoomControl(options=['position', 'zoom_in_text', 'zoom_in_title', 'zoom_out…" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "import leafmap\n", "Map = leafmap.Map(center=(27.0, 72.0), zoom=17)\n", "Map.split_map(\"https://wayback.maptiles.arcgis.com/arcgis/rest/services/World_Imagery/WMTS/1.0.0/GoogleMapsCompatible/MapServer/tile/10/{z}/{y}/{x}\", \"https://wayback.maptiles.arcgis.com/arcgis/rest/services/World_Imagery/WMTS/1.0.0/GoogleMapsCompatible/MapServer/tile/56450/{z}/{y}/{x}\")\n", "Map" ] }, { "cell_type": "code", "execution_count": 277, "metadata": {}, "outputs": [ { "data": { "text/html": [ "\n", " \n", " " ], "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "application/vnd.jupyter.widget-view+json": { "model_id": "67487913ce194912975217073b4e6912", "version_major": 2, "version_minor": 0 }, "text/plain": [ "GridspecLayout(children=(Output(layout=Layout(grid_area='widget001')), Output(layout=Layout(grid_area='widget0…" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "import leafmap.leafmap as leafmap\n", "\n", "layers = [\"ROADMAP\", \"HYBRID\"]\n", "leafmap.linked_maps(rows=1, cols=2, height=\"400px\", layers=layers)" ] }, { "cell_type": "code", "execution_count": 204, "metadata": {}, "outputs": [ { "data": { "text/html": [ "\n", " \n", " " ], "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "import xml.etree.ElementTree as ET\n", "import requests\n", "\n", "# WMTS capabilities URL\n", "wmts_url = \"https://wayback.maptiles.arcgis.com/arcgis/rest/services/World_Imagery/MapServer/WMTS/1.0.0/WMTSCapabilities.xml\"\n", "\n", "# Get the XML content\n", "response = requests.get(wmts_url)\n", "root = ET.fromstring(response.content)" ] }, { "cell_type": "code", "execution_count": 208, "metadata": {}, "outputs": [ { "data": { "text/html": [ "\n", " \n", " " ], "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" }, { "name": "stdout", "output_type": "stream", "text": [ "Number of layers: 175\n" ] } ], "source": [ "import xml.etree.ElementTree as ET\n", "import requests\n", "\n", "# WMTS capabilities URL\n", "wmts_url = \"https://wayback.maptiles.arcgis.com/arcgis/rest/services/World_Imagery/MapServer/WMTS/1.0.0/WMTSCapabilities.xml\"\n", "\n", "# Fetch the XML content\n", "response = requests.get(wmts_url)\n", "root = ET.fromstring(response.content)\n", "\n", "# Define namespaces\n", "namespace = {\n", " 'wmts': 'https://www.opengis.net/wmts/1.0',\n", " 'ows': 'https://www.opengis.net/ows/1.1'\n", "}\n", "\n", "# Extract mapping of layer identifiers to their ResourceURL templates\n", "layer_mapping = {}\n", "\n", "# Find all Layer elements\n", "for layer in root.findall('.//wmts:Layer', namespace):\n", " identifier = layer.find('ows:Identifier', namespace).text\n", " title = layer.find('ows:Title', namespace).text\n", " resource_url_elem = layer.find('wmts:ResourceURL', namespace)\n", "\n", " if resource_url_elem is not None:\n", " resource_template = resource_url_elem.get('template')\n", " layer_mapping[identifier] = {\n", " 'title': title,\n", " 'resource_template': resource_template\n", " }\n", "\n", "# Display the extracted layer mapping\n", "print(f\"Number of layers: {len(layer_mapping)}\")" ] }, { "cell_type": "code", "execution_count": 240, "metadata": {}, "outputs": [ { "data": { "text/html": [ "\n", " \n", " " ], "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "application/vnd.jupyter.widget-view+json": { "model_id": "b822840dfb914ba7b3b96695f6def7f5", "version_major": 2, "version_minor": 0 }, "text/plain": [ " 0%| | 0/175 [00:00\n", " .geemap-dark {\n", " --jp-widgets-color: white;\n", " --jp-widgets-label-color: white;\n", " --jp-ui-font-color1: white;\n", " --jp-layout-color2: #454545;\n", " background-color: #383838;\n", " }\n", "\n", " .geemap-dark .jupyter-button {\n", " --jp-layout-color3: #383838;\n", " }\n", "\n", " .geemap-colab {\n", " background-color: var(--colab-primary-surface-color, white);\n", " }\n", "\n", " .geemap-colab .jupyter-button {\n", " --jp-layout-color3: var(--colab-primary-surface-color, white);\n", " }\n", " \n", " " ], "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "text/plain": [ "{'2024-10-10': 'https://wayback.maptiles.arcgis.com/arcgis/rest/services/World_Imagery/WMTS/1.0.0/GoogleMapsCompatible/MapServer/tile/56450/{z}/{y}/{x}',\n", " '2024-09-19': 'https://wayback.maptiles.arcgis.com/arcgis/rest/services/World_Imagery/WMTS/1.0.0/GoogleMapsCompatible/MapServer/tile/20337/{z}/{y}/{x}',\n", " '2024-08-15': 'https://wayback.maptiles.arcgis.com/arcgis/rest/services/World_Imagery/WMTS/1.0.0/GoogleMapsCompatible/MapServer/tile/32553/{z}/{y}/{x}',\n", " '2024-06-27': 'https://wayback.maptiles.arcgis.com/arcgis/rest/services/World_Imagery/WMTS/1.0.0/GoogleMapsCompatible/MapServer/tile/39767/{z}/{y}/{x}',\n", " '2024-06-06': 'https://wayback.maptiles.arcgis.com/arcgis/rest/services/World_Imagery/WMTS/1.0.0/GoogleMapsCompatible/MapServer/tile/12428/{z}/{y}/{x}',\n", " '2024-05-09': 'https://wayback.maptiles.arcgis.com/arcgis/rest/services/World_Imagery/WMTS/1.0.0/GoogleMapsCompatible/MapServer/tile/52930/{z}/{y}/{x}',\n", " '2024-03-28': 'https://wayback.maptiles.arcgis.com/arcgis/rest/services/World_Imagery/WMTS/1.0.0/GoogleMapsCompatible/MapServer/tile/13968/{z}/{y}/{x}',\n", " '2024-03-07': 'https://wayback.maptiles.arcgis.com/arcgis/rest/services/World_Imagery/WMTS/1.0.0/GoogleMapsCompatible/MapServer/tile/60013/{z}/{y}/{x}',\n", " '2024-02-08': 'https://wayback.maptiles.arcgis.com/arcgis/rest/services/World_Imagery/WMTS/1.0.0/GoogleMapsCompatible/MapServer/tile/37965/{z}/{y}/{x}',\n", " '2024-01-18': 'https://wayback.maptiles.arcgis.com/arcgis/rest/services/World_Imagery/WMTS/1.0.0/GoogleMapsCompatible/MapServer/tile/41468/{z}/{y}/{x}',\n", " '2023-12-07': 'https://wayback.maptiles.arcgis.com/arcgis/rest/services/World_Imagery/WMTS/1.0.0/GoogleMapsCompatible/MapServer/tile/56102/{z}/{y}/{x}',\n", " '2023-11-01': 'https://wayback.maptiles.arcgis.com/arcgis/rest/services/World_Imagery/WMTS/1.0.0/GoogleMapsCompatible/MapServer/tile/12457/{z}/{y}/{x}',\n", " '2023-10-11': 'https://wayback.maptiles.arcgis.com/arcgis/rest/services/World_Imagery/WMTS/1.0.0/GoogleMapsCompatible/MapServer/tile/1034/{z}/{y}/{x}',\n", " '2023-08-31': 'https://wayback.maptiles.arcgis.com/arcgis/rest/services/World_Imagery/WMTS/1.0.0/GoogleMapsCompatible/MapServer/tile/64776/{z}/{y}/{x}',\n", " '2023-08-10': 'https://wayback.maptiles.arcgis.com/arcgis/rest/services/World_Imagery/WMTS/1.0.0/GoogleMapsCompatible/MapServer/tile/17632/{z}/{y}/{x}',\n", " '2023-06-29': 'https://wayback.maptiles.arcgis.com/arcgis/rest/services/World_Imagery/WMTS/1.0.0/GoogleMapsCompatible/MapServer/tile/47963/{z}/{y}/{x}',\n", " '2023-06-13': 'https://wayback.maptiles.arcgis.com/arcgis/rest/services/World_Imagery/WMTS/1.0.0/GoogleMapsCompatible/MapServer/tile/25982/{z}/{y}/{x}',\n", " '2023-05-03': 'https://wayback.maptiles.arcgis.com/arcgis/rest/services/World_Imagery/WMTS/1.0.0/GoogleMapsCompatible/MapServer/tile/46399/{z}/{y}/{x}',\n", " '2023-04-05': 'https://wayback.maptiles.arcgis.com/arcgis/rest/services/World_Imagery/WMTS/1.0.0/GoogleMapsCompatible/MapServer/tile/37890/{z}/{y}/{x}',\n", " '2023-03-15': 'https://wayback.maptiles.arcgis.com/arcgis/rest/services/World_Imagery/WMTS/1.0.0/GoogleMapsCompatible/MapServer/tile/44873/{z}/{y}/{x}',\n", " '2023-02-23': 'https://wayback.maptiles.arcgis.com/arcgis/rest/services/World_Imagery/WMTS/1.0.0/GoogleMapsCompatible/MapServer/tile/57965/{z}/{y}/{x}',\n", " '2023-01-11': 'https://wayback.maptiles.arcgis.com/arcgis/rest/services/World_Imagery/WMTS/1.0.0/GoogleMapsCompatible/MapServer/tile/11475/{z}/{y}/{x}',\n", " '2022-12-14': 'https://wayback.maptiles.arcgis.com/arcgis/rest/services/World_Imagery/WMTS/1.0.0/GoogleMapsCompatible/MapServer/tile/45134/{z}/{y}/{x}',\n", " '2022-11-02': 'https://wayback.maptiles.arcgis.com/arcgis/rest/services/World_Imagery/WMTS/1.0.0/GoogleMapsCompatible/MapServer/tile/7110/{z}/{y}/{x}',\n", " '2022-10-12': 'https://wayback.maptiles.arcgis.com/arcgis/rest/services/World_Imagery/WMTS/1.0.0/GoogleMapsCompatible/MapServer/tile/44988/{z}/{y}/{x}',\n", " '2022-09-21': 'https://wayback.maptiles.arcgis.com/arcgis/rest/services/World_Imagery/WMTS/1.0.0/GoogleMapsCompatible/MapServer/tile/47471/{z}/{y}/{x}',\n", " '2022-08-31': 'https://wayback.maptiles.arcgis.com/arcgis/rest/services/World_Imagery/WMTS/1.0.0/GoogleMapsCompatible/MapServer/tile/45441/{z}/{y}/{x}',\n", " '2022-08-10': 'https://wayback.maptiles.arcgis.com/arcgis/rest/services/World_Imagery/WMTS/1.0.0/GoogleMapsCompatible/MapServer/tile/17825/{z}/{y}/{x}',\n", " '2022-07-20': 'https://wayback.maptiles.arcgis.com/arcgis/rest/services/World_Imagery/WMTS/1.0.0/GoogleMapsCompatible/MapServer/tile/13851/{z}/{y}/{x}',\n", " '2022-06-29': 'https://wayback.maptiles.arcgis.com/arcgis/rest/services/World_Imagery/WMTS/1.0.0/GoogleMapsCompatible/MapServer/tile/4905/{z}/{y}/{x}',\n", " '2022-06-08': 'https://wayback.maptiles.arcgis.com/arcgis/rest/services/World_Imagery/WMTS/1.0.0/GoogleMapsCompatible/MapServer/tile/44710/{z}/{y}/{x}',\n", " '2022-05-18': 'https://wayback.maptiles.arcgis.com/arcgis/rest/services/World_Imagery/WMTS/1.0.0/GoogleMapsCompatible/MapServer/tile/5314/{z}/{y}/{x}',\n", " '2022-04-27': 'https://wayback.maptiles.arcgis.com/arcgis/rest/services/World_Imagery/WMTS/1.0.0/GoogleMapsCompatible/MapServer/tile/16245/{z}/{y}/{x}',\n", " '2022-04-06': 'https://wayback.maptiles.arcgis.com/arcgis/rest/services/World_Imagery/WMTS/1.0.0/GoogleMapsCompatible/MapServer/tile/48232/{z}/{y}/{x}',\n", " '2022-03-16': 'https://wayback.maptiles.arcgis.com/arcgis/rest/services/World_Imagery/WMTS/1.0.0/GoogleMapsCompatible/MapServer/tile/10321/{z}/{y}/{x}',\n", " '2022-02-24': 'https://wayback.maptiles.arcgis.com/arcgis/rest/services/World_Imagery/WMTS/1.0.0/GoogleMapsCompatible/MapServer/tile/10312/{z}/{y}/{x}',\n", " '2022-02-02': 'https://wayback.maptiles.arcgis.com/arcgis/rest/services/World_Imagery/WMTS/1.0.0/GoogleMapsCompatible/MapServer/tile/26083/{z}/{y}/{x}',\n", " '2022-01-12': 'https://wayback.maptiles.arcgis.com/arcgis/rest/services/World_Imagery/WMTS/1.0.0/GoogleMapsCompatible/MapServer/tile/42663/{z}/{y}/{x}',\n", " '2021-12-21': 'https://wayback.maptiles.arcgis.com/arcgis/rest/services/World_Imagery/WMTS/1.0.0/GoogleMapsCompatible/MapServer/tile/26120/{z}/{y}/{x}',\n", " '2021-11-30': 'https://wayback.maptiles.arcgis.com/arcgis/rest/services/World_Imagery/WMTS/1.0.0/GoogleMapsCompatible/MapServer/tile/48624/{z}/{y}/{x}',\n", " '2021-11-03': 'https://wayback.maptiles.arcgis.com/arcgis/rest/services/World_Imagery/WMTS/1.0.0/GoogleMapsCompatible/MapServer/tile/42403/{z}/{y}/{x}',\n", " '2021-10-13': 'https://wayback.maptiles.arcgis.com/arcgis/rest/services/World_Imagery/WMTS/1.0.0/GoogleMapsCompatible/MapServer/tile/16749/{z}/{y}/{x}',\n", " '2021-09-22': 'https://wayback.maptiles.arcgis.com/arcgis/rest/services/World_Imagery/WMTS/1.0.0/GoogleMapsCompatible/MapServer/tile/51313/{z}/{y}/{x}',\n", " '2021-09-01': 'https://wayback.maptiles.arcgis.com/arcgis/rest/services/World_Imagery/WMTS/1.0.0/GoogleMapsCompatible/MapServer/tile/47568/{z}/{y}/{x}',\n", " '2021-08-11': 'https://wayback.maptiles.arcgis.com/arcgis/rest/services/World_Imagery/WMTS/1.0.0/GoogleMapsCompatible/MapServer/tile/51423/{z}/{y}/{x}',\n", " '2021-07-21': 'https://wayback.maptiles.arcgis.com/arcgis/rest/services/World_Imagery/WMTS/1.0.0/GoogleMapsCompatible/MapServer/tile/8432/{z}/{y}/{x}',\n", " '2021-06-30': 'https://wayback.maptiles.arcgis.com/arcgis/rest/services/World_Imagery/WMTS/1.0.0/GoogleMapsCompatible/MapServer/tile/13534/{z}/{y}/{x}',\n", " '2021-06-09': 'https://wayback.maptiles.arcgis.com/arcgis/rest/services/World_Imagery/WMTS/1.0.0/GoogleMapsCompatible/MapServer/tile/48376/{z}/{y}/{x}',\n", " '2021-05-19': 'https://wayback.maptiles.arcgis.com/arcgis/rest/services/World_Imagery/WMTS/1.0.0/GoogleMapsCompatible/MapServer/tile/15423/{z}/{y}/{x}',\n", " '2021-04-28': 'https://wayback.maptiles.arcgis.com/arcgis/rest/services/World_Imagery/WMTS/1.0.0/GoogleMapsCompatible/MapServer/tile/27659/{z}/{y}/{x}',\n", " '2021-04-08': 'https://wayback.maptiles.arcgis.com/arcgis/rest/services/World_Imagery/WMTS/1.0.0/GoogleMapsCompatible/MapServer/tile/6863/{z}/{y}/{x}',\n", " '2021-03-17': 'https://wayback.maptiles.arcgis.com/arcgis/rest/services/World_Imagery/WMTS/1.0.0/GoogleMapsCompatible/MapServer/tile/5359/{z}/{y}/{x}',\n", " '2021-02-24': 'https://wayback.maptiles.arcgis.com/arcgis/rest/services/World_Imagery/WMTS/1.0.0/GoogleMapsCompatible/MapServer/tile/9812/{z}/{y}/{x}',\n", " '2021-01-13': 'https://wayback.maptiles.arcgis.com/arcgis/rest/services/World_Imagery/WMTS/1.0.0/GoogleMapsCompatible/MapServer/tile/1049/{z}/{y}/{x}',\n", " '2020-12-16': 'https://wayback.maptiles.arcgis.com/arcgis/rest/services/World_Imagery/WMTS/1.0.0/GoogleMapsCompatible/MapServer/tile/29260/{z}/{y}/{x}',\n", " '2020-11-18': 'https://wayback.maptiles.arcgis.com/arcgis/rest/services/World_Imagery/WMTS/1.0.0/GoogleMapsCompatible/MapServer/tile/20753/{z}/{y}/{x}',\n", " '2020-10-14': 'https://wayback.maptiles.arcgis.com/arcgis/rest/services/World_Imagery/WMTS/1.0.0/GoogleMapsCompatible/MapServer/tile/119/{z}/{y}/{x}',\n", " '2020-09-23': 'https://wayback.maptiles.arcgis.com/arcgis/rest/services/World_Imagery/WMTS/1.0.0/GoogleMapsCompatible/MapServer/tile/19187/{z}/{y}/{x}',\n", " '2020-09-02': 'https://wayback.maptiles.arcgis.com/arcgis/rest/services/World_Imagery/WMTS/1.0.0/GoogleMapsCompatible/MapServer/tile/9181/{z}/{y}/{x}',\n", " '2020-08-12': 'https://wayback.maptiles.arcgis.com/arcgis/rest/services/World_Imagery/WMTS/1.0.0/GoogleMapsCompatible/MapServer/tile/6049/{z}/{y}/{x}',\n", " '2020-07-22': 'https://wayback.maptiles.arcgis.com/arcgis/rest/services/World_Imagery/WMTS/1.0.0/GoogleMapsCompatible/MapServer/tile/9549/{z}/{y}/{x}',\n", " '2020-07-01': 'https://wayback.maptiles.arcgis.com/arcgis/rest/services/World_Imagery/WMTS/1.0.0/GoogleMapsCompatible/MapServer/tile/18289/{z}/{y}/{x}',\n", " '2020-06-10': 'https://wayback.maptiles.arcgis.com/arcgis/rest/services/World_Imagery/WMTS/1.0.0/GoogleMapsCompatible/MapServer/tile/11135/{z}/{y}/{x}',\n", " '2020-05-20': 'https://wayback.maptiles.arcgis.com/arcgis/rest/services/World_Imagery/WMTS/1.0.0/GoogleMapsCompatible/MapServer/tile/32645/{z}/{y}/{x}',\n", " '2020-04-29': 'https://wayback.maptiles.arcgis.com/arcgis/rest/services/World_Imagery/WMTS/1.0.0/GoogleMapsCompatible/MapServer/tile/15045/{z}/{y}/{x}',\n", " '2020-04-08': 'https://wayback.maptiles.arcgis.com/arcgis/rest/services/World_Imagery/WMTS/1.0.0/GoogleMapsCompatible/MapServer/tile/26751/{z}/{y}/{x}',\n", " '2020-03-23': 'https://wayback.maptiles.arcgis.com/arcgis/rest/services/World_Imagery/WMTS/1.0.0/GoogleMapsCompatible/MapServer/tile/16062/{z}/{y}/{x}',\n", " '2020-02-20': 'https://wayback.maptiles.arcgis.com/arcgis/rest/services/World_Imagery/WMTS/1.0.0/GoogleMapsCompatible/MapServer/tile/8495/{z}/{y}/{x}',\n", " '2020-01-30': 'https://wayback.maptiles.arcgis.com/arcgis/rest/services/World_Imagery/WMTS/1.0.0/GoogleMapsCompatible/MapServer/tile/21485/{z}/{y}/{x}',\n", " '2020-01-08': 'https://wayback.maptiles.arcgis.com/arcgis/rest/services/World_Imagery/WMTS/1.0.0/GoogleMapsCompatible/MapServer/tile/23001/{z}/{y}/{x}',\n", " '2019-12-12': 'https://wayback.maptiles.arcgis.com/arcgis/rest/services/World_Imagery/WMTS/1.0.0/GoogleMapsCompatible/MapServer/tile/4756/{z}/{y}/{x}',\n", " '2019-10-30': 'https://wayback.maptiles.arcgis.com/arcgis/rest/services/World_Imagery/WMTS/1.0.0/GoogleMapsCompatible/MapServer/tile/11060/{z}/{y}/{x}',\n", " '2019-10-09': 'https://wayback.maptiles.arcgis.com/arcgis/rest/services/World_Imagery/WMTS/1.0.0/GoogleMapsCompatible/MapServer/tile/11351/{z}/{y}/{x}',\n", " '2019-09-18': 'https://wayback.maptiles.arcgis.com/arcgis/rest/services/World_Imagery/WMTS/1.0.0/GoogleMapsCompatible/MapServer/tile/9892/{z}/{y}/{x}',\n", " '2019-08-28': 'https://wayback.maptiles.arcgis.com/arcgis/rest/services/World_Imagery/WMTS/1.0.0/GoogleMapsCompatible/MapServer/tile/30442/{z}/{y}/{x}',\n", " '2019-08-07': 'https://wayback.maptiles.arcgis.com/arcgis/rest/services/World_Imagery/WMTS/1.0.0/GoogleMapsCompatible/MapServer/tile/17216/{z}/{y}/{x}',\n", " '2019-07-17': 'https://wayback.maptiles.arcgis.com/arcgis/rest/services/World_Imagery/WMTS/1.0.0/GoogleMapsCompatible/MapServer/tile/16681/{z}/{y}/{x}',\n", " '2019-06-26': 'https://wayback.maptiles.arcgis.com/arcgis/rest/services/World_Imagery/WMTS/1.0.0/GoogleMapsCompatible/MapServer/tile/645/{z}/{y}/{x}',\n", " '2019-06-05': 'https://wayback.maptiles.arcgis.com/arcgis/rest/services/World_Imagery/WMTS/1.0.0/GoogleMapsCompatible/MapServer/tile/12576/{z}/{y}/{x}',\n", " '2019-05-15': 'https://wayback.maptiles.arcgis.com/arcgis/rest/services/World_Imagery/WMTS/1.0.0/GoogleMapsCompatible/MapServer/tile/9598/{z}/{y}/{x}',\n", " '2019-04-24': 'https://wayback.maptiles.arcgis.com/arcgis/rest/services/World_Imagery/WMTS/1.0.0/GoogleMapsCompatible/MapServer/tile/18063/{z}/{y}/{x}',\n", " '2019-04-03': 'https://wayback.maptiles.arcgis.com/arcgis/rest/services/World_Imagery/WMTS/1.0.0/GoogleMapsCompatible/MapServer/tile/18691/{z}/{y}/{x}',\n", " '2019-03-13': 'https://wayback.maptiles.arcgis.com/arcgis/rest/services/World_Imagery/WMTS/1.0.0/GoogleMapsCompatible/MapServer/tile/4383/{z}/{y}/{x}',\n", " '2019-02-21': 'https://wayback.maptiles.arcgis.com/arcgis/rest/services/World_Imagery/WMTS/1.0.0/GoogleMapsCompatible/MapServer/tile/17677/{z}/{y}/{x}',\n", " '2019-01-31': 'https://wayback.maptiles.arcgis.com/arcgis/rest/services/World_Imagery/WMTS/1.0.0/GoogleMapsCompatible/MapServer/tile/25944/{z}/{y}/{x}',\n", " '2019-01-09': 'https://wayback.maptiles.arcgis.com/arcgis/rest/services/World_Imagery/WMTS/1.0.0/GoogleMapsCompatible/MapServer/tile/6036/{z}/{y}/{x}',\n", " '2018-12-14': 'https://wayback.maptiles.arcgis.com/arcgis/rest/services/World_Imagery/WMTS/1.0.0/GoogleMapsCompatible/MapServer/tile/23448/{z}/{y}/{x}',\n", " '2018-11-29': 'https://wayback.maptiles.arcgis.com/arcgis/rest/services/World_Imagery/WMTS/1.0.0/GoogleMapsCompatible/MapServer/tile/239/{z}/{y}/{x}',\n", " '2018-11-07': 'https://wayback.maptiles.arcgis.com/arcgis/rest/services/World_Imagery/WMTS/1.0.0/GoogleMapsCompatible/MapServer/tile/3201/{z}/{y}/{x}',\n", " '2018-10-17': 'https://wayback.maptiles.arcgis.com/arcgis/rest/services/World_Imagery/WMTS/1.0.0/GoogleMapsCompatible/MapServer/tile/18820/{z}/{y}/{x}',\n", " '2018-09-26': 'https://wayback.maptiles.arcgis.com/arcgis/rest/services/World_Imagery/WMTS/1.0.0/GoogleMapsCompatible/MapServer/tile/14426/{z}/{y}/{x}',\n", " '2018-09-06': 'https://wayback.maptiles.arcgis.com/arcgis/rest/services/World_Imagery/WMTS/1.0.0/GoogleMapsCompatible/MapServer/tile/2168/{z}/{y}/{x}',\n", " '2018-08-15': 'https://wayback.maptiles.arcgis.com/arcgis/rest/services/World_Imagery/WMTS/1.0.0/GoogleMapsCompatible/MapServer/tile/1858/{z}/{y}/{x}',\n", " '2018-07-25': 'https://wayback.maptiles.arcgis.com/arcgis/rest/services/World_Imagery/WMTS/1.0.0/GoogleMapsCompatible/MapServer/tile/14829/{z}/{y}/{x}',\n", " '2018-06-27': 'https://wayback.maptiles.arcgis.com/arcgis/rest/services/World_Imagery/WMTS/1.0.0/GoogleMapsCompatible/MapServer/tile/11334/{z}/{y}/{x}',\n", " '2018-06-06': 'https://wayback.maptiles.arcgis.com/arcgis/rest/services/World_Imagery/WMTS/1.0.0/GoogleMapsCompatible/MapServer/tile/8249/{z}/{y}/{x}',\n", " '2018-05-16': 'https://wayback.maptiles.arcgis.com/arcgis/rest/services/World_Imagery/WMTS/1.0.0/GoogleMapsCompatible/MapServer/tile/32337/{z}/{y}/{x}',\n", " '2018-04-25': 'https://wayback.maptiles.arcgis.com/arcgis/rest/services/World_Imagery/WMTS/1.0.0/GoogleMapsCompatible/MapServer/tile/1296/{z}/{y}/{x}',\n", " '2018-04-11': 'https://wayback.maptiles.arcgis.com/arcgis/rest/services/World_Imagery/WMTS/1.0.0/GoogleMapsCompatible/MapServer/tile/20399/{z}/{y}/{x}',\n", " '2018-03-28': 'https://wayback.maptiles.arcgis.com/arcgis/rest/services/World_Imagery/WMTS/1.0.0/GoogleMapsCompatible/MapServer/tile/7072/{z}/{y}/{x}',\n", " '2018-03-14': 'https://wayback.maptiles.arcgis.com/arcgis/rest/services/World_Imagery/WMTS/1.0.0/GoogleMapsCompatible/MapServer/tile/8255/{z}/{y}/{x}',\n", " '2018-02-23': 'https://wayback.maptiles.arcgis.com/arcgis/rest/services/World_Imagery/WMTS/1.0.0/GoogleMapsCompatible/MapServer/tile/13067/{z}/{y}/{x}',\n", " '2018-01-31': 'https://wayback.maptiles.arcgis.com/arcgis/rest/services/World_Imagery/WMTS/1.0.0/GoogleMapsCompatible/MapServer/tile/10768/{z}/{y}/{x}',\n", " '2018-01-18': 'https://wayback.maptiles.arcgis.com/arcgis/rest/services/World_Imagery/WMTS/1.0.0/GoogleMapsCompatible/MapServer/tile/13045/{z}/{y}/{x}',\n", " '2018-01-08': 'https://wayback.maptiles.arcgis.com/arcgis/rest/services/World_Imagery/WMTS/1.0.0/GoogleMapsCompatible/MapServer/tile/13161/{z}/{y}/{x}',\n", " '2017-11-16': 'https://wayback.maptiles.arcgis.com/arcgis/rest/services/World_Imagery/WMTS/1.0.0/GoogleMapsCompatible/MapServer/tile/25521/{z}/{y}/{x}',\n", " '2017-10-25': 'https://wayback.maptiles.arcgis.com/arcgis/rest/services/World_Imagery/WMTS/1.0.0/GoogleMapsCompatible/MapServer/tile/23264/{z}/{y}/{x}',\n", " '2017-10-04': 'https://wayback.maptiles.arcgis.com/arcgis/rest/services/World_Imagery/WMTS/1.0.0/GoogleMapsCompatible/MapServer/tile/15212/{z}/{y}/{x}',\n", " '2017-09-13': 'https://wayback.maptiles.arcgis.com/arcgis/rest/services/World_Imagery/WMTS/1.0.0/GoogleMapsCompatible/MapServer/tile/18358/{z}/{y}/{x}',\n", " '2017-08-30': 'https://wayback.maptiles.arcgis.com/arcgis/rest/services/World_Imagery/WMTS/1.0.0/GoogleMapsCompatible/MapServer/tile/25379/{z}/{y}/{x}',\n", " '2017-08-10': 'https://wayback.maptiles.arcgis.com/arcgis/rest/services/World_Imagery/WMTS/1.0.0/GoogleMapsCompatible/MapServer/tile/14035/{z}/{y}/{x}',\n", " '2017-07-14': 'https://wayback.maptiles.arcgis.com/arcgis/rest/services/World_Imagery/WMTS/1.0.0/GoogleMapsCompatible/MapServer/tile/3319/{z}/{y}/{x}',\n", " '2017-06-27': 'https://wayback.maptiles.arcgis.com/arcgis/rest/services/World_Imagery/WMTS/1.0.0/GoogleMapsCompatible/MapServer/tile/4073/{z}/{y}/{x}',\n", " '2017-06-14': 'https://wayback.maptiles.arcgis.com/arcgis/rest/services/World_Imagery/WMTS/1.0.0/GoogleMapsCompatible/MapServer/tile/14765/{z}/{y}/{x}',\n", " '2017-05-31': 'https://wayback.maptiles.arcgis.com/arcgis/rest/services/World_Imagery/WMTS/1.0.0/GoogleMapsCompatible/MapServer/tile/14342/{z}/{y}/{x}',\n", " '2017-05-17': 'https://wayback.maptiles.arcgis.com/arcgis/rest/services/World_Imagery/WMTS/1.0.0/GoogleMapsCompatible/MapServer/tile/20365/{z}/{y}/{x}',\n", " '2017-05-03': 'https://wayback.maptiles.arcgis.com/arcgis/rest/services/World_Imagery/WMTS/1.0.0/GoogleMapsCompatible/MapServer/tile/784/{z}/{y}/{x}',\n", " '2017-04-19': 'https://wayback.maptiles.arcgis.com/arcgis/rest/services/World_Imagery/WMTS/1.0.0/GoogleMapsCompatible/MapServer/tile/1052/{z}/{y}/{x}',\n", " '2017-03-29': 'https://wayback.maptiles.arcgis.com/arcgis/rest/services/World_Imagery/WMTS/1.0.0/GoogleMapsCompatible/MapServer/tile/5205/{z}/{y}/{x}',\n", " '2017-03-15': 'https://wayback.maptiles.arcgis.com/arcgis/rest/services/World_Imagery/WMTS/1.0.0/GoogleMapsCompatible/MapServer/tile/29387/{z}/{y}/{x}',\n", " '2017-02-27': 'https://wayback.maptiles.arcgis.com/arcgis/rest/services/World_Imagery/WMTS/1.0.0/GoogleMapsCompatible/MapServer/tile/31026/{z}/{y}/{x}',\n", " '2017-02-08': 'https://wayback.maptiles.arcgis.com/arcgis/rest/services/World_Imagery/WMTS/1.0.0/GoogleMapsCompatible/MapServer/tile/27946/{z}/{y}/{x}',\n", " '2017-01-25': 'https://wayback.maptiles.arcgis.com/arcgis/rest/services/World_Imagery/WMTS/1.0.0/GoogleMapsCompatible/MapServer/tile/9486/{z}/{y}/{x}',\n", " '2017-01-11': 'https://wayback.maptiles.arcgis.com/arcgis/rest/services/World_Imagery/WMTS/1.0.0/GoogleMapsCompatible/MapServer/tile/577/{z}/{y}/{x}',\n", " '2016-12-20': 'https://wayback.maptiles.arcgis.com/arcgis/rest/services/World_Imagery/WMTS/1.0.0/GoogleMapsCompatible/MapServer/tile/18966/{z}/{y}/{x}',\n", " '2016-12-07': 'https://wayback.maptiles.arcgis.com/arcgis/rest/services/World_Imagery/WMTS/1.0.0/GoogleMapsCompatible/MapServer/tile/6678/{z}/{y}/{x}',\n", " '2016-11-16': 'https://wayback.maptiles.arcgis.com/arcgis/rest/services/World_Imagery/WMTS/1.0.0/GoogleMapsCompatible/MapServer/tile/21750/{z}/{y}/{x}',\n", " '2016-10-25': 'https://wayback.maptiles.arcgis.com/arcgis/rest/services/World_Imagery/WMTS/1.0.0/GoogleMapsCompatible/MapServer/tile/4222/{z}/{y}/{x}',\n", " '2016-10-12': 'https://wayback.maptiles.arcgis.com/arcgis/rest/services/World_Imagery/WMTS/1.0.0/GoogleMapsCompatible/MapServer/tile/13770/{z}/{y}/{x}',\n", " '2016-09-14': 'https://wayback.maptiles.arcgis.com/arcgis/rest/services/World_Imagery/WMTS/1.0.0/GoogleMapsCompatible/MapServer/tile/6984/{z}/{y}/{x}',\n", " '2016-08-31': 'https://wayback.maptiles.arcgis.com/arcgis/rest/services/World_Imagery/WMTS/1.0.0/GoogleMapsCompatible/MapServer/tile/9175/{z}/{y}/{x}',\n", " '2016-08-11': 'https://wayback.maptiles.arcgis.com/arcgis/rest/services/World_Imagery/WMTS/1.0.0/GoogleMapsCompatible/MapServer/tile/23601/{z}/{y}/{x}',\n", " '2016-07-20': 'https://wayback.maptiles.arcgis.com/arcgis/rest/services/World_Imagery/WMTS/1.0.0/GoogleMapsCompatible/MapServer/tile/5097/{z}/{y}/{x}',\n", " '2016-07-06': 'https://wayback.maptiles.arcgis.com/arcgis/rest/services/World_Imagery/WMTS/1.0.0/GoogleMapsCompatible/MapServer/tile/13240/{z}/{y}/{x}',\n", " '2016-06-13': 'https://wayback.maptiles.arcgis.com/arcgis/rest/services/World_Imagery/WMTS/1.0.0/GoogleMapsCompatible/MapServer/tile/11509/{z}/{y}/{x}',\n", " '2016-05-11': 'https://wayback.maptiles.arcgis.com/arcgis/rest/services/World_Imagery/WMTS/1.0.0/GoogleMapsCompatible/MapServer/tile/8551/{z}/{y}/{x}',\n", " '2016-04-28': 'https://wayback.maptiles.arcgis.com/arcgis/rest/services/World_Imagery/WMTS/1.0.0/GoogleMapsCompatible/MapServer/tile/5769/{z}/{y}/{x}',\n", " '2016-04-20': 'https://wayback.maptiles.arcgis.com/arcgis/rest/services/World_Imagery/WMTS/1.0.0/GoogleMapsCompatible/MapServer/tile/388/{z}/{y}/{x}',\n", " '2016-03-16': 'https://wayback.maptiles.arcgis.com/arcgis/rest/services/World_Imagery/WMTS/1.0.0/GoogleMapsCompatible/MapServer/tile/19085/{z}/{y}/{x}',\n", " '2016-03-02': 'https://wayback.maptiles.arcgis.com/arcgis/rest/services/World_Imagery/WMTS/1.0.0/GoogleMapsCompatible/MapServer/tile/20443/{z}/{y}/{x}',\n", " '2016-02-17': 'https://wayback.maptiles.arcgis.com/arcgis/rest/services/World_Imagery/WMTS/1.0.0/GoogleMapsCompatible/MapServer/tile/11262/{z}/{y}/{x}',\n", " '2016-02-04': 'https://wayback.maptiles.arcgis.com/arcgis/rest/services/World_Imagery/WMTS/1.0.0/GoogleMapsCompatible/MapServer/tile/6354/{z}/{y}/{x}',\n", " '2016-01-13': 'https://wayback.maptiles.arcgis.com/arcgis/rest/services/World_Imagery/WMTS/1.0.0/GoogleMapsCompatible/MapServer/tile/3515/{z}/{y}/{x}',\n", " '2015-12-16': 'https://wayback.maptiles.arcgis.com/arcgis/rest/services/World_Imagery/WMTS/1.0.0/GoogleMapsCompatible/MapServer/tile/28163/{z}/{y}/{x}',\n", " '2015-11-18': 'https://wayback.maptiles.arcgis.com/arcgis/rest/services/World_Imagery/WMTS/1.0.0/GoogleMapsCompatible/MapServer/tile/8781/{z}/{y}/{x}',\n", " '2015-10-28': 'https://wayback.maptiles.arcgis.com/arcgis/rest/services/World_Imagery/WMTS/1.0.0/GoogleMapsCompatible/MapServer/tile/11092/{z}/{y}/{x}',\n", " '2015-10-14': 'https://wayback.maptiles.arcgis.com/arcgis/rest/services/World_Imagery/WMTS/1.0.0/GoogleMapsCompatible/MapServer/tile/10850/{z}/{y}/{x}',\n", " '2015-09-30': 'https://wayback.maptiles.arcgis.com/arcgis/rest/services/World_Imagery/WMTS/1.0.0/GoogleMapsCompatible/MapServer/tile/3630/{z}/{y}/{x}',\n", " '2015-09-16': 'https://wayback.maptiles.arcgis.com/arcgis/rest/services/World_Imagery/WMTS/1.0.0/GoogleMapsCompatible/MapServer/tile/1431/{z}/{y}/{x}',\n", " '2015-09-02': 'https://wayback.maptiles.arcgis.com/arcgis/rest/services/World_Imagery/WMTS/1.0.0/GoogleMapsCompatible/MapServer/tile/30584/{z}/{y}/{x}',\n", " '2015-08-19': 'https://wayback.maptiles.arcgis.com/arcgis/rest/services/World_Imagery/WMTS/1.0.0/GoogleMapsCompatible/MapServer/tile/28219/{z}/{y}/{x}',\n", " '2015-07-08': 'https://wayback.maptiles.arcgis.com/arcgis/rest/services/World_Imagery/WMTS/1.0.0/GoogleMapsCompatible/MapServer/tile/24007/{z}/{y}/{x}',\n", " '2015-06-24': 'https://wayback.maptiles.arcgis.com/arcgis/rest/services/World_Imagery/WMTS/1.0.0/GoogleMapsCompatible/MapServer/tile/11952/{z}/{y}/{x}',\n", " '2015-05-13': 'https://wayback.maptiles.arcgis.com/arcgis/rest/services/World_Imagery/WMTS/1.0.0/GoogleMapsCompatible/MapServer/tile/19930/{z}/{y}/{x}',\n", " '2015-04-30': 'https://wayback.maptiles.arcgis.com/arcgis/rest/services/World_Imagery/WMTS/1.0.0/GoogleMapsCompatible/MapServer/tile/23880/{z}/{y}/{x}',\n", " '2015-04-15': 'https://wayback.maptiles.arcgis.com/arcgis/rest/services/World_Imagery/WMTS/1.0.0/GoogleMapsCompatible/MapServer/tile/9203/{z}/{y}/{x}',\n", " '2015-03-25': 'https://wayback.maptiles.arcgis.com/arcgis/rest/services/World_Imagery/WMTS/1.0.0/GoogleMapsCompatible/MapServer/tile/2730/{z}/{y}/{x}',\n", " '2015-03-18': 'https://wayback.maptiles.arcgis.com/arcgis/rest/services/World_Imagery/WMTS/1.0.0/GoogleMapsCompatible/MapServer/tile/15084/{z}/{y}/{x}',\n", " '2015-02-18': 'https://wayback.maptiles.arcgis.com/arcgis/rest/services/World_Imagery/WMTS/1.0.0/GoogleMapsCompatible/MapServer/tile/10443/{z}/{y}/{x}',\n", " '2015-01-21': 'https://wayback.maptiles.arcgis.com/arcgis/rest/services/World_Imagery/WMTS/1.0.0/GoogleMapsCompatible/MapServer/tile/20222/{z}/{y}/{x}',\n", " '2014-12-30': 'https://wayback.maptiles.arcgis.com/arcgis/rest/services/World_Imagery/WMTS/1.0.0/GoogleMapsCompatible/MapServer/tile/5844/{z}/{y}/{x}',\n", " '2014-12-18': 'https://wayback.maptiles.arcgis.com/arcgis/rest/services/World_Imagery/WMTS/1.0.0/GoogleMapsCompatible/MapServer/tile/14720/{z}/{y}/{x}',\n", " '2014-12-03': 'https://wayback.maptiles.arcgis.com/arcgis/rest/services/World_Imagery/WMTS/1.0.0/GoogleMapsCompatible/MapServer/tile/23383/{z}/{y}/{x}',\n", " '2014-11-12': 'https://wayback.maptiles.arcgis.com/arcgis/rest/services/World_Imagery/WMTS/1.0.0/GoogleMapsCompatible/MapServer/tile/30195/{z}/{y}/{x}',\n", " '2014-10-29': 'https://wayback.maptiles.arcgis.com/arcgis/rest/services/World_Imagery/WMTS/1.0.0/GoogleMapsCompatible/MapServer/tile/11019/{z}/{y}/{x}',\n", " '2014-10-01': 'https://wayback.maptiles.arcgis.com/arcgis/rest/services/World_Imagery/WMTS/1.0.0/GoogleMapsCompatible/MapServer/tile/22692/{z}/{y}/{x}',\n", " '2014-09-17': 'https://wayback.maptiles.arcgis.com/arcgis/rest/services/World_Imagery/WMTS/1.0.0/GoogleMapsCompatible/MapServer/tile/25586/{z}/{y}/{x}',\n", " '2014-07-30': 'https://wayback.maptiles.arcgis.com/arcgis/rest/services/World_Imagery/WMTS/1.0.0/GoogleMapsCompatible/MapServer/tile/5232/{z}/{y}/{x}',\n", " '2014-07-02': 'https://wayback.maptiles.arcgis.com/arcgis/rest/services/World_Imagery/WMTS/1.0.0/GoogleMapsCompatible/MapServer/tile/3026/{z}/{y}/{x}',\n", " '2014-06-25': 'https://wayback.maptiles.arcgis.com/arcgis/rest/services/World_Imagery/WMTS/1.0.0/GoogleMapsCompatible/MapServer/tile/11033/{z}/{y}/{x}',\n", " '2014-06-11': 'https://wayback.maptiles.arcgis.com/arcgis/rest/services/World_Imagery/WMTS/1.0.0/GoogleMapsCompatible/MapServer/tile/31144/{z}/{y}/{x}',\n", " '2014-05-14': 'https://wayback.maptiles.arcgis.com/arcgis/rest/services/World_Imagery/WMTS/1.0.0/GoogleMapsCompatible/MapServer/tile/16513/{z}/{y}/{x}',\n", " '2014-04-30': 'https://wayback.maptiles.arcgis.com/arcgis/rest/services/World_Imagery/WMTS/1.0.0/GoogleMapsCompatible/MapServer/tile/19819/{z}/{y}/{x}',\n", " '2014-03-26': 'https://wayback.maptiles.arcgis.com/arcgis/rest/services/World_Imagery/WMTS/1.0.0/GoogleMapsCompatible/MapServer/tile/4230/{z}/{y}/{x}',\n", " '2014-02-20': 'https://wayback.maptiles.arcgis.com/arcgis/rest/services/World_Imagery/WMTS/1.0.0/GoogleMapsCompatible/MapServer/tile/10/{z}/{y}/{x}'}" ] }, "execution_count": 264, "metadata": {}, "output_type": "execute_result" } ], "source": [ "map_dict" ] }, { "cell_type": "code", "execution_count": 2, "metadata": {}, "outputs": [ { "data": { "application/vnd.jupyter.widget-view+json": { "model_id": "6a87c6af055444be8d9f304293e5287f", "version_major": 2, "version_minor": 0 }, "text/plain": [ "GridspecLayout(children=(Output(layout=Layout(grid_area='widget001')), Output(layout=Layout(grid_area='widget0…" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "import leafmap.leafmap as leafmap\n", "\n", "layers = [\"Esri.WorldTopoMap\", \"OpenTopoMap\"]\n", "leafmap.linked_maps(rows=1, cols=2, height=\"400px\", layers=layers)" ] }, { "cell_type": "code", "execution_count": 1, "metadata": {}, "outputs": [ { "data": { "application/vnd.jupyter.widget-view+json": { "model_id": "1ce50feee5594597a06e1de0b80600b1", "version_major": 2, "version_minor": 0 }, "text/plain": [ "Map(center=[45.8107, 8.6288], controls=(ZoomControl(options=['position', 'zoom_in_text', 'zoom_in_title', 'zoo…" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "from ipyleaflet import Map, TileLayer, WidgetControl\n", "from ipywidgets import SelectionSlider\n", "\n", "# Prepare a slider widget to navigate the version history of the basemap\n", "# There doesn't seem to be any pattern between timeId and basemap date, so just a few couples manually extracted from\n", "# https://wayback.maptiles.arcgis.com/arcgis/rest/services/world_imagery/mapserver/wmts/1.0.0/wmtscapabilities.xml\n", "date_timeId_mapping = [('2016-01-13', 3515),\n", " ('2017-01-11', 577),\n", " ('2018-01-08', 13161),\n", " ('2019-01-09', 6036),\n", " ('2020-01-08', 23001),\n", " ('2021-01-13', 1049),\n", " ('2022-01-12', 42663),\n", " ('2023-01-11', 11475)]\n", "\n", "# Date slider widget\n", "wayback_slider = SelectionSlider(\n", " options=date_timeId_mapping,\n", " value=3515,\n", " description='Date',\n", " disabled=False,\n", " continuous_update=True,\n", " orientation='horizontal',\n", " readout=True\n", ")\n", "time_control = WidgetControl(widget=wayback_slider, position='topright')\n", "\n", "# Connect tile layer (wayback, not yet defined) with slider value\n", "def on_date_change(*args):\n", " wayback.url = 'https://wayback.maptiles.arcgis.com/arcgis/rest/services/world_imagery/wmts/1.0.0/default028mm/mapserver/tile/%d/{z}/{y}/{x}' % wayback_slider.value\n", " wayback.redraw()\n", " \n", "wayback_slider.observe(on_date_change, 'value')\n", "\n", "# Prepare map, tilelayer and draw it\n", "m = Map(center=(45.8107, 8.6288), zoom=16, scroll_wheel_zoom=True)\n", "wayback = TileLayer(url='https://wayback.maptiles.arcgis.com/arcgis/rest/services/world_imagery/wmts/1.0.0/default028mm/mapserver/tile/3515/{z}/{y}/{x}')\n", "m.add_layer(wayback)\n", "m.add_control(time_control)\n", "m" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [] } ], "metadata": { "kernelspec": { "display_name": "zeel_py310", "language": "python", "name": "python3" }, "language_info": { "codemirror_mode": { "name": "ipython", "version": 3 }, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", "version": "3.10.15" } }, "nbformat": 4, "nbformat_minor": 2 }