{ "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "This Jupyter Notebook demonstrates how to create a Forest Carbon Diligence subscription with the Subscriptions API, deliver the data to a cloud bucket, and then retrieve and analyze the data directly from the cloud.\n", "\n", "## Requirements and environment set up\n", "\n", "To execute the code in this example, you will need the following:\n", "\n", "- A Planet API key\n", "- Access to the forest_carbon_diligence_30m data layer and associated data resources:\n", " - CANOPY_HEIGHT_30m\n", " - CANOPY_COVER_30m\n", " - ABOVEGROUND_CARBON_DENSITY_30m\n", "- Configured credentials for storage of the results to cloud storage (Google Cloud Platform, Amazon Web Services, Microsoft Azure, or Oracle Collaboration Suite)\n", "\n", "The code examples in this workflow are written for Python 3.8 or greater. \n", "In addition the the Python standard library, the following packages are required:\n", "\n", "- keyring\n", "- rasterio\n", "- requests\n", "- rioxarray\n", "\n", "First, you will need to import necessary libraries and set up your authentication. For authentication, we will use keyring, which is a package that stores and retrieves credentials like your \n", "Planet API key. You will be prompted to enter the key once and the API Key will be securely stored on your system keyring." ] }, { "cell_type": "code", "execution_count": 1, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Using stored api key\n" ] } ], "source": [ "# Import requirements\n", "import base64\n", "import keyring\n", "import rasterio\n", "import requests\n", "import rioxarray as rx\n", "import xarray as xr\n", "import os\n", "import pandas as pd \n", "from io import StringIO\n", "\n", "# Authentication\n", "update = False # Set to True if you want to update the credentials in the system's keyring\n", "\n", "if keyring.get_password(\"planet\", \"PL_API_KEY\") is None or update:\n", "\tkeyring.set_password(\"planet\", \"PL_API_KEY\", \"Your API Key\")\n", "else:\n", "\tprint(\"Using stored api key\")\n", "\n", "PL_API_KEY = keyring.get_password(\"planet\", \"PL_API_KEY\")" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Confirm your API key by making a call to Planet services. You should receive back an HTTP 200 response in below." ] }, { "cell_type": "code", "execution_count": 3, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "\n" ] } ], "source": [ "# Planet's Subscriptions API base URL for making RESTful requests\n", "BASE_URL = \"https://api.planet.com/subscriptions/v1\"\n", "\n", "auth = requests.auth.HTTPBasicAuth(PL_API_KEY, '')\n", "response = requests.get(BASE_URL, auth=auth)\n", "print(response)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Creating a Planetary Variables subscription with the Subscriptions API\n", "To create a subscription, provide a JSON request object that details the subscription parameters, including:\n", "\n", "- Subscription name (required)\n", "- Planetary Variable source type (required)\n", "- Data product ID (required)\n", "- Subscription location in GeoJSON format (required)\n", "- Start date for the subscription (required)\n", "- End date for the subscription (optional)\n", "\n", "Refer to Products page for details about available parameters.\n", "\n", "### Create your JSON Subscription Description Object\n", "This example creates a subscription for ten years of 30 m canopy height data over Shasta National Forest in California.\n", "\n", "Depending on your account type, you may have different permissions for different products. For Subscriptions API, you must have access to a particular area of access (AOA). Your area of interest (AOI) must be within your area of access.\n", "\n", "Subscriptions can be created with or without a delivery parameter, which specifies a storage location to deliver raster data. \n", "Omitting the delivery parameter will create a Time Series Delivery subscription. \n", "This example creates a subscription with a delivery parameter to deliver results directly to a Google Cloud storage bucket.\n", "\n", "Refer to the Google Cloud documentation to create a service account key. Use the appropriate credentials for AWS, Azure, or Oracle Cloud Storage platforms.\n", "\n", "### Ensure that a delivery destination has been set up \n", "The Subscriptions API supports delivery to cloud storage providers like Amazon S3, \n", "Microsoft Azure Blob Storage, Google Cloud Storage, or Oracle Cloud Storage. \n", "For any cloud storage delivery option, create a cloud storage account with both write and delete access. \n", "The Subscriptions API supports delivery to a Sentinel Hub collection as well. " ] }, { "cell_type": "code", "execution_count": 3, "metadata": {}, "outputs": [], "source": [ "# Read Google application credentials key into memory\n", "GOOGLE_APPLICATION_CREDENTIALS = \"key.json\"\n", "\n", "if not os.path.exists(GOOGLE_APPLICATION_CREDENTIALS):\n", "\tcredentials_path = os.path.abspath(GOOGLE_APPLICATION_CREDENTIALS)\n", "\tprint(f\"No Google service account key found at: {credentials_path}\")\n", "\n", "# Subscriptions API expects credentials in base64 format\n", "with open(GOOGLE_APPLICATION_CREDENTIALS, \"rb\") as f:\n", "\tgcs_credentials_base64 = base64.b64encode(f.read()).decode() \n", "\n", "# Define the bucket name in your Google Cloud Storage\n", "your_bucket_name = \"your storage bucket name\"\n", "\n", "# Create a new subscription JSON payload\n", "payload = {\n", "\t\"name\": \"CANOPY_HEIGHT_v1.2.0_30 - Shasta NF\",\n", "\t\"source\": {\n", "\t\t\"type\": \"forest_carbon_diligence_30m\",\n", "\t\t\"parameters\": {\n", "\t\"id\": \"CANOPY_HEIGHT_v1.2.0_30\",\n", "\t\"start_time\": \"2013-01-01T00:00:00Z\",\n", "\t\"end_time\": \"2023-01-01T00:00:00Z\",\n", "\t\"geometry\": {\n", "\t\"type\": \"Polygon\",\n", "\t\"coordinates\": [[\n", " [-123.39412734481135, 40.53806314480528],\n", " [-123.39412734481135, 40.53399674816484],\n", " [-123.38833323662753, 40.53399674816484],\n", " [-123.38833323662753, 40.53806314480528],\n", " [-123.39412734481135, 40.53806314480528]\n", " ]]\n", " }\n", " }\n", " },\n", " \"delivery\": {\n", "\t \"type\": \"google_cloud_storage\",\n", "\t \"parameters\": {\n", "\t\t \"bucket\": f\"{your_bucket_name}\",\n", "\t\t \"credentials\": gcs_credentials_base64\n", " }\n", " }\n", "}" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Create a subscription Using Your JSON Description Object\n", "These details are sent to the Subscriptions API to create a new subscription and receive it's unique subscription ID." ] }, { "cell_type": "code", "execution_count": 4, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Successfully created new subscription with ID=20def9e1-332c-493e-92fc-f0adc3c1a715\n", "20def9e1-332c-493e-92fc-f0adc3c1a715\n" ] } ], "source": [ "def create_subscription(subscription_payload, auth):\n", " headers = {\n", "\t\t\"content-type\": \"application/json\"}\n", " try:\n", " response = requests.post(BASE_URL, json=payload, auth=auth, headers=headers)\n", " response.raise_for_status()\n", " except requests.exceptions.HTTPError:\n", " print(f\"Request failed with {response.text}\")\n", " else:\n", " response_json = response.json()\n", " subscription_id = response_json[\"id\"]\n", " print(f\"Successfully created new subscription with ID={subscription_id}\")\n", " return subscription_id\n", "\n", "### Create a new subscription\n", "subscription_id = create_subscription(payload, auth)\n", "print(subscription_id)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Confirm the Subscription Status\n", "To retrieve the status of the subscription, request the subscription endpoint with a GET request. Once it is in a 'running' or 'completed' state, the delivery should either be in progress or completed, respectively. \n", "A subscription with an end date in the future remains in 'running' state until the 'end_date' is in the past. \n", "See status descriptions for a complete overview of possible status descriptions." ] }, { "cell_type": "code", "execution_count": 7, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "running\n" ] } ], "source": [ "def get_subscription_status(subscription_id, auth):\n", "\tsubscription_url = f\"{BASE_URL}/{subscription_id}\"\n", "\tresponse = requests.get(subscription_url, auth=auth)\n", "\tresponse_json = response.json()\n", "\treturn response_json.get(\"status\")\n", "\n", "status = get_subscription_status(subscription_id, auth)\n", "print(status)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Retrieving and analyzing the subscription data\n", "Metadata results generated for this subscription can be retrieved directly in CSV format.\n", "\n", "### Retrieve results data in CSV format" ] }, { "cell_type": "code", "execution_count": 8, "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
iditem_datetimestatuscreatedupdatederrorsch.band-1.meanch.band-1.valid_percentitem_idlocal_solar_timesource_id
088146ce9-92e6-49fc-956b-18d1ff9d36dd2013-01-01 00:00:00+00:00SUCCESS2025-01-16T02:27:47.4475Z2025-01-16T02:38:37.294478Z{}14.56100CANOPY_HEIGHT_v1.2.0_30_2013-01-01T0000NaTCANOPY_HEIGHT_v1.2.0_30
17017a920-b15b-4a03-b8ff-e3ca70f7974a2014-01-01 00:00:00+00:00SUCCESS2025-01-16T02:27:50.592236Z2025-01-16T02:38:37.31Z{}14.55100CANOPY_HEIGHT_v1.2.0_30_2014-01-01T0000NaTCANOPY_HEIGHT_v1.2.0_30
2ac5f21dc-5336-4fd6-8cb6-934185535bf82015-01-01 00:00:00+00:00SUCCESS2025-01-16T02:27:53.017634Z2025-01-16T02:38:37.055979Z{}14.54100CANOPY_HEIGHT_v1.2.0_30_2015-01-01T0000NaTCANOPY_HEIGHT_v1.2.0_30
36a342b05-6de8-4953-9e7d-312628e2cf8e2016-01-01 00:00:00+00:00SUCCESS2025-01-16T02:27:55.686629Z2025-01-16T02:38:37.21137Z{}14.50100CANOPY_HEIGHT_v1.2.0_30_2016-01-01T0000NaTCANOPY_HEIGHT_v1.2.0_30
48bee50d6-bd7c-4690-b19a-eb35019ef31c2017-01-01 00:00:00+00:00SUCCESS2025-01-16T02:27:58.623924Z2025-01-16T02:38:37.233128Z{}14.48100CANOPY_HEIGHT_v1.2.0_30_2017-01-01T0000NaTCANOPY_HEIGHT_v1.2.0_30
\n", "
" ], "text/plain": [ " id item_datetime status \\\n", "0 88146ce9-92e6-49fc-956b-18d1ff9d36dd 2013-01-01 00:00:00+00:00 SUCCESS \n", "1 7017a920-b15b-4a03-b8ff-e3ca70f7974a 2014-01-01 00:00:00+00:00 SUCCESS \n", "2 ac5f21dc-5336-4fd6-8cb6-934185535bf8 2015-01-01 00:00:00+00:00 SUCCESS \n", "3 6a342b05-6de8-4953-9e7d-312628e2cf8e 2016-01-01 00:00:00+00:00 SUCCESS \n", "4 8bee50d6-bd7c-4690-b19a-eb35019ef31c 2017-01-01 00:00:00+00:00 SUCCESS \n", "\n", " created updated errors \\\n", "0 2025-01-16T02:27:47.4475Z 2025-01-16T02:38:37.294478Z {} \n", "1 2025-01-16T02:27:50.592236Z 2025-01-16T02:38:37.31Z {} \n", "2 2025-01-16T02:27:53.017634Z 2025-01-16T02:38:37.055979Z {} \n", "3 2025-01-16T02:27:55.686629Z 2025-01-16T02:38:37.21137Z {} \n", "4 2025-01-16T02:27:58.623924Z 2025-01-16T02:38:37.233128Z {} \n", "\n", " ch.band-1.mean ch.band-1.valid_percent \\\n", "0 14.56 100 \n", "1 14.55 100 \n", "2 14.54 100 \n", "3 14.50 100 \n", "4 14.48 100 \n", "\n", " item_id local_solar_time \\\n", "0 CANOPY_HEIGHT_v1.2.0_30_2013-01-01T0000 NaT \n", "1 CANOPY_HEIGHT_v1.2.0_30_2014-01-01T0000 NaT \n", "2 CANOPY_HEIGHT_v1.2.0_30_2015-01-01T0000 NaT \n", "3 CANOPY_HEIGHT_v1.2.0_30_2016-01-01T0000 NaT \n", "4 CANOPY_HEIGHT_v1.2.0_30_2017-01-01T0000 NaT \n", "\n", " source_id \n", "0 CANOPY_HEIGHT_v1.2.0_30 \n", "1 CANOPY_HEIGHT_v1.2.0_30 \n", "2 CANOPY_HEIGHT_v1.2.0_30 \n", "3 CANOPY_HEIGHT_v1.2.0_30 \n", "4 CANOPY_HEIGHT_v1.2.0_30 " ] }, "execution_count": 8, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# Retrieve the resulting data in CSV format.\n", "resultsCSV = requests.get(f\"{BASE_URL}/{subscription_id}/results?format=csv\", auth=auth)\n", "\n", "# Read CSV Data\n", "df = pd.read_csv(StringIO(resultsCSV.text), parse_dates=[\"item_datetime\", \"local_solar_time\"])\n", "\n", "# Filter by valid data only\n", "df = df[df[\"ch.band-1.valid_percent\"].notnull()]\n", "df = df[df[\"ch.band-1.valid_percent\"] > 0]\n", "df = df[df[\"status\"] != 'QUEUED']\n", "\n", "df.head() " ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Retrieving the GeoTIFF\n", "The rioxarray to rasterio can be used to open and map the delivered GeoTIFF files directly from their cloud storage location.\n", "\n", "There are many options for configuring access through the different cloud storage services. Rasterio uses GDAL under the hood and the configuration options for network based file systems, such as the following:\n", "\n", "- Amazon Web Services\n", "- Google Cloud\n", "- Microsoft Azure\n", "\n", "The following example reads data directly from the Google Cloud Storage bucket configured previously. To work with canopy cover instead of height, modify the file_location variable to point to canopy cover files. \n" ] }, { "cell_type": "code", "execution_count": 13, "metadata": {}, "outputs": [], "source": [ "year = 2016\n", "# Set the filepath of the GeoTIFF asset\n", "file_location = f\"gs://{your_bucket_name}/{subscription_id}/{year}/01/01/CANOPY_HEIGHT_v1.2.0_30-{year}0101T000000Z_ch.tiff\"\n", "\n", "# Use Google application credentials to allow access to the storage location\n", "with rasterio.env.Env(GOOGLE_APPLICATION_CREDENTIALS=GOOGLE_APPLICATION_CREDENTIALS):\n", "\tdata = rx.open_rasterio(file_location)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Plot the GeoTIFF\n", "\n", "You can visualize the resulting raster with below line. " ] }, { "cell_type": "code", "execution_count": 14, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "" ] }, "execution_count": 14, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAAAiwAAAHHCAYAAACcHAM1AAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjguNCwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8fJSN1AAAACXBIWXMAAA9hAAAPYQGoP6dpAABRxklEQVR4nO3deVyU1f4H8M+wzQzDIiAwkAioJO6mXhH1phY3NCu5V8vMErmmWZoLlWXXXZNWI3PLFsyrXM3q2mbcDLVFCXfNSlPDQHEQNQHZYc7vD35MTiwCZ2Aenz7v1+t5Fc+cc+b7HAb4epbn0QghBIiIiIgUzMHeARARERFdDxMWIiIiUjwmLERERKR4TFiIiIhI8ZiwEBERkeIxYSEiIiLFY8JCREREiseEhYiIiBSPCQsREREpHhMWuiEtWLAAGo0GFy9etHcoFuvWrYNGo8GZM2fsHYqq7Nq1CxqNBrt27Wp03erPiT289NJLaNeuHRwdHdGzZ0+7xECkJkxYiG5gV69exfz58zF06FB4e3tDo9Fg3bp19g6rSVatWnXDxv5HX3zxBWbNmoUBAwYgKSkJS5cubbH3vnLlCiZNmgRfX18YDAYMGTIEBw8ebLH3J2ouTvYOgIia7uLFi1i0aBHatm2LHj16NGkUQilWrVqF1q1bY/z48Vbnb731VhQXF8PFxcU+gTXBjh074ODggLfffrtF4zabzRg+fDiOHDmCp556Cq1bt8aqVaswePBgHDhwAGFhYS0WC5GtMWEhuoEFBATg/PnzMBqN2L9/P/7yl7/YOySbc3BwgE6ns2sMhYWFMBgMDS5/4cIF6PX6Fk+y3n//fezZswdbtmzBqFGjAAD33Xcfbr75ZsyfPx/JycktGg+RLXFKiG5oFy9exH333QcPDw/4+Phg+vTpKCkpsSqTlJSE2267DX5+ftBqtejcuTNWr15do62QkBDcdddd+Pbbb9G3b1/odDq0a9cO69evr1H2hx9+wG233Qa9Xo82bdpgyZIlMJvNzXadddFqtTAajTZv9/XXX0eXLl3g6uoKLy8v9OnTx+qPXfXakOPHj9uk/0NCQvDDDz/gq6++gkajgUajweDBgwHUvoblm2++wb333ou2bdtCq9UiKCgIM2fORHFxsfS1jx8/Hm5ubjh9+jTuvPNOuLu7Y+zYsQCqRjASExPRpUsX6HQ6+Pv745FHHsFvv/1mqa/RaJCUlITCwkLLtbTUVNf7778Pf39//OMf/7Cc8/X1xX333YePPvoIpaWlLRIHUXPgCAvd0O677z6EhIQgISEB3333HZYvX47ffvvNKslYvXo1unTpgnvuuQdOTk745JNP8Nhjj8FsNmPKlClW7Z06dQqjRo3ChAkTEBsbi3feeQfjx49H79690aVLFwCAyWTCkCFDUFFRgWeeeQYGgwFr166FXq9vUMylpaUoKChoUNnWrVs3sCds580338S0adMwatQoSwJy9OhRpKen44EHHrAqa6v+T0xMxOOPPw43Nzf861//AgD4+/vXGeOWLVtQVFSERx99FD4+Pti7dy9ef/11nD17Flu2bJHug4qKCkRHR2PgwIF4+eWX4erqCgB45JFHsG7dOsTFxWHatGnIyMjAihUrcOjQIezevRvOzs7497//jbVr12Lv3r146623AAD9+/ev872KiopQVFR03ZgcHR3h5eVVb5lDhw6hV69ecHCw/rdo3759sXbtWvz888/o1q3bdd+LSJEE0Q1o/vz5AoC45557rM4/9thjAoA4cuSI5VxRUVGN+tHR0aJdu3ZW54KDgwUA8fXXX1vOXbhwQWi1WvHEE09Yzs2YMUMAEOnp6VblPD09BQCRkZFRb+xJSUkCQIOOxti3b58AIJKSkhpV749GjBghunTpUm+Z5uj/Ll26iEGDBtUou3PnTgFA7Ny5s942ExIShEajEb/++muNOBsjNjZWABDPPPOM1flvvvlGABAbN260Op+SklLjfGxsrDAYDA16v+oYr3cEBwdfty2DwSD++c9/1jj/2WefCQAiJSWlQTERKRFHWOiG9scRkscffxyrVq3Ctm3b0L17dwCwGvnIy8tDeXk5Bg0ahP/973/Iy8uDp6en5fXOnTvjr3/9q+VrX19fdOzYEb/88ovl3LZt29CvXz/07dvXqtzYsWOxatWq68YcHR2N7du3N/5iW0irVq1w9uxZ7Nu377prYmzd/w11bZuFhYUoLi5G//79IYTAoUOH0LZt20a3+UePPvqo1ddbtmyBp6cn/va3v1ltp+/duzfc3Nywc+fOGiNQDTFu3DgMHDjwuuUaMoJXXFwMrVZb43z1GiBbTJkR2QsTFjsoLS1FREQEjhw5gkOHDtV7j4aSkhI88cQT2LRpE0pLSxEdHY1Vq1ZZDZfX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", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "data[0,:,:].plot.imshow() " ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Visualizing Multiple Years of Data\n", "\n", "To visualize a time series, load in the annual rasters and concatenate along the time dimension." ] }, { "cell_type": "code", "execution_count": 16, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "" ] }, "execution_count": 16, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAAA3wAAAEiCAYAAACiD9CMAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjguNCwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8fJSN1AAAACXBIWXMAAA9hAAAPYQGoP6dpAABLXElEQVR4nO3deXxU9b3/8fdkmywkgbBkQZaAyKIsAjUGuQI1PwNSSyqlXlxAilAUrJBb8ULZXaIoiFxpKd4KUkWUVnFtlILBhRhlU7HCRQ1lTdgkgUDW+f7+oJk6JZlzAhOSGV7Px+M8cM75zPf7PWfySfzM9ywOY4wRAAAAACDgBDX0AAAAAAAA9YOCDwAAAAACFAUfAAAAAAQoCj4AAAAACFAUfAAAAAAQoCj4AAAAACBAUfABAAAAQICi4AMAAACAAEXBBwAAAAABioIPAAAAAAIUBR9Qi88//1wjR45UmzZtFBERoa5du+rpp58+Jy4nJ0e9e/eW0+nU5ZdfrhUrVnhsz8rK0o9+9CNFR0erVatWysjI0K5duzxiSktLNXHiRDVv3lxNmjTR8OHDVVhYWJ+7B1zyLmaOL1u2TAMHDlRMTIwcDodOnDhRj3sGQLp4OX78+HHdd9996ty5syIiItS2bVv9+te/VlFRUX3vImALBR/8XlVVlVwul8/b3bJli1q1aqUXXnhBX331lX77299q2rRpeuaZZ9wx+fn5Gjp0qAYNGqTt27dr8uTJuvvuu/Xuu++6YzZu3KiJEyfqk08+0bp161RRUaEbb7xRJSUl7pgpU6bozTff1Jo1a7Rx40YdPHhQt9xyi8/3CfBHgZDjp0+f1uDBgzV9+nSf7wfg7/w9xw8ePKiDBw/qySef1I4dO7RixQplZ2dr7NixPt8n4LwYwEeef/55ExcXZ0pLSz3WDxs2zNxxxx3u12vXrjVXX321cTqdJjk52cyZM8dUVFS4ty9YsMBcddVVJjIy0lx22WXmnnvuMSdPnnRvX758uYmNjTWvv/666dq1qwkODjb5+fn1vn/GGHPvvfeaQYMGuV9PnTrVXHnllR4xt956q0lPT6+1jcOHDxtJZuPGjcYYY06cOGFCQ0PNmjVr3DFff/21kWRyc3N9vAfA+SPHz6prjv/Q+++/bySZ77//3mdjBnyFHD/rQnK82iuvvGLCwsI8jgvQUJjhg8+MGDFCVVVVeuONN9zrDh8+rLffflu//OUvJUkffvihRo0apfvvv19///vf9Yc//EErVqzQI4884n5PUFCQFi9erK+++krPP/+8NmzYoKlTp3r0dfr0aT3++OP63//9X3311Vdq1apVjWNq0qSJ12XChAl12seioiLFxcW5X+fm5iotLc0jJj09Xbm5uV7bkORuZ8uWLaqoqPBop0uXLmrbtq3XdoCLjRw/q645DvgLcvwsX+R4UVGRYmJiFBISUqfxAfWioSvOS1Fpaanp2bOnkWS2bdvmNfbMmTPm3nvvNXFxcSYqKsrccsstpqCgwCNG0jnLSy+95N7+4Ycfmn79+pm4uDgTHh5uOnfubBYuXFjncd93332md+/eJiwszPTs2bPGmHvuuccMGTLE/XrBggWmQ4cOxuVyGWOMueGGG8yjjz7q8Z4//elPJjExsdZ+16xZY5o3b+5+vXz5ciPJbN++3XLMu3fv9roUFhZatlHt448/NiEhIebdd991r+vUqdM5+/P2228bSeb06dPntFFVVWWGDh1qrrvuOve6F1980YSFhZ0T+6Mf/chMnTrV9viAi4Ecr3uO/xAzfGjsyPELy3FjjDly5Ihp27atmT59uu2xAfWJrx18bODAgbrrrrt011131RozdepUJSUl6fPPP7dsb8qUKXr77be1Zs0axcbGatKkSbrlllv08ccfe8QtX75cgwcPdr9u2rSp+7+joqI0adIk9ejRQ1FRUfroo4/0q1/9SlFRURo/fnyd9u+Xv/yl8vLy9MUXX9S4fdy4cfrRj36kAwcOqHXr1lqxYoXuuusuORwOSWcvoP744489vgmsqqpSaWmpTp8+rcjISP3tb39TVlaWdu7cqeLiYlVWVnpsl6SwsDD16NHDcryXX355nfavNjt27NCwYcM0e/Zs3XjjjefdzsSJE7Vjxw599NFHPhkXcLGR496R4/B35Lh3VjleXFysoUOHqlu3bpozZ8559wP4EgXfRfbXv/5V7733nv7yl7/or3/9q9fYoqIi/fGPf9SqVav04x//WNLZwq5r16765JNPdO2117pjmzZtqoSEhBrbufrqq3X11Ve7X7dv316vvvqqPvzwQ3fB53K59Pjjj2vZsmUqKCjQFVdcoZkzZ+rnP/+5+32LFy+WJB05cqTWgu/qq69Wz549tXLlSt1444366quv9Pbbb7u3nzp1SnPnzq3xhiTh4eHas2ePfvKTn+iee+7RI488ori4OH300UcaO3asysvL3X8oIiIi3H98vGnSpInX7XfccYeWLl3qNebvf/+7brjhBo0fP14zZszw2JaQkHDO3TQLCwsVExOjiIgIj/WTJk3SW2+9pQ8++ECXXXaZRxvl5eU6ceKER6FeWFhY62cKNBRyvO45DvgTcvz8c/zkyZMaPHiwoqOj9dprryk0NNTruICLhYLvIiosLNS4ceO0du1a9y88b6yu7fphwTdx4kTdfffd6tChgyZMmKAxY8bU+ot027Zt2rRpkx5++GH3uqysLL3wwgtaunSpOnXqpA8++EB33HGHWrZsqQEDBtRpP++++24tWrRIBw4cUFpamtq0aePe1rt3b+3atavWb+y2bNkil8ulBQsWKCjo7CWmr7zySp36/6Ht27d73R4TE+N1+1dffaUf//jHGj16tMe3mdVSU1P1zjvveKxbt26dUlNT3a+NMbrvvvv02muvKScnR8nJyR7xffr0UWhoqNavX6/hw4dLknbt2qW9e/d6tAM0FuR43XIc8DfkeN1zvLi4WOnp6XI6nXrjjTcUHh7udVzARdXAp5QGnAEDBpjly5efs97lcpnBgwebhx56yBhjTH5+vuU1fHav7Zo3b5756KOPzNatW81jjz1mnE6nefrpp895X+vWrU1YWJgJCgoy8+bNc68vLS01kZGRZtOmTR7xY8eONSNHjjynndmzZ9d6DZ8xZ+86GRkZacLCwszq1as9tmVnZ5uQkBAzZ84cs2PHDvP3v//dvPTSS+a3v/2tMcaY7du3G0lm0aJF5ttvvzUrV640rVu39rjmpfruXvXtyy+/NC1btjR33HGHOXTokHs5fPiwO+a7774zkZGR5oEHHjBff/21WbJkiQkODjbZ2dnumHvuucfExsaanJwcj3Z+eG3AhAkTTNu2bc2GDRvM5s2bTWpqqklNTa33fQTOBzle9xw/dOiQ2bZtm3n22WeNJPPBBx+Ybdu2mWPHjtX7fgJ1RY7XLceLiopMSkqK6d69u/nmm288YiorK+t9PwErFHwX6JFHHjFRUVHuJSgoyDidTo91//jHP8zTTz9trrvuOnfi+7Lg+3czZ840l1122Tnrv/vuO/PFF1+YZcuWmbi4OLNq1SpjjDE7duwwkjzGHBUVZUJDQ80111xzTjtWBZ8xxtx555013trZmLN/LPr162ciIiJMTEyMueaaa8yyZcvc2xcuXGgSExNNRESESU9PNytXrmyQPxSzZ8+u8YY47dq184h7//33Ta9evUxYWJjp0KHDOQV/TW1I8oirvjlPs2bNTGRkpPnZz35mDh06VO/7CJwvcvxf7OR4bX3V9AUh0BiQ4/9ilePVN2OqablYj5sAvHEYY4zPpgsvQcePH9fx48fdr2+//XYNHz7c49z29u3b6+c//7nefPNNj9Msq6qqFBwcrNtvv13PP//8OW1v2LBBN9xwg77//nuPa7vatWunyZMna8qUKTWO6e2339ZPfvITlZaWyul01hjz8MMP609/+pN27dqlvLw8XXvttcrJyVHr1q094pxOp8epHJI0Z84crV271utpFjfccIOuvPJK93V/AAILOQ4ENnIcCBxcw3eB4uLiPJ7DEhERoVatWp1zbvvixYs9rpk7ePCg0tPT9fLLLyslJaXGts/32q7t27erWbNmtRZ70tmbtJSVlUmSunXrJqfTqb1799b5er1/9/333ysnJ0c5OTn63e9+d0FtAWh8yHEgsJHjQOCh4LtI2rZt6/G6+q5THTt2dN/p6cCBA7rhhhu0cuVKXXPNNYqNjdXYsWOVmZmpuLg4xcTE6L777lNqaqr7hi1vvvmmCgsLde211yo8PFzr1q3To48+qt/85jfuvpYsWaK2bduqS5cukqQPPvhATz75pH79619LkqKjo/Wb3/xGU6ZMkcvlUv/+/VVUVKSPP/5YMTExGj16tCTpm2++0alTp1RQUKAzZ864Z/i6deumsLAwSWfv7vX999/r8ccfV+fOnevpaAJoKOQ4ENjIcSDwUPA1IhUVFdq1a5dOnz7tXvfUU08pKChIw4cPV1lZmdLT0z2+cQsNDdWSJUs0ZcoUGWN0+eWXa+HChRo3bpw7xuVyadq0acrPz1dISIg6duyoxx9/XL/61a/cMQ899JBatmyprKwsfffdd2ratKl69+6t6dOnu2Puvvtubdy40f26+lEP+fn5at++vSRpz549vj4sABoRchwIbOQ4EHi4hg8AAAAALrKsrCy9+uqr2rlzpyIiItSvX79zZtcHDhzoMeEiSb/61a8snz/5Q0E+GzEAAAAAwJaNGzdq4sSJ+uSTT7Ru3TpVVFToxhtvVElJiUfcuHHjdOjQIfcyf/78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", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "years = [2020, 2021, 2022]\n", "\n", "year_data = []\n", "\n", "with rasterio.env.Env(GOOGLE_APPLICATION_CREDENTIALS=GOOGLE_APPLICATION_CREDENTIALS): \n", " for year in years: \n", " f = f\"gs://{your_bucket_name}/{subscription_id}/{year}/01/01/CANOPY_HEIGHT_v1.2.0_30-{year}0101T000000Z_ch.tiff\" \n", " year_data.append(rx.open_rasterio(f, mask_and_scale=True).assign_coords({\"year\": year}))\n", "\n", "timeseries = xr.concat(year_data, dim=\"year\")\n", "timeseries[:,0,:,:].plot.imshow(col=\"year\") " ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "To visualize the linear trend over time for each pixel, you can use xarrays's polyfit() method." ] }, { "cell_type": "code", "execution_count": 17, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "" ] }, "execution_count": 17, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "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", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "fit = timeseries.polyfit(dim=\"year\", deg=1)\n", "slopes = fit[\"polyfit_coefficients\"].sel(degree=1)\n", "slopes[0,:,:].plot.imshow() " ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Estimating Total Carbon for an Area of Interest (AOI)\n", "\n", "You need to place another subscription with \"ABOVEGROUND_CARBON_DENSITY\" before running the script below." ] }, { "cell_type": "code", "execution_count": 18, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Successfully created new subscription with ID=61e89989-6519-4e5f-8ae3-be7f9d5da10f\n", "61e89989-6519-4e5f-8ae3-be7f9d5da10f\n" ] } ], "source": [ "# Create a new subscription JSON payload\n", "payload = {\n", "\t\"name\": \"ABOVEGROUND_CARBON_DENSITY_v1.2.0_30 - Shasta NF\",\n", "\t\"source\": {\n", "\t\t\"type\": \"forest_carbon_diligence_30m\",\n", "\t\t\"parameters\": {\n", "\t\"id\": \"ABOVEGROUND_CARBON_DENSITY_v1.2.0_30\",\n", "\t\"start_time\": \"2013-01-01T00:00:00Z\",\n", "\t\"end_time\": \"2023-01-01T00:00:00Z\",\n", "\t\"geometry\": {\n", "\t\"type\": \"Polygon\",\n", "\t\"coordinates\": [[\n", " [-123.39412734481135, 40.53806314480528],\n", " [-123.39412734481135, 40.53399674816484],\n", " [-123.38833323662753, 40.53399674816484],\n", " [-123.38833323662753, 40.53806314480528],\n", " [-123.39412734481135, 40.53806314480528]\n", " ]]\n", " }\n", " }\n", " },\n", " \"delivery\": {\n", "\t \"type\": \"google_cloud_storage\",\n", "\t \"parameters\": {\n", "\t\t \"bucket\": f\"{your_bucket_name}\",\n", "\t\t \"credentials\": gcs_credentials_base64\n", " }\n", " }\n", "}\n", "\n", "### Create a new subscription\n", "subscription_id = create_subscription(payload, auth)\n", "print(subscription_id)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "To estimate total carbon for an AOI, read the carbon data, select data from your AOI, and sum over pixels. " ] }, { "cell_type": "code", "execution_count": 7, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "133.83 Mg (tons) of carbon\n" ] } ], "source": [ "year = 2016\n", "# read carbon data\n", "c_location = f\"gs://{your_bucket_name}/{subscription_id}/{year}/01/01/ABOVEGROUND_CARBON_DENSITY_v1.2.0_30-{year}0101T000000Z_acd.tiff\" \n", "\n", "with rasterio.env.Env(GOOGLE_APPLICATION_CREDENTIALS=GOOGLE_APPLICATION_CREDENTIALS):\n", "\tcarbon = rx.open_rasterio(c_location)\n", "\n", "# define a geometry for the area of interest\n", "xmin = -123.39\n", "xmax = -123.38\n", "ymin = 40.535\n", "ymax = 40.536\n", "\n", "aoi = [\n", " {\n", " 'type': 'Polygon',\n", " 'coordinates': [[\n", " [xmin, ymin],\n", " [xmin, ymax],\n", " [xmax, ymax],\n", " [xmax, ymin],\n", " [xmin, ymin]\n", " ]]\n", " }\n", "]\n", "\n", "# clip carbon data to the AOI\n", "aoi_carbon = carbon.rio.clip(aoi)\n", "\n", "# compute total carbon\n", "total_carbon = (aoi_carbon.sum() * 0.09).values\n", "\n", "print(f\"{total_carbon:.2f} Mg (tons) of carbon\")" ] } ], "metadata": { "kernelspec": { "display_name": "pv-colab", "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.11.8" } }, "nbformat": 4, "nbformat_minor": 2 }