{ "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "# Export an image collection as individual images" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "colab": {}, "colab_type": "code", "executionInfo": { "elapsed": 876, "status": "ok", "timestamp": 1592476956910, "user": { "displayName": "Ujaval Gandhi", "photoUrl": "https://lh3.googleusercontent.com/a-/AOh14Gh-mr8b4yrvpjGrFWxEv60USCC0iYFAwW7Snk8sIISRZwewKGfTeuUrgVjxkvRoELvKK3NB5xkADIgEizMQyhbKx3A9G77B5XWYhrxzQJk8llQgVyvltfzlA9gPDjhFLCICbfYzj85RXVP-mcV5WeIVqCImzuwDpW2BliZjcAdSb-_WjYErFvJaD8U02SYADAk8ULNl20nkpQdJjCqzj4h_hOeOALl7CABZqMG4Uq3fRxa2Yg-Z0tJEY77GkUsu6lraXZJs25nM5GCgUbEg_JtuEKBePKqsmoQrYPOpdUB8lxDff4Hak2nSyGvFz-LbFoKc0ynGk39b1ycyeKVhjMlXvmvoJqCx4L3yoMP5jf0jMzKJMrvuov2PEUzMfUh2lIVZSaavzJqXT1jRiTtld5pA8DKhXKdtqIjsGCHoBkr5oCh7mxDI2QXjhWspibwWk2NgmXNDhZxSuVzxTWde50sAAkZ8Afm9k2LSygBFFi-uBuWg-dZWCsH-GCPIIn1lCJ_2z_aPgVKNp-llxU__ne74OE1J2Y4ob8Sq9d-QJk1ZglWtLZtffqMzhQBoLkOQgyRJrgerkjG1HArFS37c5LF7KhzUIi0hk9uSIuIBWaRHwMLfChfCWL9uVSmakAPCYwlEjS-JUkJVUSEQA60CUn8yU5f78WOjprA_PvUDNG7uXe6HDDtavrexokboYQVXvw-I952YwnpUSZP6gWzuqRdbhqQCZz51TyEA087lzNi6jP_YJ4GT2bDDVM-6wiLhVoNUdg=s64", "userId": "08961717268892623937" }, "user_tz": -330 }, "id": "JuN5rEoyjmjK" }, "outputs": [], "source": [ "import ee" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "colab": { "base_uri": "https://localhost:8080/", "height": 167 }, "colab_type": "code", "executionInfo": { "elapsed": 18518, "status": "ok", "timestamp": 1592476976324, "user": { "displayName": "Ujaval Gandhi", "photoUrl": "https://lh3.googleusercontent.com/a-/AOh14Gh-mr8b4yrvpjGrFWxEv60USCC0iYFAwW7Snk8sIISRZwewKGfTeuUrgVjxkvRoELvKK3NB5xkADIgEizMQyhbKx3A9G77B5XWYhrxzQJk8llQgVyvltfzlA9gPDjhFLCICbfYzj85RXVP-mcV5WeIVqCImzuwDpW2BliZjcAdSb-_WjYErFvJaD8U02SYADAk8ULNl20nkpQdJjCqzj4h_hOeOALl7CABZqMG4Uq3fRxa2Yg-Z0tJEY77GkUsu6lraXZJs25nM5GCgUbEg_JtuEKBePKqsmoQrYPOpdUB8lxDff4Hak2nSyGvFz-LbFoKc0ynGk39b1ycyeKVhjMlXvmvoJqCx4L3yoMP5jf0jMzKJMrvuov2PEUzMfUh2lIVZSaavzJqXT1jRiTtld5pA8DKhXKdtqIjsGCHoBkr5oCh7mxDI2QXjhWspibwWk2NgmXNDhZxSuVzxTWde50sAAkZ8Afm9k2LSygBFFi-uBuWg-dZWCsH-GCPIIn1lCJ_2z_aPgVKNp-llxU__ne74OE1J2Y4ob8Sq9d-QJk1ZglWtLZtffqMzhQBoLkOQgyRJrgerkjG1HArFS37c5LF7KhzUIi0hk9uSIuIBWaRHwMLfChfCWL9uVSmakAPCYwlEjS-JUkJVUSEQA60CUn8yU5f78WOjprA_PvUDNG7uXe6HDDtavrexokboYQVXvw-I952YwnpUSZP6gWzuqRdbhqQCZz51TyEA087lzNi6jP_YJ4GT2bDDVM-6wiLhVoNUdg=s64", "userId": "08961717268892623937" }, "user_tz": -330 }, "id": "Sz-01eMjg72f", "outputId": "60cc7912-220e-4396-8c35-531101a33c3a" }, "outputs": [], "source": [ "ee.Authenticate()" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "colab": {}, "colab_type": "code", "executionInfo": { "elapsed": 5450, "status": "ok", "timestamp": 1592476984784, "user": { "displayName": "Ujaval Gandhi", "photoUrl": "https://lh3.googleusercontent.com/a-/AOh14Gh-mr8b4yrvpjGrFWxEv60USCC0iYFAwW7Snk8sIISRZwewKGfTeuUrgVjxkvRoELvKK3NB5xkADIgEizMQyhbKx3A9G77B5XWYhrxzQJk8llQgVyvltfzlA9gPDjhFLCICbfYzj85RXVP-mcV5WeIVqCImzuwDpW2BliZjcAdSb-_WjYErFvJaD8U02SYADAk8ULNl20nkpQdJjCqzj4h_hOeOALl7CABZqMG4Uq3fRxa2Yg-Z0tJEY77GkUsu6lraXZJs25nM5GCgUbEg_JtuEKBePKqsmoQrYPOpdUB8lxDff4Hak2nSyGvFz-LbFoKc0ynGk39b1ycyeKVhjMlXvmvoJqCx4L3yoMP5jf0jMzKJMrvuov2PEUzMfUh2lIVZSaavzJqXT1jRiTtld5pA8DKhXKdtqIjsGCHoBkr5oCh7mxDI2QXjhWspibwWk2NgmXNDhZxSuVzxTWde50sAAkZ8Afm9k2LSygBFFi-uBuWg-dZWCsH-GCPIIn1lCJ_2z_aPgVKNp-llxU__ne74OE1J2Y4ob8Sq9d-QJk1ZglWtLZtffqMzhQBoLkOQgyRJrgerkjG1HArFS37c5LF7KhzUIi0hk9uSIuIBWaRHwMLfChfCWL9uVSmakAPCYwlEjS-JUkJVUSEQA60CUn8yU5f78WOjprA_PvUDNG7uXe6HDDtavrexokboYQVXvw-I952YwnpUSZP6gWzuqRdbhqQCZz51TyEA087lzNi6jP_YJ4GT2bDDVM-6wiLhVoNUdg=s64", "userId": "08961717268892623937" }, "user_tz": -330 }, "id": "UPsm1_Qxg72j" }, "outputs": [], "source": [ "ee.Initialize()" ] }, { "cell_type": "markdown", "metadata": { "colab_type": "text", "id": "mW0ljMgeg72n" }, "source": [ "## Create a Collection" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "colab": {}, "colab_type": "code", "executionInfo": { "elapsed": 879, "status": "ok", "timestamp": 1592477072602, "user": { "displayName": "Ujaval Gandhi", "photoUrl": "https://lh3.googleusercontent.com/a-/AOh14Gh-mr8b4yrvpjGrFWxEv60USCC0iYFAwW7Snk8sIISRZwewKGfTeuUrgVjxkvRoELvKK3NB5xkADIgEizMQyhbKx3A9G77B5XWYhrxzQJk8llQgVyvltfzlA9gPDjhFLCICbfYzj85RXVP-mcV5WeIVqCImzuwDpW2BliZjcAdSb-_WjYErFvJaD8U02SYADAk8ULNl20nkpQdJjCqzj4h_hOeOALl7CABZqMG4Uq3fRxa2Yg-Z0tJEY77GkUsu6lraXZJs25nM5GCgUbEg_JtuEKBePKqsmoQrYPOpdUB8lxDff4Hak2nSyGvFz-LbFoKc0ynGk39b1ycyeKVhjMlXvmvoJqCx4L3yoMP5jf0jMzKJMrvuov2PEUzMfUh2lIVZSaavzJqXT1jRiTtld5pA8DKhXKdtqIjsGCHoBkr5oCh7mxDI2QXjhWspibwWk2NgmXNDhZxSuVzxTWde50sAAkZ8Afm9k2LSygBFFi-uBuWg-dZWCsH-GCPIIn1lCJ_2z_aPgVKNp-llxU__ne74OE1J2Y4ob8Sq9d-QJk1ZglWtLZtffqMzhQBoLkOQgyRJrgerkjG1HArFS37c5LF7KhzUIi0hk9uSIuIBWaRHwMLfChfCWL9uVSmakAPCYwlEjS-JUkJVUSEQA60CUn8yU5f78WOjprA_PvUDNG7uXe6HDDtavrexokboYQVXvw-I952YwnpUSZP6gWzuqRdbhqQCZz51TyEA087lzNi6jP_YJ4GT2bDDVM-6wiLhVoNUdg=s64", "userId": "08961717268892623937" }, "user_tz": -330 }, "id": "S60c2-FOjx0h" }, "outputs": [], "source": [ "geometry = ee.Geometry.Point([107.61303468448624, 12.130969369851766])\n", "s2 = ee.ImageCollection(\"COPERNICUS/S2\")\n", "rgbVis = {\n", " 'min': 0.0,\n", " 'max': 3000,\n", " 'bands': ['B4', 'B3', 'B2'],\n", "}\n", "\n", "# Write a function for Cloud masking\n", "def maskS2clouds(image):\n", " qa = image.select('QA60')\n", " cloudBitMask = 1 << 10\n", " cirrusBitMask = 1 << 11\n", " mask = qa.bitwiseAnd(cloudBitMask).eq(0).And(\n", " qa.bitwiseAnd(cirrusBitMask).eq(0))\n", " return image.updateMask(mask) \\\n", " .select(\"B.*\") \\\n", " .copyProperties(image, [\"system:time_start\"])\n", "\n", "filtered = s2 \\\n", " .filter(ee.Filter.date('2019-01-01', '2020-01-01')) \\\n", " .filter(ee.Filter.lt('CLOUDY_PIXEL_PERCENTAGE', 30)) \\\n", " .filter(ee.Filter.intersects('.geo', geometry)) \\\n", " .map(maskS2clouds)\n", "\n", "# Write a function that computes NDVI for an image and adds it as a band\n", "def addNDVI(image):\n", " ndvi = image.normalizedDifference(['B5', 'B4']).rename('ndvi')\n", " return image.addBands(ndvi)\n", "\n", "withNdvi = filtered.map(addNDVI)" ] }, { "cell_type": "markdown", "metadata": { "colab_type": "text", "id": "s-zNDMS9g72r" }, "source": [ "## Export All Images\n", "\n", "Exports are done via the ``ee.batch`` module. A key difference between javascript and Python version is that the `region` parameter needs to be supplied with actual geometry coordinates." ] }, { "cell_type": "code", "execution_count": null, "metadata": { "colab": { "base_uri": "https://localhost:8080/", "height": 33 }, "colab_type": "code", "executionInfo": { "elapsed": 1596, "status": "ok", "timestamp": 1592477084873, "user": { "displayName": "Ujaval Gandhi", "photoUrl": "https://lh3.googleusercontent.com/a-/AOh14Gh-mr8b4yrvpjGrFWxEv60USCC0iYFAwW7Snk8sIISRZwewKGfTeuUrgVjxkvRoELvKK3NB5xkADIgEizMQyhbKx3A9G77B5XWYhrxzQJk8llQgVyvltfzlA9gPDjhFLCICbfYzj85RXVP-mcV5WeIVqCImzuwDpW2BliZjcAdSb-_WjYErFvJaD8U02SYADAk8ULNl20nkpQdJjCqzj4h_hOeOALl7CABZqMG4Uq3fRxa2Yg-Z0tJEY77GkUsu6lraXZJs25nM5GCgUbEg_JtuEKBePKqsmoQrYPOpdUB8lxDff4Hak2nSyGvFz-LbFoKc0ynGk39b1ycyeKVhjMlXvmvoJqCx4L3yoMP5jf0jMzKJMrvuov2PEUzMfUh2lIVZSaavzJqXT1jRiTtld5pA8DKhXKdtqIjsGCHoBkr5oCh7mxDI2QXjhWspibwWk2NgmXNDhZxSuVzxTWde50sAAkZ8Afm9k2LSygBFFi-uBuWg-dZWCsH-GCPIIn1lCJ_2z_aPgVKNp-llxU__ne74OE1J2Y4ob8Sq9d-QJk1ZglWtLZtffqMzhQBoLkOQgyRJrgerkjG1HArFS37c5LF7KhzUIi0hk9uSIuIBWaRHwMLfChfCWL9uVSmakAPCYwlEjS-JUkJVUSEQA60CUn8yU5f78WOjprA_PvUDNG7uXe6HDDtavrexokboYQVXvw-I952YwnpUSZP6gWzuqRdbhqQCZz51TyEA087lzNi6jP_YJ4GT2bDDVM-6wiLhVoNUdg=s64", "userId": "08961717268892623937" }, "user_tz": -330 }, "id": "STvfd9ABg72s", "outputId": "61a6907a-38b1-4119-b349-807b49b2f4e7" }, "outputs": [], "source": [ "image_ids = withNdvi.aggregate_array('system:index').getInfo()\n", "print('Total images: ', len(image_ids))" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "colab": {}, "colab_type": "code", "id": "CoXn1_hgoj81" }, "outputs": [], "source": [ "palette = [\n", " 'FFFFFF', 'CE7E45', 'DF923D', 'F1B555', 'FCD163', '99B718',\n", " '74A901', '66A000', '529400', '3E8601', '207401', '056201',\n", " '004C00', '023B01', '012E01', '011D01', '011301'];\n", "\n", "ndviVis = {'min':0, 'max':0.5, 'palette': palette }\n", "\n", "# Export with 100m resolution for this demo\n", "for i, image_id in enumerate(image_ids):\n", " image = ee.Image(withNdvi.filter(ee.Filter.eq('system:index', image_id)).first())\n", " task = ee.batch.Export.image.toDrive(**{\n", " 'image': image.select('ndvi').visualize(**ndviVis),\n", " 'description': 'Image Export {}'.format(i+1),\n", " 'fileNamePrefix': image.id().getInfo(),\n", " 'folder':'earthengine',\n", " 'scale': 100,\n", " 'region': image.geometry().getInfo()['coordinates'],\n", " 'maxPixels': 1e10\n", " })\n", " task.start()\n", " print('Started Task: ', i+1)" ] }, { "cell_type": "markdown", "metadata": { "colab_type": "text", "id": "J8BtAZftg720" }, "source": [ "## Manage Running/Waiting Tasks\n", "\n", "You can manage tasks as well. Get a list of tasks and get state information on them" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "colab": {}, "colab_type": "code", "id": "AhNgXPb1XGBX" }, "outputs": [], "source": [ "tasks = ee.batch.Task.list()\n", "for task in tasks:\n", " task_id = task.status()['id']\n", " task_state = task.status()['state']\n", " print(task_id, task_state)" ] }, { "cell_type": "markdown", "metadata": { "colab_type": "text", "id": "Y4kf_z5Wg723" }, "source": [ "You can cancel tasks as well" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "colab": { "base_uri": "https://localhost:8080/", "height": 33 }, "colab_type": "code", "executionInfo": { "elapsed": 1496, "status": "ok", "timestamp": 1592477751297, "user": { "displayName": "Ujaval Gandhi", "photoUrl": "https://lh3.googleusercontent.com/a-/AOh14Gh-mr8b4yrvpjGrFWxEv60USCC0iYFAwW7Snk8sIISRZwewKGfTeuUrgVjxkvRoELvKK3NB5xkADIgEizMQyhbKx3A9G77B5XWYhrxzQJk8llQgVyvltfzlA9gPDjhFLCICbfYzj85RXVP-mcV5WeIVqCImzuwDpW2BliZjcAdSb-_WjYErFvJaD8U02SYADAk8ULNl20nkpQdJjCqzj4h_hOeOALl7CABZqMG4Uq3fRxa2Yg-Z0tJEY77GkUsu6lraXZJs25nM5GCgUbEg_JtuEKBePKqsmoQrYPOpdUB8lxDff4Hak2nSyGvFz-LbFoKc0ynGk39b1ycyeKVhjMlXvmvoJqCx4L3yoMP5jf0jMzKJMrvuov2PEUzMfUh2lIVZSaavzJqXT1jRiTtld5pA8DKhXKdtqIjsGCHoBkr5oCh7mxDI2QXjhWspibwWk2NgmXNDhZxSuVzxTWde50sAAkZ8Afm9k2LSygBFFi-uBuWg-dZWCsH-GCPIIn1lCJ_2z_aPgVKNp-llxU__ne74OE1J2Y4ob8Sq9d-QJk1ZglWtLZtffqMzhQBoLkOQgyRJrgerkjG1HArFS37c5LF7KhzUIi0hk9uSIuIBWaRHwMLfChfCWL9uVSmakAPCYwlEjS-JUkJVUSEQA60CUn8yU5f78WOjprA_PvUDNG7uXe6HDDtavrexokboYQVXvw-I952YwnpUSZP6gWzuqRdbhqQCZz51TyEA087lzNi6jP_YJ4GT2bDDVM-6wiLhVoNUdg=s64", "userId": "08961717268892623937" }, "user_tz": -330 }, "id": "-u2_GpPog724", "outputId": "a5e0a7fa-9513-4844-d421-05b5923bd126" }, "outputs": [], "source": [ "if task_state == 'RUNNING' or task_state == 'READY':\n", " task.cancel()\n", " print('Task {} canceled'.format(task_id))\n", "else:\n", " print('Task {} state is {}'.format(task_id, task_state))\n" ] } ], "metadata": { "colab": { "collapsed_sections": [], "name": "02_managing_tasks.ipynb", "provenance": [], "toc_visible": true }, "kernelspec": { "display_name": "Python 3", "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.8.3" } }, "nbformat": 4, "nbformat_minor": 4 }