{ "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "# 30 seconds example\n", "\n", "In this example a **new workflow** consisting of [**Sentinel-2 L2A data**](https://marketplace.up42.com/block/c4cb8913-2ef3-4e82-a426-65ea8faacd9a)\n", "and [**Sharpening Filter**](https://marketplace.up42.com/block/e374ea64-dc3b-4500-bb4b-974260fb203e) is created.\n", "The area of interest and workflow parameters are defined. After **running the job**, \n", "the results are **downloaded** and visualized." ] }, { "cell_type": "code", "execution_count": 1, "metadata": {}, "outputs": [], "source": [ "import up42" ] }, { "cell_type": "code", "execution_count": 2, "metadata": {}, "outputs": [], "source": [ "#up42.authenticate(project_id=\"project ID string\", project_api_key=\"project-API-key\")\n", "up42.authenticate(cfg_file=\"config.json\")\n", "project = up42.initialize_project()" ] }, { "cell_type": "code", "execution_count": 3, "metadata": {}, "outputs": [], "source": [ "# Construct workflow\n", "workflow = project.create_workflow(name=\"30-seconds-workflow\", use_existing=True)\n", "input_tasks = [\"Sentinel-2 L2A Visual (GeoTIFF)\", \"Sharpening Filter\"]\n", "workflow.add_workflow_tasks(input_tasks)" ] }, { "cell_type": "code", "execution_count": 4, "metadata": {}, "outputs": [], "source": [ "# Define the aoi and input parameters of the workflow to run it.\n", "# Can also use up42.draw_aoi(), up42.read_vector_file(), provide a FeatureCollection, GeoDataFrame etc.\n", "aoi = up42.get_example_aoi(as_dataframe=True)\n", "input_parameters = workflow.construct_parameters(geometry=aoi, \n", " geometry_operation=\"bbox\", \n", " start_date=\"2018-01-01\",\n", " end_date=\"2020-12-31\",\n", " limit=1)\n", "input_parameters[\"esa-s2-l2a-gtiff-visual:1\"].update({\"max_cloud_cover\":5})" ] }, { "cell_type": "code", "execution_count": 5, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "{'esa-s2-l2a-gtiff-visual:1': {'blockConsumption': {'resources': {'unit': 'SQUARE_KM',\n", " 'min': 0.027816,\n", " 'max': 0.027816},\n", " 'credit': {'min': 0, 'max': 0}},\n", " 'machineConsumption': {'duration': {'min': 0, 'max': 0},\n", " 'credit': {'min': 1, 'max': 1}}},\n", " 'sharpening:1': {'blockConsumption': {'resources': {'unit': 'SQUARE_KM',\n", " 'min': 0.027816,\n", " 'max': 0.027816},\n", " 'credit': {'min': 0, 'max': 0}},\n", " 'machineConsumption': {'duration': {'min': 308, 'max': 349},\n", " 'credit': {'min': 1, 'max': 1}}}}" ] }, "execution_count": 5, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# Price estimation\n", "workflow.estimate_job(input_parameters)" ] }, { "cell_type": "code", "execution_count": 6, "metadata": {}, "outputs": [], "source": [ "# Run a test job to query data availability and check the configuration.\n", "test_job = workflow.test_job(input_parameters, track_status=True)" ] }, { "cell_type": "code", "execution_count": 7, "metadata": {}, "outputs": [], "source": [ "# Run the actual job.\n", "job = workflow.run_job(input_parameters, track_status=True)" ] }, { "cell_type": "code", "execution_count": 8, "metadata": {}, "outputs": [ { "name": "stderr", "output_type": "stream", "text": [ "3it [00:00, 1094.45it/s]\n" ] }, { "data": { "text/plain": [ "['/Users/andres.hernandez-camacho/Documents/UP42_Assignments/up42-py/examples/guides/project_1d53e295-95a7-423d-9f09-68bbbebf74c2/job_1e20db4b-a0bf-4b6e-a3a1-5b678f8bd691/S2B_32UQD_20201219_0_L2A/S2B_32UQD_20201219_0_L2A_visual.tif',\n", " '/Users/andres.hernandez-camacho/Documents/UP42_Assignments/up42-py/examples/guides/project_1d53e295-95a7-423d-9f09-68bbbebf74c2/job_1e20db4b-a0bf-4b6e-a3a1-5b678f8bd691/data.json']" ] }, "execution_count": 8, "metadata": {}, "output_type": "execute_result" } ], "source": [ "job.download_results()" ] }, { "cell_type": "code", "execution_count": 9, "metadata": {}, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "job.plot_results(figsize=(6,6))" ] } ], "metadata": { "kernelspec": { "display_name": "up42_dev", "language": "python", "name": "up42_dev" }, "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.10" } }, "nbformat": 4, "nbformat_minor": 4 }