{ "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "# First steps tutorial" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "In this tutorial we are going to show how to: \n", "\n", "- Extract features from your times series orthomosaics.\n", "\n", "- Calculate basic RGB vegetation indexes.\n", "\n", "- Plot them in a times series manner and display the times series images.\n", "\n", "- Finally we are going to use those Vegetation index to predict with a simple approach when they reached maturity." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Imports" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "import Pynomic" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Data extraction" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Here we define our folder path where we have our orthomosaics ready, that includes: \n", "- All of them are aligned (co-registration).\n", "\n", "- Their names starts with the dates that they have been flown eg: YYYYMMDD_location.tif.\n", "\n", "Define the grid to use. This grid can have additional information from each plot and must have a unique id for each plot. the funciton process_stack_tiff is going to require it. \n", "\n", "Finally we write the names of the bands to identify them in the order that they have been stacked." ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "path_folder_with_orthomosaics ='/your/path/to/folder/flights'\n", "path_to_grid = '/your/path/to/grid.shp'" ] }, { "cell_type": "code", "execution_count": 22, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "1/7 : 20180917_Lamberton_clipped.tif\n", "Raster Coords system: EPSG:32615\n", "Grid Coords system: EPSG:32615\n", "2/7 : 20180815_Lamberton_clipped.tif\n", "Raster Coords system: EPSG:32615\n", "Grid Coords system: EPSG:32615\n", "3/7 : 20180905_Lamberton_clipped.tif\n", "Raster Coords system: EPSG:32615\n", "Grid Coords system: EPSG:32615\n", "4/7 : 20180829_Lamberton_clipped.tif\n", "Raster Coords system: EPSG:32615\n", "Grid Coords system: EPSG:32615\n", "5/7 : 20180914_Lamberton_clipped.tif\n", "Raster Coords system: EPSG:32615\n", "Grid Coords system: EPSG:32615\n", "6/7 : 20180925_Lamberton_clipped.tif\n", "Raster Coords system: EPSG:32615\n", "Grid Coords system: EPSG:32615\n", "7/7 : 20180822_Lamberton_clipped.tif\n", "Raster Coords system: EPSG:32615\n", "Grid Coords system: EPSG:32615\n" ] } ], "source": [ "soybean_maturity_trials = Pynomic.process_stack_tiff(folder_path= path_folder_with_orthomosaics,\n", " grid_path= path_to_grid,\n", " col_id= 'fid',\n", " bands_n=['red','green','blue'] \n", " )" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Data accesion" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Once the porcces has finished we can acces to all the data needed. For example .ldata is going to return us a geopandasdataframe in long format. Contains all the information in the grid and the mean of each band. aswell an *id* column is added as unique identifier of that plot for each date. This column is going to allow us to select the time series of that plot." ] }, { "cell_type": "code", "execution_count": 23, "metadata": {}, "outputs": [ { "data": { "text/html": [ "
| \n", " | id | \n", "fid | \n", "date | \n", "red | \n", "green | \n", "blue | \n", "ID | \n", "geometry | \n", "
|---|---|---|---|---|---|---|---|---|
| 0 | \n", "A1 | \n", "1 | \n", "20180917 | \n", "196.813842 | \n", "147.758235 | \n", "89.487787 | \n", "1 | \n", "POLYGON ((315803.555 4900902.953, 315803.647 4... | \n", "
| 1 | \n", "A2 | \n", "2 | \n", "20180917 | \n", "195.660992 | \n", "144.670984 | \n", "81.919041 | \n", "2 | \n", "POLYGON ((315803.647 4900904.542, 315803.738 4... | \n", "
| 2 | \n", "A3 | \n", "3 | \n", "20180917 | \n", "193.712169 | \n", "142.281756 | \n", "83.328056 | \n", "3 | \n", "POLYGON ((315803.738 4900906.132, 315803.829 4... | \n", "
| 3 | \n", "A4 | \n", "4 | \n", "20180917 | \n", "190.801443 | \n", "144.724556 | \n", "92.567450 | \n", "4 | \n", "POLYGON ((315803.829 4900907.721, 315803.921 4... | \n", "
| 4 | \n", "A5 | \n", "5 | \n", "20180917 | \n", "190.149981 | \n", "142.098723 | \n", "88.865285 | \n", "5 | \n", "POLYGON ((315803.921 4900909.31, 315804.012 49... | \n", "
| ... | \n", "... | \n", "... | \n", "... | \n", "... | \n", "... | \n", "... | \n", "... | \n", "... | \n", "
| 275 | \n", "A36 | \n", "36 | \n", "20180822 | \n", "180.385965 | \n", "160.341837 | \n", "66.221357 | \n", "36 | \n", "POLYGON ((315766.706 4900905.024, 315766.797 4... | \n", "
| 276 | \n", "A37 | \n", "37 | \n", "20180822 | \n", "136.729144 | \n", "132.977354 | \n", "65.556033 | \n", "37 | \n", "POLYGON ((315766.797 4900906.614, 315766.888 4... | \n", "
| 277 | \n", "A38 | \n", "38 | \n", "20180822 | \n", "172.049946 | \n", "149.099982 | \n", "72.017723 | \n", "38 | \n", "POLYGON ((315766.888 4900908.203, 315766.98 49... | \n", "
| 278 | \n", "A39 | \n", "39 | \n", "20180822 | \n", "168.456856 | \n", "148.907537 | \n", "77.885965 | \n", "39 | \n", "POLYGON ((315766.98 4900909.792, 315767.071 49... | \n", "
| 279 | \n", "A40 | \n", "40 | \n", "20180822 | \n", "165.518081 | \n", "158.945220 | \n", "65.520587 | \n", "40 | \n", "POLYGON ((315767.071 4900911.382, 315767.162 4... | \n", "
280 rows × 8 columns
\n", "| \n", " | id | \n", "fid | \n", "date | \n", "red | \n", "green | \n", "blue | \n", "ID | \n", "geometry | \n", "VDVI | \n", "NGRDI | \n", "VARI | \n", "GRRI | \n", "VEG | \n", "MGRVI | \n", "GLI | \n", "ExR | \n", "ExB | \n", "ExG | \n", "
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 0 | \n", "A1 | \n", "1 | \n", "20180917 | \n", "196.813842 | \n", "147.758235 | \n", "89.487787 | \n", "1 | \n", "POLYGON ((315803.555 4900902.953, 315803.647 4... | \n", "0.015838 | \n", "-0.142367 | \n", "-0.192311 | \n", "0.750751 | \n", "0.976066 | \n", "-0.566450 | \n", "-0.032186 | \n", "0.294386 | \n", "-0.051779 | \n", "9.214841 | \n", "
| 1 | \n", "A2 | \n", "2 | \n", "20180917 | \n", "195.660992 | \n", "144.670984 | \n", "81.919041 | \n", "2 | \n", "POLYGON ((315803.647 4900904.542, 315803.738 4... | \n", "0.020747 | \n", "-0.149824 | \n", "-0.197320 | \n", "0.739396 | \n", "0.988077 | \n", "-0.627832 | \n", "-0.042373 | \n", "0.306108 | \n", "-0.071011 | \n", "11.761936 | \n", "
| 2 | \n", "A3 | \n", "3 | \n", "20180917 | \n", "193.712169 | \n", "142.281756 | \n", "83.328056 | \n", "3 | \n", "POLYGON ((315803.738 4900906.132, 315803.829 4... | \n", "0.013396 | \n", "-0.153069 | \n", "-0.203551 | \n", "0.734501 | \n", "0.972729 | \n", "-0.635594 | \n", "-0.027156 | \n", "0.307437 | \n", "-0.061105 | \n", "7.523288 | \n", "
| 3 | \n", "A4 | \n", "4 | \n", "20180917 | \n", "190.801443 | \n", "144.724556 | \n", "92.567450 | \n", "4 | \n", "POLYGON ((315803.829 4900907.721, 315803.921 4... | \n", "0.010615 | \n", "-0.137327 | \n", "-0.189649 | \n", "0.758509 | \n", "0.965081 | \n", "-0.523820 | \n", "-0.021457 | \n", "0.285913 | \n", "-0.035343 | \n", "6.080218 | \n", "
| 4 | \n", "A5 | \n", "5 | \n", "20180917 | \n", "190.149981 | \n", "142.098723 | \n", "88.865285 | \n", "5 | \n", "POLYGON ((315803.921 4900909.31, 315804.012 49... | \n", "0.009201 | \n", "-0.144624 | \n", "-0.197430 | \n", "0.747298 | \n", "0.962731 | \n", "-0.568369 | \n", "-0.018573 | \n", "0.294721 | \n", "-0.042001 | \n", "5.182180 | \n", "
| ... | \n", "... | \n", "... | \n", "... | \n", "... | \n", "... | \n", "... | \n", "... | \n", "... | \n", "... | \n", "... | \n", "... | \n", "... | \n", "... | \n", "... | \n", "... | \n", "... | \n", "... | \n", "... | \n", "
| 275 | \n", "A36 | \n", "36 | \n", "20180822 | \n", "180.385965 | \n", "160.341837 | \n", "66.221357 | \n", "36 | \n", "POLYGON ((315766.706 4900905.024, 315766.797 4... | \n", "0.130579 | \n", "-0.058827 | \n", "-0.073019 | \n", "0.888882 | \n", "1.240987 | \n", "-0.226936 | \n", "-0.300382 | \n", "0.226560 | \n", "-0.166193 | \n", "74.076352 | \n", "
| 276 | \n", "A37 | \n", "37 | \n", "20180822 | \n", "136.729144 | \n", "132.977354 | \n", "65.556033 | \n", "37 | \n", "POLYGON ((315766.797 4900906.614, 315766.888 4... | \n", "0.135976 | \n", "-0.013911 | \n", "-0.018378 | \n", "0.972560 | \n", "1.242300 | \n", "-0.046035 | \n", "-0.314751 | \n", "0.174321 | \n", "-0.122886 | \n", "63.669531 | \n", "
| 277 | \n", "A38 | \n", "38 | \n", "20180822 | \n", "172.049946 | \n", "149.099982 | \n", "72.017723 | \n", "38 | \n", "POLYGON ((315766.888 4900908.203, 315766.98 49... | \n", "0.099826 | \n", "-0.071462 | \n", "-0.092120 | \n", "0.866609 | \n", "1.158160 | \n", "-0.268822 | \n", "-0.221792 | \n", "0.233412 | \n", "-0.122785 | \n", "54.132295 | \n", "
| 278 | \n", "A39 | \n", "39 | \n", "20180822 | \n", "168.456856 | \n", "148.907537 | \n", "77.885965 | \n", "39 | \n", "POLYGON ((315766.98 4900909.792, 315767.071 49... | \n", "0.094591 | \n", "-0.061599 | \n", "-0.081633 | \n", "0.883951 | \n", "1.142859 | \n", "-0.219700 | \n", "-0.208946 | \n", "0.219942 | \n", "-0.100866 | \n", "51.472252 | \n", "
| 279 | \n", "A40 | \n", "40 | \n", "20180822 | \n", "165.518081 | \n", "158.945220 | \n", "65.520587 | \n", "40 | \n", "POLYGON ((315767.071 4900911.382, 315767.162 4... | \n", "0.158220 | \n", "-0.020258 | \n", "-0.025383 | \n", "0.960289 | \n", "1.307446 | \n", "-0.072155 | \n", "-0.375919 | \n", "0.186623 | \n", "-0.172357 | \n", "86.851772 | \n", "
280 rows × 18 columns
\n", "| \n", " | id | \n", "fid | \n", "date | \n", "red | \n", "green | \n", "blue | \n", "ID | \n", "geometry | \n", "VDVI | \n", "NGRDI | \n", "... | \n", "GRRI | \n", "VEG | \n", "MGRVI | \n", "GLI | \n", "ExR | \n", "ExB | \n", "ExG | \n", "num_day | \n", "dpred | \n", "in_range | \n", "
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 0 | \n", "A1 | \n", "1 | \n", "20180917 | \n", "196.813842 | \n", "147.758235 | \n", "89.487787 | \n", "1 | \n", "POLYGON ((315803.555 4900902.953, 315803.647 4... | \n", "0.015838 | \n", "-0.142367 | \n", "... | \n", "0.750751 | \n", "0.976066 | \n", "-0.566450 | \n", "-0.032186 | \n", "0.294386 | \n", "-0.051779 | \n", "9.214841 | \n", "33 | \n", "26.0 | \n", "IN | \n", "
| 1 | \n", "A2 | \n", "2 | \n", "20180917 | \n", "195.660992 | \n", "144.670984 | \n", "81.919041 | \n", "2 | \n", "POLYGON ((315803.647 4900904.542, 315803.738 4... | \n", "0.020747 | \n", "-0.149824 | \n", "... | \n", "0.739396 | \n", "0.988077 | \n", "-0.627832 | \n", "-0.042373 | \n", "0.306108 | \n", "-0.071011 | \n", "11.761936 | \n", "33 | \n", "27.0 | \n", "IN | \n", "
| 2 | \n", "A3 | \n", "3 | \n", "20180917 | \n", "193.712169 | \n", "142.281756 | \n", "83.328056 | \n", "3 | \n", "POLYGON ((315803.738 4900906.132, 315803.829 4... | \n", "0.013396 | \n", "-0.153069 | \n", "... | \n", "0.734501 | \n", "0.972729 | \n", "-0.635594 | \n", "-0.027156 | \n", "0.307437 | \n", "-0.061105 | \n", "7.523288 | \n", "33 | \n", "25.0 | \n", "IN | \n", "
| 3 | \n", "A4 | \n", "4 | \n", "20180917 | \n", "190.801443 | \n", "144.724556 | \n", "92.567450 | \n", "4 | \n", "POLYGON ((315803.829 4900907.721, 315803.921 4... | \n", "0.010615 | \n", "-0.137327 | \n", "... | \n", "0.758509 | \n", "0.965081 | \n", "-0.523820 | \n", "-0.021457 | \n", "0.285913 | \n", "-0.035343 | \n", "6.080218 | \n", "33 | \n", "4.0 | \n", "IN | \n", "
| 4 | \n", "A5 | \n", "5 | \n", "20180917 | \n", "190.149981 | \n", "142.098723 | \n", "88.865285 | \n", "5 | \n", "POLYGON ((315803.921 4900909.31, 315804.012 49... | \n", "0.009201 | \n", "-0.144624 | \n", "... | \n", "0.747298 | \n", "0.962731 | \n", "-0.568369 | \n", "-0.018573 | \n", "0.294721 | \n", "-0.042001 | \n", "5.182180 | \n", "33 | \n", "16.0 | \n", "IN | \n", "
5 rows × 21 columns
\n", "