{ "cells": [ { "cell_type": "markdown", "id": "d2a521db", "metadata": { "execution": {} }, "source": [ "[![Open In Colab](https://colab.research.google.com/assets/colab-badge.svg)](https://colab.research.google.com/github/neuromatch/climate-course-content/blob/main/tutorials/W1D3_RemoteSensing/student/W1D3_Intro.ipynb)   \"Open\n" ] }, { "cell_type": "markdown", "id": "58586dd2", "metadata": { "execution": {} }, "source": [ "# Intro\n" ] }, { "cell_type": "markdown", "id": "3371f8ea", "metadata": { "execution": {} }, "source": [ "## Overview\n" ] }, { "cell_type": "markdown", "id": "8df99e68", "metadata": { "execution": {} }, "source": [ "Welcome to the third day of Computational Tools for Climate Science course! Today’s focus is on satellite remote sensing for climate applications. Various international agencies and organizations have been using environmental satellite to monitor our earth system since the late 1970s. With more than 40 years of long-term satellite data records, we can understand the change of different components of the earth system, including land, ocean, atmosphere. More importantly, the long-term remote sensing data can help us study the impact of climate change on natural and human systems, such as ecosystem’s response to climate and climate impact on agriculture systems.\n", "\n", "During today’s curriculum, you will learn the fundamental concepts of satellite remote sensing, different sources of satellite remote sensing data for climate applications, how to access remote sensing datasets using python, and how to apply selected remote sensing datasets for climate applications. After today’s content, you should be familiar with basic concept of satellite remote sensing and basic computational tools to access and analyze satellite remote sensing data for climate applications.\n" ] }, { "cell_type": "markdown", "id": "1ed62158-89d7-445e-9334-18a7234c782e", "metadata": { "execution": {} }, "source": [ "## Day Learning Objectives\n", "\n", "1. Understand the theory, technology, and availability of satellite remote sensing for climate applications.\n", "2. Access and analyze satellite remote sensing products for climate applications." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Install and import feedback gadget\n" ] }, { "cell_type": "code", "execution_count": null, "id": "0f182426-9adb-4879-9d1d-99fa9cc66d6e", "metadata": { "cellView": "form", "execution": {}, "tags": [ "hide-input" ] }, "outputs": [], "source": [ "# @title Install and import feedback gadget\n", "\n", "!pip3 install vibecheck datatops --quiet\n", "\n", "from vibecheck import DatatopsContentReviewContainer\n", "def content_review(notebook_section: str):\n", " return DatatopsContentReviewContainer(\n", " \"\", # No text prompt\n", " notebook_section,\n", " {\n", " \"url\": \"https://pmyvdlilci.execute-api.us-east-1.amazonaws.com/klab\",\n", " \"name\": \"comptools_4clim\",\n", " \"user_key\": \"l5jpxuee\",\n", " },\n", " ).render()\n", "\n", "\n", "feedback_prefix = \"W1D3_Intro\"" ] }, { "cell_type": "markdown", "id": "52191a48", "metadata": { "execution": {} }, "source": [ "## Video 1: Introduction to Remote Sensing\n" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "\n" ] }, { "cell_type": "code", "execution_count": null, "id": "d745bf9b", "metadata": { "cellView": "form", "execution": {}, "tags": [ "remove-input" ] }, "outputs": [], "source": [ "# @markdown\n", "\n", "from ipywidgets import widgets\n", "from IPython.display import YouTubeVideo\n", "from IPython.display import IFrame\n", "from IPython.display import display\n", "\n", "\n", "class PlayVideo(IFrame):\n", " def __init__(self, id, source, page=1, width=400, height=300, **kwargs):\n", " self.id = id\n", " if source == \"Bilibili\":\n", " src = f\"https://player.bilibili.com/player.html?bvid={id}&page={page}\"\n", " elif source == \"Osf\":\n", " src = f\"https://mfr.ca-1.osf.io/render?url=https://osf.io/download/{id}/?direct%26mode=render\"\n", " super(PlayVideo, self).__init__(src, width, height, **kwargs)\n", "\n", "\n", "def display_videos(video_ids, W=400, H=300, fs=1):\n", " tab_contents = []\n", " for i, video_id in enumerate(video_ids):\n", " out = widgets.Output()\n", " with out:\n", " if video_ids[i][0] == \"Youtube\":\n", " video = YouTubeVideo(\n", " id=video_ids[i][1], width=W, height=H, fs=fs, rel=0\n", " )\n", " print(f\"Video available at https://youtube.com/watch?v={video.id}\")\n", " else:\n", " video = PlayVideo(\n", " id=video_ids[i][1],\n", " source=video_ids[i][0],\n", " width=W,\n", " height=H,\n", " fs=fs,\n", " autoplay=False,\n", " )\n", " if video_ids[i][0] == \"Bilibili\":\n", " print(\n", " f\"Video available at https://www.bilibili.com/video/{video.id}\"\n", " )\n", " elif video_ids[i][0] == \"Osf\":\n", " print(f\"Video available at https://osf.io/{video.id}\")\n", " display(video)\n", " tab_contents.append(out)\n", " return tab_contents\n", "\n", "\n", "video_ids = [(\"Youtube\", \"jtY4_WU6vgE\"), (\"Bilibili\", \"BV1Du411j7Az\")]\n", "tab_contents = display_videos(video_ids, W=730, H=410)\n", "tabs = widgets.Tab()\n", "tabs.children = tab_contents\n", "for i in range(len(tab_contents)):\n", " tabs.set_title(i, video_ids[i][0])\n", "display(tabs)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Submit your feedback\n" ] }, { "cell_type": "code", "execution_count": null, "id": "8721bc44-ac4c-45c4-b377-8243def60b82", "metadata": { "cellView": "form", "execution": {}, "tags": [ "hide-input" ] }, "outputs": [], "source": [ "# @title Submit your feedback\n", "content_review(f\"{feedback_prefix}_Introduction_to_Remote_Sensing_Video\")" ] }, { "cell_type": "markdown", "id": "765617f2", "metadata": { "execution": {} }, "source": [ "## Slides\n" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "\n" ] }, { "cell_type": "code", "execution_count": null, "id": "6158f5c7", "metadata": { "cellView": "form", "execution": {}, "tags": [ "remove-input" ] }, "outputs": [], "source": [ "# @markdown\n", "from ipywidgets import widgets\n", "from IPython.display import IFrame\n", "\n", "link_id = \"py527\"\n", "\n", "print(f\"If you want to download the slides: https://osf.io/download/{link_id}/\")\n", "IFrame(src=f\"https://mfr.ca-1.osf.io/render?url=https://osf.io/{link_id}/?direct%26mode=render%26action=download%26mode=render\", width=854, height=480)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Submit your feedback\n" ] }, { "cell_type": "code", "execution_count": null, "id": "cf8ee68d-b35e-46d9-8e77-aa275a193ced", "metadata": { "cellView": "form", "execution": {}, "tags": [ "hide-input" ] }, "outputs": [], "source": [ "# @title Submit your feedback\n", "content_review(f\"{feedback_prefix}_Introduction_to_Remote_Sensing_Slides\")" ] } ], "metadata": { "colab": { "collapsed_sections": [], "include_colab_link": true, "name": "W1D3_Intro", "toc_visible": true }, "kernel": { "display_name": "Python 3", "language": "python", "name": "python3" }, "kernelspec": { "display_name": "Python 3 (ipykernel)", "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.9.19" } }, "nbformat": 4, "nbformat_minor": 5 }