From 3a9fe8ee9b9b1f0c2515d3b2b793ea0aa7a9cc1e Mon Sep 17 00:00:00 2001 From: Julien Papon Date: Tue, 23 Jul 2024 16:58:11 +0200 Subject: [PATCH] add mr_time_series from MPV5 - test unit - removing mr_time_series from processor api - cleaning notebook --- examples.ipynb | 5035 +---------------- geosyspy/geosys.py | 149 +- .../services/analytics_processor_service.py | 652 +-- geosyspy/services/map_product_service.py | 76 + geosyspy/utils/constants.py | 41 +- tests/test_int_geosys.py | 28 +- .../test_unit_analytics_processor_service.py | 241 +- 7 files changed, 686 insertions(+), 5536 deletions(-) diff --git a/examples.ipynb b/examples.ipynb index 8323ac2..e60c709 100644 --- a/examples.ipynb +++ b/examples.ipynb @@ -46,517 +46,9 @@ }, { "cell_type": "code", - "execution_count": 3, + "execution_count": null, "metadata": {}, - "outputs": [ - { - "name": "stderr", - "output_type": "stream", - "text": [ - "2024-06-14 11:18:21,028 - geosyspy.services.map_product_service - INFO - Calling APIs for coverage\n" - ] - }, - { - "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", - " \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", - " \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", - " \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", - "
coveragePercentmapsimage.idimage.availableBandsimage.sensorimage.spatialResolutionimage.dateseasonField.id
0100.0[{'type': 'COLORCOMPOSITION'}, {'type': 'CVI'}...sentinel-2-l2a|S2A_15TXE_20240606_0_L2A[Blue, Green, Red, Nir, Swir1, Swir2, CoastalB...SENTINEL_210.02024-06-06T17:02:38ZNone
1100.0[{'type': 'COLORCOMPOSITION'}, {'type': 'CVI'}...landsat-c2l2-sr|LC09_L2SP_024032_20240528_2024...[Blue, Green, Red, Nir, Swir1, Swir2, CoastalB...LANDSAT_930.02024-05-28T16:41:01ZNone
2100.0[{'type': 'COLORCOMPOSITION'}, {'type': 'CVI'}...sentinel-2-l2a|S2B_15TXE_20240512_0_L2A[Blue, Green, Red, Nir, Swir1, Swir2, CoastalB...SENTINEL_210.02024-05-12T17:02:32ZNone
3100.0[{'type': 'COLORCOMPOSITION'}, {'type': 'CVI'}...landsat-c2l2-sr|LC09_L2SP_024032_20240512_2024...[Blue, Green, Red, Nir, Swir1, Swir2, CoastalB...LANDSAT_930.02024-05-12T16:41:14ZNone
4100.0[{'type': 'COLORCOMPOSITION'}, {'type': 'CVI'}...sentinel-2-l2a|S2B_15TXE_20240412_0_L2A[Blue, Green, Red, Nir, Swir1, Swir2, CoastalB...SENTINEL_210.02024-04-12T17:02:33ZNone
5100.0[{'type': 'COLORCOMPOSITION'}, {'type': 'CVI'}...sentinel-2-l2a|S2A_15TXE_20240407_0_L2A[Blue, Green, Red, Nir, Swir1, Swir2, CoastalB...SENTINEL_210.02024-04-07T17:02:31ZNone
6100.0[{'type': 'COLORCOMPOSITION'}, {'type': 'CVI'}...sentinel-2-l2a|S2A_15TXE_20240328_0_L2A[Blue, Green, Red, Nir, Swir1, Swir2, CoastalB...SENTINEL_210.02024-03-28T17:02:33ZNone
7100.0[{'type': 'COLORCOMPOSITION'}, {'type': 'CVI'}...sentinel-2-l2a|S2B_15TXE_20240323_0_L2A[Blue, Green, Red, Nir, Swir1, Swir2, CoastalB...SENTINEL_210.02024-03-23T17:02:33ZNone
8100.0[{'type': 'COLORCOMPOSITION'}, {'type': 'CVI'}...landsat-c2l2-sr|LC09_L2SP_024032_20240309_2024...[Blue, Green, Red, Nir, Swir1, Swir2, CoastalB...LANDSAT_930.02024-03-09T16:41:51ZNone
9100.0[{'type': 'COLORCOMPOSITION'}, {'type': 'CVI'}...sentinel-2-l2a|S2B_15TXE_20240303_0_L2A[Blue, Green, Red, Nir, Swir1, Swir2, CoastalB...SENTINEL_210.02024-03-03T17:02:29ZNone
10100.0[{'type': 'COLORCOMPOSITION'}, {'type': 'CVI'}...landsat-c2l2-sr|LC09_L2SP_025032_20240229_2024...[Blue, Green, Red, Nir, Swir1, Swir2, CoastalB...LANDSAT_930.02024-02-29T16:48:00ZNone
11100.0[{'type': 'COLORCOMPOSITION'}, {'type': 'CVI'}...sentinel-2-l2a|S2B_15TXE_20240222_0_L2A[Blue, Green, Red, Nir, Swir1, Swir2, CoastalB...SENTINEL_210.02024-02-22T17:02:33ZNone
12100.0[{'type': 'COLORCOMPOSITION'}, {'type': 'CVI'}...landsat-c2l2-sr|LC09_L2SP_024032_20240222_2024...[Blue, Green, Red, Nir, Swir1, Swir2, CoastalB...LANDSAT_930.02024-02-22T16:41:44ZNone
13100.0[{'type': 'COLORCOMPOSITION'}, {'type': 'CVI'}...sentinel-2-l2a|S2B_15TXE_20240212_0_L2A[Blue, Green, Red, Nir, Swir1, Swir2, CoastalB...SENTINEL_210.02024-02-12T17:02:33ZNone
14100.0[{'type': 'COLORCOMPOSITION'}, {'type': 'CVI'}...landsat-c2l2-sr|LC09_L2SP_024032_20240206_2024...[Blue, Green, Red, Nir, Swir1, Swir2, CoastalB...LANDSAT_930.02024-02-06T16:41:59ZNone
15100.0[{'type': 'COLORCOMPOSITION'}, {'type': 'CVI'}...landsat-c2l2-sr|LC08_L2SP_024032_20231212_2023...[Blue, Green, Red, Nir, Swir1, Swir2, CoastalB...LANDSAT_830.02023-12-12T16:41:50ZNone
16100.0[{'type': 'COLORCOMPOSITION'}, {'type': 'CVI'}...landsat-c2l2-sr|LC09_L2SP_025032_20231211_2023...[Blue, Green, Red, Nir, Swir1, Swir2, CoastalB...LANDSAT_930.02023-12-11T16:48:07ZNone
17100.0[{'type': 'COLORCOMPOSITION'}, {'type': 'CVI'}...landsat-c2l2-sr|LC09_L2SP_025032_20231125_2023...[Blue, Green, Red, Nir, Swir1, Swir2, CoastalB...LANDSAT_930.02023-11-25T16:48:09ZNone
18100.0[{'type': 'COLORCOMPOSITION'}, {'type': 'CVI'}...landsat-c2l2-sr|LC09_L2SP_024032_20231118_2023...[Blue, Green, Red, Nir, Swir1, Swir2, CoastalB...LANDSAT_930.02023-11-18T16:41:53ZNone
19100.0[{'type': 'COLORCOMPOSITION'}, {'type': 'CVI'}...landsat-c2l2-sr|LC08_L2SP_025032_20231117_2023...[Blue, Green, Red, Nir, Swir1, Swir2, CoastalB...LANDSAT_830.02023-11-17T16:48:04ZNone
20100.0[{'type': 'COLORCOMPOSITION'}, {'type': 'CVI'}...landsat-c2l2-sr|LC09_L2SP_025032_20231109_2023...[Blue, Green, Red, Nir, Swir1, Swir2, CoastalB...LANDSAT_930.02023-11-09T16:48:02ZNone
21100.0[{'type': 'COLORCOMPOSITION'}, {'type': 'CVI'}...landsat-c2l2-sr|LC09_L2SP_024032_20231102_2023...[Blue, Green, Red, Nir, Swir1, Swir2, CoastalB...LANDSAT_930.02023-11-02T16:41:47ZNone
22100.0[{'type': 'COLORCOMPOSITION'}, {'type': 'CVI'}...landsat-c2l2-sr|LC09_L2SP_024032_20231017_2023...[Blue, Green, Red, Nir, Swir1, Swir2, CoastalB...LANDSAT_930.02023-10-17T16:41:55ZNone
23100.0[{'type': 'COLORCOMPOSITION'}, {'type': 'CVI'}...landsat-c2l2-sr|LC09_L2SP_024032_20231001_2023...[Blue, Green, Red, Nir, Swir1, Swir2, CoastalB...LANDSAT_930.02023-10-01T16:41:44ZNone
24100.0[{'type': 'COLORCOMPOSITION'}, {'type': 'CVI'}...landsat-c2l2-sr|LC09_L2SP_024032_20230915_2023...[Blue, Green, Red, Nir, Swir1, Swir2, CoastalB...LANDSAT_930.02023-09-15T16:41:45ZNone
25100.0[{'type': 'COLORCOMPOSITION'}, {'type': 'CVI'}...landsat-c2l2-sr|LC08_L2SP_025032_20230914_2023...[Blue, Green, Red, Nir, Swir1, Swir2, CoastalB...LANDSAT_830.02023-09-14T16:47:54ZNone
26100.0[{'type': 'COLORCOMPOSITION'}, {'type': 'CVI'}...landsat-c2l2-sr|LC08_L2SP_024032_20230822_2023...[Blue, Green, Red, Nir, Swir1, Swir2, CoastalB...LANDSAT_830.02023-08-22T16:41:39ZNone
27100.0[{'type': 'COLORCOMPOSITION'}, {'type': 'CVI'}...landsat-c2l2-sr|LC09_L2SP_024032_20230729_2023...[Blue, Green, Red, Nir, Swir1, Swir2, CoastalB...LANDSAT_930.02023-07-29T16:41:20ZNone
28100.0[{'type': 'COLORCOMPOSITION'}, {'type': 'CVI'}...landsat-c2l2-sr|LC09_L2SP_025032_20230720_2023...[Blue, Green, Red, Nir, Swir1, Swir2, CoastalB...LANDSAT_930.02023-07-20T16:47:27ZNone
29100.0[{'type': 'COLORCOMPOSITION'}, {'type': 'CVI'}...landsat-c2l2-sr|LC09_L2SP_025032_20230704_2023...[Blue, Green, Red, Nir, Swir1, Swir2, CoastalB...LANDSAT_930.02023-07-04T16:47:22ZNone
\n", - "
" - ], - "text/plain": [ - " coveragePercent maps \\\n", - "0 100.0 [{'type': 'COLORCOMPOSITION'}, {'type': 'CVI'}... \n", - "1 100.0 [{'type': 'COLORCOMPOSITION'}, {'type': 'CVI'}... \n", - "2 100.0 [{'type': 'COLORCOMPOSITION'}, {'type': 'CVI'}... \n", - "3 100.0 [{'type': 'COLORCOMPOSITION'}, {'type': 'CVI'}... \n", - "4 100.0 [{'type': 'COLORCOMPOSITION'}, {'type': 'CVI'}... \n", - "5 100.0 [{'type': 'COLORCOMPOSITION'}, {'type': 'CVI'}... \n", - "6 100.0 [{'type': 'COLORCOMPOSITION'}, {'type': 'CVI'}... \n", - "7 100.0 [{'type': 'COLORCOMPOSITION'}, {'type': 'CVI'}... \n", - "8 100.0 [{'type': 'COLORCOMPOSITION'}, {'type': 'CVI'}... \n", - "9 100.0 [{'type': 'COLORCOMPOSITION'}, {'type': 'CVI'}... \n", - "10 100.0 [{'type': 'COLORCOMPOSITION'}, {'type': 'CVI'}... \n", - "11 100.0 [{'type': 'COLORCOMPOSITION'}, {'type': 'CVI'}... \n", - "12 100.0 [{'type': 'COLORCOMPOSITION'}, {'type': 'CVI'}... \n", - "13 100.0 [{'type': 'COLORCOMPOSITION'}, {'type': 'CVI'}... \n", - "14 100.0 [{'type': 'COLORCOMPOSITION'}, {'type': 'CVI'}... \n", - "15 100.0 [{'type': 'COLORCOMPOSITION'}, {'type': 'CVI'}... \n", - "16 100.0 [{'type': 'COLORCOMPOSITION'}, {'type': 'CVI'}... \n", - "17 100.0 [{'type': 'COLORCOMPOSITION'}, {'type': 'CVI'}... \n", - "18 100.0 [{'type': 'COLORCOMPOSITION'}, {'type': 'CVI'}... \n", - "19 100.0 [{'type': 'COLORCOMPOSITION'}, {'type': 'CVI'}... \n", - "20 100.0 [{'type': 'COLORCOMPOSITION'}, {'type': 'CVI'}... \n", - "21 100.0 [{'type': 'COLORCOMPOSITION'}, {'type': 'CVI'}... \n", - "22 100.0 [{'type': 'COLORCOMPOSITION'}, {'type': 'CVI'}... \n", - "23 100.0 [{'type': 'COLORCOMPOSITION'}, {'type': 'CVI'}... \n", - "24 100.0 [{'type': 'COLORCOMPOSITION'}, {'type': 'CVI'}... \n", - "25 100.0 [{'type': 'COLORCOMPOSITION'}, {'type': 'CVI'}... \n", - "26 100.0 [{'type': 'COLORCOMPOSITION'}, {'type': 'CVI'}... \n", - "27 100.0 [{'type': 'COLORCOMPOSITION'}, {'type': 'CVI'}... \n", - "28 100.0 [{'type': 'COLORCOMPOSITION'}, {'type': 'CVI'}... \n", - "29 100.0 [{'type': 'COLORCOMPOSITION'}, {'type': 'CVI'}... \n", - "\n", - " image.id \\\n", - "0 sentinel-2-l2a|S2A_15TXE_20240606_0_L2A \n", - "1 landsat-c2l2-sr|LC09_L2SP_024032_20240528_2024... \n", - "2 sentinel-2-l2a|S2B_15TXE_20240512_0_L2A \n", - "3 landsat-c2l2-sr|LC09_L2SP_024032_20240512_2024... \n", - "4 sentinel-2-l2a|S2B_15TXE_20240412_0_L2A \n", - "5 sentinel-2-l2a|S2A_15TXE_20240407_0_L2A \n", - "6 sentinel-2-l2a|S2A_15TXE_20240328_0_L2A \n", - "7 sentinel-2-l2a|S2B_15TXE_20240323_0_L2A \n", - "8 landsat-c2l2-sr|LC09_L2SP_024032_20240309_2024... \n", - "9 sentinel-2-l2a|S2B_15TXE_20240303_0_L2A \n", - "10 landsat-c2l2-sr|LC09_L2SP_025032_20240229_2024... \n", - "11 sentinel-2-l2a|S2B_15TXE_20240222_0_L2A \n", - "12 landsat-c2l2-sr|LC09_L2SP_024032_20240222_2024... \n", - "13 sentinel-2-l2a|S2B_15TXE_20240212_0_L2A \n", - "14 landsat-c2l2-sr|LC09_L2SP_024032_20240206_2024... \n", - "15 landsat-c2l2-sr|LC08_L2SP_024032_20231212_2023... \n", - "16 landsat-c2l2-sr|LC09_L2SP_025032_20231211_2023... \n", - "17 landsat-c2l2-sr|LC09_L2SP_025032_20231125_2023... \n", - "18 landsat-c2l2-sr|LC09_L2SP_024032_20231118_2023... \n", - "19 landsat-c2l2-sr|LC08_L2SP_025032_20231117_2023... \n", - "20 landsat-c2l2-sr|LC09_L2SP_025032_20231109_2023... \n", - "21 landsat-c2l2-sr|LC09_L2SP_024032_20231102_2023... \n", - "22 landsat-c2l2-sr|LC09_L2SP_024032_20231017_2023... \n", - "23 landsat-c2l2-sr|LC09_L2SP_024032_20231001_2023... \n", - "24 landsat-c2l2-sr|LC09_L2SP_024032_20230915_2023... \n", - "25 landsat-c2l2-sr|LC08_L2SP_025032_20230914_2023... \n", - "26 landsat-c2l2-sr|LC08_L2SP_024032_20230822_2023... \n", - "27 landsat-c2l2-sr|LC09_L2SP_024032_20230729_2023... \n", - "28 landsat-c2l2-sr|LC09_L2SP_025032_20230720_2023... \n", - "29 landsat-c2l2-sr|LC09_L2SP_025032_20230704_2023... \n", - "\n", - " image.availableBands image.sensor \\\n", - "0 [Blue, Green, Red, Nir, Swir1, Swir2, CoastalB... SENTINEL_2 \n", - "1 [Blue, Green, Red, Nir, Swir1, Swir2, CoastalB... LANDSAT_9 \n", - "2 [Blue, Green, Red, Nir, Swir1, Swir2, CoastalB... SENTINEL_2 \n", - "3 [Blue, Green, Red, Nir, Swir1, Swir2, CoastalB... LANDSAT_9 \n", - "4 [Blue, Green, Red, Nir, Swir1, Swir2, CoastalB... SENTINEL_2 \n", - "5 [Blue, Green, Red, Nir, Swir1, Swir2, CoastalB... SENTINEL_2 \n", - "6 [Blue, Green, Red, Nir, Swir1, Swir2, CoastalB... SENTINEL_2 \n", - "7 [Blue, Green, Red, Nir, Swir1, Swir2, CoastalB... SENTINEL_2 \n", - "8 [Blue, Green, Red, Nir, Swir1, Swir2, CoastalB... LANDSAT_9 \n", - "9 [Blue, Green, Red, Nir, Swir1, Swir2, CoastalB... SENTINEL_2 \n", - "10 [Blue, Green, Red, Nir, Swir1, Swir2, CoastalB... LANDSAT_9 \n", - "11 [Blue, Green, Red, Nir, Swir1, Swir2, CoastalB... SENTINEL_2 \n", - "12 [Blue, Green, Red, Nir, Swir1, Swir2, CoastalB... LANDSAT_9 \n", - "13 [Blue, Green, Red, Nir, Swir1, Swir2, CoastalB... SENTINEL_2 \n", - "14 [Blue, Green, Red, Nir, Swir1, Swir2, CoastalB... LANDSAT_9 \n", - "15 [Blue, Green, Red, Nir, Swir1, Swir2, CoastalB... LANDSAT_8 \n", - "16 [Blue, Green, Red, Nir, Swir1, Swir2, CoastalB... LANDSAT_9 \n", - "17 [Blue, Green, Red, Nir, Swir1, Swir2, CoastalB... LANDSAT_9 \n", - "18 [Blue, Green, Red, Nir, Swir1, Swir2, CoastalB... LANDSAT_9 \n", - "19 [Blue, Green, Red, Nir, Swir1, Swir2, CoastalB... LANDSAT_8 \n", - "20 [Blue, Green, Red, Nir, Swir1, Swir2, CoastalB... LANDSAT_9 \n", - "21 [Blue, Green, Red, Nir, Swir1, Swir2, CoastalB... LANDSAT_9 \n", - "22 [Blue, Green, Red, Nir, Swir1, Swir2, CoastalB... LANDSAT_9 \n", - "23 [Blue, Green, Red, Nir, Swir1, Swir2, CoastalB... LANDSAT_9 \n", - "24 [Blue, Green, Red, Nir, Swir1, Swir2, CoastalB... LANDSAT_9 \n", - "25 [Blue, Green, Red, Nir, Swir1, Swir2, CoastalB... LANDSAT_8 \n", - "26 [Blue, Green, Red, Nir, Swir1, Swir2, CoastalB... LANDSAT_8 \n", - "27 [Blue, Green, Red, Nir, Swir1, Swir2, CoastalB... LANDSAT_9 \n", - "28 [Blue, Green, Red, Nir, Swir1, Swir2, CoastalB... LANDSAT_9 \n", - "29 [Blue, Green, Red, Nir, Swir1, Swir2, CoastalB... LANDSAT_9 \n", - "\n", - " image.spatialResolution image.date seasonField.id \n", - "0 10.0 2024-06-06T17:02:38Z None \n", - "1 30.0 2024-05-28T16:41:01Z None \n", - "2 10.0 2024-05-12T17:02:32Z None \n", - "3 30.0 2024-05-12T16:41:14Z None \n", - "4 10.0 2024-04-12T17:02:33Z None \n", - "5 10.0 2024-04-07T17:02:31Z None \n", - "6 10.0 2024-03-28T17:02:33Z None \n", - "7 10.0 2024-03-23T17:02:33Z None \n", - "8 30.0 2024-03-09T16:41:51Z None \n", - "9 10.0 2024-03-03T17:02:29Z None \n", - "10 30.0 2024-02-29T16:48:00Z None \n", - "11 10.0 2024-02-22T17:02:33Z None \n", - "12 30.0 2024-02-22T16:41:44Z None \n", - "13 10.0 2024-02-12T17:02:33Z None \n", - "14 30.0 2024-02-06T16:41:59Z None \n", - "15 30.0 2023-12-12T16:41:50Z None \n", - "16 30.0 2023-12-11T16:48:07Z None \n", - "17 30.0 2023-11-25T16:48:09Z None \n", - "18 30.0 2023-11-18T16:41:53Z None \n", - "19 30.0 2023-11-17T16:48:04Z None \n", - "20 30.0 2023-11-09T16:48:02Z None \n", - "21 30.0 2023-11-02T16:41:47Z None \n", - "22 30.0 2023-10-17T16:41:55Z None \n", - "23 30.0 2023-10-01T16:41:44Z None \n", - "24 30.0 2023-09-15T16:41:45Z None \n", - "25 30.0 2023-09-14T16:47:54Z None \n", - "26 30.0 2023-08-22T16:41:39Z None \n", - "27 30.0 2023-07-29T16:41:20Z None \n", - "28 30.0 2023-07-20T16:47:27Z None \n", - "29 30.0 2023-07-04T16:47:22Z None " - ] - }, - "execution_count": 3, - "metadata": {}, - "output_type": "execute_result" - } - ], + "outputs": [], "source": [ "# Get coverage for the polygon\n", "coverage_info_df, images_references = client.get_satellite_coverage_image_references(year_ago, today, collections=[SatelliteImageryCollection.SENTINEL_2, SatelliteImageryCollection.LANDSAT_8, SatelliteImageryCollection.LANDSAT_9],polygon=polygon)\n", @@ -565,20 +57,9 @@ }, { "cell_type": "code", - "execution_count": 4, + "execution_count": null, "metadata": {}, - "outputs": [ - { - "data": { - "image/png": "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", - "text/plain": [ - "" - ] - }, - "metadata": {}, - "output_type": "display_data" - } - ], + "outputs": [], "source": [ "# get product from coverage\n", "season_field_id = 'y3mxlxx'\n", @@ -594,132 +75,9 @@ }, { "cell_type": "code", - "execution_count": 5, + "execution_count": null, "metadata": {}, - "outputs": [ - { - "name": "stderr", - "output_type": "stream", - "text": [ - "2024-06-14 11:18:23,405 - geosyspy.services.vegetation_time_series_service - INFO - Calling APIs for aggregated time series\n", - "c:\\Users\\ajd\\Documents\\GitHub\\GeosysPy\\geosyspy\\services\\vegetation_time_series_service.py:57: FutureWarning: Passing literal json to 'read_json' is deprecated and will be removed in a future version. To read from a literal string, wrap it in a 'StringIO' object.\n", - " df = pd.read_json(json.dumps(dict_response))\n" - ] - }, - { - "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", - "
indexvalue
date
2023-06-14NDVI0.642264
2023-06-15NDVI0.652966
2023-06-16NDVI0.663388
2023-06-17NDVI0.673508
2023-06-18NDVI0.683310
.........
2024-06-09NDVI0.485644
2024-06-10NDVI0.494038
2024-06-11NDVI0.504215
2024-06-12NDVI0.516175
2024-06-13NDVI0.529917
\n", - "

366 rows × 2 columns

\n", - "
" - ], - "text/plain": [ - " index value\n", - "date \n", - "2023-06-14 NDVI 0.642264\n", - "2023-06-15 NDVI 0.652966\n", - "2023-06-16 NDVI 0.663388\n", - "2023-06-17 NDVI 0.673508\n", - "2023-06-18 NDVI 0.683310\n", - "... ... ...\n", - "2024-06-09 NDVI 0.485644\n", - "2024-06-10 NDVI 0.494038\n", - "2024-06-11 NDVI 0.504215\n", - "2024-06-12 NDVI 0.516175\n", - "2024-06-13 NDVI 0.529917\n", - "\n", - "[366 rows x 2 columns]" - ] - }, - "execution_count": 5, - "metadata": {}, - "output_type": "execute_result" - } - ], + "outputs": [], "source": [ "# Get aggregated NDVI time series\n", "client.get_time_series(year_ago, today, collection=SatelliteImageryCollection.MODIS, indicators=[\"NDVI\"],polygon=polygon)" @@ -727,132 +85,9 @@ }, { "cell_type": "code", - "execution_count": 6, + "execution_count": null, "metadata": {}, - "outputs": [ - { - "name": "stderr", - "output_type": "stream", - "text": [ - "2024-06-14 11:18:25,268 - geosyspy.services.vegetation_time_series_service - INFO - Calling APIs for aggregated time series\n", - "c:\\Users\\ajd\\Documents\\GitHub\\GeosysPy\\geosyspy\\services\\vegetation_time_series_service.py:57: FutureWarning: Passing literal json to 'read_json' is deprecated and will be removed in a future version. To read from a literal string, wrap it in a 'StringIO' object.\n", - " df = pd.read_json(json.dumps(dict_response))\n" - ] - }, - { - "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", - "
indexvalue
date
2023-06-14EVI0.443899
2023-06-15EVI0.450635
2023-06-16EVI0.457103
2023-06-17EVI0.463278
2023-06-18EVI0.469148
.........
2024-06-09EVI0.324216
2024-06-10EVI0.331350
2024-06-11EVI0.339898
2024-06-12EVI0.349862
2024-06-13EVI0.361241
\n", - "

366 rows × 2 columns

\n", - "
" - ], - "text/plain": [ - " index value\n", - "date \n", - "2023-06-14 EVI 0.443899\n", - "2023-06-15 EVI 0.450635\n", - "2023-06-16 EVI 0.457103\n", - "2023-06-17 EVI 0.463278\n", - "2023-06-18 EVI 0.469148\n", - "... ... ...\n", - "2024-06-09 EVI 0.324216\n", - "2024-06-10 EVI 0.331350\n", - "2024-06-11 EVI 0.339898\n", - "2024-06-12 EVI 0.349862\n", - "2024-06-13 EVI 0.361241\n", - "\n", - "[366 rows x 2 columns]" - ] - }, - "execution_count": 6, - "metadata": {}, - "output_type": "execute_result" - } - ], + "outputs": [], "source": [ "# Get aggregated EVI time series\n", "client.get_time_series(year_ago, today, collection=SatelliteImageryCollection.MODIS, indicators=[\"EVI\"], polygon=polygon)" @@ -860,124 +95,9 @@ }, { "cell_type": "code", - "execution_count": 7, + "execution_count": null, "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", - "
precipitation.cumulativeprecipitation.probabilitiestemperature.standardLocation
date
2024-06-14T00:00:00Z0.14960690.065.786POINT (0.0872845021171696 43.69457564315705)
2024-06-15T00:00:00Z0.07086680.061.736POINT (0.0872845021171696 43.69457564315705)
2024-06-16T00:00:00Z0.00000010.063.554POINT (0.0872845021171696 43.69457564315705)
2024-06-17T00:00:00Z0.03937039.469.350POINT (0.0872845021171696 43.69457564315705)
2024-06-18T00:00:00Z0.23228370.068.918POINT (0.0872845021171696 43.69457564315705)
2024-06-19T00:00:00Z0.38582770.063.410POINT (0.0872845021171696 43.69457564315705)
\n", - "
" - ], - "text/plain": [ - " precipitation.cumulative precipitation.probabilities \\\n", - "date \n", - "2024-06-14T00:00:00Z 0.149606 90.0 \n", - "2024-06-15T00:00:00Z 0.070866 80.0 \n", - "2024-06-16T00:00:00Z 0.000000 10.0 \n", - "2024-06-17T00:00:00Z 0.039370 39.4 \n", - "2024-06-18T00:00:00Z 0.232283 70.0 \n", - "2024-06-19T00:00:00Z 0.385827 70.0 \n", - "\n", - " temperature.standard \\\n", - "date \n", - "2024-06-14T00:00:00Z 65.786 \n", - "2024-06-15T00:00:00Z 61.736 \n", - "2024-06-16T00:00:00Z 63.554 \n", - "2024-06-17T00:00:00Z 69.350 \n", - "2024-06-18T00:00:00Z 68.918 \n", - "2024-06-19T00:00:00Z 63.410 \n", - "\n", - " Location \n", - "date \n", - "2024-06-14T00:00:00Z POINT (0.0872845021171696 43.69457564315705) \n", - "2024-06-15T00:00:00Z POINT (0.0872845021171696 43.69457564315705) \n", - "2024-06-16T00:00:00Z POINT (0.0872845021171696 43.69457564315705) \n", - "2024-06-17T00:00:00Z POINT (0.0872845021171696 43.69457564315705) \n", - "2024-06-18T00:00:00Z POINT (0.0872845021171696 43.69457564315705) \n", - "2024-06-19T00:00:00Z POINT (0.0872845021171696 43.69457564315705) " - ] - }, - "execution_count": 7, - "metadata": {}, - "output_type": "execute_result" - } - ], + "outputs": [], "source": [ "# Get aggregated 'Forecast daily' time series\n", "indicators = ['Precipitation', 'Temperature','Date']\n", @@ -987,484 +107,9 @@ }, { "cell_type": "code", - "execution_count": 8, + "execution_count": null, "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", - " \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", - " \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", - " \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", - "
precipitation.cumulativeprecipitation.probabilitiestemperature.standardLocation
date
2024-06-14T07:00:00Z0.00000014.662.87POINT (0.0872845021171696 43.69457564315705)
2024-06-14T08:00:00Z0.00000010.065.03POINT (0.0872845021171696 43.69457564315705)
2024-06-14T09:00:00Z0.00000010.067.55POINT (0.0872845021171696 43.69457564315705)
2024-06-14T10:00:00Z0.00000018.270.07POINT (0.0872845021171696 43.69457564315705)
2024-06-14T11:00:00Z0.00000017.871.87POINT (0.0872845021171696 43.69457564315705)
2024-06-14T12:00:00Z0.00000018.173.49POINT (0.0872845021171696 43.69457564315705)
2024-06-14T13:00:00Z0.00000010.074.03POINT (0.0872845021171696 43.69457564315705)
2024-06-14T14:00:00Z0.0000000.075.29POINT (0.0872845021171696 43.69457564315705)
2024-06-14T15:00:00Z0.00000022.375.83POINT (0.0872845021171696 43.69457564315705)
2024-06-14T16:00:00Z0.00393738.074.21POINT (0.0872845021171696 43.69457564315705)
2024-06-14T17:00:00Z0.00393760.471.33POINT (0.0872845021171696 43.69457564315705)
2024-06-14T18:00:00Z0.01574882.368.27POINT (0.0872845021171696 43.69457564315705)
2024-06-14T19:00:00Z0.02755990.064.67POINT (0.0872845021171696 43.69457564315705)
2024-06-14T20:00:00Z0.04724490.061.97POINT (0.0872845021171696 43.69457564315705)
2024-06-14T21:00:00Z0.04724490.060.17POINT (0.0872845021171696 43.69457564315705)
2024-06-14T22:00:00Z0.03937080.059.45POINT (0.0872845021171696 43.69457564315705)
2024-06-14T23:00:00Z0.01574880.058.91POINT (0.0872845021171696 43.69457564315705)
2024-06-15T00:00:00Z0.00393755.158.01POINT (0.0872845021171696 43.69457564315705)
2024-06-15T01:00:00Z0.00393732.358.01POINT (0.0872845021171696 43.69457564315705)
2024-06-15T02:00:00Z0.00000026.958.01POINT (0.0872845021171696 43.69457564315705)
2024-06-15T03:00:00Z0.00000017.257.83POINT (0.0872845021171696 43.69457564315705)
2024-06-15T04:00:00Z0.00000017.157.83POINT (0.0872845021171696 43.69457564315705)
2024-06-15T05:00:00Z0.00000019.557.65POINT (0.0872845021171696 43.69457564315705)
2024-06-15T06:00:00Z0.00000017.658.19POINT (0.0872845021171696 43.69457564315705)
2024-06-15T07:00:00Z0.00000020.959.09POINT (0.0872845021171696 43.69457564315705)
2024-06-15T08:00:00Z0.00000021.160.53POINT (0.0872845021171696 43.69457564315705)
2024-06-15T09:00:00Z0.00000010.061.97POINT (0.0872845021171696 43.69457564315705)
2024-06-15T10:00:00Z0.00000010.063.95POINT (0.0872845021171696 43.69457564315705)
2024-06-15T11:00:00Z0.00000010.065.93POINT (0.0872845021171696 43.69457564315705)
2024-06-15T12:00:00Z0.0000000.067.19POINT (0.0872845021171696 43.69457564315705)
2024-06-15T13:00:00Z0.0000000.067.91POINT (0.0872845021171696 43.69457564315705)
2024-06-15T14:00:00Z0.0000000.068.27POINT (0.0872845021171696 43.69457564315705)
2024-06-15T15:00:00Z0.0000000.068.63POINT (0.0872845021171696 43.69457564315705)
2024-06-15T16:00:00Z0.0000000.067.01POINT (0.0872845021171696 43.69457564315705)
2024-06-15T17:00:00Z0.0000000.065.75POINT (0.0872845021171696 43.69457564315705)
2024-06-15T18:00:00Z0.0000000.064.13POINT (0.0872845021171696 43.69457564315705)
2024-06-15T19:00:00Z0.0000000.061.79POINT (0.0872845021171696 43.69457564315705)
2024-06-15T20:00:00Z0.0000000.059.09POINT (0.0872845021171696 43.69457564315705)
2024-06-15T21:00:00Z0.0000000.056.93POINT (0.0872845021171696 43.69457564315705)
2024-06-15T22:00:00Z0.0000000.055.67POINT (0.0872845021171696 43.69457564315705)
2024-06-15T23:00:00Z0.0000000.054.59POINT (0.0872845021171696 43.69457564315705)
2024-06-16T00:00:00Z0.0000000.052.97POINT (0.0872845021171696 43.69457564315705)
\n", - "
" - ], - "text/plain": [ - " precipitation.cumulative precipitation.probabilities \\\n", - "date \n", - "2024-06-14T07:00:00Z 0.000000 14.6 \n", - "2024-06-14T08:00:00Z 0.000000 10.0 \n", - "2024-06-14T09:00:00Z 0.000000 10.0 \n", - "2024-06-14T10:00:00Z 0.000000 18.2 \n", - "2024-06-14T11:00:00Z 0.000000 17.8 \n", - "2024-06-14T12:00:00Z 0.000000 18.1 \n", - "2024-06-14T13:00:00Z 0.000000 10.0 \n", - "2024-06-14T14:00:00Z 0.000000 0.0 \n", - "2024-06-14T15:00:00Z 0.000000 22.3 \n", - "2024-06-14T16:00:00Z 0.003937 38.0 \n", - "2024-06-14T17:00:00Z 0.003937 60.4 \n", - "2024-06-14T18:00:00Z 0.015748 82.3 \n", - "2024-06-14T19:00:00Z 0.027559 90.0 \n", - "2024-06-14T20:00:00Z 0.047244 90.0 \n", - "2024-06-14T21:00:00Z 0.047244 90.0 \n", - "2024-06-14T22:00:00Z 0.039370 80.0 \n", - "2024-06-14T23:00:00Z 0.015748 80.0 \n", - "2024-06-15T00:00:00Z 0.003937 55.1 \n", - "2024-06-15T01:00:00Z 0.003937 32.3 \n", - "2024-06-15T02:00:00Z 0.000000 26.9 \n", - "2024-06-15T03:00:00Z 0.000000 17.2 \n", - "2024-06-15T04:00:00Z 0.000000 17.1 \n", - "2024-06-15T05:00:00Z 0.000000 19.5 \n", - "2024-06-15T06:00:00Z 0.000000 17.6 \n", - "2024-06-15T07:00:00Z 0.000000 20.9 \n", - "2024-06-15T08:00:00Z 0.000000 21.1 \n", - "2024-06-15T09:00:00Z 0.000000 10.0 \n", - "2024-06-15T10:00:00Z 0.000000 10.0 \n", - "2024-06-15T11:00:00Z 0.000000 10.0 \n", - "2024-06-15T12:00:00Z 0.000000 0.0 \n", - "2024-06-15T13:00:00Z 0.000000 0.0 \n", - "2024-06-15T14:00:00Z 0.000000 0.0 \n", - "2024-06-15T15:00:00Z 0.000000 0.0 \n", - "2024-06-15T16:00:00Z 0.000000 0.0 \n", - "2024-06-15T17:00:00Z 0.000000 0.0 \n", - "2024-06-15T18:00:00Z 0.000000 0.0 \n", - "2024-06-15T19:00:00Z 0.000000 0.0 \n", - "2024-06-15T20:00:00Z 0.000000 0.0 \n", - "2024-06-15T21:00:00Z 0.000000 0.0 \n", - "2024-06-15T22:00:00Z 0.000000 0.0 \n", - "2024-06-15T23:00:00Z 0.000000 0.0 \n", - "2024-06-16T00:00:00Z 0.000000 0.0 \n", - "\n", - " temperature.standard \\\n", - "date \n", - "2024-06-14T07:00:00Z 62.87 \n", - "2024-06-14T08:00:00Z 65.03 \n", - "2024-06-14T09:00:00Z 67.55 \n", - "2024-06-14T10:00:00Z 70.07 \n", - "2024-06-14T11:00:00Z 71.87 \n", - "2024-06-14T12:00:00Z 73.49 \n", - "2024-06-14T13:00:00Z 74.03 \n", - "2024-06-14T14:00:00Z 75.29 \n", - "2024-06-14T15:00:00Z 75.83 \n", - "2024-06-14T16:00:00Z 74.21 \n", - "2024-06-14T17:00:00Z 71.33 \n", - "2024-06-14T18:00:00Z 68.27 \n", - "2024-06-14T19:00:00Z 64.67 \n", - "2024-06-14T20:00:00Z 61.97 \n", - "2024-06-14T21:00:00Z 60.17 \n", - "2024-06-14T22:00:00Z 59.45 \n", - "2024-06-14T23:00:00Z 58.91 \n", - "2024-06-15T00:00:00Z 58.01 \n", - "2024-06-15T01:00:00Z 58.01 \n", - "2024-06-15T02:00:00Z 58.01 \n", - "2024-06-15T03:00:00Z 57.83 \n", - "2024-06-15T04:00:00Z 57.83 \n", - "2024-06-15T05:00:00Z 57.65 \n", - "2024-06-15T06:00:00Z 58.19 \n", - "2024-06-15T07:00:00Z 59.09 \n", - "2024-06-15T08:00:00Z 60.53 \n", - "2024-06-15T09:00:00Z 61.97 \n", - "2024-06-15T10:00:00Z 63.95 \n", - "2024-06-15T11:00:00Z 65.93 \n", - "2024-06-15T12:00:00Z 67.19 \n", - "2024-06-15T13:00:00Z 67.91 \n", - "2024-06-15T14:00:00Z 68.27 \n", - "2024-06-15T15:00:00Z 68.63 \n", - "2024-06-15T16:00:00Z 67.01 \n", - "2024-06-15T17:00:00Z 65.75 \n", - "2024-06-15T18:00:00Z 64.13 \n", - "2024-06-15T19:00:00Z 61.79 \n", - "2024-06-15T20:00:00Z 59.09 \n", - "2024-06-15T21:00:00Z 56.93 \n", - "2024-06-15T22:00:00Z 55.67 \n", - "2024-06-15T23:00:00Z 54.59 \n", - "2024-06-16T00:00:00Z 52.97 \n", - "\n", - " Location \n", - "date \n", - "2024-06-14T07:00:00Z POINT (0.0872845021171696 43.69457564315705) \n", - "2024-06-14T08:00:00Z POINT (0.0872845021171696 43.69457564315705) \n", - "2024-06-14T09:00:00Z POINT (0.0872845021171696 43.69457564315705) \n", - "2024-06-14T10:00:00Z POINT (0.0872845021171696 43.69457564315705) \n", - "2024-06-14T11:00:00Z POINT (0.0872845021171696 43.69457564315705) \n", - "2024-06-14T12:00:00Z POINT (0.0872845021171696 43.69457564315705) \n", - "2024-06-14T13:00:00Z POINT (0.0872845021171696 43.69457564315705) \n", - "2024-06-14T14:00:00Z POINT (0.0872845021171696 43.69457564315705) \n", - "2024-06-14T15:00:00Z POINT (0.0872845021171696 43.69457564315705) \n", - "2024-06-14T16:00:00Z POINT (0.0872845021171696 43.69457564315705) \n", - "2024-06-14T17:00:00Z POINT (0.0872845021171696 43.69457564315705) \n", - "2024-06-14T18:00:00Z POINT (0.0872845021171696 43.69457564315705) \n", - "2024-06-14T19:00:00Z POINT (0.0872845021171696 43.69457564315705) \n", - "2024-06-14T20:00:00Z POINT (0.0872845021171696 43.69457564315705) \n", - "2024-06-14T21:00:00Z POINT (0.0872845021171696 43.69457564315705) \n", - "2024-06-14T22:00:00Z POINT (0.0872845021171696 43.69457564315705) \n", - "2024-06-14T23:00:00Z POINT (0.0872845021171696 43.69457564315705) \n", - "2024-06-15T00:00:00Z POINT (0.0872845021171696 43.69457564315705) \n", - "2024-06-15T01:00:00Z POINT (0.0872845021171696 43.69457564315705) \n", - "2024-06-15T02:00:00Z POINT (0.0872845021171696 43.69457564315705) \n", - "2024-06-15T03:00:00Z POINT (0.0872845021171696 43.69457564315705) \n", - "2024-06-15T04:00:00Z POINT (0.0872845021171696 43.69457564315705) \n", - "2024-06-15T05:00:00Z POINT (0.0872845021171696 43.69457564315705) \n", - "2024-06-15T06:00:00Z POINT (0.0872845021171696 43.69457564315705) \n", - "2024-06-15T07:00:00Z POINT (0.0872845021171696 43.69457564315705) \n", - "2024-06-15T08:00:00Z POINT (0.0872845021171696 43.69457564315705) \n", - "2024-06-15T09:00:00Z POINT (0.0872845021171696 43.69457564315705) \n", - "2024-06-15T10:00:00Z POINT (0.0872845021171696 43.69457564315705) \n", - "2024-06-15T11:00:00Z POINT (0.0872845021171696 43.69457564315705) \n", - "2024-06-15T12:00:00Z POINT (0.0872845021171696 43.69457564315705) \n", - "2024-06-15T13:00:00Z POINT (0.0872845021171696 43.69457564315705) \n", - "2024-06-15T14:00:00Z POINT (0.0872845021171696 43.69457564315705) \n", - "2024-06-15T15:00:00Z POINT (0.0872845021171696 43.69457564315705) \n", - "2024-06-15T16:00:00Z POINT (0.0872845021171696 43.69457564315705) \n", - "2024-06-15T17:00:00Z POINT (0.0872845021171696 43.69457564315705) \n", - "2024-06-15T18:00:00Z POINT (0.0872845021171696 43.69457564315705) \n", - "2024-06-15T19:00:00Z POINT (0.0872845021171696 43.69457564315705) \n", - "2024-06-15T20:00:00Z POINT (0.0872845021171696 43.69457564315705) \n", - "2024-06-15T21:00:00Z POINT (0.0872845021171696 43.69457564315705) \n", - "2024-06-15T22:00:00Z POINT (0.0872845021171696 43.69457564315705) \n", - "2024-06-15T23:00:00Z POINT (0.0872845021171696 43.69457564315705) \n", - "2024-06-16T00:00:00Z POINT (0.0872845021171696 43.69457564315705) " - ] - }, - "execution_count": 8, - "metadata": {}, - "output_type": "execute_result" - } - ], + "outputs": [], "source": [ "# Get aggregated 'Forecast hourly' time series\n", "indicators = ['Precipitation', 'Temperature']\n", @@ -1474,315 +119,9 @@ }, { "cell_type": "code", - "execution_count": 9, + "execution_count": null, "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", - " \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", - " \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", - "
precipitation.cumulativetemperature.standardLocation
date
2022-01-01T00:00:00Z0.35039424.386POINT (-91.17139663702373 40.29511916279967)
2022-01-02T00:00:00Z0.0118116.008POINT (-91.17139663702373 40.29511916279967)
2022-01-03T00:00:00Z0.00000013.874POINT (-91.17139663702373 40.29511916279967)
2022-01-04T00:00:00Z0.00000030.776POINT (-91.17139663702373 40.29511916279967)
2022-01-05T00:00:00Z0.00000015.548POINT (-91.17139663702373 40.29511916279967)
2022-01-06T00:00:00Z0.0000004.460POINT (-91.17139663702373 40.29511916279967)
2022-01-07T00:00:00Z0.0000004.586POINT (-91.17139663702373 40.29511916279967)
2022-01-08T00:00:00Z0.03149625.574POINT (-91.17139663702373 40.29511916279967)
2022-01-09T00:00:00Z0.00000019.238POINT (-91.17139663702373 40.29511916279967)
2022-01-10T00:00:00Z0.00000015.980POINT (-91.17139663702373 40.29511916279967)
2022-01-11T00:00:00Z0.00000028.454POINT (-91.17139663702373 40.29511916279967)
2022-01-12T00:00:00Z0.00000038.498POINT (-91.17139663702373 40.29511916279967)
2022-01-13T00:00:00Z0.00000036.392POINT (-91.17139663702373 40.29511916279967)
2022-01-14T00:00:00Z0.31496131.334POINT (-91.17139663702373 40.29511916279967)
2022-01-15T00:00:00Z0.23622024.062POINT (-91.17139663702373 40.29511916279967)
2022-01-16T00:00:00Z0.00000015.656POINT (-91.17139663702373 40.29511916279967)
2022-01-17T00:00:00Z0.00000026.114POINT (-91.17139663702373 40.29511916279967)
2022-01-18T00:00:00Z0.00000034.304POINT (-91.17139663702373 40.29511916279967)
2022-01-19T00:00:00Z0.00000017.168POINT (-91.17139663702373 40.29511916279967)
2022-01-20T00:00:00Z0.0000003.326POINT (-91.17139663702373 40.29511916279967)
2022-01-21T00:00:00Z0.0000006.926POINT (-91.17139663702373 40.29511916279967)
2022-01-22T00:00:00Z0.00000026.384POINT (-91.17139663702373 40.29511916279967)
2022-01-23T00:00:00Z0.00000024.656POINT (-91.17139663702373 40.29511916279967)
2022-01-24T00:00:00Z0.00000025.898POINT (-91.17139663702373 40.29511916279967)
2022-01-25T00:00:00Z0.0000007.556POINT (-91.17139663702373 40.29511916279967)
2022-01-26T00:00:00Z0.0000009.662POINT (-91.17139663702373 40.29511916279967)
2022-01-27T00:00:00Z0.00000030.272POINT (-91.17139663702373 40.29511916279967)
2022-01-28T00:00:00Z0.00000017.852POINT (-91.17139663702373 40.29511916279967)
2022-01-29T00:00:00Z0.00000022.478POINT (-91.17139663702373 40.29511916279967)
2022-01-30T00:00:00Z0.00000024.512POINT (-91.17139663702373 40.29511916279967)
2022-01-31T00:00:00Z0.00000029.894POINT (-91.17139663702373 40.29511916279967)
2022-02-01T00:00:00Z0.21653538.642POINT (-91.17139663702373 40.29511916279967)
\n", - "
" - ], - "text/plain": [ - " precipitation.cumulative temperature.standard \\\n", - "date \n", - "2022-01-01T00:00:00Z 0.350394 24.386 \n", - "2022-01-02T00:00:00Z 0.011811 6.008 \n", - "2022-01-03T00:00:00Z 0.000000 13.874 \n", - "2022-01-04T00:00:00Z 0.000000 30.776 \n", - "2022-01-05T00:00:00Z 0.000000 15.548 \n", - "2022-01-06T00:00:00Z 0.000000 4.460 \n", - "2022-01-07T00:00:00Z 0.000000 4.586 \n", - "2022-01-08T00:00:00Z 0.031496 25.574 \n", - "2022-01-09T00:00:00Z 0.000000 19.238 \n", - "2022-01-10T00:00:00Z 0.000000 15.980 \n", - "2022-01-11T00:00:00Z 0.000000 28.454 \n", - "2022-01-12T00:00:00Z 0.000000 38.498 \n", - "2022-01-13T00:00:00Z 0.000000 36.392 \n", - "2022-01-14T00:00:00Z 0.314961 31.334 \n", - "2022-01-15T00:00:00Z 0.236220 24.062 \n", - "2022-01-16T00:00:00Z 0.000000 15.656 \n", - "2022-01-17T00:00:00Z 0.000000 26.114 \n", - "2022-01-18T00:00:00Z 0.000000 34.304 \n", - "2022-01-19T00:00:00Z 0.000000 17.168 \n", - "2022-01-20T00:00:00Z 0.000000 3.326 \n", - "2022-01-21T00:00:00Z 0.000000 6.926 \n", - "2022-01-22T00:00:00Z 0.000000 26.384 \n", - "2022-01-23T00:00:00Z 0.000000 24.656 \n", - "2022-01-24T00:00:00Z 0.000000 25.898 \n", - "2022-01-25T00:00:00Z 0.000000 7.556 \n", - "2022-01-26T00:00:00Z 0.000000 9.662 \n", - "2022-01-27T00:00:00Z 0.000000 30.272 \n", - "2022-01-28T00:00:00Z 0.000000 17.852 \n", - "2022-01-29T00:00:00Z 0.000000 22.478 \n", - "2022-01-30T00:00:00Z 0.000000 24.512 \n", - "2022-01-31T00:00:00Z 0.000000 29.894 \n", - "2022-02-01T00:00:00Z 0.216535 38.642 \n", - "\n", - " Location \n", - "date \n", - "2022-01-01T00:00:00Z POINT (-91.17139663702373 40.29511916279967) \n", - "2022-01-02T00:00:00Z POINT (-91.17139663702373 40.29511916279967) \n", - "2022-01-03T00:00:00Z POINT (-91.17139663702373 40.29511916279967) \n", - "2022-01-04T00:00:00Z POINT (-91.17139663702373 40.29511916279967) \n", - "2022-01-05T00:00:00Z POINT (-91.17139663702373 40.29511916279967) \n", - "2022-01-06T00:00:00Z POINT (-91.17139663702373 40.29511916279967) \n", - "2022-01-07T00:00:00Z POINT (-91.17139663702373 40.29511916279967) \n", - "2022-01-08T00:00:00Z POINT (-91.17139663702373 40.29511916279967) \n", - "2022-01-09T00:00:00Z POINT (-91.17139663702373 40.29511916279967) \n", - "2022-01-10T00:00:00Z POINT (-91.17139663702373 40.29511916279967) \n", - "2022-01-11T00:00:00Z POINT (-91.17139663702373 40.29511916279967) \n", - "2022-01-12T00:00:00Z POINT (-91.17139663702373 40.29511916279967) \n", - "2022-01-13T00:00:00Z POINT (-91.17139663702373 40.29511916279967) \n", - "2022-01-14T00:00:00Z POINT (-91.17139663702373 40.29511916279967) \n", - "2022-01-15T00:00:00Z POINT (-91.17139663702373 40.29511916279967) \n", - "2022-01-16T00:00:00Z POINT (-91.17139663702373 40.29511916279967) \n", - "2022-01-17T00:00:00Z POINT (-91.17139663702373 40.29511916279967) \n", - "2022-01-18T00:00:00Z POINT (-91.17139663702373 40.29511916279967) \n", - "2022-01-19T00:00:00Z POINT (-91.17139663702373 40.29511916279967) \n", - "2022-01-20T00:00:00Z POINT (-91.17139663702373 40.29511916279967) \n", - "2022-01-21T00:00:00Z POINT (-91.17139663702373 40.29511916279967) \n", - "2022-01-22T00:00:00Z POINT (-91.17139663702373 40.29511916279967) \n", - "2022-01-23T00:00:00Z POINT (-91.17139663702373 40.29511916279967) \n", - "2022-01-24T00:00:00Z POINT (-91.17139663702373 40.29511916279967) \n", - "2022-01-25T00:00:00Z POINT (-91.17139663702373 40.29511916279967) \n", - "2022-01-26T00:00:00Z POINT (-91.17139663702373 40.29511916279967) \n", - "2022-01-27T00:00:00Z POINT (-91.17139663702373 40.29511916279967) \n", - "2022-01-28T00:00:00Z POINT (-91.17139663702373 40.29511916279967) \n", - "2022-01-29T00:00:00Z POINT (-91.17139663702373 40.29511916279967) \n", - "2022-01-30T00:00:00Z POINT (-91.17139663702373 40.29511916279967) \n", - "2022-01-31T00:00:00Z POINT (-91.17139663702373 40.29511916279967) \n", - "2022-02-01T00:00:00Z POINT (-91.17139663702373 40.29511916279967) " - ] - }, - "execution_count": 9, - "metadata": {}, - "output_type": "execute_result" - } - ], + "outputs": [], "source": [ "# Get aggregated 'Historical daily' time series\n", "indicators = ['Precipitation', 'Temperature']\n", @@ -1793,171 +132,9 @@ }, { "cell_type": "code", - "execution_count": 10, + "execution_count": null, "metadata": {}, - "outputs": [ - { - "name": "stderr", - "output_type": "stream", - "text": [ - "2024-06-14 11:18:29,143 - geosyspy.services.vegetation_time_series_service - INFO - Calling APIs for time series by the pixel\n", - "2024-06-14 11:18:30,182 - geosyspy.services.vegetation_time_series_service - INFO - Computing X and Y coordinates per pixel... \n", - "2024-06-14 11:18:30,199 - geosyspy.services.vegetation_time_series_service - INFO - Done ! \n" - ] - }, - { - "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", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - "
indexvaluepixel.idXY
date
2023-06-14NDVI0.649486mh11v4i222j4657-6.620275e+06-1.664613e+07
2023-06-14NDVI0.635043mh11v4i221j4658-6.620507e+06-1.664636e+07
2023-06-15NDVI0.660745mh11v4i222j4657-6.620275e+06-1.664613e+07
2023-06-15NDVI0.645188mh11v4i221j4658-6.620507e+06-1.664636e+07
2023-06-16NDVI0.671886mh11v4i222j4657-6.620275e+06-1.664613e+07
..................
2024-06-11NDVI0.588776mh11v4i221j4658-6.620507e+06-1.664636e+07
2024-06-12NDVI0.412464mh11v4i222j4657-6.620275e+06-1.664613e+07
2024-06-12NDVI0.619886mh11v4i221j4658-6.620507e+06-1.664636e+07
2024-06-13NDVI0.405473mh11v4i222j4657-6.620275e+06-1.664613e+07
2024-06-13NDVI0.654361mh11v4i221j4658-6.620507e+06-1.664636e+07
\n", - "

732 rows × 5 columns

\n", - "
" - ], - "text/plain": [ - " index value pixel.id X Y\n", - "date \n", - "2023-06-14 NDVI 0.649486 mh11v4i222j4657 -6.620275e+06 -1.664613e+07\n", - "2023-06-14 NDVI 0.635043 mh11v4i221j4658 -6.620507e+06 -1.664636e+07\n", - "2023-06-15 NDVI 0.660745 mh11v4i222j4657 -6.620275e+06 -1.664613e+07\n", - "2023-06-15 NDVI 0.645188 mh11v4i221j4658 -6.620507e+06 -1.664636e+07\n", - "2023-06-16 NDVI 0.671886 mh11v4i222j4657 -6.620275e+06 -1.664613e+07\n", - "... ... ... ... ... ...\n", - "2024-06-11 NDVI 0.588776 mh11v4i221j4658 -6.620507e+06 -1.664636e+07\n", - "2024-06-12 NDVI 0.412464 mh11v4i222j4657 -6.620275e+06 -1.664613e+07\n", - "2024-06-12 NDVI 0.619886 mh11v4i221j4658 -6.620507e+06 -1.664636e+07\n", - "2024-06-13 NDVI 0.405473 mh11v4i222j4657 -6.620275e+06 -1.664613e+07\n", - "2024-06-13 NDVI 0.654361 mh11v4i221j4658 -6.620507e+06 -1.664636e+07\n", - "\n", - "[732 rows x 5 columns]" - ] - }, - "execution_count": 10, - "metadata": {}, - "output_type": "execute_result" - } - ], + "outputs": [], "source": [ "# Get satellite image time series for Modis NDVI\n", "client.get_satellite_image_time_series(year_ago, today, collections=[SatelliteImageryCollection.MODIS], indicators=[\"NDVI\"], polygon=polygon)" @@ -1965,581 +142,11 @@ }, { "cell_type": "code", - "execution_count": 11, + "execution_count": null, "metadata": { "scrolled": false }, - "outputs": [ - { - "name": "stderr", - "output_type": "stream", - "text": [ - "2024-06-14 11:18:30,223 - geosyspy.services.map_product_service - INFO - Calling APIs for coverage\n", - "c:\\Users\\ajd\\Documents\\GitHub\\GeosysPy\\geosyspy\\geosys.py:359: UserWarning: The argument 'infer_datetime_format' is deprecated and will be removed in a future version. A strict version of it is now the default, see https://pandas.pydata.org/pdeps/0004-consistent-to-datetime-parsing.html. You can safely remove this argument.\n", - " df_coverage[\"image.date\"] = pd.to_datetime(\n", - "2024-06-14 11:18:48,887 - geosyspy.geosys - INFO - The highest resolution's image grid size is (72,76)\n", - "2024-06-14 11:18:48,932 - geosyspy.geosys - INFO - interpolating sentinel-2-l2a|S2B_15TXE_20240222_0_L2A to sentinel-2-l2a|S2B_15TXE_20240212_0_L2A's grid\n", - "2024-06-14 11:18:49,692 - geosyspy.geosys - INFO - interpolating sentinel-2-l2a|S2B_15TXE_20240303_0_L2A to sentinel-2-l2a|S2B_15TXE_20240212_0_L2A's grid\n", - "2024-06-14 11:18:49,743 - geosyspy.geosys - INFO - interpolating sentinel-2-l2a|S2B_15TXE_20240323_0_L2A to sentinel-2-l2a|S2B_15TXE_20240212_0_L2A's grid\n", - "2024-06-14 11:18:49,810 - geosyspy.geosys - INFO - interpolating sentinel-2-l2a|S2A_15TXE_20240328_0_L2A to sentinel-2-l2a|S2B_15TXE_20240212_0_L2A's grid\n", - "2024-06-14 11:18:49,877 - geosyspy.geosys - INFO - interpolating sentinel-2-l2a|S2A_15TXE_20240407_0_L2A to sentinel-2-l2a|S2B_15TXE_20240212_0_L2A's grid\n", - "2024-06-14 11:18:49,936 - geosyspy.geosys - INFO - interpolating sentinel-2-l2a|S2B_15TXE_20240412_0_L2A to sentinel-2-l2a|S2B_15TXE_20240212_0_L2A's grid\n", - "2024-06-14 11:18:49,991 - geosyspy.geosys - INFO - interpolating sentinel-2-l2a|S2B_15TXE_20240512_0_L2A to sentinel-2-l2a|S2B_15TXE_20240212_0_L2A's grid\n", - "2024-06-14 11:18:50,044 - geosyspy.geosys - INFO - interpolating sentinel-2-l2a|S2A_15TXE_20240606_0_L2A to sentinel-2-l2a|S2B_15TXE_20240212_0_L2A's grid\n", - "2024-06-14 11:18:50,103 - geosyspy.geosys - INFO - interpolating landsat-c2l2-sr|LC08_L2SP_024032_20230822_20230826_02_T1_SR to sentinel-2-l2a|S2B_15TXE_20240212_0_L2A's grid\n", - "2024-06-14 11:18:50,156 - geosyspy.geosys - INFO - interpolating landsat-c2l2-sr|LC08_L2SP_025032_20230914_20230919_02_T1_SR to sentinel-2-l2a|S2B_15TXE_20240212_0_L2A's grid\n", - "2024-06-14 11:18:50,208 - geosyspy.geosys - INFO - interpolating landsat-c2l2-sr|LC08_L2SP_025032_20231117_20231122_02_T1_SR to sentinel-2-l2a|S2B_15TXE_20240212_0_L2A's grid\n", - "2024-06-14 11:18:50,263 - geosyspy.geosys - INFO - interpolating landsat-c2l2-sr|LC08_L2SP_024032_20231212_20231215_02_T1_SR to sentinel-2-l2a|S2B_15TXE_20240212_0_L2A's grid\n" - ] - }, - { - "data": { - "text/html": [ - "
\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "
<xarray.Dataset>\n",
-       "Dimensions:                  (band: 10, y: 76, x: 72, time: 13)\n",
-       "Coordinates:\n",
-       "  * band                     (band) <U11 'Blue' 'CoastalBlue' ... 'Swir2'\n",
-       "  * y                        (y) float64 40.3 40.3 40.3 ... 40.29 40.29 40.29\n",
-       "  * x                        (x) float64 -91.18 -91.18 -91.18 ... -91.17 -91.17\n",
-       "  * time                     (time) datetime64[ns] 2024-02-12T17:02:33 ... 20...\n",
-       "    image.id                 (time) <U59 'sentinel-2-l2a|S2B_15TXE_20240212_0...\n",
-       "    image.sensor             (time) <U10 'SENTINEL_2' ... 'LANDSAT_8'\n",
-       "    image.spatialResolution  (time) float64 10.0 10.0 10.0 ... 30.0 30.0 30.0\n",
-       "    crs                      (time) <U9 'EPSG:4326' 'EPSG:4326' ... 'EPSG:4326'\n",
-       "Data variables:\n",
-       "    reflectance              (time, band, y, x) float64 nan nan nan ... nan nan
" - ], - "text/plain": [ - "\n", - "Dimensions: (band: 10, y: 76, x: 72, time: 13)\n", - "Coordinates:\n", - " * band (band) \n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "
<xarray.Dataset>\n",
-       "Dimensions:                  (band: 1, y: 76, x: 72, time: 13)\n",
-       "Coordinates:\n",
-       "  * band                     (band) <U4 'ndvi'\n",
-       "  * y                        (y) float64 40.3 40.3 40.3 ... 40.29 40.29 40.29\n",
-       "  * x                        (x) float64 -91.18 -91.18 -91.18 ... -91.17 -91.17\n",
-       "  * time                     (time) datetime64[ns] 2024-02-12T17:02:33 ... 20...\n",
-       "    image.id                 (time) <U59 'sentinel-2-l2a|S2B_15TXE_20240212_0...\n",
-       "    image.sensor             (time) <U10 'SENTINEL_2' ... 'LANDSAT_8'\n",
-       "    image.spatialResolution  (time) float64 10.0 10.0 10.0 ... 30.0 30.0 30.0\n",
-       "    crs                      (time) <U9 'EPSG:4326' 'EPSG:4326' ... 'EPSG:4326'\n",
-       "Data variables:\n",
-       "    ndvi                     (time, band, y, x) float64 nan nan nan ... nan nan
" - ], - "text/plain": [ - "\n", - "Dimensions: (band: 1, y: 76, x: 72, time: 13)\n", - "Coordinates:\n", - " * band (band) \n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "
<xarray.Dataset>\n",
-       "Dimensions:                  (band: 1, y: 76, x: 72, time: 13)\n",
-       "Coordinates:\n",
-       "  * band                     (band) <U4 'NDWI'\n",
-       "  * y                        (y) float64 40.3 40.3 40.3 ... 40.29 40.29 40.29\n",
-       "  * x                        (x) float64 -91.18 -91.18 -91.18 ... -91.17 -91.17\n",
-       "  * time                     (time) datetime64[ns] 2024-02-12T17:02:33 ... 20...\n",
-       "    image.id                 (time) <U59 'sentinel-2-l2a|S2B_15TXE_20240212_0...\n",
-       "    image.sensor             (time) <U10 'SENTINEL_2' ... 'LANDSAT_8'\n",
-       "    image.spatialResolution  (time) float64 10.0 10.0 10.0 ... 30.0 30.0 30.0\n",
-       "    crs                      (time) <U9 'EPSG:4326' 'EPSG:4326' ... 'EPSG:4326'\n",
-       "Data variables:\n",
-       "    ndwi                     (time, band, y, x) float64 nan nan nan ... nan nan
" - ], - "text/plain": [ - "\n", - "Dimensions: (band: 1, y: 76, x: 72, time: 13)\n", - "Coordinates:\n", - " * band (band) " - ] - }, - "execution_count": 14, - "metadata": {}, - "output_type": "execute_result" - } - ], + "outputs": [], "source": [ "if ndvi_time_series_xarr.coords == lai_time_series_xarr.coords:\n", " print(\"Les dimensions sont identiques.\")\n", @@ -3766,20 +203,9 @@ }, { "cell_type": "code", - "execution_count": 19, + "execution_count": null, "metadata": {}, - "outputs": [ - { - "data": { - "image/png": "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yKyw3BAREZFZYbkhIiIis8JyQ0RERGaF5YaIiIjMCssNERERmRWWGyIyKc8++yxGjBghdQwiMmKGXbOciKgByGSyGu+fOXMmFi5ceE9XmSaixoPlhoiMRkZGhu6/N2zYgBkzZiA1NVW3zNHREY6OjlJEIyITwsNSRGQ0vLy8dDeFQgGZTKa3zNHRsdJhqd69e+O1117DlClT4OrqCk9PTyxbtgz5+fl47rnn4OTkhODgYPzvf//T21ZycjIGDx4MR0dHeHp6YuzYsbh+/XoDv2Iiqg8sN0Rk8latWoUmTZrg77//xmuvvYaXX34ZI0eORPfu3XHs2DEMGDAAY8eORUFBAQAgJycHffr0QYcOHXDkyBH89ttvyMrKwhNPPCHxKyGiusByQ0Qmr127dpg+fTpCQkIwbdo02NraokmTJpgwYQJCQkIwY8YM3LhxA4mJiQCAxYsXo0OHDvjoo48QFhaGDh064LvvvsPu3btx+vRpiV8NEd0vjrkhIpMXERGh+29LS0u4u7ujbdu2umWenp4AgGvXrgEATpw4gd27d1c5fufcuXNo2bJlPScmovrEckNEJs/a2lrvZ5lMpresfBaWVqsFAOTl5WHo0KGYN29epefy9vaux6RE1BBYboio0enYsSO2bNmC5s2bw8qKfwaJzA3H3BBRozNx4kTcvHkTo0aNwuHDh3Hu3DnExcXhueeeg0ajkToeEd0nlhsianR8fHxw4MABaDQaDBgwAG3btsWUKVPg4uICCwv+WSQydTLBU30SERGRGeE/UYiIiMissNwQERGRWWG5ISIiIrPCckNERERmheWGiIiIzArLDREREZkVlhsiIiIyKyw3REREZFZYboiIiMissNwQERGRWWG5ISIiIrPCckNERERm5f8BjgTapy2j7OcAAAAASUVORK5CYII=", - "text/plain": [ - "
" - ] - }, - "metadata": {}, - "output_type": "display_data" - } - ], + "outputs": [], "source": [ "# Display cumulative NDVI from last result\n", "\n", @@ -3809,30 +235,9 @@ }, { "cell_type": "code", - "execution_count": 20, + "execution_count": null, "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "" - ] - }, - "execution_count": 20, - "metadata": {}, - "output_type": "execute_result" - }, - { - "data": { - "image/png": "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n49HjBgRDxgwID7mmGPiBx98sKTn+L3vfS+uqamJOzo64jiO42XLlsXZbDZuaWkpvOfrX/96PHjw4LitrS1YzqGHHhp/6Utf6vLaq6++Go8ZMyZesWJFfMIJJ8SzZs2Sdfntb38bm1n8yCOPFF776U9/Gmcymfi5554L5nv/+98fT58+XZb9ZmYW//CHP+z2fevWrYvNLP7zn/+8U9qunM8BBxwQX3/99d0eZ9asWfFBBx0UR1EUfM8tt9wSDx06tMs1uOiii+K3v/3twTydnZ3xoEGD4rvuuqvbOrzZDTfcEO+3337yPR/60Ifif/u3f+tRuQBQKVj/t+tr638cx/ELL7wQm1n8X//1X8H3/GPbvNmurO27us847bTT4ve+973yPbNnz47f8Y53dHntjDPOiJuamoJ5duUci7ngggvi448/Xr7nqKOOiufMmdOjcgGgkrAH2K7c9wC7smYdc8wx8XnnnVf473w+H48YMSJesGBBMM+TTz4Zm1n8xz/+cae0vrwH+Mc91fDhw+Obbrqpy3s+/OEPx2eddVaPygUAII7jmG92AmXghhtu2OkbfCNHjiz63tdff91uvPFGW7x4sS1fvtxWrVplH/rQh2zZsmW2bNky+/a3v2233nqrff/73y/kmTlzpq1Zs8YWL15sv/rVr2zKlCl28skn29NPPx2s0ymnnGJ77LFH8N873vGOHp3jK6+8YoMHD7aqqiozM1uzZo0dfvjh1tDQUHhPU1OTtba22m9+85uiZURRZK+++qrttddeXV4/77zz7NRTT7VJkybtUl3WrFlje+65p40fP77w2qRJkyybzdratWvlOfzjsZPwyiuvWCaTsT333DPxsndob2+373znO/bJT36yy18Jf+ITn7D3vOc9hf9es2aN/dM//ZPV1NQUXmtqarINGzbY3/72t6Jlv/7669bR0dGlbS677DIbNWpUsD7PP/+83XfffXbCCScE3/P444/b6tWr5XsAoJKx/m/XF9f/HT/bp/L9Y9ukYfPmzXb//fd3+WaN2fafTvzEJz5R+O81a9bs1I5NTU22Zs2aYNnFzvEf9xX/6I9//KMtX748uLbHcWwrV660DRs22D/90z8FywGASsceYLty3gN0t2aZbb/PXr9+fZd6ZLNZmzRpUnAN3bp1q91xxx02evTo4DVPQrntAXbke3OetrY2q6ur6/Ke+vp6++///m9ZDgAAxaR3Z42gtrY2mzBhgj355JP2+OOP29ixY4Pv3bZtm33+85+3xYsXW1tbmzU1Ndktt9xS2Bw++eSTduWVV9p///d/20svvWSjRo2yc88912bNmtWlnJtvvtluuukme+aZZ2z//fe3L37xizZ16tQe1fvLX/6y3X///fbEE09YTU2NbdmypaenjoAhQ4ZYTU2NDRgwIPiTpDt0dHTY17/+dTvooIPMzOwjH/mIffvb37bNmzfbHnvsYYceeqideOKJ9uCDD9oZZ5xhmzZtsjvuuMM2bdpkI0aMMLPtP5W2fPlyu+OOO+wrX/lK0eN885vftDfeeCNYj+rq6l0+v5deeskuv/zyLj8R09LS0uUmx8wK/93S0lK0nGuuucZee+01++hHP1p4bfHixfbYY4/ZI488ssv1aWlpsWHDhnV5raqqyvbaa6/gsb/3ve8VfiYnSdu2bbOLLrrIzjzzTBs8eHCiZb/Z0qVLbcuWLV1uaszMhg8fblEUFf67paXFRo8e3eU9b74uQ4cO3ansiy66yEaMGNHlBmmfffYp9NE3O/PMM+1HP/qRvfHGG/bBD37QvvnNb+70nv32289efPFF6+zstMsuu8w+9alP9ehcAaBSsP5v19fW/yiK7Pzzz7fjjjvODjvssKLvKdY2abjrrrts0KBB9uEPf7jL6/vvv78NHz688N+h69La2mpvvPGG1dfXd0kLneM/7it2OPbYY+2xxx6ztrY2O+ecc2z+/Pld0l955RXbd999ra2tzXK5nN1yyy32vve9z33eAFDu2ANsV457gO7WrDd76aWXLJ/PFz2vHTE5d7jlllts9uzZtnXrVnv7299uK1as6PJHxkkrlz3ADsX2VE1NTXbdddfZP/3TP9lBBx1kK1eutPvuu8/y+bzrnAEA/RsPOxO24y+k/vGBwpvNnj3bRowYYU8++WS35V1wwQV2//3327333mtDhgyxmTNn2oc//GH7n//5HzMzW79+vQ0bNsy+853v2MiRI2316tV2zjnnWC6Xs5kzZ5qZ2de//nW75JJL7Bvf+Ia9853vtHXr1tmMGTNs6NCh9sEPfnCXz629vd2mTJliEydOtG9961u7nA/JGjBgQJeHSA0NDTZq1CjbY489ury2Iz7Er3/9a8vn8/a2t72tSzltbW229957B4+z7777JlLf1tZWO/XUU+3QQw+1yy67zF3OPffcY1/60pfsRz/6UeEm5dlnn7VZs2bZihUrdvprwB3OPfdc+853vlP479dee63Hx37wwQdt+vTp9o1vfKPw16y//OUv7ZRTTim859Zbb7WzzjqrR+V2dHTYRz/6UYvj2L7+9a/3uF498a1vfctOOeWUws3uDgsWLNitcq+88kpbvHixrVq1qss1mDlzZmEOerPrr7/e5s2bZ3/4wx/skksusebmZrvlllu6vOeXv/ylvfbaa/bwww/bxRdfbG9961vtzDPP3K16AkClY/2vnPX/vPPOs6eeeir4rYSk2mZX3H777XbWWWft1E533333bpUbOsfQvmLJkiX26quv2pNPPmkXXnihXXPNNTZ79uxC+qBBg+yJJ56w1157zVauXGnNzc124IEHdvsNEQDoD9gDlHYPEFqziu0BTjzxxF0u96yzzrL3ve999pe//MWuueYa++hHP2r/8z//EzyP3VUuewCz4nsqs+3fcJ4xY4YdfPDBlslk7KCDDrLp06fb7bffvlt1BAD0TzzsLLGf/vSn9vOf/9x+8IMf2E9/+lP53ldeecW+9a1v2T333GPvfe97zczsjjvusEMOOcQefvhhe9e73mWf/OQnu+Q58MADbc2aNXbfffcVHjR8+9vftk9/+tN2xhlnFN7zyCOP2Fe/+tUuDzu/+c1v2rXXXmsbN260UaNG2ec+9zn793//90L6l770JTMzu/POO3e7HeD3j39Nmclkir624y/qXnvtNcvlcrZ+/XrL5XJd3vfmm6N/dMopp9gvf/nLYPoBBxwQ/KmZHV599VU7+eSTbdCgQfbDH/6wSz0bGxtt3bp1Xd6/efPmQtqbLV682D71qU/Zvffe2+Xbg+vXr7cXXnjBjj766MJr+XzeHnroIbvpppusra3N5s+fb//xH//RpbzGxsbCjeAOnZ2d9vLLL+907P/6r/+yD37wg3b99dd3+Tb0+PHj7Yknnij89z/+JWR3djzo/POf/2wPPPBAqt/q/POf/2y/+MUv7L777uv2vY2NjYXrsEPoulxzzTV25ZVX2i9+8Qs74ogjdqkujY2N1tjYaAcffLDttdde9u53v9suvfTSLn9ZuuObpYcffrht3rzZLrvsMh52Auj3WP8rY/2fOXOm/eQnP7GHHnrI9ttvvx61TdJ++ctf2oYNG2zJkiXdvje0/g8ePHinb3R0d47F7PiZvkMPPdTy+bydc8459vnPf77QN7PZrL31rW81M7OxY8fa7373O1uwYAEPOwHA2AOUeg8QWrOK7QFqa2stl8sVXUP/sdwhQ4bYkCFDbMyYMfaud73Lhg4daj/84Q9Tudctpz1AaE9lZvaWt7zFli5datu2bbO//vWvNmLECLv44ovtwAMP3KWyAQB4Mx52ltDmzZttxowZtnTpUhswYEC371+/fr11dHR02dgdfPDBtv/++9uaNWvsXe96V9F8u/ob+OvWrbOOjg6rrq627373uzZ37ly76aab7KijjrLHH3/cZsyYYQMHDrRp06Y5zxg9UVNTk8pPdRx11FGWz+fthRdesHe/+927nG93f8KmtbXVmpqarLa21n784x/v1AcnTpxoX/7yl+2FF14o/JXmihUrbPDgwXbooYcW3vf//X//n33yk5+0xYsX26mnntqljH/+53+2X//6111emz59uh188MF20UUXWS6Xs2HDhu30czUTJ060LVu22Pr1623cuHFmZvbAAw9YFEU2YcKEwvtWrVplH/jAB+yrX/3qTj8zV19fX/hQrqd2POh8+umn7cEHH5R/XZuEO+64w4YNG7ZT+xUzceJE++IXv1iYG8y2X5e3v/3tXX7C9qqrrrIvf/nL9rOf/axL3JOe2HEz3tbWJt+j0gGg0rH+9431P45j++xnP2s//OEPbdWqVTv9JPyutE3SvvWtb9m4cePsyCOP7Pa9EydOtGXLlnV5bcWKFTZx4sTCf+/KOe6KKIqso6PDoija6UP4N7+H9R9AX8ceoPz2AP/ozWtWaA8wbtw4W7lypU2ePLmQZ+XKlUV/6WiHOI4tjuPU1rpy2QOoPdWb1dXV2b777msdHR32gx/8oMvPFgMAsKt42FkicRzbJz7xCTv33HNt/Pjx9swzz3Sbp6WlxWpqamzPPffs8npDQ0MwnsHq1attyZIldv/99xdea2pqsm9+85s2efJkO/roo239+vX2zW9+0zo6Ouyll16y4cOH27x58+zaa68t/Jb/6NGj7be//a3deuutPOwskVGjRtnatWvtmWeesT322KPLA+vd8ba3vc3OOussmzp1ql177bV21FFH2YsvvmgrV660I444IvgAbHd+wqa1tdVOOukke/311+073/mOtba2Wmtrq5lt/8u9XC5nJ510kh166KH28Y9/3K666ipraWmxOXPm2HnnnWe1tbVmtv1na6ZNm2Y33HCDTZgwodDv6+vrbciQITZo0KCdYmENHDjQ9t5772CMLDOzQw45xE4++WSbMWOGLVq0yDo6OmzmzJn2sY99rPAzrw8++KB94AMfsFmzZtnpp59eOHZNTY28Nq+99pr98Y9/LPz3xo0b7YknnrC99trL9t9/f+vo6LCPfOQj9thjj9lPfvITy+fzhbL32muvXY7Z0d7ebr/97W8L//+5556zJ554wvbYY48uN2BRFNkdd9xh06ZNs6qqnaf8Sy65xJ577rnCT9n867/+q33pS1+ys88+2y666CJ76qmn7IYbbrDrr7++kOerX/2qzZ071+655x4bNWpUof577LFH4S+Fb7rpJvvhD39oK1euNDOzZcuW2ebNm+2d73yn7bHHHvab3/zGLrzwQjvuuONs1KhRZrY9tvD+++9vBx98sJmZPfTQQ3bNNdfY5z73uV1qEwCoRKz/fWP9P++88+yee+6xH/3oRzZo0KBCviFDhlh9ff0utc2u6G6f8eZrce+999q1115btJypU6favvvuW/jJuXPPPdduuukmmz17tn3yk5+0Bx54wL73ve91uafo7hzNdt5XfPe737Xq6mo7/PDDrba21h599FG75JJL7Iwzzih8aL5gwQIbP368HXTQQdbW1mbLli2zb3/726n/xD8A9Db2AOW1B9iVNauY5uZmmzZtmo0fP96OOeYYW7hwoW3dutWmT59uZmZ/+tOfbMmSJXbSSSfZW97yFvt//+//2ZVXXmn19fX2/ve/f5fbuNL2ALuyp1q7dq0999xzNnbsWHvuuefssssusyiKuvzUPQAAuyzGbvnyl78cDxw4sPAvm83GtbW1XV7785//HN9www3xcccdF3d2dsZxHMcbN26MzSx+/PHHg2V/97vfjWtqanZ6/Z3vfGc8e/bsnV7/9a9/He+zzz7x5Zdf3uX1119/PZ4+fXpcVVUV53K5eMSIEfHs2bNjM4tbWlri1157LTazuL6+vku9a2tr42HDhu10nDvuuCMeMmRIzxoK3dqwYUP8rne9K66vr4/NLN64cWP84IMPxmYW/+1vf4vjuHjbz5s3Lz7yyCO7vDZt2rT4tNNOK/x3e3t7PHfu3HjUqFFxdXV1PHz48PhDH/pQ/Ktf/SqVc9lR72L/Nm7cWHjfM888E59yyilxfX19vM8++8Sf//zn446OjkL6CSecULSMadOmBY99wgknxLNmzeq2jn/961/jM888M95jjz3iwYMHx9OnT49fffXVQvq0adOKHvuEE05wnfuOOu8Y+8X+Pfjgg7t8PqFy/rF+P/vZz2Izizds2FC0vtOmTdspz5NPPhkff/zxcW1tbbzvvvvGV155ZZf0Aw44oOix582bV3jPvHnz4gMOOKDw3w888EA8ceLEeMiQIXFdXV08ZsyY+KKLLir07TiO4xtvvDF+xzveEQ8YMCAePHhwfNRRR8W33HJLnM/ni9YdAPoC1v++sf6HzvuOO+7oUdvscMABB8TXX3/9Tq93t8/Y4dZbb43r6+vjLVu2FK3vCSecsFOeBx98MB47dmxcU1MTH3jggYW67+o57mi/N7fV4sWL46OPPjreY4894oEDB8aHHnpo/JWvfCV+4403Cu/54he/GL/1rW+N6+rq4qFDh8YTJ06MFy9eXLTeANCXsAcorz3ArqxZIV/72tfi/fffP66pqYmPOeaY+OGHHy6kPffcc/Epp5wSDxs2LK6uro7322+/+F//9V/j3//+90XL6it7gF3ZU61atSo+5JBD4tra2njvvfeOP/7xj8fPPfdc0XoDANCdTBzH8U5PQLHLXn75ZXv55ZcL/33WWWfZ6aefXviGpNn2v9b7yEc+Yv/5n/9pmUym8Ho+n7dcLmdnnXWW3XXXXTuV/cADD9g///M/29/+9rcu3+484IAD7Pzzz7cLLrig8Npvf/tbO/HEE+1Tn/qUffnLXy5a146ODtu8ebMNHz7cbrvtNrvoootsy5Yt9uKLL1pjY6N95zvf2ennO3K53E4/T3HnnXfa+eefb1u2bNmlNgIAAAAAAAAAAADSwM/Y7qa99tqry0+N1NfX27Bhw3b6Hf8bb7zRrrjiisJ/P//889bU1GRLliwJxgcYN26cVVdX28qVK+300083M7MNGzbYpk2buvx2/m9+8xt773vfa9OmTQs+6DTbHl9hRwDxxYsX2wc+8AHLZrPW0NBgI0aMsD/96U921lln9bwRAAAAAAAAAAAAgF7Aw84SefPv55tZIa7dQQcdVHgA+dxzz9k///M/2913323HHHOMDRkyxM4++2xrbm62vfbaywYPHmyf/exnbeLEifaud73LzMyeeuope+97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y+V26MdUHU899VTttdde2nvvvXXGGWfolVde6Uh/+umnddxxx6mpqUmDBg3Sm970Js2dO1dtbW223EWLFuntb3+79txzTx1wwAGaMmWKnn766U6v+dSnPqU3v/nNGjx4sN7whjfo5JNP1m9+8xtJ0sUXX6xcLmf/SdIjjzyiD37wgxo6dKhyuZyWLVu2Q11S+a+66irbhocfflhHHXWUBg4cqLe85S264447etzGv7Yz/fntb39b48aN0957763dd99dY8aM0Te+8Q1bLgDUOtb/+ln/W1padNppp6m5uVm77767jjrqKH3rW9+SJN1xxx3drv/PPfecfvnLX+ojH/mIhg8frlwup8WLF+9Ql9fT/vrf2Wefbdvwn//5n3rXu96lQYMGadiwYbryyis7pd9yyy1617vepX322Uf77LOPJk2apEcffdSW+b//+7864YQTNHToUA0cOFDDhg3TrFmz1Nra2vGan/zkJ3rHO96h/fbbT4MHD9Yhhxyi6667zpYLAH0Be4Dq2gP8pWeeeUZ77rmn9t57751q/0033aThw4dr0KBBGj9+fKf18bnnnkuu7ffdd19dvwewM/saAAB2Fg87gSo2YMAANTc3d2xua8X69eu1fv16XX311Xrqqad0xx13aPny5TrjjDM6XlMoFHTiiSdq27ZtWrVqle68807dcccdmj9/fsdrHnnkEb3vfe/Tgw8+qLVr1+q4447TBz/4QT3xxBM7HPNnP/uZvva1r+mII47YqTqeeuqp+uUvf6kVK1bo/vvv1yOPPKIzzzyzI71///46/fTT9cMf/lBPP/20Fi9erFtuuUULFiyw5f77v/+7zj77bP30pz/VihUr1NbWpuOPP15btmzpeM3YsWN1++2369e//rV+8IMfqFQq6fjjj1ehUNDnPvc5vfjiix3/DjroIC1cuLDT3yRpy5YtGj16tG666aZkXf4yz4svvqjbbrtNuVxOH/nIR5J5nn32WZ144ok67rjj9OSTT2r27Nn65Cc/2ekGc2fa+Nd2pj/33XdffeELX9Dq1av1n//5n5oxY4ZmzJhhb24BoC9i/e+b6//pp5+up59+Wt/73vf0i1/8Qh/+8If1sY99TE888YSmTZvWac2eMGGCZs6c2elvw4YN06uvvqo3velNuvzyy9Xc3NxlXX72s591yrdixQpJ0tSpU5P1b21t1fHHH6+DDz5Ya9eu1VVXXaWLL75YN998c8drHn74YZ1yyin6t3/7N61evVrDhg3T8ccfrxdeeCFZbj6f18knn6zvfe97+u1vf6s77rhDP/rRj3TWWWd1vGb33XfXrFmz9Mgjj+jXv/615s6dq7lz53Y6NgDUC/YAvbcHeF1bW5tOOeUUvetd79qpcu+9917NmTNHCxYs0OOPP67Ro0dr8uTJ+sMf/iBJGjZs2A735pdccon22GMPvf/976/r9wB2Zl8DoPYVSnn+9cK/epQrlUql3q4EUO8+8YlP6M477+z0t2effVbPPfecjjvuOP3pT3/S3nvvrTvuuEOzZ8/W3Xffrc9+9rN6/vnn9YEPfEB33XWX7rvvPi1YsECbN2/Waaedpuuuu04NDQ2SpK1bt+oLX/iC/uVf/kWbNm3SYYcdpiuuuELvfve7K9bG++67T//wD/+gLVu2qF+/fvr+97+vk046SevXr1dTU5MkacmSJbrgggu0ceNGDRgwoMty3va2t2natGmdboheeeUVHXXUUfrKV76iyy67TGPGjLGfCPz1r3+tUaNG6Wc/+5nGjRsnSVq+fLk+8IEP6H/+5380dOjQLvPNmTNHP/vZz/TjH/94p9u9ceNGHXDAAfr3f/93/e3f/m2Xr/nP//xPjR49Ws8884ze/OY3d0obPny4Zs+ebT+pmsvl9J3vfEdTpkyxdZkyZYpefvllrVy5MvmaCy64QA888ICeeuqpjr99/OMf16ZNm7R8+fIu8+xMG7uyM/151FFH6cQTT9Sll1660+UCQK1g/a+v9X+PPfbQV7/6VZ122mkdr9tvv/10xRVX6JOf/GSn/O9+97u7bc/O7BEkafbs2br//vv1u9/9Lvnm+Ve/+lV94QtfUEtLS8c5uPDCC7Vs2bKOX5/4a4VCQfvss49uvPFGnX766bYOf+mGG27QVVddpeeffz75mg9/+MPafffd+YUHAH0We4Dq3QNccMEFWr9+vd773vdq9uzZ3f6k8Pjx4/X2t79dN954oySpWCxq2LBh+vSnP60LL7ywyzxHHnmkjjrqKN166607pNXrewA7u68BUDtaW1vV2Nio81adqIF79O/t6tSVra+06aqJD2jz5s3aa6+9ers6FVOfj3iBKnP99dfv8An+YcOGdfnaV199VTfccIOWLl2q5cuX6+GHH9bf/d3f6cEHH9SDDz6ob3zjG/ra176mf/3Xf+3IM2vWLK1evVpLly7Vf/7nf2rq1Kk64YQT9Lvf/S5Zp/e///3aY489kv/e9ra39aiNr0+u/fr1kyStXr1ahx9+eMdNjiRNnjxZra2t+uUvf9llGcViUS+//LL23XffTn8/++yzdeKJJ2rSpEk7VZfVq1dr77337rjJkaRJkyYpn89rzZo1XeZ55plntHz5ch177LE7dYzXvf6zPX9d59dt2bJFt99+u0aMGJE85+WwYcMGPfDAA50+WSttfzP1E5/4RMd/r169eod+nDx5slavXp0su6s2fuITn7A30t31Z6lU0sqVK/X000/36OYJAGoJ6/929bL+T5w4Uffee6/++Mc/qlgsaunSpXrttdcyfeN527Ztuvvuu/WP//iPnR50/vU6vXr1av3t3/5tpzeaJ0+erKefflp/+tOfuiz71VdfVVtbW6c2XnzxxRo+fHiyPuvXr9e3v/1t259PPPGEVq1a1eM+B4Bawh5gu2rbAzz00EO677777Lcn/9K2bdu0du3aTvXI5/OaNGlS8h567dq1evLJJ3e4Ny+3WnsPAACAXdWvtytQj7Zu3arx48fr5z//uZ544gmNGTMm+drXXntNn/3sZ7V06VJt3bpVkydP1le+8pWOzeHPf/5zXX755frJT36il156ScOHD9dZZ52lc845p1M5N910k2688UY999xzeuMb36gvfOELPfoEtiR98Ytf1AMPPKAnn3xSAwYM6PbTbdh5jY2NGjBggHbbbbduf7qjra1NX/3qVzu+AfjRj35U3/jGN7RhwwbtscceGjVqlI477jj927/9m6ZNm6Z169bp9ttv17p16zo+rfi5z31Oy5cv1+23364vfelLXR7n61//uv785z8n69G//85/Iuell17SpZde2uknYlpaWjrd5Ejq+O+WlpYuy7n66qv1yiuv6GMf+1jH35YuXarHH39cP/vZz3a6Pi0tLTrggAM6/a1fv37ad999dzj2xIkT9fjjj2vr1q0688wztXDhwp0+TrFY1OzZs/WOd7xDhx12WKe0r3zlKzr//PO1ZcsWvfWtb9WKFSuSn2QthzvvvFN77rmnPvzhD3f6+xvf+EYNGTKk479T56W1tVV//vOfNXjw4E5pqTYOGTJExWJxh3p015+bN2/WgQceqK1bt6qhoUFf+cpX9L73vS/cbgCoZqz/29XL+v/Nb35T06ZN03777ad+/fppt91203e+8x295S1v2emye2rZsmXatGlTpzc1pR3X6ZaWFo0YMaLTa/7yvOyzzz47lH3BBRdo6NChnd4g3X///Xf4lQpJOuWUU/Td735Xf/7zn/XBD35QX//613d4zUEHHaSNGzeqvb1dF1988Q7fdgWAvoQ9wHbVtAf43//9X33iE5/Q3XffvdPfgnnppZdUKBS6bFfqlxFuvfVWHXrooZo4ceJO1z+iVt4DAACgXHjYWWavf0Lqr99Q+Evnn3++hg4dqp///OfdlnfuuefqgQce0H333afGxkbNmjVLH/7wh/Uf//EfkrZ/IuyAAw7Q3XffrWHDhmnVqlU688wz1dDQoFmzZkna/rNUF110kW655Ra9/e1v16OPPqqZM2dqn3320Qc/+MGdbtu2bds0depUTZgwocuf2kBl7Lbbbp3eRGpqatLw4cO1xx57dPrb6/EhfvGLX6hQKOhv/uZvOpWzdetW7bfffsnjHHjggWWpb2trq0488USNGjVKF198cbice+65R5dccom++93vdtykPP/88zrnnHO0YsUKDRo0qMt8Z511lu6+++6O/37llVd6dNx7771XL7/8sn7+85/rvPPO09VXX63zzz9fP/7xj/X+97+/43Vf+9rXdOqpp3bKe/bZZ+upp57ST37ykx3KPfXUU/W+971PL774oq6++mp97GMf03/8x38k27GrbrvtNp166qk7lH/XXXftUrmpNi5atKjL16f683V77rmnnnzySb3yyitauXKl5syZoze96U0V/bklAKhGrP+1v/7PmzdPmzZt0o9+9CPtv//+WrZsmT72sY/pxz/+sQ4//PAe1W9n3XrrrXr/+9+/w0/0ptbpnXX55Zdr6dKlevjhhzudg1mzZnXcg/yl6667TgsWLNBvf/tbXXTRRZozZ46+8pWvdHrNj3/8Y73yyiv66U9/qgsvvFBvectbdMopp+xSPQGgL2APUJk9wMyZM/X3f//3yV8W6moPcNxxx+1scyRJf/7zn3XPPfdo3rx5PcoXUSvvAQAAUC487Kyw73//+/rhD3+ob33rW/r+979vX7t582bdeuutuueee/Se97xHknT77bfr0EMP1U9/+lMdc8wx+sd//MdOed70pjdp9erV+va3v93xRsM3vvENfepTn9K0adM6XvOzn/1MV1xxRaeHnV//+td1zTXX6Nlnn9Xw4cP1mc98Rv/0T//UkX7JJZdIku64445d7gfE/fWnKXO5XJd/e/0Tda+88ooaGhq0du3ajvgdr/vLm6O/9v73v9/Gpjr44IOTPzXzupdfflknnHCC9txzT33nO9/pVM/m5mY9+uijnV6/YcOGjrS/tHTpUn3yk5/Ufffd1+nbA2vXrtUf/vAHHXXUUR1/KxQKeuSRR3TjjTdq69atWrhwoT73uc91Kq+5ubnjRvB17e3t+uMf/7jDsV//KaFRo0apUCjozDPP1Gc/+1mNGzdOTz75ZMfr/vqTkLNmzdL999+vRx55RAcddNAOfdPY2KjGxkaNHDlSxxxzjPbZZx995zvfyeRNvR//+Md6+umnde+993b72ubm5o7z8LoNGzZor7322uETnd21sSup/nx9bObz+Y5vuIwZM0a//vWvtWjRIh52Aqh7rP+1vf7//ve/14033qinnnqq42cAR48erR//+Me66aabtGTJki56ctf893//t370ox/p29/+drevTa3/r6f9pauvvlqXX365fvSjH+mII47Yqbo0NzerublZhxxyiPbdd1+9613v0rx58zp9s+T1b5Yefvjh2rBhgy6++GIedgKA2ANUag/w0EMP6Xvf+56uvvpqSdtDqxSLRfXr108333yzTjnllB32AAMHDlRDQ0OXa2hX39j913/9V7366qs9/qW1nqql9wAAACgXHnZW0IYNGzRz5kwtW7ZMu+22W7evX7t2rdra2jpt7A455BC98Y1v1OrVq3XMMcd0mW/z5s2dfjd/69atO3ySa/DgwXr00UfV1tam/v3765//+Z81f/583XjjjTryyCP1xBNPaObMmdp99901ffr0YIvREwMGDFChUCh7uUceeaQKhYL+8Ic/6F3vetdO59vVn7BpbW3V5MmTNXDgQH3ve9/bYQxOmDBBX/ziF/WHP/yh41OaK1as0F577aVRo0Z1vO5f/uVf9I//+I9aunSpTjzxxE5lvPe979UvfvGLTn+bMWOGDjnkEF1wwQVqaGjQAQccsMPP1UyYMEGbNm3S2rVrNXbsWEnbb2yKxaLGjx+fbFOxWFRbW5uKxaIGDx7c5c/OlUolffrTn9Z3vvMdPfzwwzv8JFxXSqWSSqWStm7d2u1rI2699VaNHTtWo0eP7va1EyZM0IMPPtjpbytWrNCECRM6/jvSxq78ZX+mbnSKxWJm/QIA1YD1vz7W/1dffVXS9g/1/KWGhoYuf/KtHG6//XYdcMABO/RfVyZMmKAvfOELHfcG0vbz8ta3vrXTT9heeeWV+uIXv6gf/OAHneKe9cTr7XXrO+s/gHrAHqC69gCrV6/udD6++93v6oorrtCqVat04IEHJvcAY8eO1cqVKzVlyhRJ29ewlStXdvlLB7feeqs+9KEP6Q1veIPty11Vy+8BAAAQxcPOCimVSvrEJz6hs846S+PGjdNzzz3XbZ6WlhYNGDBAe++9d6e/NzU1JeMZrFq1Svfee68eeOCBjr9NnjxZX//61zVlyhQdddRRWrt2rb7+9a+rra1NL730koYMGaIFCxbommuu6fgt/xEjRuhXv/qVvva1r/Gws0KGDx+uNWvW6LnnntMee+zR6YH1rvibv/kbnXrqqTr99NN1zTXX6Mgjj9TGjRu1cuVKHXHEEck3wHblJ2xaW1t1/PHH69VXX9Xdd9+t1tZWtba2SpLe8IY3qKGhQccff7xGjRql0047TVdeeaVaWlo0d+5cnX322Ro4cKCk7T9bM336dF1//fUaP358x7gfPHiwGhsbteeee+4QC3P33XfXfvvtt8Pf/9Khhx6qE044QTNnztSSJUvU1tamWbNm6eMf/3jHz7z98z//s/r376/DDz9cAwcO1GOPPaaLLrpI06ZNszd5Z599tu655x5997vf1Z577tlR58bGRg0ePFj/9V//pXvvvVfHH3+83vCGN+h//ud/dPnll2vw4MH6wAc+sNN9/Morr+iZZ57p+O9nn31WTz75pPbdd1+98Y1v7HQu7rvvPl1zzTVdlnP66afrwAMP7PjJmbPOOks33nijzj//fP3jP/6jHnroIX3zm9/sNKd010ZJuuiii/TCCy90/ETOzvTnokWLNG7cOL35zW/W1q1b9eCDD+ob3/iGvvrVr+50vwBArWH9r4/1/5BDDtFb3vIWfepTn9LVV1+t/fbbT8uWLdOKFSt0//3373Qfb9u2Tb/61a86/v8LL7ygJ598UnvssUenN2CLxaJuv/12TZ8+Xf367XjL99fr9N///d/rkksu0RlnnKELLrhATz31lK6//npdd911HXmuuOIKzZ8/X/fcc4+GDx/e0cY99tij45tCN954o77zne9o5cqVkqQHH3xQGzZs0Nvf/nbtscce+uUvf6nzzjtP73jHOzR8+HBJ0k033aQ3vvGNOuSQQyRJjzzyiK6++mp95jOf2el+AYBaxB6guvYAhx56aKc8jz32mPL5vC1XkubMmaPp06dr3LhxOvroo7V48WJt2bJFM2bM6PS6Z555Ro888sgODxZ3Vl98D2Bn9zUAaluxlFOxlOvtatSVeu1vHnbuoi996Uudgrv/+c9/1k9/+tNOn+D61a9+pWXLlunll1/WRRddlFldnnrqKZ188slasGCBjj/++I6/z5s3Ty0tLTrmmGNUKpXU1NSk6dOn68orr1Q+n9eWLVv0+9//XmeccYZmzpzZka+9vV2NjY2Z1Redfe5zn9P06dM1atQo/fnPf9azzz5btrJvv/12XXbZZfrsZz+rF154Qfvvv7+OOeYYnXTSSWU7xl96/PHHtWbNGknaYYP6+s8kNzQ06P7779f/+3//TxMmTOj4FvFfBqu/+eab1d7errPPPltnn312x9+nT5++yz+n/M///M+aNWuW3vve9yqfz+sjH/mIbrjhho70fv366YorrtBvf/tblUolHXzwwZo1a5bOPfdcW+7rD+b++mdXb7/9dn3iE5/QoEGD9OMf/1iLFy/Wn/70JzU1Nelv//ZvtWrVqh0+feo89thjneKDzJkzR9KOfbN06VKVSqXkz8CtW7eu07dMRowYoQceeEDnnnuurr/+eh100EH6+te/rsmTJ+90GyXpxRdf1Lp16zrSdqY/t2zZon/6p3/S//zP/3S8MXz33Xd3/AQ3APRFrP/1sf73799fDz74oC688EJ98IMf1CuvvKK3vOUtuvPOO3v0Yaf169fryCOP7Pjvq6++WldffbWOPfZYPfzwwx1//9GPfqR169btEPLidX+9Tjc2NuqHP/yhzj77bI0dO1b777+/5s+frzPPPLNTG7dt26aPfvSjncpasGBBR0y2l156Sb///e870gYPHqxbbrlF5557rrZu3aphw4bpwx/+sC688MKO1xSLRV100UV69tln1a9fP735zW/WFVdcoU996lM73S8AUIvYA1TXHiBq2rRp2rhxo+bPn6+WlhaNGTNGy5cv3+Gn7m+77TYddNBBnd6v64m++B7Azu5rAADYGblSqVTq7UrUsj/+8Y/64x//2PHfp556qj7ykY90fENS2v5pvY9+9KP6//6//0+53P89VS8UCmpoaNCpp56qO++8c4eyH3roIb33ve/Vn/70p07f7jz44IM1e/bsThuEX/3qVzruuOP0yU9+Ul/84he7rGtbW5s2bNigIUOG6Oabb9YFF1ygTZs2aePGjWpubtbdd9+9w094NTQ07PDzFHfccYdmz56tTZs27VQfAQAAAAAAAACA+tDa2qrGxkZ99j9O0sA9/E+ho7y2vtKma95xvzZv3qy99tqrt6tTMXyzcxftu+++nX5qZPDgwTrggAN2+CTbDTfcoMsuu6zjv9evX6/Jkyfr3nvvTcYIGjt2rPr376+VK1fqIx/5iCTp6aef1rp16zr9dv4vf/lLvec979H06dOTDzql7fEVXg8gvnTpUp100knK5/NqamrS0KFD9V//9V869dRTe94JAAAAAAAAAAAAQC/gYWeF/OXv50vqiGvz5je/ueMB5AsvvKD3vve9uuuuu3T00UersbFRZ5xxhubMmaN9991Xe+21lz796U9rwoQJOuaYYyRt/+na97znPZo8ebLmzJnT8bv5DQ0NHQHPf/vb3+rRRx/V+PHj9ac//UnXXnutnnrqqU7fJr3kkkv0mc98Ro2NjTrhhBO0detWPfbYY/rTn/7U8dMY69at0x//+EetW7dOhUJBTz75pKTtP1HyensAAAAAAAAAAACASuFhZxVpa2vT008/rVdffbXjb9ddd11HLIGtW7dq8uTJ+spXvtKR/q//+q/auHGj7r77bt19990dfz/44IP13HPPSdr+c7nXXHONnn76afXv31/HHXecVq1apeHDh3e8/pOf/KR22203XXXVVTrvvPO0++676/DDD9fs2bM7XjN//vxOD0hf/139f/u3f9vhd/sBAAAAAAAAAACArBGzEwAAAAAAAAAAAGVBzM7eU68xO/O9XQEAAAAAAAAAAAAAiOBnbAEAAAAAAAAAAFBWBeVV4Dt3FVWv/c3DzqBisaj169drzz33VC6X6+3qAACAnVAqlfTyyy9r6NChyud7vvlj/QcAoPaw/gMAUJ92dQ8AoHbwsDNo/fr1GjZsWG9XAwAABDz//PM66KCDepyP9R8AgNrF+g8AQH2K7gEA1A4edgbtueeekrZPlPUU5BUAgFrW2tqqYcOGdazjPcX6DwBA7WH9BwCgPu3qHgBA7eBhZ9DrP12z1157cbMDAECNif4EHes/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pebOnatzzz23R9oMAAAAAAAAAAAAYMv1+sPOK664QieffLKmTZumvffeW3PnztWAAQN04403Vnz/1VdfraOOOkpnnnmm9tprL1144YU68MADde2110ra8K3Oq666SjNnztSxxx6r/fbbT7fccoteeOEFzZ8/X5J01FFH6aabbtI73/lO7b777nrve9+rz3/+87rzzjt7qtkAAAAAAAAAAAAAtlC+Nw/e1tamRx99VOecc07Ha9lsVpMmTdKiRYsq5lm0aJFmzJjR6bXJkyd3PMh89tln1dzcrEmTJnWkDx06VBMmTNCiRYv04Q9/uGK5K1eu1HbbbRfWtbW1Va2trR3/3dLSIkl69JxTNGTIEN9QAABQk6L1/1dXsf4DALC1itb/e//nNNZ/AACALiiXMyqXM71djX6lv/Z3r36z85VXXlGxWNSIESM6vT5ixAg1NzdXzNPc3Gzfv/F/u1LmM888o6997Wv69Kc/HdZ1zpw5Gjp0aMe/0aNH+8YBAICax/oPAED/w/oPAAAA1JZe/xnb3vb888/rqKOO0nHHHaeTTz45fN8555yjlStXdvx77rnnerCWAACgN7D+AwDQ/7D+AwAAALWlV3/GdtiwYcrlclq2bFmn15ctW6aRI0dWzDNy5Ej7/o3/u2zZMo0aNarTe8aNG9cp3wsvvKAjjjhChxxyiK6//npb14aGBjU0NLymdgEAgK0D6z8AAP0P6z8AAABQW3r1m5319fUaP368Fi5c2PFaqVTSwoULNXHixIp5Jk6c2On9knTfffd1vH/MmDEaOXJkp/e0tLRo8eLFncp8/vnndfjhh2v8+PG66aablM32+y+5AgAAAAAAAAAAADWlV7/ZKUkzZszQSSedpIMOOkgHH3ywrrrqKq1Zs0bTpk2TJJ144onaaaedNGfOHEnSaaedpsMOO0yXX365jjnmGM2bN0+PPPJIxzczM5mMTj/9dF100UUaO3asxowZo/PPP1877rijpkyZIulfDzp33XVXXXbZZXr55Zc76hN9oxQAAAAAAAAAAABA39LrDzuPP/54vfzyy5o1a5aam5s1btw4LViwQCNGjJAkLV26tNO3Lg855BDddtttmjlzps4991yNHTtW8+fP1z777NPxnrPOOktr1qzRpz71Ka1YsUKHHnqoFixYoMbGRkkbvgn6zDPP6JlnntHOO+/cqT7lcrkHWg0AAAAAAAAAAABgS2XKPN1L0tLSoqFDh2rlypUaMmRIb1cHAAC8Blu6frP+AwBQe1j/AQDon1jDe8/Gvt/9O+cqN6Cxt6vTrxTXrtffTvpKvxv3vf7Nzlq18RlxS0tLL9cEAAC8VhvX7dS/9WL9BwCg9rD+AwDQP23pHgBA7eBhZ6JVq1ZJkkaPHt3LNQEAAF21atUqDR06NCmfxPoPAEAtYv0HAKB/St0DAKgdPOxMtOOOO+q5557T4MGDlclkers6yVpaWjR69Gg999xzW/VXmvtDO/tDG6X+0U7auPXoD+2stTaWy2WtWrVKO+64Y1L+rWX9l2rv3KWgjVuP/tDO/tBGqX+0kzb2Paz//1Jr5y5Ff2ij1D/aSRu3Hv2hnf2hjVLttXNL9wAAagcPOxNls1ntvPPOvV2NbjNkyJCaWKC2VH9oZ39oo9Q/2kkbtx79oZ211MYt+WvOrW39l2rr3KWijVuP/tDO/tBGqX+0kzb2Laz/ndXSuUvVH9oo9Y920satR39oZ39oo1Rb7eQbnUD/kO3tCgAAAAAAAAAAAABACh52AgAAAAAAAAAAAKhJ/IxtP9fQ0KDZs2eroaGht6tSVf2hnf2hjVL/aCdt3Hr0h3b2hzZurfrDuaONW4/+0M7+0Eapf7STNqIv6w/nrj+0Ueof7aSNW4/+0M7+0Eap/7QT3aicUblc2zHPa04/7e9MuVwu93YlAAAAAAAAAAAAUPtaWlo0dOhQ7X7zecoOaOzt6vQrpbXr9bePf1krV66smdi63YGfsQUAAAAAAAAAAABQk3jYCQAAAAAAAAAAAKAm8bATAAAAAAAAAAAAQE3iYScAAAAAAAAAAACAmsTDTgAAAAAAAAAAAAA1iYedAAAAAAAAAAAAAGpSvrcrAAAAAAAAAAAAgK1LubzhH3pOf+1vvtkJAAAAAAAAAAAAoCbxsBMAAAAAAAAAAABATeJhJwAAAAAAAAAAAICaxMNOAAAAAAAAAAAAADWJh50AAAAAAAAAAAAAahIPOwEAAAAAAAAAAADUpHxvVwAAAAAAAAAAAABbl3I5o3I509vV6Ff6a3/zzU6gD3vggQeUyWS0YsWK3q4KAADoIaz/AAD0P6z/AAAA6XjYCfQRhx9+uE4//fROrx1yyCF68cUXNXTo0N6pVKLly5fr//2//6c3vOENampq0i677KLPfvazWrlyZaf3LV26VMccc4wGDBig4cOH68wzz1ShUOhIv/POO/WOd7xDO+ywg4YMGaKJEyfq3nvvDY/71a9+VZlMZpN+jOr40Y9+VEOGDNE222yj6dOna/Xq1RXf+8wzz2jw4MHaZpttNlvuL3/5S73nPe/RjjvuqEwmo/nz53dKb29v19lnn619991XAwcO1I477qgTTzxRL7zwgiTp5ptvViaTsf+WLFmip556Sh/4wAe02267KZPJ6KqrrtqkLhvT/vPfKaecYtvw+9//Xm9961vV2Nio0aNH65JLLumU/q1vfUtvfetbte2222rbbbfVpEmT9NBDD9ky//nPf+qoo47SjjvuqIaGBo0ePVqnnnqqWlpaOt7z61//Wm95y1u0/fbbq6mpSXvuuaeuvPJKWy4A1DrW/761/i9ZsqTi2vnb3/7Wlsv6X9lrWf+7er4BYGvA+t+31n9JKpfLuuyyy7THHnuooaFBO+20k7785S9vtuw77rhDe+65pxobG7Xvvvvqnnvu2eQ9f/zjH/Xe975XQ4cO1cCBA/WmN71JS5cu7XjA7f498MADevHFF/WRj3xEe+yxh7LZbMU2H3744RXzH3PMMbb+3X1eNnrve9+rXXbZRY2NjRo1apROOOGEjn3PRvfee6/e/OY3a/Dgwdphhx30gQ98QEuWLNls2QAAVMLDTqAPq6+v18iRI5XJ1NZXz1944QW98MILuuyyy/Tkk0/q5ptv1oIFCzR9+vSO9xSLRR1zzDFqa2vTgw8+qO985zu6+eabNWvWrI73/PKXv9Q73vEO3XPPPXr00Ud1xBFH6D3veY8ef/zxTY758MMP65vf/Kb222+/11THj370o3rqqad033336e6779Yvf/lLfepTn9rkfe3t7Zo6dare+ta3vqZy16xZo/3331/XXXddxfS1a9fqscce0/nnn6/HHntMd955p55++mm9973vlSQdf/zxevHFFzv+TZw4USeffHKn10aPHq21a9dq991311e/+lWNHDmy4rEefvjhTvnuu+8+SdJxxx0X1r+lpUXvfOc7teuuu+rRRx/VpZdeqi9+8Yu6/vrrO97zwAMPaOrUqfrFL36hRYsWafTo0XrnO9+p559/Piw3m83q2GOP1V133aU///nPuvnmm/Xzn/9cn/nMZzreM3DgQJ166qn65S9/qT/+8Y+aOXOmZs6c2enYANAfsP73/vr/85//vNMaOn78eFsu639lr2X978r5BoCtGet/767/p512mr797W/rsssu05/+9CfdddddOvjgg225Dz74oKZOnarp06fr8ccf15QpUzRlyhQ9+eSTHe/561//qkMPPVR77rmnHnjgAf3+97/X+eefr8bGxo4H3Bv/fehDH9JRRx3V6bVDDjlEra2t2mGHHTRz5kztv//+Fety5513dsr35JNPKpfL2fW/u8/LvzviiCP0ve99T08//bR+8IMf6K9//as++MEPdqQ/++yzOvbYY/X2t79dTzzxhO6991698sorev/732/LBQAgkimXy+XergTQ33384x/Xd77znU6vPfvss1qyZImOOOIIvfrqq9pmm21088036/TTT9ett96qz33uc3ruued09NFH65ZbbtEdd9yh2bNna+XKlTrhhBN05ZVXKpfLSZJaW1t13nnn6X/+53+0YsUK7bPPPrr44ot1+OGH91gb77jjDn3sYx/TmjVrlM/n9dOf/lTvfve79cILL2jEiBGSpLlz5+rss8/Wyy+/rPr6+orlvPGNb9Txxx/fafO9evVqHXjggfr617+uiy66SOPGjav4TYeN/vjHP2rvvffWww8/rIMOOkiStGDBAh199NH6xz/+oR133LHjvWeffbZeeOEFHXnkkTr99NO79JNCmUxGP/zhDzVlyhT7vocfflgHH3yw/v73v2uXXXbplHb44Ydvtj277babTj/99M3+Revpp5+uu+++W3/5y1/CG+hvfOMbOu+889Tc3NxxDr7whS9o/vz5+tOf/lQxT7FY1Lbbbqtrr71WJ554oq3Dv7vmmmt06aWX6rnnngvf8/73v18DBw7Ud7/73ddcLgDUCtb/vrf+L1myRGPGjNHjjz+ucePGJbWZ9d97Let/pfMNAFsL1v++t/7/8Y9/1H777acnn3xSb3jDG15zO48//nitWbNGd999d8drb37zmzVu3DjNnTtXkvThD39YdXV1r+me9uMf/7hWrFixyS9E/LvXskeQpKuuukqzZs3Siy++qIEDB1Z8T3eel8256667NGXKFLW2tqqurk7f//73NXXqVLW2tiqb3fBdnB//+Mc69thjO94DoLa1tLRo6NCh2u3GmcoOaOzt6vQrpbXrteQTF2nlypUaMmRIb1enx/DNTqAPuPrqqzf5C/7Ro0dXfO/atWt1zTXXaN68eVqwYIEeeOABve9979M999yje+65R9/97nf1zW9+U9///vc78px66qlatGiR5s2bp9///vc67rjjdNRRR+kvf/lLWKd3vetdGjRoUPjvjW98Y5fauHFyzefzkqRFixZp33337dhQS9LkyZPV0tKip556qmIZpVJJq1at0nbbbdfp9VNOOUXHHHOMJk2a9JrqsmjRIm2zzTYdNzqSNGnSJGWzWS1evLjjtfvvv1933HFH+C2N7rJy5UplMpnX9DO5qdra2nTrrbfqE5/4RKcPOj/+8Y93uuldtGiR3va2t3W6qZk8ebKefvppvfrqqxXLXrt2rdrb2zudly9+8Yvabbfdwvq88MILuvPOO3XYYYeF73n88cf14IMP2vcAQC1j/d+gr63/0oafXhs+fLgOPfRQ3XXXXa+p/K5i/a8sOt8AsLVg/d+gL63/P/7xj7X77rvr7rvv1pgxY7Tbbrvpk5/8pJYvX77Zsv+zHpMnT9aiRYs62vCTn/xEe+yxhyZPnqzhw4drwoQJ9mFmd7nhhhv04Q9/uNODzv9cp7vrvGz8Of7I8uXL9d///d865JBDOh5ijh8/XtlsVjfddJOKxaJWrlyp7373u5o0aRIPOgEASfK9XYH+qLW1VRMmTNDvfve7zf7V+Pr16/W5z31O8+bNU2trqyZPnqyvf/3rHRuR3/3ud/rqV7+qX//613rllVe022676TOf+YxOO+20TuVcd911uvbaa7VkyRLtsssuOu+887r0F9iS9OUvf1k/+clP9MQTT6i+vr5L33CDN3ToUNXX12vAgAHhT5Jt1N7erm984xt63eteJ0n64Ac/qO9+97tatmyZBg0apL333ltHHHGEfvGLX+j444/X0qVLddNNN2np0qUd31j8/Oc/rwULFuimm27SV77ylYrH+fa3v61169aF9ejK5vOVV17RhRde2OlnYpqbmzttqCV1/Hdzc3PFci677DKtXr1aH/rQhzpemzdvnh577DE9/PDDr7k+zc3NGj58eKfX8vm8tttuu45j//Of/9THP/5x3XrrrVX9C5j169fr7LPP1tSpU6t6nPnz52vFihX6+Mc/3un1UaNGqVQqdfx3c3OzxowZ0+k9/35ett12203KPvvss7Xjjjt2uskbNmxYxxj9d1OnTtWPfvQjrVu3Tu95z3v07W9/e5P37Lzzznr55ZdVKBT0xS9+UZ/85Ce71FYAqBWs/xv0pfV/0KBBuvzyy/WWt7xF2WxWP/jBDzRlyhTNnz+/4ydnuwPr/6br/0aVzjcAbE1Y/zfoS+v/3/72N/3973/XHXfcoVtuuUXFYlFnnHGGPvjBD+r++++3ZVdq18ZyX3rpJa1evVpf/epXddFFF+niiy/WggUL9P73v1+/+MUvqvaHvQ899JCefPJJ3XDDDZ1e/891urvOy9ChQyt+I/bss8/Wtddeq7Vr1+rNb35zp2/AjhkzRj/72c/0oQ99SJ/+9KdVLBY1ceLEijFPAQB4LXjY2c0OP/xwffzjH9/kA4V/d9ZZZ2nHHXfU7373u82Wd8YZZ+gnP/mJ7rjjDg0dOlSnnnqq3v/+9+s3v/mNJOnRRx/V8OHDdeutt2r06NF68MEH9alPfUq5XE6nnnqqpA0/S3XOOefoW9/6lt70pjfpoYce0sknn6xtt91W73nPe15z29ra2nTcccdp4sSJm2yY0HMGDBjQaXM6YsQI7bbbbho0aFCn11566SVJ0h/+8AcVi0XtsccencppbW3V9ttvHx5np5126pb6trS06JhjjtHee++tL37xi8nl3HbbbfrSl76kH/3oRx03Ks8995xOO+003XfffWpsrPxzCJ/5zGd06623dvz36tWrX9PxTj75ZH3kIx/R2972torpv/rVr/Sud72r47+/+c1v6qMf/ehrbY6kDTeuH/rQh1Qul/WNb3yjS3m76oYbbtC73vWuTj/RK0lz5szZonK/+tWvat68eXrggQc6nYNTTz21Yw76d1deeaVmz56tP//5zzrnnHM0Y8YMff3rX+/0nl/96ldavXq1fvvb3+oLX/iCXv/612vq1KlbVE8AqHWs/z2z/g8bNkwzZszo+O83velNeuGFF3TppZfqve99L+v//68a679U+XwDQH/G+t8z63+pVFJra6tuueWWjr674YYbNH78eD399NNqamrS3nvv3fH+c889V+eee+5rKleSjj32WJ1xxhmSpHHjxunBBx/U3Llzq/aw84YbbtC+++67SczRaJ1+raJ1+n3ve5/e9773bfL+M888U9OnT9ff//53felLX9KJJ56ou+++W5lMRs3NzTr55JN10kknaerUqVq1apVmzZqlD37wg7rvvvtqLnYtAKD38bCzh/30pz/Vz372M/3gBz/QT3/6U/velStX6oYbbtBtt92mt7/97ZKkm266SXvttZd++9vf6s1vfrM+8YlPdMqz++67a9GiRbrzzjs7NjDf/e539elPf1rHH398x3sefvhhXXzxxZ0edn7729/W5ZdfrmeffVa77babPvvZz+q//uu/OtK/9KUvSdrw8xToPf/5F5WZTKbiaxs31atXr1Yul9Ojjz7aEcNjo3+/QfpP73rXu/SrX/0qTN91113DnzXZaNWqVTrqqKM0ePBg/fCHP+xUz5EjR+qhhx7q9P5ly5Z1pP27efPm6ZOf/KTuuOOOTt8eePTRR/XSSy/pwAMP7HitWCzql7/8pa699lq1trbqggsu0Oc///lO5Y0cObLjZnCjQqGg5cuXdxz7/vvv11133aXLLrtMklQul1UqlZTP53X99ddr6tSpeuKJJzry/+dfQ27Oxg86//73v+v++++v6rc6/v73v+vnP/+57rzzzs2+d+TIkR3nYaPovFx22WX66le/qp///Ofab7/9XlNdRo4cqZEjR2rPPffUdtttp7e+9a06//zzNWrUqI73bPxmyb777qtly5bpi1/8Ig87AfR7rP89s/5XMmHCBN13332SpIMOOoj1v0rrf3S+AaA/Y/3vmfV/1KhRyufznR4S77XXXpKkpUuX6ogjjui0/m/8Cddo/dxY7rBhw5TP5zs9KN1Y9q9//WtVw5o1azRv3jxdcMEFm31vd5wXZ9iwYRo2bJj22GMP7bXXXho9erR++9vfauLEibruuus0dOhQXXLJJR3v3/hFjsWLF+vNb37zazoGgBpQzmz4h57TT/ubh509aNmyZTr55JM1f/58DRgwYLPvf/TRR9Xe3t5pE7Hnnntql1120aJFi8KFf+XKlZ1+O7+1tXWTv3pramrSQw89pPb2dtXV1em///u/NWvWLF177bU64IAD9Pjjj+vkk0/WwIEDddJJJyW2GF1RX1+vYrHY7eUecMABKhaLeumll/TWt771Nefb0p+xaWlp0eTJk9XQ0KC77rprkzE4ceJEffnLX9ZLL73U8ReB9913n4YMGdLpRuB//ud/9IlPfELz5s3TMccc06mMI488Un/4wx86vTZt2jTtueeeOvvss5XL5TR8+PBNvhkwceJErVixQo8++qjGjx8vacPDzVKppAkTJkjaELvi38/Hj370I1188cV68MEHtdNOO6mpqUmvf/3rbR9ENn7Q+Ze//EW/+MUv7F/YdoebbrpJw4cP36T/Kpk4caLOO++8jrlB2nBe3vCGN3T6CbtLLrlEX/7yl3Xvvfd2in3SFRtvyFtbW+17XDoA1DrW/761/lfyxBNPdDyUY/2vzvrvzjcAbI1Y//vW+v+Wt7xFhUJBf/3rXzu+SfvnP/9Z0oYHvfl8vuL6P3HiRC1cuFCnn356x2v33XefJk6cKGnDeX7Tm96kp59+ulO+P//5z9p1111Nj6a744471Nraqo997GObfW93nJfX6j/X/7Vr1yqbzXZ6z8YH9P/+U/sAALxWPOzsIeVyWR//+Mf1mc98RgcddJCWLFmy2TzNzc2qr6/XNtts0+n1f//9///04IMP6vbbb9dPfvKTjtcmT56sb3/725oyZYoOPPBAPfroo/r2t7+t9vZ2vfLKKxo1apRmz56tyy+/XO9///slbfhm1f/93//pm9/8Jg87e8huu+2mxYsXa8mSJRo0aFCnB9ZbYo899tBHP/pRnXjiibr88st1wAEH6OWXX9bChQu13377hRvVLfkZm5aWFr3zne/U2rVrdeutt6qlpUUtLS2SpB122EG5XE7vfOc7tffee+uEE07QJZdcoubmZs2cOVOnnHKKGhoaJG34iZSTTjpJV199tSZMmNAx7puamjR06FANHjxY++yzT6djDxw4UNtvv/0mr/+7vfbaS0cddZROPvlkzZ07V+3t7Tr11FP14Q9/uONn3jb+FedGjzzyiLLZrC1X2vCXtM8880zHfz/77LN64okntN1222mXXXZRe3u7PvjBD+qxxx7T3XffrWKx2NGu7bbbTvX19a+li9XW1qb/+7//6/j/zz//vJ544gkNGjSo001YqVTSTTfdpJNOOkn5/KZT/jnnnKPnn39et9xyiyTpIx/5iL70pS9p+vTpOvvss/Xkk0/q6quv1pVXXtmR5+KLL9asWbN02223abfddusU52zjXwtfe+21+uEPf6iFCxdKku655x4tW7ZMb3rTmzRo0CA99dRTOvPMM/WWt7xFu+22m6QNsYV32WUX7bnnnpKkX/7yl7rsssv02c9+9jX1CQDUItb/vrX+f+c731F9fb0OOOAASdKdd96pG2+80caYlFj/t2T939z5BoCtEet/31r/J02apAMPPFCf+MQndNVVV6lUKumUU07RO97xjk1+EvjfnXbaaTrssMN0+eWX65hjjtG8efP0yCOP6Prrr+94z5lnnqnjjz9eb3vb23TEEUdowYIF+vGPf6wHHnigS/288Zulq1ev1ssvv6wnnnhC9fX1m3xr9IYbbtCUKVMq/lHVf67T3XFeJOmHP/yhzjnnHP3pT3+SJC1evFgPP/ywDj30UG277bb661//qvPPP1+ve93rOh4EH3PMMbryyit1wQUXdPyM7bnnnqtdd921Yx8GAEBXZDf/Fjhf+cpXOm7wBw0apF/96lf6zGc+0+m1pUuX6mtf+5pWrVqlc845p2p1efLJJ3Xsscdq9uzZeuc739nx+vnnn693vetdevOb36y6ujode+yxHQ8ws9ms1qxZo7/+9a+aPn16p3pfdNFF+utf/1q1+qKzz3/+88rlctp77721ww47aOnSpd1W9k033aQTTzxRn/vc5/SGN7xBU6ZM0cMPP6xddtml247x7x577DEtXrxYf/jDH/T6179eo0aN6vj33HPPSdrwF3t33323crmcJk6cqI997GM68cQTO/3UyvXXX69CoaBTTjmlUxmnnXbaFtfxv//7v7XnnnvqyCOP1NFHH61DDz200w1JqkceeUQHHHBAx+Z8xowZOuCAAzRr1ixJ0vPPP6+77rpL//jHPzRu3LhO7XrwwQdf83FeeOGFjuO8+OKLuuyyy3TAAQfok5/8ZKf3/fznP9fSpUs3+cnrjV588cVOY23o0KH62c9+pmeffVbjx4/X5z73Oc2aNUuf+tSnOt7zjW98Q21tbfrgBz/Yqf4bf/JXkl555ZVO80dTU5O+9a1v6dBDD9Vee+2lM844Q+9973t19913d7ynVCrpnHPO0bhx43TQQQfpuuuu08UXX/yafn4HAGoV63/fW/8vvPBCjR8/XhMmTNCPfvQj3X777Zo2bZotl/V/g5T1v5rnGwD6Ktb/vrX+Z7NZ/fjHP9awYcP0tre9Tcccc4z22msvzZs3z5Z7yCGH6LbbbtP111+v/fffX9///vc1f/78Tg9f3/e+92nu3Lm65JJLtO++++rb3/62fvCDH+jQQw/tUhs2rv+PPvqobrvtNh1wwAE6+uijO73n6aef1q9//WtNnz69Yhn/uU5313lZuXJlp2+vDhgwQHfeeaeOPPJIveENb9D06dO133776X//9387HqK+/e1v12233ab5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2mar0t1tS4zLWY01NDmWZhdvKNy1DfR1k94Wx7y07B6ge691N3fYcHmp82niVzdKNg51kCcx9nNyzE7TNnef3/Ry5dibktTwYkuY1rrTkIqvr9op/sjYxpm0ca3T0pzU/rLjPGhfT392lrrupsbDTGl3alzR7q6jPRZf9QL6DR52AgAAAAAAAAAAoHuV1f1fAIHXT/ubv20AAAAAAAAAAAAAUJN42AkAAAAAAAAAAACgJvGwEwAAAAAAAAAAAEBN6vWYndddd50uvfRSNTc3a//999fXvvY1HXzwweH777jjDp1//vlasmSJxo4dq4svvlhHH310R3q5XNbs2bP1rW99SytWrNBb3vIWfeMb39DYsWM73vPnP/9ZZ555pn7zm9+ora1N++23ny688EIdccQRVW0res6eX7wyTuxDv1mdFNw8Mfi3PVZinyQHZ7eFdvH1vsb0SaZoGhG2Oy4wU0o8lqtjFc6pLbInz3dqu8txZdw5sMdz+ZLa3v0dZutYDUF/me73an0uQZLXX3pFmJZtj09+bn1cpk1ri9Oy7XFa6vyQcVN7kOiuoXKu+9NKJs1df0U718YdlmsNEsp9acNn0kw1o3O6IS3OF52DUl38d66lOlOPbNrEmSlWY1PRzWXaayotTbm08+a5gWKyuUkjzGMO5Yozx3L7LFt9O4a61rYe39egx73tvZeGadm2eABEY8ONP7cu+WvIXCdFU8eUa1lbMOdEzUssr2zmRTtP5c1Hlm6/lHh+MoWovDhPOfErJHa/Z6rfsDLO2PDy2jCtNLAhTFu9U33F1+1eMPUzJNeX7tpJ7GfXBp+xSy9L8uetKu12ad28XbL1SK1/6uczKfMQnwEA/UavfrPz9ttv14wZMzR79mw99thj2n///TV58mS99NJLFd//4IMPaurUqZo+fboef/xxTZkyRVOmTNGTTz7Z8Z5LLrlE11xzjebOnavFixdr4MCBmjx5stav/9cnVe9+97tVKBR0//3369FHH9X++++vd7/73Wpubq56mwEAAAAAAAAAAAB0j1592HnFFVfo5JNP1rRp07T33ntr7ty5GjBggG688caK77/66qt11FFH6cwzz9Ree+2lCy+8UAceeKCuvfZaSRu+1XnVVVdp5syZOvbYY7Xffvvplltu0QsvvKD58+dLkl555RX95S9/0Re+8AXtt99+Gjt2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vmEgxmZmzn0ba90wl78AEK3Gbi0CAAAAAAAAAAAAwBZV8bDzlltu0fDhw9Xc3Kxx48bpwQcftO+/5557dMghh6i5uVmHH3647r333i7pWZZpzpw5GjJkiPr27auJEyfqySefLKY//fTTOvvsszVixAj17dtXb3jDGzR37ly1t7eXpX4AAAAAAAAAAAAASq/HH3befffdmjlzpubOnatHHnlERx55pFpaWvTCCy90+/4HHnhAp59+us4++2w9+uijmjx5siZPnqzHH3+8+J6rr75aN910kxYuXKhVq1Zpt912U0tLizZv3vLzcb/73e+Upqm++MUv6je/+Y1uuOEGLVy4UJdccklF6gwAAAAAAAAAANCbJRl/PfFXj3r8Yef111+v6dOna9q0aRo1apQWLlyofv366Y477uj2/TfeeKMmTZqkCy+8UIceeqguv/xyHX300br55pslbflW54IFCzR79mydcsopOuKII3TXXXfpueee05IlSyRJkyZN0p133qkTTjhBr3/96/XP//zP+uQnP6nvfve7lao2AAAAAAAAAAAAgF1UwfDV22pvb9fq1as1a9as4mu5XE4TJ07UypUru82zcuVKzZw5s8trLS0txQeZTz31lFpbWzVx4sRi+oABAzRu3DitXLlS73nPe7rd7vr167XnnnsGy9rW1qa2trbi/2/YsEGS9KsPz1D//v19RQEAQE0Kzf+Pn3EB8z9QSm/t6QIAwN+E5v/7v8T1PwAAAFCNevSbnevWrVOhUNCgQYO6vD5o0CC1trZ2m6e1tdW+f+u/O7PNP/zhD/r85z+vD33oQ8Gyzp8/XwMGDCj+DRs2zFcOAADUPOZ/AADqD/M/AAAAUFt6/Gdse9qzzz6rSZMmacqUKZo+fXrwfbNmzdL69euLf88880wFSwkAAHoC8z8AAPWH+R8AAACoLT36M7Z777238vm81q5d2+X1tWvXavDgwd3mGTx4sH3/1n/Xrl2rIUOGdHnP6NGju+R77rnndPzxx2vChAm67bbbbFmbmprU1NS0Q/UCAAC9A/M/AAD1h/kfAAAAqC09+s3OxsZGjRkzRsuXLy++lqapli9frvHjx3ebZ/z48V3eL0nLli0rvn/EiBEaPHhwl/ds2LBBq1at6rLNZ599Vscdd5zGjBmjO++8U7lc3X/JFQAAAAAAAAAAAKgpPfrNTkmaOXOmpk6dqrFjx+qYY47RggULtHHjRk2bNk2SdOaZZ2q//fbT/PnzJUnnnXeejj32WF133XU66aSTtHjxYj388MPFb2YmSaLzzz9fV1xxhUaOHKkRI0bo0ksv1dChQzV58mRJf3vQeeCBB+raa6/Viy++WCxP6BulAAAAAAAAAAAA2EHZ//2hcuq0vXv8Yedpp52mF198UXPmzFFra6tGjx6tpUuXatCgQZKkNWvWdPnW5YQJE7Ro0SLNnj1bl1xyiUaOHKklS5bosMMOK77noosu0saNG3XOOefopZde0lve8hYtXbpUzc3NkrZ8E/QPf/iD/vCHP2j//ffvUp4sq9OeAAAAAAAAAAAAANSYJOPpXpQNGzZowIABWr9+vfr379/TxQEAADtgV+dv5n8AAGoP8z8AAPWJObznbG37gz5xpfJNzT1dnLpSaNus3193Sd31+x7/Zmet2vqMeMOGDT1cEgAAsKO2ztuxn/Vi/gcAoPYw/wMAUJ92dQ0AoHbwsDPSyy+/LEkaNmxYD5cEAADsrJdfflkDBgyIyicx/wMAUIuY/wEAqE+xawAAtYOHnZGGDh2qZ555RnvssYeSJOnp4kTbsGGDhg0bpmeeeaZXf6W5HupZD3WU6qOe1LH3qId61lodsyzTyy+/rKFDh0bl7y3zv1R7xy4Gdew96qGe9VBHqT7qSR2rD/P/39TasYtRD3WU6qOe1LH3qId61kMdpdqr566uAQDUDh52Rsrlctp///17uhgl079//5qYoHZVPdSzHuoo1Uc9qWPvUQ/1rKU67sqnOXvb/C/V1rGLRR17j3qoZz3UUaqPelLH6sL831UtHbtY9VBHqT7qSR17j3qoZz3UUaqtevKNTqA+5Hq6AAAAAAAAAAAAAAAQg292AgAAAAAAAAAAoLSy//tD5dRpe/PNzjrX1NSkuXPnqqmpqaeLUlb1UM96qKNUH/Wkjr1HPdSzHurYW9XDsaOOvUc91LMe6ijVRz2pI6pZPRy7eqijVB/1pI69Rz3Usx7qKNVPPQHUniTLsjp9zgsAAAAAAAAAAIBS2rBhgwYMGKCDZl6pfFNzTxenrhTaNuv311+i9evX10xs3VLgm50AAAAAAAAAAAAAahIPOwEAAAAAAAAAAADUJB52AgAAAAAAAAAAAKhJPOwEAAAAAAAAAAAAUJMaeroAAAAAAAAAAAAA6F2SbMsfKqde25tvdgIAAAAAAAAAAACoSTzsBAAAAAAAAAAAAFCTeNgJAAAAAAAAAAAAoCbxsBMAAAAAAAAAAABATeJhJwAAAAAAAAAAAICaxMNOAAAAAAAAAAAAADWJh50AAAAAAAAAAAAAalJDTxcAAAAAAAAAAAAAvUz2f3+onDptb77ZCQAAAAAAAAAAAKAm8bATqGIrVqxQkiR66aWXerooAACgQpj/AQCoP8z/AAAA8XjYCVSJ4447Tueff36X1yZMmKDnn39eAwYM6JlCRfrLX/6ij33sYzr44IPVt29fHXDAAfr4xz+u9evXd3nfmjVrdNJJJ6lfv37ad999deGFF6qzs7OY/t3vflfveMc7tM8++6h///4aP3687rvvvi7buPXWW3XEEUeof//+xff8+Mc/3qEynnHGGerfv79e97rX6eyzz9Yrr7zS5T333Xef3vSmN2mPPfbQPvvso3e96116+umn7Xa/9KUv6a1vfasGDhyogQMHauLEiXrwwQeL6R0dHbr44ot1+OGHa7fddtPQoUN15pln6rnnnpMkfeUrX1GSJPbv6aef1m9+8xu9613v0vDhw5UkiRYsWNBteZ599lm9733v01577aW+ffvq8MMP18MPP7zd9pGk//3f/9X++++/zQX3888/r/e+97066KCDlMvltum3IR/60If0hje8QX379tU+++yjU045Rb/73e+6vGf58uWaMGGC9thjDw0ePFgXX3xxlz4BAL0N83/1zf/f+ta3NHr0aPXr108HHnigrrnmmu1ud0fn5a2uuuoqJUlSPPZbb3C7vxUrVuzwHPzSSy/pox/9qIYMGaKmpiYddNBBuvfee7dbD0lqa2vT6NGjlSSJHnvsseLrl112Wbfl2m233ez2jjvuuG3ynHvuud2+N7T2AIDehvm/svP/Zz/7WU2YMEH9+vXT6173um7f8/GPf1xjxoxRU1OTRo8evUN135F5ubt5MEkSnXTSSXr66ae3O/9/5Stf0ebNm3XWWWfp8MMPV0NDgyZPntxtedra2vTpT39aBx54oJqamjR8+HDdcccdO1SXLMv0zne+U0mSaMmSJV3SHnroIb397W/X6173Og0cOFAtLS365S9/ud1t3nLLLRo+fLiam5s1bty4LvdGdnTfAADsKB52AlWssbFRgwcPVpIkPV2UnfLcc8/pueee07XXXqvHH39cX/nKV7R06VKdffbZxfcUCgWddNJJam9v1wMPPKCvfvWr+spXvqI5c+YU3/Ozn/1M73jHO3Tvvfdq9erVOv744/VP//RPevTRR4vv2X///XXVVVdp9erVevjhh/W2t71Np5xyin7zm9/YMp5xxhn6zW9+o2XLlumHP/yhfvazn+mcc84ppj/11FM65ZRT9La3vU2PPfaY7rvvPq1bt07/+q//are7YsUKnX766frpT3+qlStXatiwYTrhhBP07LPPSpI2bdqkRx55RJdeeqkeeeQRffe739UTTzyhf/7nf5YknXbaaXr++eeLf+PHj9f06dO7vDZs2DBt2rRJr3/963XVVVdp8ODB3Zblr3/9q9785jerT58++vGPf6zf/va3uu666zRw4EBbh63OPvtsHXHEEdu83tbWpn322UezZ8/WkUceuUPbkqQxY8bozjvv1H//93/rvvvuU5ZlOuGEE1QoFCRJv/zlL3XiiSdq0qRJevTRR3X33XfrBz/4gT71qU/t8D4AoDdg/u+5+f/HP/6xzjjjDJ177rl6/PHH9YUvfEE33HCDbr75ZrvdHZmXt3rooYf0xS9+scscu/UG99a/U089VZMmTery2oQJE3ZoDm5vb9c73vEOPf300/r2t7+tJ554Ql/60pe033772XJtddFFF2no0KHbvP7JT36yS3mef/55jRo1SlOmTNnuNl+7lrn66qu7fV9o7QEA9YD5v3zzf3t7u6ZMmaIPf/jD9n0f+MAHdNppp+1w3XdkXv7ud7/bZQ58/PHHlc/nNWXKFA0bNqxL2ic+8Qm98Y1v7PLaaaedpkKhoL59++rjH/+4Jk6cGCzPqaeequXLl+v222/XE088oW9+85s6+OCDd6guCxYs6LbvvfLKK5o0aZIOOOAArVq1Sv/5n/+pPfbYQy0tLero6Ahu7+6779bMmTM1d+5cPfLIIzryyCPV0tKiF154YYf3DQDAzkiyLKvTcKVA9TjrrLP01a9+tctrTz31lJ5++mkdf/zx+utf/6rXve51+spXvqLzzz9fX//61/WJT3xCzzzzjE488UTddddduueeezR37lytX79e73//+3XDDTcon89L+tun+775zW/qpZde0mGHHabPfe5zOu644ypWx3vuuUfve9/7tHHjRjU0NOjHP/6xTj75ZD333HMaNGiQJGnhwoW6+OKL9eKLL6qxsbHb7bzxjW/Uaaed1uWi6LX23HNPXXPNNV0urv7ef//3f2vUqFF66KGHNHbsWEnS0qVLdeKJJ+rPf/6zhg4dqm9/+9s6/fTT1dbWplxuy+dC/u3f/k2nnHKK2tra1KdPnx2qd6FQ0MCBA3XzzTfrzDPP7PY9Dz30kI455hj9z//8jw444IAuaccdd5xGjx5tvyEyfPhwnX/++dt8ivRTn/qUfvGLX+jnP//5DpX179166626++67NWfOHL397W8v9sHX2pHyhfzqV7/SkUceqT/84Q96wxveoEsuuUTLli3TQw89VHzPv/3bv+nUU0/VCy+8oD322GOn9wEA1Yz5v/rm//e+973q6OjQPffcU8z3+c9/XldffbXWrFmzQzfiQvOytOWG4dFHH60vfOELuuKKK4Jz6FlnnaWXXnrJfrshNAcvXLhQ11xzjX73u9/t8Hplqx//+MeaOXOmvvOd7+iNb3yjHn300eC3W375y19q9OjR+tnPfqa3vvWtO13O19rRtQcA1Drm/8rO/39va5u6Xw+47LLLtGTJki6/brAjdnS+W7BggebMmaPnn39+m19H2JF9h9YIS5cu1Xve8x796U9/0p577rlTZX/sscd08skn6+GHH9aQIUP0ve99r/jt0Ycfflj/+I//qDVr1mjYsGGSpF//+tc64ogj9OSTT+of/uEfut3muHHj9I//+I/FD4ylaaphw4bpYx/7WJcPNLt9A6htGzZs0IABA3Tw+Vcq39Tc08WpK4W2zXpiwSVav369+vfv39PFqRi+2QlUgRtvvHGbb/BtXUS+1qZNm3TTTTdp8eLFWrp0qVasWKF/+Zd/0b333qt7771XX/va1/TFL35R3/72t4t5ZsyYoZUrV2rx4sX61a9+pSlTpmjSpEl68skng2V65zvfqd133z3498Y3vnGn6rh1cG1oaJAkrVy5UocffnjxQkeSWlpatGHDhuCnMtM01csvvxxcuBcKBS1evFgbN27U+PHjg2VZuXKlXve61xVvdErSxIkTlcvltGrVKklbvoWYy+V05513qlAoaP369fra176miRMn7tSNw02bNqmjo8NebKxfv15JkpT8ht4PfvADjR07VlOmTNG+++6ro446Sl/60pe6vOeyyy7T8OHDu7z229/+VvPmzdNdd91VfNC7s7b+HF/oZ383btyoO++8UyNGjCj29ba2NjU3d1389O3bV5s3b9bq1aujygEA1Yz5f4tqmv9Dc9Gf//xn/c///M+OVdr46Ec/qpNOOsl+K2NX/eAHP9D48eP10Y9+VIMGDdJhhx2mK6+8svhLCtLffjb/761du1bTp0/X1772NfXr12+7+/nyl7+sgw46qMuDztD8/41vfEN77723DjvsMM2aNUubNm3qkl6KtQcA1Arm/y0qNf9Xm9tvv13vec97tvsz8Dtr6/X/1Vdfrf32208HHXSQPvnJT+rVV18tvqe7eXrTpk1673vfq1tuuaXbX6c4+OCDtddee+n2229Xe3u7Xn31Vd1+++069NBDu9xL2PqTu9KWb9KuXr26y3onl8tp4sSJWrly5Q7vGwCAndHQ0wWoR21tbRo3bpx++ctf2k9LS9LmzZv1iU98QosXL1ZbW5taWlr0hS98obhA/OUvf6mrrrpK//mf/6l169Zp+PDhOvfcc3Xeeed12c4tt9yim2++WU8//bQOOOAAffrTnw5+yyzks5/9rH70ox/pscceU2NjI3F0SmjAgAFqbGxUv379trvA6+jo0K233qo3vOENkqR3v/vd+trXvqa1a9dq991316hRo3T88cfrpz/9qU477TStWbNGd955p9asWVP8SbJPfvKTWrp0qe68805deeWV3e7ny1/+cpdF8WvtzAO/devW6fLLL+/yM3Gtra1dLnQkFf+/tbW12+1ce+21euWVV3Tqqad2ef3Xv/61xo8fr82bN2v33XfX9773PY0aNSpYntbWVu27775dXmtoaNCee+5Z3PeIESP07//+7zr11FP1oQ99SIVCQePHj9/heFdbXXzxxRo6dGjwpubmzZt18cUX6/TTTy/5J23+9Kc/6dZbb9XMmTN1ySWX6KGHHtLHP/5xNTY2aurUqZKkvffeu9iXpC3j0+mnn65rrrlGBxxwgP70pz9F7btfv346+OCDt+knX/jCF3TRRRdp48aNOvjgg7Vs2bLip3hbWlq0YMECffOb39Spp56q1tZWzZs3T9KWWCgA0Nsw/29RTfN/S0uLLrjgAp111lk6/vjj9Yc//EHXXXedpC1z0Ws/ILQzFi9erEceeaTLLxiUw5/+9Cfdf//9OuOMM3TvvffqD3/4gz7ykY+oo6NDc+fOlbSl7/39z9plWaazzjpL5557rsaOHbvdGOWbN2/WN77xjW1+ar67+f+9732vDjzwQA0dOlS/+tWvdPHFF+uJJ57Qd7/7XUmlW3sAQK1g/t+iUvN/NXnwwQf1+OOP6/bbby/5tv/0pz/pP//zP9Xc3Kzvfe97WrdunT7ykY/of//3f3XnnXdK6n6evuCCCzRhwgSdcsop3W53jz320IoVKzR58mRdfvnlkqSRI0fqvvvuKz7MlrY8FN0ab3bdunUqFArdHvPf/e53O7xvAL1E9n9/qJw6bW8edpbYcccdp7POOktnnXVW8D1b4+DsSDDvCy64QD/60Y90zz33aMCAAZoxY4b+9V//Vb/4xS8kSatXr9a+++6rr3/96xo2bJgeeOABnXPOOcrn85oxY4akLT8JNWvWLH3pS1/SP/7jP+rBBx/U9OnTNXDgQP3TP/3TDtdta4yD8ePHl2Vhhh3Tr1+/Lg+nBg0apOHDh2v33Xfv8trWOAi//vWvVSgUdNBBB3XZTltbm/baa6/gfnY0rtP2bNiwQSeddJJGjRqlyy67LHo7ixYt0mc+8xl9//vf3+ZG5cEHH6zHHntM69ev17e//W1NnTpV//Ef/6FRo0bp3HPP1de//vXie1955ZUd2l9ra6umT5+uqVOn6vTTT9fLL7+sOXPm6N3vfreWLVumZ555pssF1SWXXKJLLrmkyzauuuoqLV68WCtWrNjmWyLSlgvXU089VVmW6dZbb92Z5tghaZpq7NixxQvao446So8//rgWLlxYfNg5Y8aM4lghSbNmzdKhhx6q973vfbu072OOOabLRcxWZ5xxht7xjnfo+eef17XXXqtTTz1Vv/jFL9Tc3KwTTjhB11xzjc4991y9//3vV1NTky699FL9/Oc/51seAOoe839l5v/p06frj3/8o04++WR1dHSof//+Ou+883TZZZcpl8tpzZo1253/u/PMM8/ovPPO07Jly7pdE5RSmqbad999ddtttymfz2vMmDF69tlndc011xQfdv7Lv/yL/uVf/qWY5/Of/7xefvllzZo1a4f28b3vfU8vv/xycT2xVXfz/9/f7D788MM1ZMgQvf3tb9cf//hHveENbyjZ2gMAeiPm/8rM/zvi79v8fe97nxYuXLjT27j99tt1+OGH65hjjilZubZK01RJkugb3/hG8aHj9ddfr3e/+936whe+oL59+24zT//gBz/Q/fff3yUu6mu9+uqrOvvss/XmN79Z3/zmN1UoFHTttdfqpJNO0kMPPaS+fftKUrfX/86O7BsAgJ3Bw84K+/GPf6x///d/13e+8x39+Mc/tu9dv369br/9di1atEhve9vbJEl33nmnDj30UP3Xf/2X3vSmN+kDH/hAlzyvf/3rtXLlSn33u98tPsD42te+pg996EPFIOuvf/3r9dBDD+lzn/tcl4edX/7yl3Xdddfpqaee0vDhw/Xxj39cH/nIR4rpn/nMZySp+LMU6Bmv/URlkiTdvpamqaQti/t8Pq/Vq1cXY3hs9feL9dd65zvfaWM9HnjggcGfm9nq5Zdf1qRJk7THHnvoe9/7XpdyDh48WA8++GCX969du7aY9vcWL16sD37wg7rnnnu6/YZkY2NjMU7EmDFj9NBDD+nGG2/UF7/4Rc2bN0+f/OQnu7x/8ODBxYvBrTo7O/WXv/yluO9bbrlFAwYM0NVXX118z9YPFaxatUpjx47tEkfjtT+tc+211+qqq67ST37yEx1xxBHblHnrg87/+Z//0f3331+W308fMmTINp9wPfTQQ/Wd73wnmOf+++/Xr3/96+LPIG0N67z33nvr05/+dHEciDVgwAANGDBAI0eO1Jve9CYNHDhQ3/ve93T66adLkmbOnKkLLrhAzz//vAYOHKinn35as2bN0utf//pd2i8A1Drm/8rM/0mS6HOf+5yuvPJKtba2ap999tHy5cslbVlDDxw40M7/IatXr9YLL7ygo48+uvhaoVDQz372M918881qa2vb5jjFGjJkiPr06dNle4ceeqhaW1vV3t7ebVy0+++/XytXrlRTU1OX18eOHaszzjhjm9hyX/7yl3XyySdv842NHTFu3DhJKsbsLvfaAwBqGfP/rs//pfL383/M9fvGjRu1ePHi4q8XldqQIUO03377FR90Slvm/yzL9Oc//1kjR47cJs/999+vP/7xj9uE1HnXu96lt771rVqxYoUWLVqkp59+WitXrix+CHnRokUaOHCgvv/97+s973nPNtvde++9lc/ni8d4q7Vr1xaP947sGwCAncHDzgraGgdnyZIlOxQHZ/Xq1ero6OiyuDvkkEN0wAEHaOXKlXrTm97Ubb7169d3ufESij304IMPqqOjQ3369NE3vvENzZkzRzfffLOOOuooPfroo5o+fbp22223bT6xjfJobGzsEkupVI466igVCgW98MILXWIqbc+u/ozNhg0b1NLSoqamJv3gBz/Ypg+OHz9en/3sZ/XCCy8UP6m5bNky9e/fv8sDum9+85v6wAc+oMWLF+ukk07aobKnaaq2tjZJ0r777rvNJ0HHjx+vl156SatXr9aYMWMkbVlop2lavAG3adOmbb5NuPViMU1TNTQ0FC+wXuvqq6/WZz/7Wd13331d4oJttfVB55NPPqmf/vSn9hO2u+LNb36znnjiiS6v/f73v9eBBx4YzPOd73yny3F/6KGH9IEPfEA///nPu3yiuBSyLFOWZcVjtVWSJMWfXPrmN7+pYcOGdbk5DAC9CfN/dc3/W+Xz+eK3XL75zW9q/Pjx2meffSQpOP87b3/72/XrX/+6y2vTpk3TIYccoosvvrhkDzqlLfP/okWLlKZpcS3z+9//XkOGDOn2Qack3XTTTbriiiuK///cc8+ppaVFd9999zZt89RTT+mnP/2pfvCDH0SVb+vN4iFDhkiq7NoDAKoF83/l5v9SiZn//94999yjtra2sv2SwZvf/Gbdc889euWVV4oPtn//+98rl8tp//337zbPpz71KX3wgx/s8trhhx+uG264ofjliK33Rv4+1vfW/9/6kP21GhsbNWbMGC1fvlyTJ0+WtOU4LV++vPjFjB3ZNwAAO4OHnRWys3FwpC0/o9nY2LjNp5wGDRoUjGnwwAMP6O6779aPfvSj4mstLS368pe/rMmTJ+voo4/W6tWr9eUvf1kdHR1at26dhgwZorlz5+q6667Tv/7rv0raEq/wt7/9rb74xS/ysLNChg8frlWrVunpp5/W7rvvvsPfFNiegw46SGeccYbOPPNMXXfddTrqqKP04osvavny5TriiCOCFxC78jM2GzZs0AknnKBNmzbp61//ujZs2KANGzZIkvbZZx/l83mdcMIJGjVqlN7//vfr6quvVmtrq2bPnq2PfvSjxW8VLFq0SFOnTtWNN96ocePGFft93759i59WnDVrlt75znfqgAMO0Msvv6xFixZpxYoVuu+++4LlO/TQQzVp0iRNnz5dCxcuVEdHh2bMmKH3vOc9xYdsJ510km644QbNmzev+DO2l1xyiQ488EAdddRRwW1/7nOf05w5c7Ro0SINHz68WObdd99du+++uzo6OvTud79bjzzyiH74wx+qUCgU37PnnnsGb0K+Vnt7u377298W//vZZ5/VY489pt133714EbY1/sWVV16pU089VQ8++KBuu+023XbbbcXt3Hzzzfre975X/NbKa28qrlu3rthmfz8Wbb1R+corr+jFF18sxvLdeqH64IMP6swzz9Ty5cu133776U9/+pPuvvtunXDCCdpnn3305z//WVdddZX69u2rE088sbjda665RpMmTVIul9N3v/tdXXXVVfrWt75V0pvAAFBNmP+ra/5ft26dvv3tb+u4447T5s2bdeedd+qee+7Rf/zHf9i6b29e3mOPPXTYYYd1ybPbbrtpr7322ub17dneHPzhD39YN998s8477zx97GMf05NPPqkrr7xSH//4x4vb+N73vqdZs2YVf3LugAMO6LKPrTdJ3/CGN2xzg/SOO+7QkCFD9M53vnObsr12/v/jH/+oRYsW6cQTT9Ree+2lX/3qV7rgggv0//7f/yv+8sWOrj0AoDdh/q/c/C9Ja9as0V/+8hetWbNGhUKhOJf+wz/8Q3HO+8Mf/qBXXnlFra2tevXVV4vvGTVqlL1O3968vNXtt9+uyZMnR3/Y+be//a3a29v1l7/8RS+//HJxv6NHj5a0JUb25ZdfrmnTpukzn/mM1q1bpwsvvFAf+MAHij81+9p5evDgwd3GjT3ggAM0YsQISdI73vEOXXjhhfroRz+qj33sY0rTVFdddZUaGhp0/PHHF/Mccsghmj9/fvFn8mfOnKmpU6dq7NixOuaYY7RgwQJt3LhR06ZNk6Qd2jcAADuDh5276Morr+wS4P3VV1/Vf/3Xf3WJgffb3/5WS5Ys2ak4ODEef/xxnXLKKZo7d65OOOGE4uuXXnqpWltb9aY3vUlZlmnQoEGaOnWqrr76auVyOW3cuFF//OMfdfbZZ2v69OnFfJ2dnV1+/gLl9clPflJTp07VqFGj9Oqrr+qpp54q2bbvvPNOXXHFFfrEJz6hZ599Vnvvvbfe9KY36eSTTy7ZPv7eI488olWrVkna9tOPW38mOZ/P64c//KE+/OEPa/z48cVvEf/9T7rcdttt6uzs1Ec/+lF99KMfLb4+derU4s8pv/DCCzrzzDP1/PPPa8CAATriiCN033336R3veIct4ze+8Q3NmDFDb3/725XL5fSud71LN910UzH9bW97mxYtWqSrr75aV199tfr166fx48dr6dKlxQuF7tx6661qb2/Xu9/97i6vz507V5dddpmeffbZ4jchtl6UbPXTn/5Uxx13nC33Vs8991yXh67XXnutrr32Wh177LHFn3v5x3/8x+LNzHnz5mnEiBFasGCBzjjjjGK+devW6Y9//OMO7fPv/f2+V69erUWLFunAAw8sfpBj06ZNeuKJJ9TR0SFJam5u1s9//nMtWLBAf/3rXzVo0CD9v//3//TAAw90+eTtj3/8Y332s59VW1ubjjzySH3/+9/v9mYqAPQWzP/VNf9L0le/+lV98pOfVJZlGj9+vFasWLHd2Fo7Mi+Xyvbm4GHDhum+++7TBRdcoCOOOEL77befzjvvPF188cXFfOvXr9/m1x92RJqm+spXvqKzzjqr2w8ivXb+b2xs1E9+8pPiDc5hw4bpXe96l2bPnr3T+waA3oT5v7Lz/5w5c7r8JPvWufTvr8E/+MEPdvlw09b3bK1DyPbmZUl64okn9J//+Z/693//d1tO58QTT9T//M//bLPfrT//vvvuu2vZsmX62Mc+prFjx2qvvfbSqaee2uWXG147T++IQw45RP/2b/+mz3zmMxo/frxyuZyOOuooLV26tPgrDVvruH79+uL/n3baaXrxxRc1Z84ctba2avTo0Vq6dGnUT+ADALAjkmzrrIgof/nLX/SXv/yl+P9nnHGG3vWudxW/ISlt+cTeu9/9bv3bv/1bl599KBQKyufz3cbBkbb8rNbb3/52/fWvf+3yqeYDDzxQ559/vi644ILia7/97W91/PHH64Mf/KA++9nPdlvWjo4OrV27VkOGDNFtt92miy++WC+99JJefPFFDR48WF//+te7/Qmv136i6itf+YrOP/98vfTSSzvURgAAAAAAAAAAoD5s2LBBAwYM0MHnXal8U/P2M6BkCm2b9cSNl2j9+vVRcaZrFd/s3EV77rlnl58b6du3r/bdd99tPs22M3FwthozZoz69Omj5cuX613vepekLZ+UWrNmjcaPH198329+8xu97W1v09SpU4MPOqUtMRa2/gzV4sWLdfLJJyuXy2nQoEEaOnSo/vSnP3X5xhcAAAAAAAAAAABQzXjYWSE7Egfn2Wef1dvf/nbdddddOuaYYzRgwACdffbZmjlzpvbcc0/1799fH/vYxzR+/Hi96U1vkrTlp2vf9ra3qaWlRTNnzizGNMjn89pnn30kbQlI/uCDD2rcuHH661//quuv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nXZaTJs2LSZNmhSHHHJIXHHFFS9Y7g9+8IN45zvfGdOnT48sy2LVqlW7rLNy5cp44xvfGPvuu28ccMABsWDBgnjooYci4r8nuFPLXXfdFT/96U/j93//9+O1r31tVCqVXcbOTs8++2ycc845MWXKlJg4cWK89rWvjdtuu+0F2xERsXXr1pg1a1ZkWRYPPPDA8OdbtmyJM844Iw4//PAYN25cLFiwYLfKO+OMM3ZpywknnDBinWeeeSbe9a53xeTJk+MlL3lJnHnmmfGzn/1st8oHAAAAAKDzmOyEFjZhwoTo6+uLLMuaXZU98sQTT8QTTzwRn/70p+PBBx+M6667LtasWRNnnnnm8DpDQ0Nx4oknxrZt2+Luu++OL33pS3HdddfF8uXLh9f5zne+E29961vjtttuiw0bNsTxxx8fv/3bvx3333//8DqveMUr4o//+I9jw4YNce+998ab3/zmOOmkk+IHP/hBso7btm2Lk08+Od73vveNmr5hw4Y44IAD4itf+Ur84Ac/iD/6oz+KpUuXxlVXXZUs9+c//3m8+tWvjj/+4z+Ovr6+Udf5+7//+zjnnHPiu9/9btxxxx2xffv2eNvb3habN28enuDeufzP//k/44QTThjx2bx582Lr1q3x8pe/PJYtWxZHHnlkYRvf+ta3xk9+8pP46le/Gg899FD8+Z//eRx44IHJNux0wQUXxNSpU3f5fGhoKCZNmhQf+MAHYv78+btV1k6/2pa//Mu/HJH+rne9K37wgx/EHXfcEbfeemt85zvfibPPPnuPtgEAAAAAQOfI8jzPm10J6HRnnHFGfOlLXxrx2SOPPBI/+clP4vjjj4///M//jJe85CVx3XXXxeLFi+MrX/lKfPCDH4zHHnssfuu3fiuuv/76uPnmm2PFihWxadOmePe73x2f/exno6urKyKef0Lvj/7oj+Iv//Iv49lnn43DDjss/uRP/iTe9KY3NayNN998c/yv//W/YvPmzTFu3Li4/fbb4x3veEc88cQT0dvbGxERq1evjo985CPx1FNPxYQJE0Yt59d+7dfilFNOGTEp+qte+tKXxmWXXTZicrXIzj7dnVcFn3POOfF//+//jTvvvPMF142ImD59eixevLjwqcudnnrqqTjggAPi7//+7+M3f/M3R6SdccYZ8eyzz8Ytt9xSmP9Nb3pTzJo1a5enSFevXh2XXXZZ/OhHP4rx48fvVp13uv3222PJkiXxta99LX7t134t7r///pg1a9Yu6+1O/XZ33f/7f/9vHHroofG9730vZs+eHRERa9asid/6rd+Kf//3fx914hUAAAAAaC2Dg4PR09MTv/kby2PcuO5mV6ej7NixJb7zDxfHpk2bYvLkyc2uTsN4shNawBVXXBFz586Ns846a/iJt2nTpo267s9//vO48sor48Ybb4w1a9bEXXfdFb/7u78bt912W9x2223x5S9/OT73uc/FV7/61eE85557bqxbty5uvPHG+Od//uc4+eST44QTToiHH364sE5vf/vbY5999ilcfu3Xfm2P2rjz5Dpu3LiIiFi3bl0cfvjhwxOdERH9/f0xODhY+FRmtVqN5557Ll760peOmj40NBQ33nhjbN68OebOnbtH9dvdNhRt+8WWGxE1L/ub3/xmzJ07N84555zo7e2Nww47LD71qU/F0NDQ8DrXXXfdLk8Ob9y4Mc4666z48pe/HHvttVepbf/kJz8ZfuXuL7vrrrvigAMOiNe97nXxvve9L/7jP/5jOG3dunXxkpe8ZHiiMyJi/vz5UalUYv369aXqAQAAAAA0SW5pytKBTHY2QVEcvNFs2bIlzjnnnHjZy14W++yzT7zzne+MjRs3DqfvblzBq6++Og455JCYNGlSvO51r4vrr79+j+v9QjEOKa+npycmTJgQe+21V/T19UVfX9/wU5m/avv27fFnf/Zn8frXvz5+8zd/M37v934v/vEf/zG+8IUvxKGHHhrveMc74vjjj4+/+7u/i4jn42Jee+21cfPNN8dv/MZvxEEHHRQf+tCH4thjj41rr722sE6f//zn44EHHihcdjfuY0TE008/HZ/4xCdGvI50YGBgxERnRAz//8DAwKjlfPrTn46f/exn8T//5/8c8fn/+T//J/bZZ5+YOHFivPe9742vf/3rceihh+52/XbH3XffHTfddFPNX6larVZj8eLF8eu//utx2GGH1bTsf/u3f4uvfvWrMTQ0FLfddltcdNFFcfnll8cll1wyvE5PT0+87nWvG/7/PM/jjDPOiPe+970jJh331Pjx4+N1r3vdiMnSE044Ia6//vpYu3Zt/Mmf/En8/d//fbz97W8fnnwdGBiIAw44YEQ548aNi5e+9KWFYwIAAAAAgM42rtkVGGve9KY3xRlnnBFnnHFG4To74+B9//vff8Hyzj///Pibv/mbuPnmm6OnpyfOPffc+B//43/EP/3TP0XEyLiC06ZNi7vvvjvOPvvs6OrqinPPPTciIv7sz/4sli5dGn/+538eb3zjG+Oee+6Js846K/bbb7/47d/+7d1u284Yh3Pnzo0vfOELu52P2tprr73ioIMOGv7/3t7emD59euyzzz4jPnvyyScj4vmJwKGhoXjta187opytW7fGy172ssLt7G5cxxcyODgYJ554Yhx66KHxsY99rHQ5N9xwQ3z84x+Pb3zjG7tMiL3uda+LBx54IDZt2hRf/epXY+HChfH3f//3ceihh8Z73/ve+MpXvjK87s9+9rM93vaDDz4YJ510UqxYsSLe9ra3RcTzk8i/PKF64YUXxoUXXrjHZZ9zzjnx4IMPxj/+4z/ucd4XUq1W44ADDohrrrkmurq64qijjorHH388LrvsslixYkVERPzu7/5u/O7v/u5wnj/90z+N5557LpYuXfqitn3ggQfGj370oxGfnXrqqcP/ffjhh8cRRxwRBx10UNx1113xlre85UVtDwAAAACAzmSys8Fuv/32+Pa3vx1f+9rX4vbbb0+uu2nTpvjCF74QN9xwQ7z5zW+OiIhrr702DjnkkPjud78bxxxzTPzBH/zBiDyvfvWrY926dfHXf/3Xw5OdX/7yl+MP//AP45RTThle53vf+178yZ/8yYjJzs9//vNx+eWXxyOPPBLTp0+PD3zgA/H//D//z3D6xz/+8Yh4/rWXNM+vxl7MsmzUz6rVakQ8P7nX1dUVGzZs2OVp0V+eIP1Vb3/72+Mf/uEfCtNf9apXFb5udqfnnnsuTjjhhNh3333j61//+oh69vX1xT333DNi/Z1PLff19Y34/MYbb4z3vOc9cfPNN8f8+fN32c6ECRPiNa95TUREHHXUUfG9730vrrjiivjc5z4XF198cXzoQx9K1jPlhz/8YbzlLW+Js88+O5YtWzb8+dSpU0c8mV3mFbTnnntu3HrrrfGd73wnXvGKV5SuY5EpU6bE+PHjR+z3Qw45JAYGBmLbtm2jxkW98847Y926dTFx4sQRn8+ePTve9a537RJb9sV49atfHfvvv3/867/+a7zlLW+Jvr6+4Un6nXbs2BHPPPPMLmMCAAAAAAAiTHY21M44eLfccstuxcHbsGFDbN++fcTkzsEHHxyvfOUrY926dXHMMceMmu9X4wpu3bo1urtHBgGeNGlS3HPPPbF9+/YYP358/MVf/EUsX748rrrqqnj9618f999/f5x11lmx9957x8KFC0u2mD0xYcKEEbEUa+X1r399DA0NxZNPPhm/8Ru/sdv5Pv/5z8cvfvGLwvRfnWD9VYODg9Hf3x8TJ06Mb37zm7uMwblz58YnP/nJePLJJ4ef1Lzjjjti8uTJI56Y/Mu//Mv4gz/4g7jxxhvjxBNP3K26V6vV2Lp1a0REHHDAAbs8Cbq7fvCDH8Sb3/zmWLhwYXzyk58ckTZu3LjhCdY9led5vP/974+vf/3rcdddd8WMGTNKlfNCfv3Xfz1uuOGGqFarUak8/9byf/mXf4kpU6aMOtEZEXHllVeOeM3tE088Ef39/XHTTTfFnDlzalq/f//3f4//+I//iClTpkTE82Pi2WefjQ0bNsRRRx0VEc9Pvlar1ZpvGwAAAACAscFkZ4P8ahy8n/zkJy+YZ2BgICZMmLBLfMze3t7C+HU74wr+zd/8zfBn/f398fnPfz4WLFgQb3jDG2LDhg3x+c9/PrZv3x5PP/10TJkyJVasWBGXX355/I//8T8iImLGjBnxwx/+MD73uc+Z7GyQ6dOnx/r16+MnP/lJ7LPPPqWeFBzNa1/72njXu94Vp59+elx++eXx+te/Pp566qlYu3ZtHHHEEYUTiC/mNbaDg4Pxtre9LX7+85/HV77ylRgcHIzBwcGIiHj5y18eXV1d8ba3vS0OPfTQePe73x2XXnppDAwMxLJly+Kcc84ZfqrwhhtuiIULF8YVV1wRc+bMGR73kyZNip6enoiIWLp0abz97W+PV77ylfHcc8/FDTfcEHfddVd861vfStbx0UcfjWeeeSYeffTRGBoaGn5K8zWveU3ss88+8eCDD8ab3/zm6O/vjyVLlgxvu6urK17+8pcXlrtt27b44Q9/OPzfjz/+eDzwwAOxzz77DE+OnnPOOXHDDTfEN77xjdh3332Hy+7p6YlJkybtdj/vrPPPfvazeOqpp+KBBx6ICRMmDE8Wv+9974urrroqzjvvvHj/+98fDz/8cHzqU5+KD3zgA8NlfP3rX4+lS5cOv3L2la985Yht7Hz696CDDhrx9OkPf/jD2LZtWzzzzDPx3HPPDddl1qxZERHx+OOPx1ve8pa4/vrr4+ijj46f/exn8fGPfzze+c53Rl9fX/z4xz+OCy64IF7zmtdEf39/RDz/1OkJJ5wQZ511VqxevTq2b98e5557bpx66qkxderU3e4XAAAAAAA6h8nOF+lTn/pUfOpTnxr+/1/84hfx3e9+d/gVshHPTwrccsstNYmDlzJaXMGIiIsuuigGBgbimGOOiTzPo7e3NxYuXBiXXnppVCqV2Lx5c/z4xz+OM888M84666zhfDt27BieUKL+PvShD8XChQvj0EMPjV/84hfxyCOP1Kzsa6+9Ni655JL44Ac/GI8//njsv//+ccwxx8Q73vGOmm3jl913332xfv36iIhdnn7c+Zrkrq6uuPXWW+N973tfzJ07d/gp4osvvnh43WuuuSZ27NgR55xzTpxzzjnDny9cuHD4dcpPPvlknH766fHTn/40enp64ogjjohvfetb8da3vjVZx+XLl494JevrX//6iIj4u7/7u3jTm94UX/3qV+Opp56Kr3zlKyNifr7qVa9K3qzwxBNPDJcVEfHpT386Pv3pT8dxxx0Xd911V0Q8H0c34vkYv7/s2muvTcb7/VW/vJ0NGzbEDTfcMKJ+06ZNi29961tx/vnnxxFHHBEHHnhgnHfeefGRj3xkON+mTZvioYce2u1t7vRbv/Vb8f/9f//fLnXJ8zwiIrZv3x4PPfRQ/PznP4+I5yeJ//mf/zm+9KUvxbPPPhtTp06Nt73tbfGJT3xixCtz/+Iv/iLOPffceMtb3hKVSiXe+c53xpVXXrnH9QMAAAAAoDNk+c4r05TyzDPPxDPPPDP8/+9617vine985/ATkhHPP7H3e7/3e/H//r//b2RZNvz50NBQdHV1FcbBu/POO+Mtb3lL/Od//ueIpztf9apXxeLFi+P8888f/uyHP/xhHH/88fGe97xnl9dt7rR9+/bYuHFjTJkyJa655pr4yEc+Es8++2w89dRT0dfXF1/5yld2eVVkV1fXLq/YvO6662Lx4sXx7LPP7lYfAQAAAAAAnWFwcDB6enriN3/9ohg3rvuFM1AzO3Zsie/80ydi06ZNMXny5GZXp2E82fkivfSlLx3xutFJkybFAQccsMvTbGXi4B111FExfvz4WLt2bbzzne+MiIiHHnooHn300Zg7d+7weqm4gr9s/Pjxw6+hvPHGG+Md73hHVCqV6O3tjalTp8a//du/xbve9a49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", - "text/plain": [ - "
" - ] - }, - "metadata": {}, - "output_type": "display_data" - } - ], + "outputs": [], "source": [ "import matplotlib\n", "time_series_xarr.reflectance.clip(0,1).sel(band='Green').plot(x=\"x\", y=\"y\", col=\"time\", col_wrap=3, figsize=(20,20))" @@ -3840,96 +245,18 @@ }, { "cell_type": "code", - "execution_count": 21, + "execution_count": null, "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "{('2024-06-06T17:02:38Z',\n", - " 'SENTINEL_2'): ,\n", - " ('2024-05-28T16:41:01Z',\n", - " 'LANDSAT_9'): ,\n", - " ('2024-05-12T17:02:32Z',\n", - " 'SENTINEL_2'): ,\n", - " ('2024-05-12T16:41:14Z',\n", - " 'LANDSAT_9'): ,\n", - " ('2024-04-12T17:02:33Z',\n", - " 'SENTINEL_2'): ,\n", - " ('2024-04-07T17:02:31Z',\n", - " 'SENTINEL_2'): ,\n", - " ('2024-03-28T17:02:33Z',\n", - " 'SENTINEL_2'): ,\n", - " ('2024-03-23T17:02:33Z',\n", - " 'SENTINEL_2'): ,\n", - " ('2024-03-09T16:41:51Z',\n", - " 'LANDSAT_9'): ,\n", - " ('2024-03-03T17:02:29Z',\n", - " 'SENTINEL_2'): ,\n", - " ('2024-02-29T16:48:00Z',\n", - " 'LANDSAT_9'): ,\n", - " ('2024-02-22T17:02:33Z',\n", - " 'SENTINEL_2'): ,\n", - " ('2024-02-22T16:41:44Z',\n", - " 'LANDSAT_9'): ,\n", - " ('2024-02-12T17:02:33Z',\n", - " 'SENTINEL_2'): ,\n", - " ('2024-02-06T16:41:59Z',\n", - " 'LANDSAT_9'): ,\n", - " ('2023-12-12T16:41:50Z',\n", - " 'LANDSAT_8'): ,\n", - " ('2023-12-11T16:48:07Z',\n", - " 'LANDSAT_9'): ,\n", - " ('2023-11-25T16:48:09Z',\n", - " 'LANDSAT_9'): ,\n", - " ('2023-11-18T16:41:53Z',\n", - " 'LANDSAT_9'): ,\n", - " ('2023-11-17T16:48:04Z',\n", - " 'LANDSAT_8'): ,\n", - " ('2023-11-09T16:48:02Z',\n", - " 'LANDSAT_9'): ,\n", - " ('2023-11-02T16:41:47Z',\n", - " 'LANDSAT_9'): ,\n", - " ('2023-10-17T16:41:55Z',\n", - " 'LANDSAT_9'): ,\n", - " ('2023-10-01T16:41:44Z',\n", - " 'LANDSAT_9'): ,\n", - " ('2023-09-15T16:41:45Z',\n", - " 'LANDSAT_9'): ,\n", - " ('2023-09-14T16:47:54Z',\n", - " 'LANDSAT_8'): ,\n", - " ('2023-08-22T16:41:39Z',\n", - " 'LANDSAT_8'): ,\n", - " ('2023-07-29T16:41:20Z',\n", - " 'LANDSAT_9'): ,\n", - " ('2023-07-20T16:47:27Z',\n", - " 'LANDSAT_9'): ,\n", - " ('2023-07-04T16:47:22Z',\n", - " 'LANDSAT_9'): }" - ] - }, - "execution_count": 21, - "metadata": {}, - "output_type": "execute_result" - } - ], + "outputs": [], "source": [ "images_references" ] }, { "cell_type": "code", - "execution_count": 23, + "execution_count": null, "metadata": {}, - "outputs": [ - { - "name": "stderr", - "output_type": "stream", - "text": [ - "2024-06-14 11:20:04,351 - geosyspy.geosys - INFO - writing to c:\\Users\\ajd\\Documents\\GitHub\\GeosysPy\\image_sentinel-2-l2a_S2B_21JYM_20240429_0_L2A_tiff.zip\n" - ] - } - ], + "outputs": [], "source": [ "# Download and save a specific image\n", "season_field_id = 'y3mxlxx'\n", @@ -3940,17 +267,9 @@ }, { "cell_type": "code", - "execution_count": 24, + "execution_count": null, "metadata": {}, - "outputs": [ - { - "name": "stderr", - "output_type": "stream", - "text": [ - "2024-06-14 11:20:08,479 - geosyspy.services.analytics_fabric_service - INFO - The schema GeosysPy_NDVI already exists.\n" - ] - } - ], + "outputs": [], "source": [ "# Define a data schema in Analytics Fabrics\n", "schema = {\n", @@ -3962,56 +281,9 @@ }, { "cell_type": "code", - "execution_count": 25, + "execution_count": null, "metadata": {}, - "outputs": [ - { - "name": "stderr", - "output_type": "stream", - "text": [ - "2024-06-14 11:20:08,985 - geosyspy.services.analytics_fabric_service - INFO - Calling APIs for metrics\n", - "2024-06-14 11:20:09,222 - geosyspy.services.analytics_fabric_service - INFO - No metrics found in Analytic Fabric with SchemaId: LAI_RADAR, SeasonField:mUPLeUseMwsGMQ3ugs7xE between:2022-01-24 and 2022-03-01 \n" - ] - }, - { - "data": { - "text/html": [ - "
\n", - "\n", - "\n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - "
\n", - "
" - ], - "text/plain": [ - "Empty DataFrame\n", - "Columns: []\n", - "Index: []" - ] - }, - "execution_count": 25, - "metadata": {}, - "output_type": "execute_result" - } - ], + "outputs": [], "source": [ "# Get metrics in Analytics Fabric\n", "\n", @@ -4024,93 +296,9 @@ }, { "cell_type": "code", - "execution_count": 26, + "execution_count": null, "metadata": {}, - "outputs": [ - { - "name": "stderr", - "output_type": "stream", - "text": [ - "2024-06-14 11:20:09,524 - geosyspy.services.vegetation_time_series_service - INFO - Calling APIs for aggregated time series\n", - "c:\\Users\\ajd\\Documents\\GitHub\\GeosysPy\\geosyspy\\services\\vegetation_time_series_service.py:57: FutureWarning: Passing literal json to 'read_json' is deprecated and will be removed in a future version. To read from a literal string, wrap it in a 'StringIO' object.\n", - " df = pd.read_json(json.dumps(dict_response))\n" - ] - }, - { - "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", - "
indexvalue
date
2018-12-30NDVI0.881439
2018-12-31NDVI0.879117
2019-01-01NDVI0.876899
2019-01-02NDVI0.874825
2019-01-03NDVI0.872929
\n", - "
" - ], - "text/plain": [ - " index value\n", - "date \n", - "2018-12-30 NDVI 0.881439\n", - "2018-12-31 NDVI 0.879117\n", - "2019-01-01 NDVI 0.876899\n", - "2019-01-02 NDVI 0.874825\n", - "2019-01-03 NDVI 0.872929" - ] - }, - "execution_count": 26, - "metadata": {}, - "output_type": "execute_result" - } - ], + "outputs": [], "source": [ "# Get time serie\n", "start_date = dt.datetime.strptime(\"2018-12-30\", \"%Y-%m-%d\")\n", @@ -4121,24 +309,9 @@ }, { "cell_type": "code", - "execution_count": 27, + "execution_count": null, "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "[{'Timestamp': '2018-12-30 00:00:00', 'Values': {'NDVI': 0.88143934}},\n", - " {'Timestamp': '2018-12-31 00:00:00', 'Values': {'NDVI': 0.8791165400000001}},\n", - " {'Timestamp': '2019-01-01 00:00:00', 'Values': {'NDVI': 0.87689914}},\n", - " {'Timestamp': '2019-01-02 00:00:00', 'Values': {'NDVI': 0.8748249100000001}},\n", - " {'Timestamp': '2019-01-03 00:00:00', 'Values': {'NDVI': 0.87292918}}]" - ] - }, - "execution_count": 27, - "metadata": {}, - "output_type": "execute_result" - } - ], + "outputs": [], "source": [ "# Create structure before push values in Analytics Fabrics\n", "values = []\n", @@ -4155,20 +328,9 @@ }, { "cell_type": "code", - "execution_count": 28, + "execution_count": null, "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "200" - ] - }, - "execution_count": 28, - "metadata": {}, - "output_type": "execute_result" - } - ], + "outputs": [], "source": [ "# Push metrics in Analytics Fabrics\n", "schema_id = \"GeosysPy_NDVI\"\n", @@ -4177,130 +339,9 @@ }, { "cell_type": "code", - "execution_count": 29, + "execution_count": null, "metadata": {}, - "outputs": [ - { - "name": "stderr", - "output_type": "stream", - "text": [ - "2024-06-14 11:20:20,051 - geosyspy.services.analytics_fabric_service - INFO - Calling APIs for metrics\n" - ] - }, - { - "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", - "
Values.NDVISchema.Id
date
2018-12-30T00:00:00Z0.881439GeosysPy_NDVI
2018-12-31T00:00:00Z0.879117GeosysPy_NDVI
2019-01-01T00:00:00Z0.876899GeosysPy_NDVI
2019-01-02T00:00:00Z0.874825GeosysPy_NDVI
2019-01-03T00:00:00Z0.872929GeosysPy_NDVI
.........
2019-04-02T00:00:00Z0.388090GeosysPy_NDVI
2019-04-03T00:00:00Z0.385102GeosysPy_NDVI
2019-04-04T00:00:00Z0.382602GeosysPy_NDVI
2019-04-05T00:00:00Z0.380549GeosysPy_NDVI
2019-04-06T00:00:00Z0.378900GeosysPy_NDVI
\n", - "

98 rows × 2 columns

\n", - "
" - ], - "text/plain": [ - " Values.NDVI Schema.Id\n", - "date \n", - "2018-12-30T00:00:00Z 0.881439 GeosysPy_NDVI\n", - "2018-12-31T00:00:00Z 0.879117 GeosysPy_NDVI\n", - "2019-01-01T00:00:00Z 0.876899 GeosysPy_NDVI\n", - "2019-01-02T00:00:00Z 0.874825 GeosysPy_NDVI\n", - "2019-01-03T00:00:00Z 0.872929 GeosysPy_NDVI\n", - "... ... ...\n", - "2019-04-02T00:00:00Z 0.388090 GeosysPy_NDVI\n", - "2019-04-03T00:00:00Z 0.385102 GeosysPy_NDVI\n", - "2019-04-04T00:00:00Z 0.382602 GeosysPy_NDVI\n", - "2019-04-05T00:00:00Z 0.380549 GeosysPy_NDVI\n", - "2019-04-06T00:00:00Z 0.378900 GeosysPy_NDVI\n", - "\n", - "[98 rows x 2 columns]" - ] - }, - "execution_count": 29, - "metadata": {}, - "output_type": "execute_result" - } - ], + "outputs": [], "source": [ "# Get metrics in Analytics Fabrics\n", "start_date = dt.datetime.strptime(\"2018-01-01\", \"%Y-%m-%d\")\n", @@ -4308,114 +349,6 @@ "client.get_metrics(schema_id, start_date, end_date, polygon=polygon)" ] }, - { - "cell_type": "code", - "execution_count": 30, - "metadata": {}, - "outputs": [ - { - "name": "stderr", - "output_type": "stream", - "text": [ - "2024-06-14 11:20:21,682 - geosyspy.services.analytics_processor_service - INFO - Retry -- Task still running\n", - "2024-06-14 11:20:23,934 - geosyspy.services.analytics_processor_service - INFO - Retry -- Task still running\n" - ] - }, - { - "data": { - "text/plain": [ - "'s3://geosys-geosys-us/2tKecZgMyEP6EkddLxa1gV/mrts/5f2141ab13324d6abab1df96a2ad4316'" - ] - }, - "execution_count": 30, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "start_date=\"2020-10-09\"\n", - "end_date=\"2022-10-09\"\n", - "sensors=[\"Sentinel_2\", \"Landsat_8\"]\n", - "denoiser=True\n", - "smoother=\"ww\"\n", - "eoc=True\n", - "aggregation=\"mean\"\n", - "index=\"ndvi\"\n", - "raw_data=True\n", - "str_polygon=\"POLYGON ((-0.49881816 46.27330504, -0.49231649 46.27320122, -0.49611449 46.26983426, -0.49821735 46.27094671, -0.49881816 46.27330504))\"\n", - "\n", - "str_s3_path = client.get_mr_time_series(str_polygon, start_date, end_date, sensors, denoiser, smoother, eoc, aggregation, index, raw_data)\n", - "str_s3_path" - ] - }, - { - "cell_type": "code", - "execution_count": 31, - "metadata": {}, - "outputs": [ - { - "name": "stderr", - "output_type": "stream", - "text": [ - "2024-06-14 11:20:29,099 - geosyspy.services.analytics_processor_service - INFO - Retry -- Task still running\n", - "2024-06-14 11:20:31,237 - geosyspy.services.analytics_processor_service - INFO - Retry -- Task still running\n", - "2024-06-14 11:20:35,400 - geosyspy.services.analytics_processor_service - INFO - Retry -- Task still running\n" - ] - }, - { - "data": { - "text/plain": [ - "'s3://geosys-geosys-us/2tKecZgMyEP6EkddLxa1gV/mrts/3234ad205d9d45a398c9153c3d1753b8'" - ] - }, - "execution_count": 31, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "str_polygon=\"POLYGON ((-0.49881816 46.27330504, -0.49231649 46.27320122, -0.49611449 46.26983426, -0.49821735 46.27094671, -0.49881816 46.27330504))\"\n", - "\n", - "str_s3_path = client.get_mr_time_series(str_polygon)\n", - "str_s3_path" - ] - }, - { - "cell_type": "code", - "execution_count": 32, - "metadata": {}, - "outputs": [ - { - "ename": "ClientError", - "evalue": "An error occurred (InvalidToken) when calling the ListObjects operation: The provided token is malformed or otherwise invalid.", - "output_type": "error", - "traceback": [ - "\u001b[1;31m---------------------------------------------------------------------------\u001b[0m", - "\u001b[1;31mClientError\u001b[0m Traceback (most recent call last)", - "Cell \u001b[1;32mIn[32], line 4\u001b[0m\n\u001b[0;32m 1\u001b[0m \u001b[38;5;28;01mfrom\u001b[39;00m \u001b[38;5;21;01mnotebook_utils\u001b[39;00m \u001b[38;5;28;01mimport\u001b[39;00m \u001b[38;5;241m*\u001b[39m\n\u001b[0;32m 3\u001b[0m \u001b[38;5;66;03m# read MRTS outputs from AWS and plot result\u001b[39;00m\n\u001b[1;32m----> 4\u001b[0m dict_mrts \u001b[38;5;241m=\u001b[39m \u001b[43mread_mrts_from_awsS3\u001b[49m\u001b[43m(\u001b[49m\u001b[43mstr_s3_path\u001b[49m\u001b[43m)\u001b[49m\n\u001b[0;32m 5\u001b[0m plot_mrts_dict(dict_mrts)\n\u001b[0;32m 7\u001b[0m \u001b[38;5;66;03m### others useful functions\u001b[39;00m\n\u001b[0;32m 8\u001b[0m \u001b[38;5;66;03m# plot_mrts_from_aws(str_s3_path) : plot MRTS outputs from AWS\u001b[39;00m\n\u001b[0;32m 9\u001b[0m \u001b[38;5;66;03m# download MRTS outputs from AWS and read outputs downloaded : download_s3_files(str_s3_path), read_mrts_data(str_downloaded_path)\u001b[39;00m\n", - "File \u001b[1;32mc:\\Users\\ajd\\Documents\\GitHub\\GeosysPy\\notebook_utils.py:162\u001b[0m, in \u001b[0;36mread_mrts_from_awsS3\u001b[1;34m(str_s3_path)\u001b[0m\n\u001b[0;32m 160\u001b[0m bucket \u001b[38;5;241m=\u001b[39m s3\u001b[38;5;241m.\u001b[39mBucket(bucket_name)\n\u001b[0;32m 161\u001b[0m s3 \u001b[38;5;241m=\u001b[39m boto3\u001b[38;5;241m.\u001b[39mclient(\u001b[38;5;124m'\u001b[39m\u001b[38;5;124ms3\u001b[39m\u001b[38;5;124m'\u001b[39m)\n\u001b[1;32m--> 162\u001b[0m \u001b[43m\u001b[49m\u001b[38;5;28;43;01mfor\u001b[39;49;00m\u001b[43m \u001b[49m\u001b[43mobj\u001b[49m\u001b[43m \u001b[49m\u001b[38;5;129;43;01min\u001b[39;49;00m\u001b[43m \u001b[49m\u001b[43mbucket\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mobjects\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mfilter\u001b[49m\u001b[43m(\u001b[49m\u001b[43mPrefix\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mdirectory_name\u001b[49m\u001b[43m)\u001b[49m\u001b[43m:\u001b[49m\n\u001b[0;32m 163\u001b[0m \u001b[43m \u001b[49m\u001b[43mresponse\u001b[49m\u001b[43m \u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43m \u001b[49m\u001b[43ms3\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mget_object\u001b[49m\u001b[43m(\u001b[49m\u001b[43mBucket\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mbucket_name\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mKey\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mobj\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mkey\u001b[49m\u001b[43m)\u001b[49m\n\u001b[0;32m 164\u001b[0m \u001b[43m \u001b[49m\u001b[43mfile_content\u001b[49m\u001b[43m \u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43m \u001b[49m\u001b[43mresponse\u001b[49m\u001b[43m[\u001b[49m\u001b[38;5;124;43m'\u001b[39;49m\u001b[38;5;124;43mBody\u001b[39;49m\u001b[38;5;124;43m'\u001b[39;49m\u001b[43m]\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mread\u001b[49m\u001b[43m(\u001b[49m\u001b[43m)\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mdecode\u001b[49m\u001b[43m(\u001b[49m\u001b[38;5;124;43m'\u001b[39;49m\u001b[38;5;124;43mutf-8\u001b[39;49m\u001b[38;5;124;43m'\u001b[39;49m\u001b[43m)\u001b[49m\n", - "File \u001b[1;32mc:\\Users\\ajd\\Documents\\GitHub\\GeosysPy\\.venv\\Lib\\site-packages\\boto3\\resources\\collection.py:81\u001b[0m, in \u001b[0;36mResourceCollection.__iter__\u001b[1;34m(self)\u001b[0m\n\u001b[0;32m 78\u001b[0m limit \u001b[38;5;241m=\u001b[39m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m_params\u001b[38;5;241m.\u001b[39mget(\u001b[38;5;124m'\u001b[39m\u001b[38;5;124mlimit\u001b[39m\u001b[38;5;124m'\u001b[39m, \u001b[38;5;28;01mNone\u001b[39;00m)\n\u001b[0;32m 80\u001b[0m count \u001b[38;5;241m=\u001b[39m \u001b[38;5;241m0\u001b[39m\n\u001b[1;32m---> 81\u001b[0m \u001b[43m\u001b[49m\u001b[38;5;28;43;01mfor\u001b[39;49;00m\u001b[43m \u001b[49m\u001b[43mpage\u001b[49m\u001b[43m \u001b[49m\u001b[38;5;129;43;01min\u001b[39;49;00m\u001b[43m \u001b[49m\u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mpages\u001b[49m\u001b[43m(\u001b[49m\u001b[43m)\u001b[49m\u001b[43m:\u001b[49m\n\u001b[0;32m 82\u001b[0m \u001b[43m \u001b[49m\u001b[38;5;28;43;01mfor\u001b[39;49;00m\u001b[43m \u001b[49m\u001b[43mitem\u001b[49m\u001b[43m \u001b[49m\u001b[38;5;129;43;01min\u001b[39;49;00m\u001b[43m \u001b[49m\u001b[43mpage\u001b[49m\u001b[43m:\u001b[49m\n\u001b[0;32m 83\u001b[0m \u001b[43m \u001b[49m\u001b[38;5;28;43;01myield\u001b[39;49;00m\u001b[43m \u001b[49m\u001b[43mitem\u001b[49m\n", - "File \u001b[1;32mc:\\Users\\ajd\\Documents\\GitHub\\GeosysPy\\.venv\\Lib\\site-packages\\boto3\\resources\\collection.py:171\u001b[0m, in \u001b[0;36mResourceCollection.pages\u001b[1;34m(self)\u001b[0m\n\u001b[0;32m 168\u001b[0m \u001b[38;5;66;03m# Now that we have a page iterator or single page of results\u001b[39;00m\n\u001b[0;32m 169\u001b[0m \u001b[38;5;66;03m# we start processing and yielding individual items.\u001b[39;00m\n\u001b[0;32m 170\u001b[0m count \u001b[38;5;241m=\u001b[39m \u001b[38;5;241m0\u001b[39m\n\u001b[1;32m--> 171\u001b[0m \u001b[43m\u001b[49m\u001b[38;5;28;43;01mfor\u001b[39;49;00m\u001b[43m \u001b[49m\u001b[43mpage\u001b[49m\u001b[43m \u001b[49m\u001b[38;5;129;43;01min\u001b[39;49;00m\u001b[43m \u001b[49m\u001b[43mpages\u001b[49m\u001b[43m:\u001b[49m\n\u001b[0;32m 172\u001b[0m \u001b[43m \u001b[49m\u001b[43mpage_items\u001b[49m\u001b[43m \u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43m \u001b[49m\u001b[43m[\u001b[49m\u001b[43m]\u001b[49m\n\u001b[0;32m 173\u001b[0m \u001b[43m \u001b[49m\u001b[38;5;28;43;01mfor\u001b[39;49;00m\u001b[43m \u001b[49m\u001b[43mitem\u001b[49m\u001b[43m \u001b[49m\u001b[38;5;129;43;01min\u001b[39;49;00m\u001b[43m \u001b[49m\u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43m_handler\u001b[49m\u001b[43m(\u001b[49m\u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43m_parent\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mparams\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mpage\u001b[49m\u001b[43m)\u001b[49m\u001b[43m:\u001b[49m\n", - "File \u001b[1;32mc:\\Users\\ajd\\Documents\\GitHub\\GeosysPy\\.venv\\Lib\\site-packages\\botocore\\paginate.py:269\u001b[0m, in \u001b[0;36mPageIterator.__iter__\u001b[1;34m(self)\u001b[0m\n\u001b[0;32m 267\u001b[0m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m_inject_starting_params(current_kwargs)\n\u001b[0;32m 268\u001b[0m \u001b[38;5;28;01mwhile\u001b[39;00m \u001b[38;5;28;01mTrue\u001b[39;00m:\n\u001b[1;32m--> 269\u001b[0m response \u001b[38;5;241m=\u001b[39m \u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43m_make_request\u001b[49m\u001b[43m(\u001b[49m\u001b[43mcurrent_kwargs\u001b[49m\u001b[43m)\u001b[49m\n\u001b[0;32m 270\u001b[0m parsed \u001b[38;5;241m=\u001b[39m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m_extract_parsed_response(response)\n\u001b[0;32m 271\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m first_request:\n\u001b[0;32m 272\u001b[0m \u001b[38;5;66;03m# The first request is handled differently. We could\u001b[39;00m\n\u001b[0;32m 273\u001b[0m \u001b[38;5;66;03m# possibly have a resume/starting token that tells us where\u001b[39;00m\n\u001b[0;32m 274\u001b[0m \u001b[38;5;66;03m# to index into the retrieved page.\u001b[39;00m\n", - "File \u001b[1;32mc:\\Users\\ajd\\Documents\\GitHub\\GeosysPy\\.venv\\Lib\\site-packages\\botocore\\paginate.py:357\u001b[0m, in \u001b[0;36mPageIterator._make_request\u001b[1;34m(self, current_kwargs)\u001b[0m\n\u001b[0;32m 356\u001b[0m \u001b[38;5;28;01mdef\u001b[39;00m \u001b[38;5;21m_make_request\u001b[39m(\u001b[38;5;28mself\u001b[39m, current_kwargs):\n\u001b[1;32m--> 357\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m \u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43m_method\u001b[49m\u001b[43m(\u001b[49m\u001b[38;5;241;43m*\u001b[39;49m\u001b[38;5;241;43m*\u001b[39;49m\u001b[43mcurrent_kwargs\u001b[49m\u001b[43m)\u001b[49m\n", - "File \u001b[1;32mc:\\Users\\ajd\\Documents\\GitHub\\GeosysPy\\.venv\\Lib\\site-packages\\botocore\\client.py:553\u001b[0m, in \u001b[0;36mClientCreator._create_api_method.._api_call\u001b[1;34m(self, *args, **kwargs)\u001b[0m\n\u001b[0;32m 549\u001b[0m \u001b[38;5;28;01mraise\u001b[39;00m \u001b[38;5;167;01mTypeError\u001b[39;00m(\n\u001b[0;32m 550\u001b[0m \u001b[38;5;124mf\u001b[39m\u001b[38;5;124m\"\u001b[39m\u001b[38;5;132;01m{\u001b[39;00mpy_operation_name\u001b[38;5;132;01m}\u001b[39;00m\u001b[38;5;124m() only accepts keyword arguments.\u001b[39m\u001b[38;5;124m\"\u001b[39m\n\u001b[0;32m 551\u001b[0m )\n\u001b[0;32m 552\u001b[0m \u001b[38;5;66;03m# The \"self\" in this scope is referring to the BaseClient.\u001b[39;00m\n\u001b[1;32m--> 553\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m \u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43m_make_api_call\u001b[49m\u001b[43m(\u001b[49m\u001b[43moperation_name\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mkwargs\u001b[49m\u001b[43m)\u001b[49m\n", - "File \u001b[1;32mc:\\Users\\ajd\\Documents\\GitHub\\GeosysPy\\.venv\\Lib\\site-packages\\botocore\\client.py:1009\u001b[0m, in \u001b[0;36mBaseClient._make_api_call\u001b[1;34m(self, operation_name, api_params)\u001b[0m\n\u001b[0;32m 1005\u001b[0m error_code \u001b[38;5;241m=\u001b[39m error_info\u001b[38;5;241m.\u001b[39mget(\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mQueryErrorCode\u001b[39m\u001b[38;5;124m\"\u001b[39m) \u001b[38;5;129;01mor\u001b[39;00m error_info\u001b[38;5;241m.\u001b[39mget(\n\u001b[0;32m 1006\u001b[0m \u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mCode\u001b[39m\u001b[38;5;124m\"\u001b[39m\n\u001b[0;32m 1007\u001b[0m )\n\u001b[0;32m 1008\u001b[0m error_class \u001b[38;5;241m=\u001b[39m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mexceptions\u001b[38;5;241m.\u001b[39mfrom_code(error_code)\n\u001b[1;32m-> 1009\u001b[0m \u001b[38;5;28;01mraise\u001b[39;00m error_class(parsed_response, operation_name)\n\u001b[0;32m 1010\u001b[0m \u001b[38;5;28;01melse\u001b[39;00m:\n\u001b[0;32m 1011\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m parsed_response\n", - "\u001b[1;31mClientError\u001b[0m: An error occurred (InvalidToken) when calling the ListObjects operation: The provided token is malformed or otherwise invalid." - ] - } - ], - "source": [ - "from notebook_utils import *\n", - "\n", - "# read MRTS outputs from AWS and plot result\n", - "dict_mrts = read_mrts_from_awsS3(str_s3_path)\n", - "plot_mrts_dict(dict_mrts)\n", - "\n", - "### others useful functions\n", - "# plot_mrts_from_aws(str_s3_path) : plot MRTS outputs from AWS\n", - "# download MRTS outputs from AWS and read outputs downloaded : download_s3_files(str_s3_path), read_mrts_data(str_downloaded_path)" - ] - }, { "cell_type": "markdown", "metadata": {}, @@ -4425,198 +358,9 @@ }, { "cell_type": "code", - "execution_count": 33, + "execution_count": null, "metadata": {}, - "outputs": [ - { - "name": "stderr", - "output_type": "stream", - "text": [ - "c:\\Users\\ajd\\Documents\\GitHub\\GeosysPy\\geosyspy\\services\\agriquest_service.py:99: FutureWarning: Passing literal json to 'read_json' is deprecated and will be removed in a future version. To read from a literal string, wrap it in a 'StringIO' object.\n", - " df = pd.read_json(json.dumps(dict_response))\n" - ] - }, - { - "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", - " \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", - "
1AMUXYArea (km2)StartEndValue(Fahrenheit)
2dm6zd7-120.60977985375450.18151408597142076206.1935090906/01/2206/10/2342.6537761214063
3pm71ed-116.2696722953949.31429833010641140818.8489976206/01/2206/10/2340.9050440207924
437ndaz-121.43164776790350.8957142214965859701.52067782206/01/2206/10/2341.1429031374504
5apx5rz-121.10179628979349.5280358248754849852.28768954306/01/2206/10/2340.4459632826831
6mp6qwd-119.25357702805550.16380428454031371497.1378411206/01/2206/10/2343.2356649016597
........................
29377zrznz-77.017263374048838.908007731157342925.035357063706/01/2206/10/2359.7459764343867
2938ldgd6n-71.590795139579241.6946227800715620540.13971975306/01/2206/10/2354.7409374010456
29391kwkj7-71.277161955950941.539392768132825993.675194939406/01/2206/10/2354.7747722154322
2940z5r5ke-71.3777559394441.5148300630346405.0337219210206/01/2206/10/2354.764876751904
2941xlxlb4-71.578547234416241.17675220421686353.9679124976706/01/2206/10/2354.9894450291958
\n", - "

2940 rows × 7 columns

\n", - "
" - ], - "text/plain": [ - "1 AMU X Y Area (km2) Start \\\n", - "2 dm6zd7 -120.609779853754 50.1815140859714 2076206.19350909 06/01/22 \n", - "3 pm71ed -116.26967229539 49.3142983301064 1140818.84899762 06/01/22 \n", - "4 37ndaz -121.431647767903 50.8957142214965 859701.520677822 06/01/22 \n", - "5 apx5rz -121.101796289793 49.5280358248754 849852.287689543 06/01/22 \n", - "6 mp6qwd -119.253577028055 50.1638042845403 1371497.13784112 06/01/22 \n", - "... ... ... ... ... ... \n", - "2937 7zrznz -77.0172633740488 38.9080077311573 42925.0353570637 06/01/22 \n", - "2938 ldgd6n -71.5907951395792 41.6946227800715 620540.139719753 06/01/22 \n", - "2939 1kwkj7 -71.2771619559509 41.5393927681328 25993.6751949394 06/01/22 \n", - "2940 z5r5ke -71.37775593944 41.514830063034 6405.03372192102 06/01/22 \n", - "2941 xlxlb4 -71.5785472344162 41.1767522042168 6353.96791249767 06/01/22 \n", - "\n", - "1 End Value(Fahrenheit) \n", - "2 06/10/23 42.6537761214063 \n", - "3 06/10/23 40.9050440207924 \n", - "4 06/10/23 41.1429031374504 \n", - "5 06/10/23 40.4459632826831 \n", - "6 06/10/23 43.2356649016597 \n", - "... ... ... \n", - "2937 06/10/23 59.7459764343867 \n", - "2938 06/10/23 54.7409374010456 \n", - "2939 06/10/23 54.7747722154322 \n", - "2940 06/10/23 54.764876751904 \n", - "2941 06/10/23 54.9894450291958 \n", - "\n", - "[2940 rows x 7 columns]" - ] - }, - "execution_count": 33, - "metadata": {}, - "output_type": "execute_result" - } - ], + "outputs": [], "source": [ "# Generate a panda data frame from Agriquest Weather Data:\n", "# on all AMU of o block\n", @@ -4632,198 +376,9 @@ }, { "cell_type": "code", - "execution_count": 34, + "execution_count": null, "metadata": {}, - "outputs": [ - { - "name": "stderr", - "output_type": "stream", - "text": [ - "c:\\Users\\ajd\\Documents\\GitHub\\GeosysPy\\geosyspy\\services\\agriquest_service.py:149: FutureWarning: Passing literal json to 'read_json' is deprecated and will be removed in a future version. To read from a literal string, wrap it in a 'StringIO' object.\n", - " df = pd.read_json(json.dumps(dict_response))\n" - ] - }, - { - "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", - " \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", - "
1AMUXYArea (km2)StartEndNDVI
2Aude2.4136222420084943.10325358378361567533.4190190506/01/2206/01/220.67292565
3Haute-Loire3.8062982137194245.1281151778361236418.3458485906/01/2206/01/220.7676143
4Bouches-du-Rhône5.0860420346163443.54327394557791295740.463952906/01/2206/01/220.5370673
5Lot-et-Garonne0.46074743702563944.36796367894251330771.2612929506/01/2206/01/220.6660436
6Creuse2.0182296328657146.09062044040381383585.4223308506/01/2206/01/220.7965648
........................
79Alpes-de-Haute-Provence6.2446539059983144.10611727586511728081.0343792606/01/2206/01/220.66969323
80Morbihan-2.8121826801137247.84758652655421693893.732242506/01/2206/01/220.71398413
81Doubs6.3627222242133947.16596359400961298913.91380806/01/2206/01/220.8028164
82Jura5.6973773069342446.72935999509231247558.2517506706/01/2206/01/220.80481243
83Gard4.1798612535777743.99360125263491451959.7735684606/01/2206/01/220.63843656
\n", - "

82 rows × 7 columns

\n", - "
" - ], - "text/plain": [ - "1 AMU X Y \\\n", - "2 Aude 2.41362224200849 43.1032535837836 \n", - "3 Haute-Loire 3.80629821371942 45.128115177836 \n", - "4 Bouches-du-Rhône 5.08604203461634 43.5432739455779 \n", - "5 Lot-et-Garonne 0.460747437025639 44.3679636789425 \n", - "6 Creuse 2.01822963286571 46.0906204404038 \n", - ".. ... ... ... \n", - "79 Alpes-de-Haute-Provence 6.24465390599831 44.1061172758651 \n", - "80 Morbihan -2.81218268011372 47.8475865265542 \n", - "81 Doubs 6.36272222421339 47.1659635940096 \n", - "82 Jura 5.69737730693424 46.7293599950923 \n", - "83 Gard 4.17986125357777 43.9936012526349 \n", - "\n", - "1 Area (km2) Start End NDVI \n", - "2 1567533.41901905 06/01/22 06/01/22 0.67292565 \n", - "3 1236418.34584859 06/01/22 06/01/22 0.7676143 \n", - "4 1295740.4639529 06/01/22 06/01/22 0.5370673 \n", - "5 1330771.26129295 06/01/22 06/01/22 0.6660436 \n", - "6 1383585.42233085 06/01/22 06/01/22 0.7965648 \n", - ".. ... ... ... ... \n", - "79 1728081.03437926 06/01/22 06/01/22 0.66969323 \n", - "80 1693893.7322425 06/01/22 06/01/22 0.71398413 \n", - "81 1298913.913808 06/01/22 06/01/22 0.8028164 \n", - "82 1247558.25175067 06/01/22 06/01/22 0.80481243 \n", - "83 1451959.77356846 06/01/22 06/01/22 0.63843656 \n", - "\n", - "[82 rows x 7 columns]" - ] - }, - "execution_count": 34, - "metadata": {}, - "output_type": "execute_result" - } - ], + "outputs": [], "source": [ "# Generate a panda data frame from Agriquest NDVI Data:\n", "# on all AMU of o block\n", @@ -4846,22 +401,9 @@ }, { "cell_type": "code", - "execution_count": 35, + "execution_count": null, "metadata": {}, - "outputs": [ - { - "ename": "AttributeError", - "evalue": "_2ND_CORN", - "output_type": "error", - "traceback": [ - "\u001b[1;31m---------------------------------------------------------------------------\u001b[0m", - "\u001b[1;31mAttributeError\u001b[0m Traceback (most recent call last)", - "Cell \u001b[1;32mIn[35], line 6\u001b[0m\n\u001b[0;32m 1\u001b[0m \u001b[38;5;66;03m# Analytics processor - Historical Harvest\u001b[39;00m\n\u001b[0;32m 2\u001b[0m harvest_historical_analytics \u001b[38;5;241m=\u001b[39m client\u001b[38;5;241m.\u001b[39mget_harvest_analytics(\n\u001b[0;32m 3\u001b[0m season_duration\u001b[38;5;241m=\u001b[39m\u001b[38;5;241m215\u001b[39m,\n\u001b[0;32m 4\u001b[0m season_start_day\u001b[38;5;241m=\u001b[39m\u001b[38;5;241m1\u001b[39m,\n\u001b[0;32m 5\u001b[0m season_start_month\u001b[38;5;241m=\u001b[39m\u001b[38;5;241m4\u001b[39m,\n\u001b[1;32m----> 6\u001b[0m crop\u001b[38;5;241m=\u001b[39m\u001b[43mcrops\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43m_2ND_CORN\u001b[49m,\n\u001b[0;32m 7\u001b[0m year\u001b[38;5;241m=\u001b[39m\u001b[38;5;241m2021\u001b[39m,\n\u001b[0;32m 8\u001b[0m geometry\u001b[38;5;241m=\u001b[39m\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mPOLYGON ((-56.785919346530768 -21.208154463301554 , -56.79078750820733 -21.206043784434833 , -56.790973809206818 -21.206069651656232 , -56.791373799079636 -21.197107091323097 , -56.785129186971687 -21.196010916846863 , -56.781397554331065 -21.19535575112814 , -56.777108478217059 -21.202038412606473 , -56.778435977920665 -21.211398619037478 , -56.785919346530768 -21.208154463301554))\u001b[39m\u001b[38;5;124m\"\u001b[39m,\n\u001b[0;32m 9\u001b[0m harvest_type\u001b[38;5;241m=\u001b[39mHarvest\u001b[38;5;241m.\u001b[39mHARVEST_HISTORICAL)\n\u001b[0;32m 10\u001b[0m harvest_historical_analytics\n", - "File \u001b[1;32mC:\\Program Files\\WindowsApps\\PythonSoftwareFoundation.Python.3.11_3.11.2544.0_x64__qbz5n2kfra8p0\\Lib\\enum.py:786\u001b[0m, in \u001b[0;36mEnumType.__getattr__\u001b[1;34m(cls, name)\u001b[0m\n\u001b[0;32m 784\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m \u001b[38;5;28mcls\u001b[39m\u001b[38;5;241m.\u001b[39m_member_map_[name]\n\u001b[0;32m 785\u001b[0m \u001b[38;5;28;01mexcept\u001b[39;00m \u001b[38;5;167;01mKeyError\u001b[39;00m:\n\u001b[1;32m--> 786\u001b[0m \u001b[38;5;28;01mraise\u001b[39;00m \u001b[38;5;167;01mAttributeError\u001b[39;00m(name) \u001b[38;5;28;01mfrom\u001b[39;00m \u001b[38;5;28;01mNone\u001b[39;00m\n", - "\u001b[1;31mAttributeError\u001b[0m: _2ND_CORN" - ] - } - ], + "outputs": [], "source": [ "# Analytics processor - Historical Harvest\n", "harvest_historical_analytics = client.get_harvest_analytics(\n", @@ -4877,22 +419,9 @@ }, { "cell_type": "code", - "execution_count": 36, + "execution_count": null, "metadata": {}, - "outputs": [ - { - "ename": "AttributeError", - "evalue": "_2ND_CORN", - "output_type": "error", - "traceback": [ - "\u001b[1;31m---------------------------------------------------------------------------\u001b[0m", - "\u001b[1;31mAttributeError\u001b[0m Traceback (most recent call last)", - "Cell \u001b[1;32mIn[36], line 6\u001b[0m\n\u001b[0;32m 1\u001b[0m \u001b[38;5;66;03m# Analytics processor - Inseason Harvest\u001b[39;00m\n\u001b[0;32m 2\u001b[0m harvest_in_season_analytics \u001b[38;5;241m=\u001b[39m client\u001b[38;5;241m.\u001b[39mget_harvest_analytics(\n\u001b[0;32m 3\u001b[0m season_duration\u001b[38;5;241m=\u001b[39m\u001b[38;5;241m215\u001b[39m,\n\u001b[0;32m 4\u001b[0m season_start_day\u001b[38;5;241m=\u001b[39m\u001b[38;5;241m1\u001b[39m,\n\u001b[0;32m 5\u001b[0m season_start_month\u001b[38;5;241m=\u001b[39m\u001b[38;5;241m4\u001b[39m,\n\u001b[1;32m----> 6\u001b[0m crop\u001b[38;5;241m=\u001b[39m\u001b[43mcrops\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43m_2ND_CORN\u001b[49m,\n\u001b[0;32m 7\u001b[0m year\u001b[38;5;241m=\u001b[39m\u001b[38;5;241m2021\u001b[39m,\n\u001b[0;32m 8\u001b[0m geometry\u001b[38;5;241m=\u001b[39m\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mPOLYGON ((-56.785919346530768 -21.208154463301554 , -56.79078750820733 -21.206043784434833 , -56.790973809206818 -21.206069651656232 , -56.791373799079636 -21.197107091323097 , -56.785129186971687 -21.196010916846863 , -56.781397554331065 -21.19535575112814 , -56.777108478217059 -21.202038412606473 , -56.778435977920665 -21.211398619037478 , -56.785919346530768 -21.208154463301554))\u001b[39m\u001b[38;5;124m\"\u001b[39m,\n\u001b[0;32m 9\u001b[0m harvest_type\u001b[38;5;241m=\u001b[39mHarvest\u001b[38;5;241m.\u001b[39mHARVEST_IN_SEASON)\n\u001b[0;32m 11\u001b[0m harvest_in_season_analytics\n", - "File \u001b[1;32mC:\\Program Files\\WindowsApps\\PythonSoftwareFoundation.Python.3.11_3.11.2544.0_x64__qbz5n2kfra8p0\\Lib\\enum.py:786\u001b[0m, in \u001b[0;36mEnumType.__getattr__\u001b[1;34m(cls, name)\u001b[0m\n\u001b[0;32m 784\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m \u001b[38;5;28mcls\u001b[39m\u001b[38;5;241m.\u001b[39m_member_map_[name]\n\u001b[0;32m 785\u001b[0m \u001b[38;5;28;01mexcept\u001b[39;00m \u001b[38;5;167;01mKeyError\u001b[39;00m:\n\u001b[1;32m--> 786\u001b[0m \u001b[38;5;28;01mraise\u001b[39;00m \u001b[38;5;167;01mAttributeError\u001b[39;00m(name) \u001b[38;5;28;01mfrom\u001b[39;00m \u001b[38;5;28;01mNone\u001b[39;00m\n", - "\u001b[1;31mAttributeError\u001b[0m: _2ND_CORN" - ] - } - ], + "outputs": [], "source": [ "# Analytics processor - Inseason Harvest\n", "harvest_in_season_analytics = client.get_harvest_analytics(\n", @@ -4947,58 +476,9 @@ }, { "cell_type": "code", - "execution_count": 37, + "execution_count": null, "metadata": {}, - "outputs": [ - { - "name": "stderr", - "output_type": "stream", - "text": [ - "2024-06-14 11:21:54,660 - geosyspy.services.analytics_processor_service - INFO - Retry -- Task still running\n", - "2024-06-14 11:21:56,797 - geosyspy.services.analytics_processor_service - INFO - Retry -- Task still running\n", - "2024-06-14 11:22:00,941 - geosyspy.services.analytics_fabric_service - INFO - Calling APIs for Latest metrics\n", - "2024-06-14 11:22:01,103 - geosyspy.services.analytics_fabric_service - INFO - No Latest metrics found in Analytic Fabric with SchemaId: EMERGENCE_DELAY, SeasonField:2Kh2c4sGy2EkTXQv4LRWv2 \n" - ] - }, - { - "data": { - "text/html": [ - "
\n", - "\n", - "\n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - "
\n", - "
" - ], - "text/plain": [ - "Empty DataFrame\n", - "Columns: []\n", - "Index: []" - ] - }, - "execution_count": 37, - "metadata": {}, - "output_type": "execute_result" - } - ], + "outputs": [], "source": [ "# Analytics processor - Emergence Delay\n", "emergence_delay_analytics = client.get_emergence_analytics(\n", @@ -5015,29 +495,9 @@ }, { "cell_type": "code", - "execution_count": 38, + "execution_count": null, "metadata": {}, - "outputs": [ - { - "ename": "Exception", - "evalue": "Task Status: Error, Content: b'{\"events\":[{\"level\":\"Information\",\"date\":\"2024-06-14T09:22:01.912Z\",\"source\":\"Analytics.geosys-analyticsprocessors-webapi\",\"message\":\"Processor called\",\"eventData\":{\"TaskId\":\"cde93d016b1c4625bc12b648603d2f79\",\"Error\":null}},{\"level\":\"Information\",\"date\":\"2024-06-14T09:22:01.955Z\",\"source\":\"AnalyticsProcessor.InseasonPotentialScore\",\"message\":\"Processor started\"},{\"level\":\"Error\",\"date\":\"2024-06-14T09:22:01.999Z\",\"source\":\"AnalyticsProcessor.InseasonPotentialScore\",\"message\":\"Unhandled exception\",\"eventData\":{\"error\":\"KeyError\",\"message\":\"\\'toi\\'\",\"stackTrace\":\"Traceback (most recent call last):\\\\n File \\\\\"/cloudevents_endpoint.py\\\\\", line 109, in __start_task\\\\n results = main(data)\\\\n File \\\\\"/main.py\\\\\", line 19, in main\\\\n model = get_model(input_json[\\'parameters\\'])\\\\n File \\\\\"/main.py\\\\\", line 13, in get_model\\\\n model = predict_model.HistoricalPotentialScore(input_json_parameters)\\\\n File \\\\\"/historicalpotentialscore/models/predict_model.py\\\\\", line 210, in __init__\\\\n self.load_dates()\\\\n File \\\\\"/historicalpotentialscore/models/predict_model.py\\\\\", line 248, in load_dates\\\\n self.season = Season(**self.parameters[\\'toi\\'][\\'season\\'])\\\\nKeyError: \\'toi\\'\\\\n\"}}],\"id\":\"cde93d016b1c4625bc12b648603d2f79\",\"taskId\":\"cde93d016b1c4625bc12b648603d2f79\",\"processorCode\":\"potential_score\",\"userId\":\"2tKecZgMyEP6EkddLxa1gV\",\"userLogin\":\"ETotain_US\",\"customerCode\":\"GEOSYS_US\",\"parametersProfile\":{\"code\":\"potential_score_default\"},\"parameters\":{\"nb_historical_years\":5,\"threshold\":0.7,\"season_duration\":200,\"season_start_day\":1,\"season_start_month\":10,\"end_date\":\"2022-03-06\"},\"status\":\"Error\",\"createdAt\":\"2024-06-14T09:22:01.654Z\",\"modifiedAt\":\"2024-06-14T09:22:01.999Z\",\"duration\":0}'", - "output_type": "error", - "traceback": [ - "\u001b[1;31m---------------------------------------------------------------------------\u001b[0m", - "\u001b[1;31mException\u001b[0m Traceback (most recent call last)", - "Cell \u001b[1;32mIn[38], line 2\u001b[0m\n\u001b[0;32m 1\u001b[0m \u001b[38;5;66;03m# Analytics processor - Potential Score\u001b[39;00m\n\u001b[1;32m----> 2\u001b[0m potential_score_analytics \u001b[38;5;241m=\u001b[39m \u001b[43mclient\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mget_potential_score_analytics\u001b[49m\u001b[43m(\u001b[49m\n\u001b[0;32m 3\u001b[0m \u001b[43m \u001b[49m\u001b[43mend_date\u001b[49m\u001b[43m \u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43m \u001b[49m\u001b[38;5;124;43m\"\u001b[39;49m\u001b[38;5;124;43m2022-03-06\u001b[39;49m\u001b[38;5;124;43m\"\u001b[39;49m\u001b[43m,\u001b[49m\n\u001b[0;32m 4\u001b[0m \u001b[43m \u001b[49m\u001b[43mnb_historical_years\u001b[49m\u001b[43m \u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43m \u001b[49m\u001b[38;5;241;43m5\u001b[39;49m\u001b[43m,\u001b[49m\n\u001b[0;32m 5\u001b[0m \u001b[43m \u001b[49m\u001b[43mseason_duration\u001b[49m\u001b[43m \u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43m \u001b[49m\u001b[38;5;241;43m200\u001b[39;49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\n\u001b[0;32m 6\u001b[0m \u001b[43m \u001b[49m\u001b[43mseason_start_day\u001b[49m\u001b[43m \u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43m \u001b[49m\u001b[38;5;241;43m1\u001b[39;49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\n\u001b[0;32m 7\u001b[0m \u001b[43m \u001b[49m\u001b[43mseason_start_month\u001b[49m\u001b[43m \u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43m \u001b[49m\u001b[38;5;241;43m10\u001b[39;49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\n\u001b[0;32m 8\u001b[0m \u001b[43m \u001b[49m\u001b[43mcrop\u001b[49m\u001b[43m \u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43m \u001b[49m\u001b[43mcrops\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mCORN\u001b[49m\u001b[43m,\u001b[49m\n\u001b[0;32m 9\u001b[0m \u001b[43m \u001b[49m\u001b[43msowing_date\u001b[49m\u001b[43m \u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43m \u001b[49m\u001b[38;5;124;43m\"\u001b[39;49m\u001b[38;5;124;43m2021-10-01\u001b[39;49m\u001b[38;5;124;43m\"\u001b[39;49m\u001b[43m,\u001b[49m\n\u001b[0;32m 10\u001b[0m \u001b[43m \u001b[49m\u001b[43mgeometry\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[38;5;124;43m\"\u001b[39;49m\u001b[38;5;124;43mPOLYGON ((-54.26027778 -25.38777778, -54.26027778 -25.37444444, -54.26 -25.37416667, -54.25972222 -25.37444444, -54.25944444 -25.37444444, -54.25888889 -25.37472222, -54.258611110000004 -25.37472222, -54.25888889 -25.375, -54.25888889 -25.37555555, -54.258611110000004 -25.37611111, -54.258611110000004 -25.38194444, -54.25833333 -25.38416667, -54.25694444 -25.38361111, -54.25694444 -25.38416667, -54.2575 -25.38416667, -54.2575 -25.38444444, -54.25777778 -25.38416667, -54.25807016 -25.384158120000002, -54.25805556 -25.38444444, -54.258077300000004 -25.38472206, -54.2575 -25.38527778, -54.25694444 -25.385, -54.256388890000004 -25.38361111, -54.25472222 -25.38305555, -54.25472222 -25.3825, -54.254166670000004 -25.38194444, -54.25444444 -25.38166667, -54.25472222 -25.38166667, -54.25472222 -25.37944444, -54.25277778 -25.37944444, -54.25277778 -25.38583333, -54.25419223 -25.3861539, -54.2539067 -25.38589216, -54.25388889 -25.385, -54.25444444 -25.38555555, -54.2547871 -25.385820770000002, -54.25472222 -25.38611111, -54.26027778 -25.38777778))\u001b[39;49m\u001b[38;5;124;43m\"\u001b[39;49m\n\u001b[0;32m 11\u001b[0m \u001b[43m)\u001b[49m\n\u001b[0;32m 13\u001b[0m potential_score_analytics\n", - "File \u001b[1;32mc:\\Users\\ajd\\Documents\\GitHub\\GeosysPy\\geosyspy\\geosys.py:1023\u001b[0m, in \u001b[0;36mGeosys.get_potential_score_analytics\u001b[1;34m(self, end_date, nb_historical_years, season_duration, season_start_day, season_start_month, sowing_date, crop, geometry, season_field_id)\u001b[0m\n\u001b[0;32m 1007\u001b[0m sf_unique_id \u001b[38;5;241m=\u001b[39m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m__master_data_management_service\u001b[38;5;241m.\u001b[39mget_season_field_unique_id(\n\u001b[0;32m 1008\u001b[0m season_field_id\n\u001b[0;32m 1009\u001b[0m )\n\u001b[0;32m 1011\u001b[0m task_id \u001b[38;5;241m=\u001b[39m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m__analytics_processor_service\u001b[38;5;241m.\u001b[39mlaunch_potential_score_processor(\n\u001b[0;32m 1012\u001b[0m end_date\u001b[38;5;241m=\u001b[39mend_date,\n\u001b[0;32m 1013\u001b[0m nb_historical_years\u001b[38;5;241m=\u001b[39mnb_historical_years,\n\u001b[1;32m (...)\u001b[0m\n\u001b[0;32m 1020\u001b[0m crop\u001b[38;5;241m=\u001b[39mcrop\u001b[38;5;241m.\u001b[39mvalue,\n\u001b[0;32m 1021\u001b[0m )\n\u001b[1;32m-> 1023\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m \u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mcheck_status_and_metrics\u001b[49m\u001b[43m(\u001b[49m\u001b[43mtask_id\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[38;5;124;43m\"\u001b[39;49m\u001b[38;5;124;43mPOTENTIAL_SCORE\u001b[39;49m\u001b[38;5;124;43m\"\u001b[39;49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43msf_unique_id\u001b[49m\u001b[43m)\u001b[49m\n", - "File \u001b[1;32mc:\\Users\\ajd\\Documents\\GitHub\\GeosysPy\\geosyspy\\geosys.py:706\u001b[0m, in \u001b[0;36mGeosys.check_status_and_metrics\u001b[1;34m(self, task_id, schema, sf_unique_id)\u001b[0m\n\u001b[0;32m 705\u001b[0m \u001b[38;5;28;01mdef\u001b[39;00m \u001b[38;5;21mcheck_status_and_metrics\u001b[39m(\u001b[38;5;28mself\u001b[39m, task_id, schema, sf_unique_id):\n\u001b[1;32m--> 706\u001b[0m \u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43m__analytics_processor_service\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mwait_and_check_task_status\u001b[49m\u001b[43m(\u001b[49m\u001b[43mtask_id\u001b[49m\u001b[43m)\u001b[49m\n\u001b[0;32m 707\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m__analytics_fabric_service\u001b[38;5;241m.\u001b[39mget_lastest_metrics(sf_unique_id, schema)\n", - "File \u001b[1;32mc:\\Users\\ajd\\Documents\\GitHub\\GeosysPy\\.venv\\Lib\\site-packages\\retrying.py:56\u001b[0m, in \u001b[0;36mretry..wrap..wrapped_f\u001b[1;34m(*args, **kw)\u001b[0m\n\u001b[0;32m 54\u001b[0m \u001b[38;5;129m@six\u001b[39m\u001b[38;5;241m.\u001b[39mwraps(f)\n\u001b[0;32m 55\u001b[0m \u001b[38;5;28;01mdef\u001b[39;00m \u001b[38;5;21mwrapped_f\u001b[39m(\u001b[38;5;241m*\u001b[39margs, \u001b[38;5;241m*\u001b[39m\u001b[38;5;241m*\u001b[39mkw):\n\u001b[1;32m---> 56\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m \u001b[43mRetrying\u001b[49m\u001b[43m(\u001b[49m\u001b[38;5;241;43m*\u001b[39;49m\u001b[43mdargs\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[38;5;241;43m*\u001b[39;49m\u001b[38;5;241;43m*\u001b[39;49m\u001b[43mdkw\u001b[49m\u001b[43m)\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mcall\u001b[49m\u001b[43m(\u001b[49m\u001b[43mf\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[38;5;241;43m*\u001b[39;49m\u001b[43margs\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[38;5;241;43m*\u001b[39;49m\u001b[38;5;241;43m*\u001b[39;49m\u001b[43mkw\u001b[49m\u001b[43m)\u001b[49m\n", - "File \u001b[1;32mc:\\Users\\ajd\\Documents\\GitHub\\GeosysPy\\.venv\\Lib\\site-packages\\retrying.py:257\u001b[0m, in \u001b[0;36mRetrying.call\u001b[1;34m(self, fn, *args, **kwargs)\u001b[0m\n\u001b[0;32m 254\u001b[0m attempt \u001b[38;5;241m=\u001b[39m Attempt(tb, attempt_number, \u001b[38;5;28;01mTrue\u001b[39;00m)\n\u001b[0;32m 256\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m \u001b[38;5;129;01mnot\u001b[39;00m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mshould_reject(attempt):\n\u001b[1;32m--> 257\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m \u001b[43mattempt\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mget\u001b[49m\u001b[43m(\u001b[49m\u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43m_wrap_exception\u001b[49m\u001b[43m)\u001b[49m\n\u001b[0;32m 259\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m_after_attempts:\n\u001b[0;32m 260\u001b[0m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m_after_attempts(attempt_number)\n", - "File \u001b[1;32mc:\\Users\\ajd\\Documents\\GitHub\\GeosysPy\\.venv\\Lib\\site-packages\\retrying.py:301\u001b[0m, in \u001b[0;36mAttempt.get\u001b[1;34m(self, wrap_exception)\u001b[0m\n\u001b[0;32m 299\u001b[0m \u001b[38;5;28;01mraise\u001b[39;00m RetryError(\u001b[38;5;28mself\u001b[39m)\n\u001b[0;32m 300\u001b[0m \u001b[38;5;28;01melse\u001b[39;00m:\n\u001b[1;32m--> 301\u001b[0m \u001b[43msix\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mreraise\u001b[49m\u001b[43m(\u001b[49m\u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mvalue\u001b[49m\u001b[43m[\u001b[49m\u001b[38;5;241;43m0\u001b[39;49m\u001b[43m]\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mvalue\u001b[49m\u001b[43m[\u001b[49m\u001b[38;5;241;43m1\u001b[39;49m\u001b[43m]\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mvalue\u001b[49m\u001b[43m[\u001b[49m\u001b[38;5;241;43m2\u001b[39;49m\u001b[43m]\u001b[49m\u001b[43m)\u001b[49m\n\u001b[0;32m 302\u001b[0m \u001b[38;5;28;01melse\u001b[39;00m:\n\u001b[0;32m 303\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mvalue\n", - "File \u001b[1;32mc:\\Users\\ajd\\Documents\\GitHub\\GeosysPy\\.venv\\Lib\\site-packages\\six.py:719\u001b[0m, in \u001b[0;36mreraise\u001b[1;34m(tp, value, tb)\u001b[0m\n\u001b[0;32m 717\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m value\u001b[38;5;241m.\u001b[39m__traceback__ \u001b[38;5;129;01mis\u001b[39;00m \u001b[38;5;129;01mnot\u001b[39;00m tb:\n\u001b[0;32m 718\u001b[0m \u001b[38;5;28;01mraise\u001b[39;00m value\u001b[38;5;241m.\u001b[39mwith_traceback(tb)\n\u001b[1;32m--> 719\u001b[0m \u001b[38;5;28;01mraise\u001b[39;00m value\n\u001b[0;32m 720\u001b[0m \u001b[38;5;28;01mfinally\u001b[39;00m:\n\u001b[0;32m 721\u001b[0m value \u001b[38;5;241m=\u001b[39m \u001b[38;5;28;01mNone\u001b[39;00m\n", - "File \u001b[1;32mc:\\Users\\ajd\\Documents\\GitHub\\GeosysPy\\.venv\\Lib\\site-packages\\retrying.py:251\u001b[0m, in \u001b[0;36mRetrying.call\u001b[1;34m(self, fn, *args, **kwargs)\u001b[0m\n\u001b[0;32m 248\u001b[0m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m_before_attempts(attempt_number)\n\u001b[0;32m 250\u001b[0m \u001b[38;5;28;01mtry\u001b[39;00m:\n\u001b[1;32m--> 251\u001b[0m attempt \u001b[38;5;241m=\u001b[39m Attempt(\u001b[43mfn\u001b[49m\u001b[43m(\u001b[49m\u001b[38;5;241;43m*\u001b[39;49m\u001b[43margs\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[38;5;241;43m*\u001b[39;49m\u001b[38;5;241;43m*\u001b[39;49m\u001b[43mkwargs\u001b[49m\u001b[43m)\u001b[49m, attempt_number, \u001b[38;5;28;01mFalse\u001b[39;00m)\n\u001b[0;32m 252\u001b[0m \u001b[38;5;28;01mexcept\u001b[39;00m:\n\u001b[0;32m 253\u001b[0m tb \u001b[38;5;241m=\u001b[39m sys\u001b[38;5;241m.\u001b[39mexc_info()\n", - "File \u001b[1;32mc:\\Users\\ajd\\Documents\\GitHub\\GeosysPy\\geosyspy\\services\\analytics_processor_service.py:50\u001b[0m, in \u001b[0;36mAnalyticsProcessorService.wait_and_check_task_status\u001b[1;34m(self, task_id)\u001b[0m\n\u001b[0;32m 48\u001b[0m \u001b[38;5;28;01mraise\u001b[39;00m \u001b[38;5;167;01mKeyError\u001b[39;00m(\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mTask still running\u001b[39m\u001b[38;5;124m\"\u001b[39m) \u001b[38;5;66;03m# raise exception to retry\u001b[39;00m\n\u001b[0;32m 49\u001b[0m \u001b[38;5;28;01melse\u001b[39;00m:\n\u001b[1;32m---> 50\u001b[0m \u001b[38;5;28;01mraise\u001b[39;00m \u001b[38;5;167;01mException\u001b[39;00m(\u001b[38;5;124mf\u001b[39m\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mTask Status: \u001b[39m\u001b[38;5;132;01m{\u001b[39;00mtask_status\u001b[38;5;132;01m}\u001b[39;00m\u001b[38;5;124m, Content: \u001b[39m\u001b[38;5;132;01m{\u001b[39;00mresponse\u001b[38;5;241m.\u001b[39mcontent\u001b[38;5;132;01m}\u001b[39;00m\u001b[38;5;124m\"\u001b[39m )\n\u001b[0;32m 52\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m task_status\n", - "\u001b[1;31mException\u001b[0m: Task Status: Error, Content: b'{\"events\":[{\"level\":\"Information\",\"date\":\"2024-06-14T09:22:01.912Z\",\"source\":\"Analytics.geosys-analyticsprocessors-webapi\",\"message\":\"Processor called\",\"eventData\":{\"TaskId\":\"cde93d016b1c4625bc12b648603d2f79\",\"Error\":null}},{\"level\":\"Information\",\"date\":\"2024-06-14T09:22:01.955Z\",\"source\":\"AnalyticsProcessor.InseasonPotentialScore\",\"message\":\"Processor started\"},{\"level\":\"Error\",\"date\":\"2024-06-14T09:22:01.999Z\",\"source\":\"AnalyticsProcessor.InseasonPotentialScore\",\"message\":\"Unhandled exception\",\"eventData\":{\"error\":\"KeyError\",\"message\":\"\\'toi\\'\",\"stackTrace\":\"Traceback (most recent call last):\\\\n File \\\\\"/cloudevents_endpoint.py\\\\\", line 109, in __start_task\\\\n results = main(data)\\\\n File \\\\\"/main.py\\\\\", line 19, in main\\\\n model = get_model(input_json[\\'parameters\\'])\\\\n File \\\\\"/main.py\\\\\", line 13, in get_model\\\\n model = predict_model.HistoricalPotentialScore(input_json_parameters)\\\\n File \\\\\"/historicalpotentialscore/models/predict_model.py\\\\\", line 210, in __init__\\\\n self.load_dates()\\\\n File \\\\\"/historicalpotentialscore/models/predict_model.py\\\\\", line 248, in load_dates\\\\n self.season = Season(**self.parameters[\\'toi\\'][\\'season\\'])\\\\nKeyError: \\'toi\\'\\\\n\"}}],\"id\":\"cde93d016b1c4625bc12b648603d2f79\",\"taskId\":\"cde93d016b1c4625bc12b648603d2f79\",\"processorCode\":\"potential_score\",\"userId\":\"2tKecZgMyEP6EkddLxa1gV\",\"userLogin\":\"ETotain_US\",\"customerCode\":\"GEOSYS_US\",\"parametersProfile\":{\"code\":\"potential_score_default\"},\"parameters\":{\"nb_historical_years\":5,\"threshold\":0.7,\"season_duration\":200,\"season_start_day\":1,\"season_start_month\":10,\"end_date\":\"2022-03-06\"},\"status\":\"Error\",\"createdAt\":\"2024-06-14T09:22:01.654Z\",\"modifiedAt\":\"2024-06-14T09:22:01.999Z\",\"duration\":0}'" - ] - } - ], + "outputs": [], "source": [ "# Analytics processor - Potential Score\n", "potential_score_analytics = client.get_potential_score_analytics(\n", @@ -5056,78 +516,9 @@ }, { "cell_type": "code", - "execution_count": 39, + "execution_count": null, "metadata": {}, - "outputs": [ - { - "name": "stderr", - "output_type": "stream", - "text": [ - "2024-06-14 11:22:36,673 - geosyspy.services.analytics_processor_service - INFO - Retry -- Task still running\n", - "2024-06-14 11:22:38,822 - geosyspy.services.analytics_fabric_service - INFO - Calling APIs for Latest metrics\n" - ] - }, - { - "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", - "
Values.peak_foundValues.max_NDVI_valValues.max_NDVI_dateSchema.Id
date
2024-06-14T09:22:37.178ZTrue0.9140252022-03-29GREENNESS
\n", - "
" - ], - "text/plain": [ - " Values.peak_found Values.max_NDVI_val \\\n", - "date \n", - "2024-06-14T09:22:37.178Z True 0.914025 \n", - "\n", - " Values.max_NDVI_date Schema.Id \n", - "date \n", - "2024-06-14T09:22:37.178Z 2022-03-29 GREENNESS " - ] - }, - "execution_count": 39, - "metadata": {}, - "output_type": "execute_result" - } - ], + "outputs": [], "source": [ "# Analytics processor - Greenness\n", "greenness_analytics = client.get_greenness_analytics(\n", @@ -5146,69 +537,9 @@ }, { "cell_type": "code", - "execution_count": 40, + "execution_count": null, "metadata": {}, - "outputs": [ - { - "name": "stderr", - "output_type": "stream", - "text": [ - "2024-06-14 11:22:40,746 - geosyspy.services.analytics_processor_service - INFO - Retry -- Task still running\n", - "2024-06-14 11:22:43,005 - geosyspy.services.analytics_processor_service - INFO - Retry -- Task still running\n", - "2024-06-14 11:22:47,205 - geosyspy.services.analytics_fabric_service - INFO - Calling APIs for Latest metrics\n" - ] - }, - { - "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", - "
Values.dateSchema.Id
date
2024-06-14T09:22:43.483Z2022-05-10HARVEST_READINESS
\n", - "
" - ], - "text/plain": [ - " Values.date Schema.Id\n", - "date \n", - "2024-06-14T09:22:43.483Z 2022-05-10 HARVEST_READINESS" - ] - }, - "execution_count": 40, - "metadata": {}, - "output_type": "execute_result" - } - ], + "outputs": [], "source": [ "# Analytics processor - Harvest Readiness\n", "harvest_readiness_analytics = client.get_harvest_readiness_analytics(\n", @@ -5224,36 +555,9 @@ }, { "cell_type": "code", - "execution_count": 41, + "execution_count": null, "metadata": {}, - "outputs": [ - { - "name": "stderr", - "output_type": "stream", - "text": [ - "2024-06-14 11:22:48,424 - geosyspy.services.analytics_processor_service - INFO - Retry -- Task still running\n" - ] - }, - { - "ename": "Exception", - "evalue": "Task Status: Error, Content: b'{\"events\":[{\"level\":\"Information\",\"date\":\"2024-06-14T09:22:48.124Z\",\"source\":\"Analytics.geosys-analyticsprocessors-webapi\",\"message\":\"Processor called\",\"eventData\":{\"TaskId\":\"4518fc68b58f45978ff1f5f4c93ddc0b\",\"Error\":null}},{\"level\":\"Information\",\"date\":\"2024-06-14T09:22:48.141Z\",\"source\":\"AnalyticsProcessor.PlantedArea\",\"message\":\"Processor started\"},{\"level\":\"Information\",\"date\":\"2024-06-14T09:22:49.861Z\",\"source\":\"AnalyticsProcessor.PlantedArea\",\"message\":\"Computation finished\"},{\"level\":\"Information\",\"date\":\"2024-06-14T09:22:49.871Z\",\"source\":\"AnalyticsProcessor.PlantedArea\",\"message\":\"Format results for the callback\"},{\"level\":\"Information\",\"date\":\"2024-06-14T09:22:49.881Z\",\"source\":\"AnalyticsProcessor.PlantedArea\",\"message\":\"Callback called\"},{\"level\":\"Error\",\"date\":\"2024-06-14T09:22:49.957Z\",\"source\":\"AnalyticsProcessor.PlantedArea\",\"message\":\"Error while sending results to Analytics Fabric\",\"eventData\":{\"error\":\"{\\\\n \\\\\"Errors\\\\\": {\\\\n \\\\\"\\\\\": {\\\\n \\\\\"\\\\\": [\\\\n {\\\\n \\\\\"Code\\\\\": \\\\\"BadRequest\\\\\",\\\\n \\\\\"Message\\\\\": \\\\\"Property \\'planted_area\\' with value \\'\\' cannot be null. Property \\'planted_percentage\\' with value \\'\\' cannot be null. \\\\\"\\\\n }\\\\n ]\\\\n }\\\\n },\\\\n \\\\\"Code\\\\\": \\\\\"model_validation_error\\\\\",\\\\n \\\\\"Message\\\\\": \\\\\"Bad request: see the Errors field for details\\\\\"\\\\n}\"}},{\"level\":\"Error\",\"date\":\"2024-06-14T09:22:49.978Z\",\"source\":\"AnalyticsProcessor.PlantedArea\",\"message\":\"Unhandled exception\",\"eventData\":{\"error\":\"Exception\",\"message\":\"Error while sending results to Analytics Fabric\",\"stackTrace\":\"Traceback (most recent call last):\\\\n File \\\\\"/cloudevents_endpoint.py\\\\\", line 112, in __start_task\\\\n __process_callback(results, context)\\\\n File \\\\\"/cloudevents_endpoint.py\\\\\", line 133, in __process_callback\\\\n cloudevent_endpoint_callback(formatted_results, context)\\\\n File \\\\\"/cloudevents_endpoint_callback.py\\\\\", line 22, in cloudevent_endpoint_callback\\\\n __send_to_analytics_fabrik(process_results, context)\\\\n File \\\\\"/cloudevents_endpoint_callback.py\\\\\", line 52, in __send_to_analytics_fabrik\\\\n raise Exception(\\\\\"Error while sending results to Analytics Fabric\\\\\")\\\\nException: Error while sending results to Analytics Fabric\\\\n\"}}],\"id\":\"4518fc68b58f45978ff1f5f4c93ddc0b\",\"taskId\":\"4518fc68b58f45978ff1f5f4c93ddc0b\",\"processorCode\":\"planted_area\",\"userId\":\"2tKecZgMyEP6EkddLxa1gV\",\"userLogin\":\"ETotain_US\",\"customerCode\":\"GEOSYS_US\",\"parametersProfile\":{\"code\":\"planted_area_default\"},\"parameters\":{\"threshold\":30},\"status\":\"Error\",\"createdAt\":\"2024-06-14T09:22:48.048Z\",\"modifiedAt\":\"2024-06-14T09:22:49.978Z\",\"duration\":1}'", - "output_type": "error", - "traceback": [ - "\u001b[1;31m---------------------------------------------------------------------------\u001b[0m", - "\u001b[1;31mException\u001b[0m Traceback (most recent call last)", - "Cell \u001b[1;32mIn[41], line 2\u001b[0m\n\u001b[0;32m 1\u001b[0m \u001b[38;5;66;03m# Analytics processor - Planted area\u001b[39;00m\n\u001b[1;32m----> 2\u001b[0m planted_area_analytics \u001b[38;5;241m=\u001b[39m \u001b[43mclient\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mget_planted_area_analytics\u001b[49m\u001b[43m(\u001b[49m\n\u001b[0;32m 3\u001b[0m \u001b[43m \u001b[49m\u001b[43mstart_date\u001b[49m\u001b[43m \u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[38;5;124;43m\"\u001b[39;49m\u001b[38;5;124;43m2022-01-15\u001b[39;49m\u001b[38;5;124;43m\"\u001b[39;49m\u001b[43m,\u001b[49m\n\u001b[0;32m 4\u001b[0m \u001b[43m \u001b[49m\u001b[43mend_date\u001b[49m\u001b[43m \u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43m \u001b[49m\u001b[38;5;124;43m\"\u001b[39;49m\u001b[38;5;124;43m2022-05-31\u001b[39;49m\u001b[38;5;124;43m\"\u001b[39;49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\n\u001b[0;32m 5\u001b[0m \u001b[43m \u001b[49m\u001b[43mgeometry\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[38;5;124;43m\"\u001b[39;49m\u001b[38;5;124;43mPOLYGON ((-54.26027778 -25.38777778, -54.26027778 -25.37444444, -54.26 -25.37416667, -54.25972222 -25.37444444, -54.25944444 -25.37444444, -54.25888889 -25.37472222, -54.258611110000004 -25.37472222, -54.25888889 -25.375, -54.25888889 -25.37555555, -54.258611110000004 -25.37611111, -54.258611110000004 -25.38194444, -54.25833333 -25.38416667, -54.25694444 -25.38361111, -54.25694444 -25.38416667, -54.2575 -25.38416667, -54.2575 -25.38444444, -54.25777778 -25.38416667, -54.25807016 -25.384158120000002, -54.25805556 -25.38444444, -54.258077300000004 -25.38472206, -54.2575 -25.38527778, -54.25694444 -25.385, -54.256388890000004 -25.38361111, -54.25472222 -25.38305555, -54.25472222 -25.3825, -54.254166670000004 -25.38194444, -54.25444444 -25.38166667, -54.25472222 -25.38166667, -54.25472222 -25.37944444, -54.25277778 -25.37944444, -54.25277778 -25.38583333, -54.25419223 -25.3861539, -54.2539067 -25.38589216, -54.25388889 -25.385, -54.25444444 -25.38555555, -54.2547871 -25.385820770000002, -54.25472222 -25.38611111, -54.26027778 -25.38777778))\u001b[39;49m\u001b[38;5;124;43m\"\u001b[39;49m\n\u001b[0;32m 6\u001b[0m \u001b[43m)\u001b[49m\n\u001b[0;32m 8\u001b[0m planted_area_analytics\n", - "File \u001b[1;32mc:\\Users\\ajd\\Documents\\GitHub\\GeosysPy\\geosyspy\\geosys.py:1159\u001b[0m, in \u001b[0;36mGeosys.get_planted_area_analytics\u001b[1;34m(self, start_date, end_date, geometry, season_field_id)\u001b[0m\n\u001b[0;32m 1152\u001b[0m sf_unique_id \u001b[38;5;241m=\u001b[39m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m__master_data_management_service\u001b[38;5;241m.\u001b[39mget_season_field_unique_id(\n\u001b[0;32m 1153\u001b[0m season_field_id\n\u001b[0;32m 1154\u001b[0m )\n\u001b[0;32m 1156\u001b[0m task_id \u001b[38;5;241m=\u001b[39m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m__analytics_processor_service\u001b[38;5;241m.\u001b[39mlaunch_planted_area_processor(\n\u001b[0;32m 1157\u001b[0m start_date, end_date, sf_unique_id\n\u001b[0;32m 1158\u001b[0m )\n\u001b[1;32m-> 1159\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m \u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mcheck_status_and_metrics\u001b[49m\u001b[43m(\u001b[49m\u001b[43mtask_id\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[38;5;124;43m\"\u001b[39;49m\u001b[38;5;124;43mPLANTED_AREA\u001b[39;49m\u001b[38;5;124;43m\"\u001b[39;49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43msf_unique_id\u001b[49m\u001b[43m)\u001b[49m\n", - "File \u001b[1;32mc:\\Users\\ajd\\Documents\\GitHub\\GeosysPy\\geosyspy\\geosys.py:706\u001b[0m, in \u001b[0;36mGeosys.check_status_and_metrics\u001b[1;34m(self, task_id, schema, sf_unique_id)\u001b[0m\n\u001b[0;32m 705\u001b[0m \u001b[38;5;28;01mdef\u001b[39;00m \u001b[38;5;21mcheck_status_and_metrics\u001b[39m(\u001b[38;5;28mself\u001b[39m, task_id, schema, sf_unique_id):\n\u001b[1;32m--> 706\u001b[0m \u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43m__analytics_processor_service\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mwait_and_check_task_status\u001b[49m\u001b[43m(\u001b[49m\u001b[43mtask_id\u001b[49m\u001b[43m)\u001b[49m\n\u001b[0;32m 707\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m__analytics_fabric_service\u001b[38;5;241m.\u001b[39mget_lastest_metrics(sf_unique_id, schema)\n", - "File \u001b[1;32mc:\\Users\\ajd\\Documents\\GitHub\\GeosysPy\\.venv\\Lib\\site-packages\\retrying.py:56\u001b[0m, in \u001b[0;36mretry..wrap..wrapped_f\u001b[1;34m(*args, **kw)\u001b[0m\n\u001b[0;32m 54\u001b[0m \u001b[38;5;129m@six\u001b[39m\u001b[38;5;241m.\u001b[39mwraps(f)\n\u001b[0;32m 55\u001b[0m \u001b[38;5;28;01mdef\u001b[39;00m \u001b[38;5;21mwrapped_f\u001b[39m(\u001b[38;5;241m*\u001b[39margs, \u001b[38;5;241m*\u001b[39m\u001b[38;5;241m*\u001b[39mkw):\n\u001b[1;32m---> 56\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m \u001b[43mRetrying\u001b[49m\u001b[43m(\u001b[49m\u001b[38;5;241;43m*\u001b[39;49m\u001b[43mdargs\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[38;5;241;43m*\u001b[39;49m\u001b[38;5;241;43m*\u001b[39;49m\u001b[43mdkw\u001b[49m\u001b[43m)\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mcall\u001b[49m\u001b[43m(\u001b[49m\u001b[43mf\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[38;5;241;43m*\u001b[39;49m\u001b[43margs\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[38;5;241;43m*\u001b[39;49m\u001b[38;5;241;43m*\u001b[39;49m\u001b[43mkw\u001b[49m\u001b[43m)\u001b[49m\n", - "File \u001b[1;32mc:\\Users\\ajd\\Documents\\GitHub\\GeosysPy\\.venv\\Lib\\site-packages\\retrying.py:257\u001b[0m, in \u001b[0;36mRetrying.call\u001b[1;34m(self, fn, *args, **kwargs)\u001b[0m\n\u001b[0;32m 254\u001b[0m attempt \u001b[38;5;241m=\u001b[39m Attempt(tb, attempt_number, \u001b[38;5;28;01mTrue\u001b[39;00m)\n\u001b[0;32m 256\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m \u001b[38;5;129;01mnot\u001b[39;00m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mshould_reject(attempt):\n\u001b[1;32m--> 257\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m \u001b[43mattempt\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mget\u001b[49m\u001b[43m(\u001b[49m\u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43m_wrap_exception\u001b[49m\u001b[43m)\u001b[49m\n\u001b[0;32m 259\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m_after_attempts:\n\u001b[0;32m 260\u001b[0m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m_after_attempts(attempt_number)\n", - "File \u001b[1;32mc:\\Users\\ajd\\Documents\\GitHub\\GeosysPy\\.venv\\Lib\\site-packages\\retrying.py:301\u001b[0m, in \u001b[0;36mAttempt.get\u001b[1;34m(self, wrap_exception)\u001b[0m\n\u001b[0;32m 299\u001b[0m \u001b[38;5;28;01mraise\u001b[39;00m RetryError(\u001b[38;5;28mself\u001b[39m)\n\u001b[0;32m 300\u001b[0m \u001b[38;5;28;01melse\u001b[39;00m:\n\u001b[1;32m--> 301\u001b[0m \u001b[43msix\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mreraise\u001b[49m\u001b[43m(\u001b[49m\u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mvalue\u001b[49m\u001b[43m[\u001b[49m\u001b[38;5;241;43m0\u001b[39;49m\u001b[43m]\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mvalue\u001b[49m\u001b[43m[\u001b[49m\u001b[38;5;241;43m1\u001b[39;49m\u001b[43m]\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mvalue\u001b[49m\u001b[43m[\u001b[49m\u001b[38;5;241;43m2\u001b[39;49m\u001b[43m]\u001b[49m\u001b[43m)\u001b[49m\n\u001b[0;32m 302\u001b[0m \u001b[38;5;28;01melse\u001b[39;00m:\n\u001b[0;32m 303\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mvalue\n", - "File \u001b[1;32mc:\\Users\\ajd\\Documents\\GitHub\\GeosysPy\\.venv\\Lib\\site-packages\\six.py:719\u001b[0m, in \u001b[0;36mreraise\u001b[1;34m(tp, value, tb)\u001b[0m\n\u001b[0;32m 717\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m value\u001b[38;5;241m.\u001b[39m__traceback__ \u001b[38;5;129;01mis\u001b[39;00m \u001b[38;5;129;01mnot\u001b[39;00m tb:\n\u001b[0;32m 718\u001b[0m \u001b[38;5;28;01mraise\u001b[39;00m value\u001b[38;5;241m.\u001b[39mwith_traceback(tb)\n\u001b[1;32m--> 719\u001b[0m \u001b[38;5;28;01mraise\u001b[39;00m value\n\u001b[0;32m 720\u001b[0m \u001b[38;5;28;01mfinally\u001b[39;00m:\n\u001b[0;32m 721\u001b[0m value \u001b[38;5;241m=\u001b[39m \u001b[38;5;28;01mNone\u001b[39;00m\n", - "File \u001b[1;32mc:\\Users\\ajd\\Documents\\GitHub\\GeosysPy\\.venv\\Lib\\site-packages\\retrying.py:251\u001b[0m, in \u001b[0;36mRetrying.call\u001b[1;34m(self, fn, *args, **kwargs)\u001b[0m\n\u001b[0;32m 248\u001b[0m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m_before_attempts(attempt_number)\n\u001b[0;32m 250\u001b[0m \u001b[38;5;28;01mtry\u001b[39;00m:\n\u001b[1;32m--> 251\u001b[0m attempt \u001b[38;5;241m=\u001b[39m Attempt(\u001b[43mfn\u001b[49m\u001b[43m(\u001b[49m\u001b[38;5;241;43m*\u001b[39;49m\u001b[43margs\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[38;5;241;43m*\u001b[39;49m\u001b[38;5;241;43m*\u001b[39;49m\u001b[43mkwargs\u001b[49m\u001b[43m)\u001b[49m, attempt_number, \u001b[38;5;28;01mFalse\u001b[39;00m)\n\u001b[0;32m 252\u001b[0m \u001b[38;5;28;01mexcept\u001b[39;00m:\n\u001b[0;32m 253\u001b[0m tb \u001b[38;5;241m=\u001b[39m sys\u001b[38;5;241m.\u001b[39mexc_info()\n", - "File \u001b[1;32mc:\\Users\\ajd\\Documents\\GitHub\\GeosysPy\\geosyspy\\services\\analytics_processor_service.py:50\u001b[0m, in \u001b[0;36mAnalyticsProcessorService.wait_and_check_task_status\u001b[1;34m(self, task_id)\u001b[0m\n\u001b[0;32m 48\u001b[0m \u001b[38;5;28;01mraise\u001b[39;00m \u001b[38;5;167;01mKeyError\u001b[39;00m(\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mTask still running\u001b[39m\u001b[38;5;124m\"\u001b[39m) \u001b[38;5;66;03m# raise exception to retry\u001b[39;00m\n\u001b[0;32m 49\u001b[0m \u001b[38;5;28;01melse\u001b[39;00m:\n\u001b[1;32m---> 50\u001b[0m \u001b[38;5;28;01mraise\u001b[39;00m \u001b[38;5;167;01mException\u001b[39;00m(\u001b[38;5;124mf\u001b[39m\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mTask Status: \u001b[39m\u001b[38;5;132;01m{\u001b[39;00mtask_status\u001b[38;5;132;01m}\u001b[39;00m\u001b[38;5;124m, Content: \u001b[39m\u001b[38;5;132;01m{\u001b[39;00mresponse\u001b[38;5;241m.\u001b[39mcontent\u001b[38;5;132;01m}\u001b[39;00m\u001b[38;5;124m\"\u001b[39m )\n\u001b[0;32m 52\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m task_status\n", - "\u001b[1;31mException\u001b[0m: Task Status: Error, Content: b'{\"events\":[{\"level\":\"Information\",\"date\":\"2024-06-14T09:22:48.124Z\",\"source\":\"Analytics.geosys-analyticsprocessors-webapi\",\"message\":\"Processor called\",\"eventData\":{\"TaskId\":\"4518fc68b58f45978ff1f5f4c93ddc0b\",\"Error\":null}},{\"level\":\"Information\",\"date\":\"2024-06-14T09:22:48.141Z\",\"source\":\"AnalyticsProcessor.PlantedArea\",\"message\":\"Processor started\"},{\"level\":\"Information\",\"date\":\"2024-06-14T09:22:49.861Z\",\"source\":\"AnalyticsProcessor.PlantedArea\",\"message\":\"Computation finished\"},{\"level\":\"Information\",\"date\":\"2024-06-14T09:22:49.871Z\",\"source\":\"AnalyticsProcessor.PlantedArea\",\"message\":\"Format results for the callback\"},{\"level\":\"Information\",\"date\":\"2024-06-14T09:22:49.881Z\",\"source\":\"AnalyticsProcessor.PlantedArea\",\"message\":\"Callback called\"},{\"level\":\"Error\",\"date\":\"2024-06-14T09:22:49.957Z\",\"source\":\"AnalyticsProcessor.PlantedArea\",\"message\":\"Error while sending results to Analytics Fabric\",\"eventData\":{\"error\":\"{\\\\n \\\\\"Errors\\\\\": {\\\\n \\\\\"\\\\\": {\\\\n \\\\\"\\\\\": [\\\\n {\\\\n \\\\\"Code\\\\\": \\\\\"BadRequest\\\\\",\\\\n \\\\\"Message\\\\\": \\\\\"Property \\'planted_area\\' with value \\'\\' cannot be null. Property \\'planted_percentage\\' with value \\'\\' cannot be null. \\\\\"\\\\n }\\\\n ]\\\\n }\\\\n },\\\\n \\\\\"Code\\\\\": \\\\\"model_validation_error\\\\\",\\\\n \\\\\"Message\\\\\": \\\\\"Bad request: see the Errors field for details\\\\\"\\\\n}\"}},{\"level\":\"Error\",\"date\":\"2024-06-14T09:22:49.978Z\",\"source\":\"AnalyticsProcessor.PlantedArea\",\"message\":\"Unhandled exception\",\"eventData\":{\"error\":\"Exception\",\"message\":\"Error while sending results to Analytics Fabric\",\"stackTrace\":\"Traceback (most recent call last):\\\\n File \\\\\"/cloudevents_endpoint.py\\\\\", line 112, in __start_task\\\\n __process_callback(results, context)\\\\n File \\\\\"/cloudevents_endpoint.py\\\\\", line 133, in __process_callback\\\\n cloudevent_endpoint_callback(formatted_results, context)\\\\n File \\\\\"/cloudevents_endpoint_callback.py\\\\\", line 22, in cloudevent_endpoint_callback\\\\n __send_to_analytics_fabrik(process_results, context)\\\\n File \\\\\"/cloudevents_endpoint_callback.py\\\\\", line 52, in __send_to_analytics_fabrik\\\\n raise Exception(\\\\\"Error while sending results to Analytics Fabric\\\\\")\\\\nException: Error while sending results to Analytics Fabric\\\\n\"}}],\"id\":\"4518fc68b58f45978ff1f5f4c93ddc0b\",\"taskId\":\"4518fc68b58f45978ff1f5f4c93ddc0b\",\"processorCode\":\"planted_area\",\"userId\":\"2tKecZgMyEP6EkddLxa1gV\",\"userLogin\":\"ETotain_US\",\"customerCode\":\"GEOSYS_US\",\"parametersProfile\":{\"code\":\"planted_area_default\"},\"parameters\":{\"threshold\":30},\"status\":\"Error\",\"createdAt\":\"2024-06-14T09:22:48.048Z\",\"modifiedAt\":\"2024-06-14T09:22:49.978Z\",\"duration\":1}'" - ] - } - ], + "outputs": [], "source": [ "# Analytics processor - Planted area\n", "planted_area_analytics = client.get_planted_area_analytics(\n", @@ -5267,91 +571,9 @@ }, { "cell_type": "code", - "execution_count": 42, + "execution_count": null, "metadata": {}, - "outputs": [ - { - "name": "stderr", - "output_type": "stream", - "text": [ - "c:\\Users\\ajd\\Documents\\GitHub\\GeosysPy\\.venv\\Lib\\site-packages\\urllib3\\connectionpool.py:1100: InsecureRequestWarning: Unverified HTTPS request is being made to host 'gis-services-pp.geosys.com'. Adding certificate verification is strongly advised. See: https://urllib3.readthedocs.io/en/latest/advanced-usage.html#tls-warnings\n", - " warnings.warn(\n", - "2024-06-14 11:23:12,693 - geosyspy.services.analytics_processor_service - INFO - Retry -- Task still running\n", - "2024-06-14 11:23:14,847 - geosyspy.services.analytics_processor_service - INFO - Retry -- Task still running\n", - "2024-06-14 11:23:19,041 - geosyspy.services.analytics_fabric_service - INFO - Calling APIs for Latest metrics\n" - ] - }, - { - "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", - "
Values.emergence_dateValues.sowing_dateValues.zarc_start_dateValues.zarc_end_dateValues.statusSchema.Id
date
2024-06-14T09:23:14Z2022-02-172022-01-282023-08-012023-12-31FalseZARC
\n", - "
" - ], - "text/plain": [ - " Values.emergence_date Values.sowing_date \\\n", - "date \n", - "2024-06-14T09:23:14Z 2022-02-17 2022-01-28 \n", - "\n", - " Values.zarc_start_date Values.zarc_end_date \\\n", - "date \n", - "2024-06-14T09:23:14Z 2023-08-01 2023-12-31 \n", - "\n", - " Values.status Schema.Id \n", - "date \n", - "2024-06-14T09:23:14Z False ZARC " - ] - }, - "execution_count": 42, - "metadata": {}, - "output_type": "execute_result" - } - ], + "outputs": [], "source": [ "# Analytics processor - zarc\n", "zarc_analytics = client.get_zarc_analytics(\n", @@ -5369,81 +591,9 @@ }, { "cell_type": "code", - "execution_count": 43, + "execution_count": null, "metadata": {}, - "outputs": [ - { - "name": "stderr", - "output_type": "stream", - "text": [ - "2024-06-14 11:23:25,705 - geosyspy.services.analytics_processor_service - INFO - Retry -- Task still running\n", - "2024-06-14 11:23:27,853 - geosyspy.services.analytics_processor_service - INFO - Retry -- Task still running\n", - "2024-06-14 11:23:32,057 - geosyspy.services.analytics_processor_service - INFO - Retry -- Task still running\n", - "2024-06-14 11:23:40,241 - geosyspy.services.analytics_fabric_service - INFO - Calling APIs for Latest metrics\n" - ] - }, - { - "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", - "
Values.crop_codeValues.crop_probabilitySchema.Id
date
2024-06-14T09:23:32.87ZSOYBEANS{\"CORN\": 0.053, \"SOYBEANS\": 0.933, \"SUGARCANE\"...CROP_IDENTIFICATION
\n", - "
" - ], - "text/plain": [ - " Values.crop_code \\\n", - "date \n", - "2024-06-14T09:23:32.87Z SOYBEANS \n", - "\n", - " Values.crop_probability \\\n", - "date \n", - "2024-06-14T09:23:32.87Z {\"CORN\": 0.053, \"SOYBEANS\": 0.933, \"SUGARCANE\"... \n", - "\n", - " Schema.Id \n", - "date \n", - "2024-06-14T09:23:32.87Z CROP_IDENTIFICATION " - ] - }, - "execution_count": 43, - "metadata": {}, - "output_type": "execute_result" - } - ], + "outputs": [], "source": [ "# Analytics processor - crop id\n", "brazil_crop_id_analytics = client.get_brazil_crop_id_analytics(\n", @@ -5458,56 +608,9 @@ }, { "cell_type": "code", - "execution_count": 44, + "execution_count": null, "metadata": {}, - "outputs": [ - { - "data": { - "text/html": [ - "
\n", - "\n", - "\n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - "
CORNSOYBEANSSUGARCANE
00.0530.9330.013
\n", - "
" - ], - "text/plain": [ - " CORN SOYBEANS SUGARCANE\n", - "0 0.053 0.933 0.013" - ] - }, - "execution_count": 44, - "metadata": {}, - "output_type": "execute_result" - } - ], + "outputs": [], "source": [ "import pandas as pd\n", "\n", @@ -5545,7 +648,7 @@ ], "metadata": { "kernelspec": { - "display_name": ".venv", + "display_name": "Python 3 (ipykernel)", "language": "python", "name": "python3" }, diff --git a/geosyspy/geosys.py b/geosyspy/geosys.py index d6e649a..478df6e 100644 --- a/geosyspy/geosys.py +++ b/geosyspy/geosys.py @@ -501,6 +501,70 @@ def get_coordinates_by_pixel(raster): ) return dataset + def get_mr_time_series( + self, + start_date: datetime, + end_date: datetime, + indicator, + sensors_collection: Optional[list[SatelliteImageryCollection]] = [ + SatelliteImageryCollection.SENTINEL_2, + ], + aggregation: str = "Median", + smoothing_method: str = "Whittaker", + apply_denoiser: bool = True, + apply_end_of_curve: bool = True, + output_saturation: bool = False, + extract_raw_datasets: bool = False, + polygon: Optional[str] = None, + season_field_id: Optional[str] = None, + coverage_percent: Optional[int] = 80, + ): + """ + Retrieves MR time series a given season field or geometry within the specified time range. + + Args: + start_date (datetime): The start date of the time range for satellite coverage. + end_date (datetime): The end date of the time range for satellite coverage. + indicator (str): The indicator for which satellite imagery is requested. + sensors_collection (Optional[List[SatelliteImageryCollection]], optional): + A list of satellite imagery collections to consider. + Defaults to [SatelliteImageryCollection.SENTINEL_2]. + coverage_percent (int, optional): Minimum clear cover percentage. Defaults to 80. + aggregation (str, optional): Method to aggregate data. Defaults to "Median". + smoothing_method (str, optional): Method to smooth data. Defaults to "Whittaker". + apply_denoiser (bool, optional): Whether to apply denoiser. Defaults to True. + apply_end_of_curve (bool, optional): Whether to apply end of curve. Defaults to True. + output_saturation (bool, optional): Whether to output saturation. Defaults to False. + extract_raw_datasets (bool, optional): Whether to extract raw datasets. Defaults to False. + season_field_id (Optional[str]): The identifier for the season field. + polygon (Optional[str]): The polygon geometry in WKT format. + + Returns: + pd.DataFrame: DataFrame containing the satellite coverage data. + """ + if not season_field_id and not polygon: + raise ValueError( + "Parameters 'season_field_id' and 'polygon' cannot be both None or empty." + ) + + df = self.__map_product_service.get_mr_time_series( + season_field_id, + polygon, + start_date, + end_date, + indicator, + sensors_collection, + coverage_percent, + aggregation, + smoothing_method, + apply_denoiser, + apply_end_of_curve, + output_saturation, + extract_raw_datasets, + ) + + return df + ########################################### # ANALYTICS FABRIC # ########################################### @@ -768,79 +832,6 @@ def check_status_and_metrics(self, task_id, schema, sf_unique_id): self.__analytics_processor_service.wait_and_check_task_status(task_id) return self.__analytics_fabric_service.get_lastest_metrics(sf_unique_id, schema) - def get_mr_time_series( - self, - polygon, - start_date: str = "2010-01-01", - end_date=None, - list_sensors=None, - denoiser: bool = True, - smoother: str = "ww", - eoc: bool = True, - aggregation: str = "mean", - index: str = "ndvi", - raw_data: bool = False, - ): - """Retrieve mr time series on the collection targeted. - - Args: - start_date : The start date of the time series - end_date : The end date of the time series - list_sensors : The Satellite Imagery Collection targeted - denoiser : A boolean value indicating whether a denoising operation should be applied or not. - smoother : The type or name of the smoothing technique or algorithm to be used. - eoc : A boolean value indicating whether the "end of curve" detection should be performed. - func : The type or name of the function to be applied to the data. - index : The type or name of the index used for data manipulation or referencing - raw_data : A boolean value indicating whether the data is in its raw/unprocessed form. - polygon : A string representing a polygon. - - Returns: - string : s3 bucket path - """ - if list_sensors is None: - list_sensors = [ - "micasense", - "sequoia", - "m4c", - "sentinel_2", - "landsat_8", - "landsat_9", - "cbers4", - "kazstsat", - "alsat_1b", - "huanjing_2", - "deimos", - "gaofen_1", - "gaofen_6", - "resourcesat2", - "dmc_2", - "landsat_5", - "landsat_7", - "spot", - "rapideye_3a", - "rapideye_1b", - ] - task_id = self.__analytics_processor_service.launch_mr_time_series_processor( - start_date=start_date, - end_date=end_date, - polygon=polygon, - raw_data=raw_data, - denoiser=denoiser, - smoother=smoother, - aggregation=aggregation, - list_sensors=list_sensors, - index=index, - eoc=eoc, - ) - - # check the task status to continue or not the process - self.__analytics_processor_service.wait_and_check_task_status(task_id) - - return self.__analytics_processor_service.get_s3_path_from_task_and_processor( - task_id, processor_name="mrts" - ) - def get_harvest_analytics( self, season_duration: int, @@ -1291,13 +1282,13 @@ def get_farm_info_from_location(self, latitude: str, longitude: str): return self.__gis_service.get_farm_info_from_location(latitude, longitude) - def get_municipio_id_from_geometry(self, geometry:str): + def get_municipio_id_from_geometry(self, geometry: str): """get Municipio id from a geometry - Args: - geometry (str): the geometry (WKT or GeosJson) to retrieve the municipio Id - Returns: - the internal id of the municipio + Args: + geometry (str): the geometry (WKT or GeosJson) to retrieve the municipio Id + Returns: + the internal id of the municipio """ - return self.__gis_service.get_municipio_id_from_geometry(geometry) \ No newline at end of file + return self.__gis_service.get_municipio_id_from_geometry(geometry) diff --git a/geosyspy/services/analytics_processor_service.py b/geosyspy/services/analytics_processor_service.py index 514a34d..7782e76 100644 --- a/geosyspy/services/analytics_processor_service.py +++ b/geosyspy/services/analytics_processor_service.py @@ -1,15 +1,17 @@ """Analytics Processor service class""" + +import datetime import json import logging -import datetime from urllib.parse import urljoin + import retrying -from geosyspy.utils.constants import GeosysApiEndpoints, Harvest, Emergence + from geosyspy.services.service_constants import ProcessorConfiguration +from geosyspy.utils.constants import Emergence, GeosysApiEndpoints, Harvest from geosyspy.utils.http_client import HttpClient - class AnalyticsProcessorService: def __init__(self, base_url: str, http_client: HttpClient): @@ -17,7 +19,12 @@ def __init__(self, base_url: str, http_client: HttpClient): self.http_client: HttpClient = http_client self.logger = logging.getLogger(__name__) - @retrying.retry(wait_exponential_multiplier=1000, wait_exponential_max=10000, stop_max_attempt_number=50, retry_on_exception=lambda exc: isinstance(exc, KeyError)) + @retrying.retry( + wait_exponential_multiplier=1000, + wait_exponential_max=10000, + stop_max_attempt_number=50, + retry_on_exception=lambda exc: isinstance(exc, KeyError), + ) def wait_and_check_task_status(self, task_id: str): """Check task status until it is ended for a specific analytics processor run @@ -29,8 +36,10 @@ def wait_and_check_task_status(self, task_id: str): """ - events_endpoint: str = urljoin(self.base_url, - GeosysApiEndpoints.PROCESSOR_EVENTS_ENDPOINT.value + "/" + task_id) + events_endpoint: str = urljoin( + self.base_url, + GeosysApiEndpoints.PROCESSOR_EVENTS_ENDPOINT.value + "/" + task_id, + ) while True: response = self.http_client.get(events_endpoint) @@ -47,128 +56,45 @@ def wait_and_check_task_status(self, task_id: str): self.logger.info("Retry -- Task still running") raise KeyError("Task still running") # raise exception to retry else: - raise Exception(f"Task Status: {task_status}, Content: {response.content}" ) + raise Exception( + f"Task Status: {task_status}, Content: {response.content}" + ) return task_status - def get_s3_path_from_task_and_processor(self, task_id: str, - processor_name: str): - """Returns S3 path related to task_id + def launch_planted_area_processor( + self, start_date: str, end_date: str, seasonfield_id: str + ): + """launch a planted area analytics processor and get the task id in result Args: - task_id : A string representing a task id - processor_name: the processor name - Returns: - path : uri - - """ + start_date (str) : the start date used for the request (format YYYY-MM-dd) + end_date (str) : the end date used for the request (format YYYY-MM-dd) + seasonfield_id (sfd) : seasonField geosys uniqueId - events_endpoint: str = urljoin(self.base_url, - GeosysApiEndpoints.PROCESSOR_EVENTS_ENDPOINT.value + "/" + task_id) - - response = self.http_client.get(events_endpoint) - if response.ok: - dict_resp = json.loads(response.content) - customer_code: str = dict_resp["customerCode"].lower().replace("_", "-") - user_id: str = dict_resp["userId"] - task_id = dict_resp["taskId"] - return f"s3://geosys-{customer_code}/{user_id}/{processor_name}/{task_id}" - - self.logger.info(response.status_code) - raise ValueError(response.content) - - def launch_mr_time_series_processor(self, polygon, - start_date: str, - end_date, - list_sensors, - denoiser: bool, - smoother: str, - eoc: bool, - aggregation: str, - index: str, - raw_data: bool): - """launch a MRTS analytics processor and get the task id in result - - Args: - start_date : The start date of the time series - end_date : The end date of the time series - list_sensors : The Satellite Imagery Collection targeted - denoiser : A boolean value indicating whether a denoising operation should be applied or not. - smoother : The type or name of the smoothing technique or algorithm to be used. - eoc : A boolean value indicating whether the "end of curve" detection should be performed. - func : The type or name of the function to be applied to the data. - index : The type or name of the index used for data manipulation or referencing - raw_data : A boolean value indicating whether the data is in its raw/unprocessed form. - polygon : A string representing a polygon. - - Returns: - taskId (str) + Returns: + taskId (str) """ - if end_date is None: - end_date = datetime.datetime.today().strftime("%Y-%m-%d") payload = { - "parametersProfile": { - "code": ProcessorConfiguration.MRTS.value['profile'], - "version": 1 - }, - "parameters": { - "start_date": start_date, - "end_date": end_date, - "sensors": list_sensors, - "denoiser": denoiser, - "smoother": smoother, - "eoc": eoc, - "aggregation": aggregation, - "index": index, - "raw_data": raw_data - }, + "parametersProfileCode": ProcessorConfiguration.PLANTED_AREA.value[ + "profile" + ], "data": [ - {"wkt": polygon} - ] - } - - processor_endpoint: str = urljoin(self.base_url, - GeosysApiEndpoints.LAUNCH_PROCESSOR_ENDPOINT.value.format( - ProcessorConfiguration.MRTS.value['api_processor_path'])) - - response = self.http_client.post(processor_endpoint, payload) - - if response.ok: - task_id = json.loads(response.content)["taskId"] - return task_id - self.logger.info(response.status_code) - raise ValueError(response.content) - - def launch_planted_area_processor(self, - start_date: str, - end_date: str, - seasonfield_id: str): - """launch a planted area analytics processor and get the task id in result - - Args: - start_date (str) : the start date used for the request (format YYYY-MM-dd) - end_date (str) : the end date used for the request (format YYYY-MM-dd) - seasonfield_id (sfd) : seasonField geosys uniqueId - - Returns: - taskId (str) - """ - - payload = { - "parametersProfileCode": ProcessorConfiguration.PLANTED_AREA.value['profile'], - "data": - [ - { - "id": seasonfield_id + "@ID", - "start_date": start_date, - "end_date": end_date - } - ] + { + "id": seasonfield_id + "@ID", + "start_date": start_date, + "end_date": end_date, + } + ], } - processor_endpoint: str = urljoin(self.base_url, - GeosysApiEndpoints.LAUNCH_PROCESSOR_ENDPOINT.value.format(ProcessorConfiguration.PLANTED_AREA.value['api_processor_path'])) + processor_endpoint: str = urljoin( + self.base_url, + GeosysApiEndpoints.LAUNCH_PROCESSOR_ENDPOINT.value.format( + ProcessorConfiguration.PLANTED_AREA.value["api_processor_path"] + ), + ) response = self.http_client.post(processor_endpoint, payload) @@ -178,110 +104,124 @@ def launch_planted_area_processor(self, self.logger.info(response.status_code) raise ValueError(response.content) - def launch_harvest_processor(self, - season_duration: int, - season_start_day: int, - season_start_month: int, - crop: str, - year: int, - seasonfield_id: str, - geometry: str, - harvest_type: Harvest): + def launch_harvest_processor( + self, + season_duration: int, + season_start_day: int, + season_start_month: int, + crop: str, + year: int, + seasonfield_id: str, + geometry: str, + harvest_type: Harvest, + ): """launch a harvest analytics processor and get the task id in result - Args: - season_duration (int): the duration of the season in days, - season_start_day (int): the start day value (1 - 31), - season_start_month (int): the start month value (1 - 12), - crop (str): the geosys crop code, - year (int): the year value, - seasonfield_id (sfd) : seasonField geosys uniqueId - geometry (str): the geometry to calcultate the analytic (WKT or GeoJSON), - harvest_type (Harvest): the type of Harvest analytics (INSEASON/HISTORICAL) - - Returns: - taskId (str) + Args: + season_duration (int): the duration of the season in days, + season_start_day (int): the start day value (1 - 31), + season_start_month (int): the start month value (1 - 12), + crop (str): the geosys crop code, + year (int): the year value, + seasonfield_id (sfd) : seasonField geosys uniqueId + geometry (str): the geometry to calcultate the analytic (WKT or GeoJSON), + harvest_type (Harvest): the type of Harvest analytics (INSEASON/HISTORICAL) + + Returns: + taskId (str) """ # build payload for api call payload = { - "parametersProfile": ProcessorConfiguration[harvest_type.name].value['profile'], + "parametersProfile": ProcessorConfiguration[harvest_type.name].value[ + "profile" + ], "parameters": { "season_duration": season_duration, "season_start_day": season_start_day, - "season_start_month": season_start_month + "season_start_month": season_start_month, }, - "data": - [ - { - "id": "SeasonField:" + seasonfield_id + "@ID", - "crop": crop, - "year": year, - "geom": geometry - } - ] + "data": [ + { + "id": "SeasonField:" + seasonfield_id + "@ID", + "crop": crop, + "year": year, + "geom": geometry, + } + ], } - processor_endpoint: str = urljoin(self.base_url, - GeosysApiEndpoints.LAUNCH_PROCESSOR_ENDPOINT.value.format(ProcessorConfiguration[harvest_type.name].value['api_processor_path'])) + processor_endpoint: str = urljoin( + self.base_url, + GeosysApiEndpoints.LAUNCH_PROCESSOR_ENDPOINT.value.format( + ProcessorConfiguration[harvest_type.name].value["api_processor_path"] + ), + ) response = self.http_client.post(processor_endpoint, payload) if response.ok: task_id = json.loads(response.content)["taskId"] - return task_id + return task_id self.logger.info(response.status_code) raise ValueError(response.content) - def launch_emergence_processor(self, - season_duration: int, - season_start_day: int, - season_start_month: int, - crop: str, - year: int, - seasonfield_id: str, - geometry: str, - emergence_type: Emergence): + def launch_emergence_processor( + self, + season_duration: int, + season_start_day: int, + season_start_month: int, + crop: str, + year: int, + seasonfield_id: str, + geometry: str, + emergence_type: Emergence, + ): """launch an emergence analytics processor and get the task id in result - Args: - season_duration (int): the duration of the season in days, - season_start_day (int): the start day value (1 - 31), - season_start_month (int): the start month value (1 - 12), - crop (str): the geosys crop code, - year (int): the year value, - seasonfield_id (sfd) : seasonField geosys uniqueId - geometry (str): the geometry to calculate the analytic (WKT or GeoJSON), - emergence_type (Emergence): the type of Emergence analytics (INSEASON/HISTORICAL/DELAY) - - Returns: - taskId (str) + Args: + season_duration (int): the duration of the season in days, + season_start_day (int): the start day value (1 - 31), + season_start_month (int): the start month value (1 - 12), + crop (str): the geosys crop code, + year (int): the year value, + seasonfield_id (sfd) : seasonField geosys uniqueId + geometry (str): the geometry to calculate the analytic (WKT or GeoJSON), + emergence_type (Emergence): the type of Emergence analytics (INSEASON/HISTORICAL/DELAY) + + Returns: + taskId (str) """ # build payload for api call payload = { - "parametersProfile": ProcessorConfiguration[emergence_type.name].value['profile'], + "parametersProfile": ProcessorConfiguration[emergence_type.name].value[ + "profile" + ], "parameters": { "season_duration": season_duration, "season_start_day": season_start_day, - "season_start_month": season_start_month + "season_start_month": season_start_month, }, - "data": - [ - { - "id": "SeasonField:" + seasonfield_id + "@ID", - "crop": crop, - "year": year, - "geom": geometry - } - ] + "data": [ + { + "id": "SeasonField:" + seasonfield_id + "@ID", + "crop": crop, + "year": year, + "geom": geometry, + } + ], } if emergence_type == Emergence.EMERGENCE_DELAY: payload["parameters"]["emergence_delay"] = True - processor_endpoint: str = urljoin(self.base_url, - GeosysApiEndpoints.LAUNCH_PROCESSOR_ENDPOINT.value.format( ProcessorConfiguration[emergence_type.name].value['api_processor_path'])) + processor_endpoint: str = urljoin( + self.base_url, + GeosysApiEndpoints.LAUNCH_PROCESSOR_ENDPOINT.value.format( + ProcessorConfiguration[emergence_type.name].value["api_processor_path"] + ), + ) response = self.http_client.post(processor_endpoint, payload) @@ -291,56 +231,63 @@ def launch_emergence_processor(self, self.logger.info(response.status_code) raise ValueError(response.content) - def launch_potential_score_processor(self, - season_duration: int, - season_start_day: int, - season_start_month: int, - crop: str, - end_date: str, - sowing_date: str, - nb_historical_years: int, - seasonfield_id: str, - geometry: str): + def launch_potential_score_processor( + self, + season_duration: int, + season_start_day: int, + season_start_month: int, + crop: str, + end_date: str, + sowing_date: str, + nb_historical_years: int, + seasonfield_id: str, + geometry: str, + ): """launch a potential score analytics processor and get the task id in result - Args: - season_duration (int): the duration of the season in days, - season_start_day (int): the start day value (1 - 31), - season_start_month (int): the start month value (1 - 12), - crop (str): the geosys crop code, - end_date (str): end date used to calculate potential score - sowing_date (str): sowing date of the filed used to calculate potential score - nb_historical_years (int): number of historical years data to calculate potential score - seasonfield_id (sfd) : seasonField geosys uniqueId - geometry (str): the geometry to calculate the analytic (WKT or GeoJSON) - - Returns: - taskId (str) + Args: + season_duration (int): the duration of the season in days, + season_start_day (int): the start day value (1 - 31), + season_start_month (int): the start month value (1 - 12), + crop (str): the geosys crop code, + end_date (str): end date used to calculate potential score + sowing_date (str): sowing date of the filed used to calculate potential score + nb_historical_years (int): number of historical years data to calculate potential score + seasonfield_id (sfd) : seasonField geosys uniqueId + geometry (str): the geometry to calculate the analytic (WKT or GeoJSON) + + Returns: + taskId (str) """ # build payload for api call payload = { - "parametersProfile": ProcessorConfiguration.POTENTIAL_SCORE.value['profile'], + "parametersProfile": ProcessorConfiguration.POTENTIAL_SCORE.value[ + "profile" + ], "parameters": { - "end_date" : end_date, - "nb_historical_years" : nb_historical_years, + "end_date": end_date, + "nb_historical_years": nb_historical_years, "season_duration": season_duration, "season_start_day": season_start_day, - "season_start_month": season_start_month + "season_start_month": season_start_month, }, - "data": - [ - { - "id": "SeasonField:" + seasonfield_id + "@ID", - "crop": crop, - "sowing_date": sowing_date, - "geom": geometry - } - ] + "data": [ + { + "id": "SeasonField:" + seasonfield_id + "@ID", + "crop": crop, + "sowing_date": sowing_date, + "geom": geometry, + } + ], } - processor_endpoint: str = urljoin(self.base_url, - GeosysApiEndpoints.LAUNCH_PROCESSOR_ENDPOINT.value.format(ProcessorConfiguration.POTENTIAL_SCORE.value['api_processor_path'])) + processor_endpoint: str = urljoin( + self.base_url, + GeosysApiEndpoints.LAUNCH_PROCESSOR_ENDPOINT.value.format( + ProcessorConfiguration.POTENTIAL_SCORE.value["api_processor_path"] + ), + ) response = self.http_client.post(processor_endpoint, payload) @@ -350,45 +297,49 @@ def launch_potential_score_processor(self, self.logger.info(response.status_code) raise ValueError(response.content) - def launch_brazil_in_season_crop_id_processor(self, - start_date: str, - end_date: str, - season: str, - seasonfield_id: str, - geometry: str): + def launch_brazil_in_season_crop_id_processor( + self, + start_date: str, + end_date: str, + season: str, + seasonfield_id: str, + geometry: str, + ): """launch a brazil-in-season-crop-id analytics processor and get the task id in result - Args: - start_date (str) : the start date used for the request (format YYYY-MM-dd) - end_date (str) : the end date used for the request (format YYYY-MM-dd) + Args: + start_date (str) : the start date used for the request (format YYYY-MM-dd) + end_date (str) : the end date used for the request (format YYYY-MM-dd) - season (str): the season name, - seasonfield_id (sfd) : seasonField geosys uniqueId - geometry (str): the geometry to calculate the analytic (WKT or GeoJSON), + season (str): the season name, + seasonfield_id (sfd) : seasonField geosys uniqueId + geometry (str): the geometry to calculate the analytic (WKT or GeoJSON), - Returns: - taskId (str) + Returns: + taskId (str) """ # build payload for api call payload = { - "parametersProfile": ProcessorConfiguration.BRAZIL_IN_SEASON_CROP_ID.value['profile'], + "parametersProfile": ProcessorConfiguration.BRAZIL_IN_SEASON_CROP_ID.value[ + "profile" + ], "parameters": { "start_date": start_date, "end_date": end_date, - "season": season + "season": season, }, - "data": - [ - { - "id": "SeasonField:" + seasonfield_id + "@ID", - "geom": geometry - } - ] + "data": [{"id": "SeasonField:" + seasonfield_id + "@ID", "geom": geometry}], } - processor_endpoint: str = urljoin(self.base_url, - GeosysApiEndpoints.LAUNCH_PROCESSOR_ENDPOINT.value.format(ProcessorConfiguration.BRAZIL_IN_SEASON_CROP_ID.value['api_processor_path'])) + processor_endpoint: str = urljoin( + self.base_url, + GeosysApiEndpoints.LAUNCH_PROCESSOR_ENDPOINT.value.format( + ProcessorConfiguration.BRAZIL_IN_SEASON_CROP_ID.value[ + "api_processor_path" + ] + ), + ) response = self.http_client.post(processor_endpoint, payload) @@ -398,47 +349,52 @@ def launch_brazil_in_season_crop_id_processor(self, self.logger.info(response.status_code) raise ValueError(response.content) - def launch_greenness_processor(self, - start_date: str, - end_date: str, - sowing_date: str, - crop: str, - seasonfield_id: str, - geometry: str): + def launch_greenness_processor( + self, + start_date: str, + end_date: str, + sowing_date: str, + crop: str, + seasonfield_id: str, + geometry: str, + ): """launch a greenness analytics processor and get the task id in result - Args: - start_date (str) : the start date used for the request (format YYYY-MM-dd) - end_date (str) : the end date used for the request (format YYYY-MM-dd) - sowing_date(str): sowing date of the field used to calculate potential score - crop (str): the EDA crop code, - seasonfield_id (sfd) : seasonField geosys uniqueId - geometry (str): the geometry to calculate the analytic (WKT or GeoJSON), + Args: + start_date (str) : the start date used for the request (format YYYY-MM-dd) + end_date (str) : the end date used for the request (format YYYY-MM-dd) + sowing_date(str): sowing date of the field used to calculate potential score + crop (str): the EDA crop code, + seasonfield_id (sfd) : seasonField geosys uniqueId + geometry (str): the geometry to calculate the analytic (WKT or GeoJSON), - Returns: - taskId (str) + Returns: + taskId (str) """ # build payload for api call payload = { - "parametersProfile": ProcessorConfiguration.GREENNESS.value['profile'], + "parametersProfile": ProcessorConfiguration.GREENNESS.value["profile"], "parameters": { "start_date": start_date, "end_date": end_date, }, - "data": - [ - { - "id": "SeasonField:" + seasonfield_id + "@ID", - "crop": crop, - "sowing_date": sowing_date, - "geom": geometry - } - ] + "data": [ + { + "id": "SeasonField:" + seasonfield_id + "@ID", + "crop": crop, + "sowing_date": sowing_date, + "geom": geometry, + } + ], } - processor_endpoint: str = urljoin(self.base_url, - GeosysApiEndpoints.LAUNCH_PROCESSOR_ENDPOINT.value.format(ProcessorConfiguration.GREENNESS.value['api_processor_path'])) + processor_endpoint: str = urljoin( + self.base_url, + GeosysApiEndpoints.LAUNCH_PROCESSOR_ENDPOINT.value.format( + ProcessorConfiguration.GREENNESS.value["api_processor_path"] + ), + ) response = self.http_client.post(processor_endpoint, payload) @@ -448,48 +404,54 @@ def launch_greenness_processor(self, self.logger.info(response.status_code) raise ValueError(response.content) - - def launch_harvest_readiness_processor(self, - start_date: str, - end_date: str, - sowing_date: str, - crop: str, - seasonfield_id: str, - geometry: str): + def launch_harvest_readiness_processor( + self, + start_date: str, + end_date: str, + sowing_date: str, + crop: str, + seasonfield_id: str, + geometry: str, + ): """launch a harvest readiness analytics processor and get the task id in result - Args: - start_date (str) : the start date used for the request (format YYYY-MM-dd) - end_date (str) : the end date used for the request (format YYYY-MM-dd) - sowing_date(str): sowing date of the field used to calculate potential score - crop (str): the EDA crop code, - seasonfield_id (sfd) : seasonField geosys uniqueId - geometry (str): the geometry to calculate the analytic (WKT or GeoJSON), + Args: + start_date (str) : the start date used for the request (format YYYY-MM-dd) + end_date (str) : the end date used for the request (format YYYY-MM-dd) + sowing_date(str): sowing date of the field used to calculate potential score + crop (str): the EDA crop code, + seasonfield_id (sfd) : seasonField geosys uniqueId + geometry (str): the geometry to calculate the analytic (WKT or GeoJSON), - Returns: - taskId (str) + Returns: + taskId (str) """ # build payload for api call payload = { - "parametersProfile": ProcessorConfiguration.HARVEST_READINESS.value['profile'], + "parametersProfile": ProcessorConfiguration.HARVEST_READINESS.value[ + "profile" + ], "parameters": { "start_date": start_date, "end_date": end_date, }, - "data": - [ - { - "id": "SeasonField:" + seasonfield_id + "@ID", - "crop": crop, - "sowing_date": sowing_date, - "geom": geometry - } - ] + "data": [ + { + "id": "SeasonField:" + seasonfield_id + "@ID", + "crop": crop, + "sowing_date": sowing_date, + "geom": geometry, + } + ], } - processor_endpoint: str = urljoin(self.base_url, - GeosysApiEndpoints.LAUNCH_PROCESSOR_ENDPOINT.value.format(ProcessorConfiguration.HARVEST_READINESS.value['api_processor_path'])) + processor_endpoint: str = urljoin( + self.base_url, + GeosysApiEndpoints.LAUNCH_PROCESSOR_ENDPOINT.value.format( + ProcessorConfiguration.HARVEST_READINESS.value["api_processor_path"] + ), + ) response = self.http_client.post(processor_endpoint, payload) @@ -499,52 +461,56 @@ def launch_harvest_readiness_processor(self, self.logger.info(response.status_code) raise ValueError(response.content) - def launch_zarc_processor(self, - start_date_emergence: str, - end_date_emergence: str, - nb_days_sowing_emergence: int, - crop: str, - municipio: int, - soil_type: str, - cycle: str, - seasonfield_id:str): + def launch_zarc_processor( + self, + start_date_emergence: str, + end_date_emergence: str, + nb_days_sowing_emergence: int, + crop: str, + municipio: int, + soil_type: str, + cycle: str, + seasonfield_id: str, + ): """launch a zarc analytics processor and get the task id in result - Args: - start_date_emergence (str) : the emergence start date used for the request (format YYYY-MM-dd) - end_date_emergence (str) : the emergence end date used for the request (format YYYY-MM-dd) - nb_days_sowing_emergence (int): the number of days for sowing emergence - crop (str): the zarc crop code, - municipio (int): the municipio id, - soil_type (str): the zarc soil type, - cycle (str): the zarc cycle value, - seasonfield_id (sfd) : seasonField geosys uniqueId - - Returns: - taskId (str) + Args: + start_date_emergence (str) : the emergence start date used for the request (format YYYY-MM-dd) + end_date_emergence (str) : the emergence end date used for the request (format YYYY-MM-dd) + nb_days_sowing_emergence (int): the number of days for sowing emergence + crop (str): the zarc crop code, + municipio (int): the municipio id, + soil_type (str): the zarc soil type, + cycle (str): the zarc cycle value, + seasonfield_id (sfd) : seasonField geosys uniqueId + + Returns: + taskId (str) """ # build payload for api call payload = { - "parametersProfile": ProcessorConfiguration.ZARC.value['profile'], - "data": - [ - { - "id": "SeasonField:" + seasonfield_id + "@ID", - "start_date_emergence": start_date_emergence, - "end_date_emergence": end_date_emergence, - "crop_zarc": crop, - "municipio_zarc": municipio, - "nb_days_sowing_emergence": nb_days_sowing_emergence, - "soil_type_zarc": soil_type, - "cycle_zarc": cycle - } - ] + "parametersProfile": ProcessorConfiguration.ZARC.value["profile"], + "data": [ + { + "id": "SeasonField:" + seasonfield_id + "@ID", + "start_date_emergence": start_date_emergence, + "end_date_emergence": end_date_emergence, + "crop_zarc": crop, + "municipio_zarc": municipio, + "nb_days_sowing_emergence": nb_days_sowing_emergence, + "soil_type_zarc": soil_type, + "cycle_zarc": cycle, + } + ], } - processor_endpoint: str = urljoin(self.base_url, - GeosysApiEndpoints.LAUNCH_PROCESSOR_ENDPOINT.value.format( - ProcessorConfiguration.ZARC.value['api_processor_path'])) + processor_endpoint: str = urljoin( + self.base_url, + GeosysApiEndpoints.LAUNCH_PROCESSOR_ENDPOINT.value.format( + ProcessorConfiguration.ZARC.value["api_processor_path"] + ), + ) response = self.http_client.post(processor_endpoint, payload) diff --git a/geosyspy/services/map_product_service.py b/geosyspy/services/map_product_service.py index c509d07..d476b11 100644 --- a/geosyspy/services/map_product_service.py +++ b/geosyspy/services/map_product_service.py @@ -240,3 +240,79 @@ def get_zipped_tiff_difference_map( + str(response_zipped_tiff.status_code) ) return response_zipped_tiff + + def get_mr_time_series( + self, + season_field_id: str, + polygon: str, + start_date: datetime, + end_date: datetime, + indicator, + sensors_collection: Optional[list[SatelliteImageryCollection]] = [ + SatelliteImageryCollection.SENTINEL_2, + ], + coverage_percent: int = 80, + aggregation: str = "Median", + smoothing_method: str = "Whittaker", + apply_denoiser: bool = True, + apply_end_of_curve: bool = True, + output_saturation: bool = False, + extract_raw_datasets: bool = False, + ): + """ + Retrieves MR time series a given season field or geometry within the specified time range. + + Args: + season_field_id (str): The identifier for the season field. + polygon (str): The polygon geometry in WKT format. + start_date (datetime): The start date of the time range for satellite coverage. + end_date (datetime): The end date of the time range for satellite coverage. + indicator (str): The indicator for which satellite imagery is requested. + sensors_collection (Optional[List[SatelliteImageryCollection]], optional): + A list of satellite imagery collections to consider. + Defaults to [SatelliteImageryCollection.SENTINEL_2]. + coverage_percent (int, optional): Minimum clear cover percentage. Defaults to 80. + aggregation (str, optional): Method to aggregate data. Defaults to "Median". + smoothing_method (str, optional): Method to smooth data. Defaults to "Whittaker". + apply_denoiser (bool, optional): Whether to apply denoiser. Defaults to True. + apply_end_of_curve (bool, optional): Whether to apply end of curve. Defaults to True. + output_saturation (bool, optional): Whether to output saturation. Defaults to False. + extract_raw_datasets (bool, optional): Whether to extract raw datasets. Defaults to False. + + Returns: + pd.DataFrame: DataFrame containing the satellite coverage data. + """ + + self.logger.info("Calling APIs for coverage") + start_date: str = start_date.strftime("%Y-%m-%d") + end_date: str = end_date.strftime("%Y-%m-%d") + + flm_url: str = urljoin( + self.base_url, + GeosysApiEndpoints.FLM_TIME_SERIES.value, + ) + + body = {} + body["seasonfield"] = ( + {"id": season_field_id} if season_field_id else {"geometry": polygon} + ) + body["startDate"] = start_date + body["endDate"] = end_date + if sensors_collection is not None: + body["sensors"] = [elem.value for elem in sensors_collection] + body["vegetationIndex"] = indicator + body["aggregation"] = aggregation + body["smoothingMethod"] = smoothing_method + body["applyDenoiser"] = apply_denoiser + body["applyEndOfCurve"] = apply_end_of_curve + body["clearCoverMin"] = coverage_percent + body["outputSaturation"] = output_saturation + body["extractRawDatasets"] = extract_raw_datasets + + response = self.http_client.post(flm_url, body) + + if response.status_code == 200: + df = pd.json_normalize(response.json()) + return df + else: + self.logger.info(response.status_code) diff --git a/geosyspy/utils/constants.py b/geosyspy/utils/constants.py index 2e2a7e6..e23894f 100644 --- a/geosyspy/utils/constants.py +++ b/geosyspy/utils/constants.py @@ -5,12 +5,13 @@ class SatelliteImageryCollection(Enum): """ Available imagery collections """ + MODIS = "MODIS" SENTINEL_2 = "SENTINEL_2" LANDSAT_8 = "LANDSAT_8" LANDSAT_9 = "LANDSAT_9" DEIMOS_1 = "DEIMOS_1" - ALSAT_1B = "ALSAT_1B" + ALSAT_1B = "ALSAT_1B" RESOURCESAT2 = "RESOURCESAT2" CBERS_4 = "CBERS_4" KAZSTSAT = "KAZSTSAT" @@ -21,6 +22,7 @@ class WeatherTypeCollection(Enum): """ Available weather collections """ + WEATHER_FORECAST_DAILY = "FORECAST_DAILY" WEATHER_FORECAST_HOURLY = "FORECAST_HOURLY" WEATHER_HISTORICAL_DAILY = "HISTORICAL_DAILY" @@ -30,6 +32,7 @@ class Env(Enum): """ Environment to target (PROD, PREPROD) """ + PROD = "prod" PREPROD = "preprod" @@ -38,6 +41,7 @@ class Region(Enum): """ Region to target (NA) """ + NA = "na" @@ -45,13 +49,16 @@ class Harvest(Enum): """ Type of Harvest query used for Harvest analytics processor """ + HARVEST_IN_SEASON = "IN_SEASON" HARVEST_HISTORICAL = "HISTORICAL" + class Emergence(Enum): """ Type of Emergence query used for Emergence analytics processor """ + EMERGENCE_IN_SEASON = "IN_SEASON" EMERGENCE_HISTORICAL = "HISTORICAL" EMERGENCE_DELAY = "DELAY" @@ -61,6 +68,7 @@ class AgriquestCommodityCode(Enum): """ Available AgriQuest Commodity values """ + ALL_VEGETATION = 33 ALL_CROPS = 35 @@ -69,6 +77,7 @@ class AgriquestFranceBlockCode(Enum): """ Available AgriQuest Block codes dedicated to France """ + FRA_CANTONS = 216 FRA_COMMUNES = 135 FRA_DEPARTEMENTS = 226 @@ -78,6 +87,7 @@ class AgriquestBlocks(Enum): """ Available AgriQuest Block codes """ + FIRST_LEVEL = 129 AMU_AUSTRALIA_LEVEL_1 = 205 AMU_AUSTRALIA_LEVEL_2 = 206 @@ -108,6 +118,7 @@ class AgriquestWeatherType(Enum): """ Available AgriQuest Weather types """ + CUMULATIVE_PRECIPITATION = "cumulative-precipitation" MIN_TEMPERATURE = "min-temperature" AVERAGE_TEMPERATURE = "average-temperature" @@ -118,10 +129,12 @@ class AgriquestWeatherType(Enum): SOIL_MOISTURE = "soil-moisture" SOLAR_RADIATION = "solar-radiation" + class ZarcSoilType(Enum): """ Available Soil Type values for analytics processor Zarc """ + SOIL_TYPE_1 = "1" SOIL_TYPE_2 = "2" SOIL_TYPE_3 = "3" @@ -133,18 +146,21 @@ class ZarcSoilType(Enum): SOIL_TYPE_16 = "16" NONE = None + class CropIdSeason(Enum): """ Available season values for analytics processor Zarc """ - SEASON_1="SEASON_1" - SEASON_2="SEASON_2" + + SEASON_1 = "SEASON_1" + SEASON_2 = "SEASON_2" class ZarcCycleType(Enum): """ Available season values for analytics processor Zarc """ + CYCLE_TYPE_1 = "1" CYCLE_TYPE_2 = "2" CYCLE_TYPE_3 = "3" @@ -155,6 +171,7 @@ class GeosysApiEndpoints(Enum): """ Available Geosys APIs Endpoints """ + MASTER_DATA_MANAGEMENT_ENDPOINT = "master-data-management/v6" VTS_ENDPOINT = "vegetation-time-series/v1/season-fields" VTS_BY_PIXEL_ENDPOINT = "vegetation-time-series/v1/season-fields/pixels" @@ -164,7 +181,7 @@ class GeosysApiEndpoints(Enum): FLM_REFLECTANCE_MAP = "field-level-maps/v5/maps/reflectance-map" FLM_DIFFERENCE_MAP = "field-level-maps/v5/maps/difference-map" FLM_CATALOG_IMAGERY_POST = "field-level-maps/v5/season-fields/catalog-imagery" - + FLM_TIME_SERIES = "field-level-maps/v5/time-serie" WEATHER_ENDPOINT = "Weather/v1/weather" ANALYTICS_FABRIC_ENDPOINT = "analytics/metrics" @@ -178,12 +195,16 @@ class GeosysApiEndpoints(Enum): LR_SATELLITE_COLLECTION = [SatelliteImageryCollection.MODIS] MR_SATELLITE_COLLECTION = [ - SatelliteImageryCollection.LANDSAT_8,SatelliteImageryCollection.LANDSAT_9, - SatelliteImageryCollection.SENTINEL_2, SatelliteImageryCollection.ALSAT_1B, - SatelliteImageryCollection.CBERS_4, SatelliteImageryCollection.DEIMOS_1, - SatelliteImageryCollection.GAOFEN, SatelliteImageryCollection.KAZSTSAT, - SatelliteImageryCollection.RESOURCESAT2 - ] + SatelliteImageryCollection.LANDSAT_8, + SatelliteImageryCollection.LANDSAT_9, + SatelliteImageryCollection.SENTINEL_2, + SatelliteImageryCollection.ALSAT_1B, + SatelliteImageryCollection.CBERS_4, + SatelliteImageryCollection.DEIMOS_1, + SatelliteImageryCollection.GAOFEN, + SatelliteImageryCollection.KAZSTSAT, + SatelliteImageryCollection.RESOURCESAT2, +] PRIORITY_HEADERS = {"bulk": "Geosys_API_Bulk", "realtime": ""} SEASON_FIELD_ID_REGEX = r"\sId:\s(\w+)," diff --git a/tests/test_int_geosys.py b/tests/test_int_geosys.py index 3f71f33..18a0108 100644 --- a/tests/test_int_geosys.py +++ b/tests/test_int_geosys.py @@ -343,24 +343,6 @@ def test_get_zarc_analytics(self): assert dataset.keys()[-1] == "Schema.Id" assert dataset.values[0][-1] == "ZARC" - @pytest.mark.skip(reason="No more available bucket + will be decomissioned") - def test_get_mr_time_series(self): - result: str = self.client.get_mr_time_series( - start_date="2020-10-09", - end_date="2022-10-09", - list_sensors=["Sentinel_2", "Landsat_8"], - denoiser=True, - smoother="ww", - eoc=True, - aggregation="mean", - index="ndvi", - raw_data=True, - polygon="POLYGON ((-0.49881816 46.27330504, -0.49231649 46.27320122, -0.49611449 46.26983426, -0.49821735 46.27094671, -0.49881816 46.27330504))", - ) - - assert result.startswith("s3://geosys-geosys-us/2tKecZgMyEP6EkddLxa1gV") - assert "/mrts/" in result - def test_get_farm_info_from_location(self): result = self.client.get_farm_info_from_location( latitude="-15.01402", longitude="-50.7717" @@ -381,3 +363,13 @@ def test_get_profile_permissions(self): def test_get_profile_area_conversion(self): response = self.client.get_user_area_conversion_rate() assert response is not None + + def test_get_mr_time_series(self): + start_date = dt.datetime.strptime("2023-04-15", "%Y-%m-%d") + end_date = dt.datetime.strptime("2024-01-01", "%Y-%m-%d") + POLYGON = "POLYGON ((-94.49272194 43.21256403, -94.48234182 43.21245482, -94.48257098 43.2174915, -94.48264176 43.21951919, -94.49074313 43.219511600000004, -94.49035218 43.21879097, -94.49026379 43.21852604, -94.48990869000001 43.21725052, -94.48984158 43.21664338, -94.49009374 43.21619873, -94.4906074 43.21586407, -94.49140384 43.215565930000004, -94.49227368 43.21530949, -94.49249125 43.21513659, -94.49262537 43.2149919, -94.49271655 43.2148082, -94.49272194 43.21256403))" + df = self.client.get_mr_time_series( + start_date, end_date, polygon=POLYGON, indicator="Ndwi" + ) + assert df is not None + assert df['smoothedData'] is not None diff --git a/tests/test_unit_analytics_processor_service.py b/tests/test_unit_analytics_processor_service.py index 5a46bb6..7cd51cb 100644 --- a/tests/test_unit_analytics_processor_service.py +++ b/tests/test_unit_analytics_processor_service.py @@ -10,153 +10,154 @@ class TestAnalyticsProcessorService: url = "https://testurl.com" - http_client = HttpClient("client_id_123", - "client_secret_123456", - "username_123", - "password_123", - "preprod", - "na") + http_client = HttpClient( + "client_id_123", + "client_secret_123456", + "username_123", + "password_123", + "preprod", + "na", + ) service = AnalyticsProcessorService(base_url=url, http_client=http_client) - @patch('geosyspy.utils.http_client.HttpClient.get') + @patch("geosyspy.utils.http_client.HttpClient.get") def test_get_task_status(self, get_response): - get_response.return_value = mock_http_response_text_content("GET", load_data_from_textfile( - "processor_event_data_mock_http_response")) + get_response.return_value = mock_http_response_text_content( + "GET", load_data_from_textfile("processor_event_data_mock_http_response") + ) task_status = self.service.wait_and_check_task_status("task_id") assert task_status == "Ended" - @patch('geosyspy.utils.http_client.HttpClient.post') + @patch("geosyspy.utils.http_client.HttpClient.post") def test_get_launch_planted_area_processor(self, post_response): - post_response.return_value = mock_http_response_text_content("POST", load_data_from_textfile( - "launch_processor_data_mock_http_response")) - - task_id = self.service.launch_planted_area_processor(start_date='2020-01-01', end_date='2021-01-01', seasonfield_id= 'seasonfieldFakeId') + post_response.return_value = mock_http_response_text_content( + "POST", load_data_from_textfile("launch_processor_data_mock_http_response") + ) + + task_id = self.service.launch_planted_area_processor( + start_date="2020-01-01", + end_date="2021-01-01", + seasonfield_id="seasonfieldFakeId", + ) assert task_id == "cb58faaf8a5640e4913d16bfde3f5bbf" - @patch('geosyspy.utils.http_client.HttpClient.post') + @patch("geosyspy.utils.http_client.HttpClient.post") def test_get_launch_zarc_processor(self, post_response): - post_response.return_value = mock_http_response_text_content("POST", load_data_from_textfile( - "launch_processor_data_mock_http_response")) - - task_id = self.service.launch_zarc_processor(start_date_emergence ='2020-01-01', - municipio=123, - soil_type=ZarcSoilType.SOIL_TYPE_1.value, - nb_days_sowing_emergence=50, - crop="Corn", - end_date_emergence='2021-01-01', - cycle= ZarcCycleType.CYCLE_TYPE_1.value, - seasonfield_id='seasonFieldFakeId') + post_response.return_value = mock_http_response_text_content( + "POST", load_data_from_textfile("launch_processor_data_mock_http_response") + ) + + task_id = self.service.launch_zarc_processor( + start_date_emergence="2020-01-01", + municipio=123, + soil_type=ZarcSoilType.SOIL_TYPE_1.value, + nb_days_sowing_emergence=50, + crop="Corn", + end_date_emergence="2021-01-01", + cycle=ZarcCycleType.CYCLE_TYPE_1.value, + seasonfield_id="seasonFieldFakeId", + ) assert task_id == "cb58faaf8a5640e4913d16bfde3f5bbf" - @patch('geosyspy.utils.http_client.HttpClient.post') + @patch("geosyspy.utils.http_client.HttpClient.post") def test_get_launch_greenness_processor(self, post_response): - post_response.return_value = mock_http_response_text_content("POST", load_data_from_textfile( - "launch_processor_data_mock_http_response")) - - task_id = self.service.launch_greenness_processor(start_date='2020-01-01', - crop="Corn", - end_date='2021-01-01', - sowing_date='2020-01-01', - geometry=geometry, - seasonfield_id='seasonFieldFakeId') + post_response.return_value = mock_http_response_text_content( + "POST", load_data_from_textfile("launch_processor_data_mock_http_response") + ) + + task_id = self.service.launch_greenness_processor( + start_date="2020-01-01", + crop="Corn", + end_date="2021-01-01", + sowing_date="2020-01-01", + geometry=geometry, + seasonfield_id="seasonFieldFakeId", + ) assert task_id == "cb58faaf8a5640e4913d16bfde3f5bbf" - @patch('geosyspy.utils.http_client.HttpClient.post') + @patch("geosyspy.utils.http_client.HttpClient.post") def test_get_launch_emergence_processor(self, post_response): - post_response.return_value = mock_http_response_text_content("POST", load_data_from_textfile( - "launch_processor_data_mock_http_response")) - - task_id = self.service.launch_emergence_processor(season_start_day='2020-01-01', - crop="Corn", - year=2021, - emergence_type=Emergence.EMERGENCE_IN_SEASON, - season_duration=110, - season_start_month=10, - geometry=geometry, - seasonfield_id='seasonFieldFakeId') + post_response.return_value = mock_http_response_text_content( + "POST", load_data_from_textfile("launch_processor_data_mock_http_response") + ) + + task_id = self.service.launch_emergence_processor( + season_start_day="2020-01-01", + crop="Corn", + year=2021, + emergence_type=Emergence.EMERGENCE_IN_SEASON, + season_duration=110, + season_start_month=10, + geometry=geometry, + seasonfield_id="seasonFieldFakeId", + ) assert task_id == "cb58faaf8a5640e4913d16bfde3f5bbf" - @patch('geosyspy.utils.http_client.HttpClient.post') + @patch("geosyspy.utils.http_client.HttpClient.post") def test_get_launch_harvest_processor(self, post_response): - post_response.return_value = mock_http_response_text_content("POST", load_data_from_textfile( - "launch_processor_data_mock_http_response")) - - task_id = self.service.launch_harvest_processor(season_start_day='2020-01-01', - year=2021, - crop ='Corn', - season_duration=110, - season_start_month=10, - harvest_type=Harvest.HARVEST_HISTORICAL, - geometry=geometry, - seasonfield_id='seasonFieldFakeId') + post_response.return_value = mock_http_response_text_content( + "POST", load_data_from_textfile("launch_processor_data_mock_http_response") + ) + + task_id = self.service.launch_harvest_processor( + season_start_day="2020-01-01", + year=2021, + crop="Corn", + season_duration=110, + season_start_month=10, + harvest_type=Harvest.HARVEST_HISTORICAL, + geometry=geometry, + seasonfield_id="seasonFieldFakeId", + ) assert task_id == "cb58faaf8a5640e4913d16bfde3f5bbf" - @patch('geosyspy.utils.http_client.HttpClient.post') + @patch("geosyspy.utils.http_client.HttpClient.post") def test_get_launch_harvest_readiness_processor(self, post_response): - post_response.return_value = mock_http_response_text_content("POST", load_data_from_textfile( - "launch_processor_data_mock_http_response")) - - task_id = self.service.launch_harvest_readiness_processor(start_date='2020-01-01', - end_date='2020-01-01', - sowing_date='2020-01-01', - crop ='Corn', - geometry=geometry, - seasonfield_id='seasonFieldFakeId') + post_response.return_value = mock_http_response_text_content( + "POST", load_data_from_textfile("launch_processor_data_mock_http_response") + ) + + task_id = self.service.launch_harvest_readiness_processor( + start_date="2020-01-01", + end_date="2020-01-01", + sowing_date="2020-01-01", + crop="Corn", + geometry=geometry, + seasonfield_id="seasonFieldFakeId", + ) assert task_id == "cb58faaf8a5640e4913d16bfde3f5bbf" - @patch('geosyspy.utils.http_client.HttpClient.post') + @patch("geosyspy.utils.http_client.HttpClient.post") def test_get_launch_brazil_in_season_crop_processor(self, post_response): - post_response.return_value = mock_http_response_text_content("POST", load_data_from_textfile( - "launch_processor_data_mock_http_response")) - - task_id = self.service.launch_brazil_in_season_crop_id_processor(start_date='2020-01-01', - end_date='2020-01-01', - geometry=geometry, - season=2021, - seasonfield_id='seasonFieldFakeId') + post_response.return_value = mock_http_response_text_content( + "POST", load_data_from_textfile("launch_processor_data_mock_http_response") + ) + + task_id = self.service.launch_brazil_in_season_crop_id_processor( + start_date="2020-01-01", + end_date="2020-01-01", + geometry=geometry, + season=2021, + seasonfield_id="seasonFieldFakeId", + ) assert task_id == "cb58faaf8a5640e4913d16bfde3f5bbf" - @patch('geosyspy.utils.http_client.HttpClient.post') + @patch("geosyspy.utils.http_client.HttpClient.post") def test_get_launch_potential_score_processor(self, post_response): - post_response.return_value = mock_http_response_text_content("POST", load_data_from_textfile( - "launch_processor_data_mock_http_response")) - - task_id = self.service.launch_potential_score_processor(end_date='2021-01-01', - season_start_month=10, - season_duration=120, - season_start_day=30, - sowing_date='2020-01-01', - crop='Corn', - nb_historical_years=5, - geometry=geometry, - seasonfield_id='seasonFieldFakeId') - assert task_id == "cb58faaf8a5640e4913d16bfde3f5bbf" - - @patch('geosyspy.utils.http_client.HttpClient.post') - def test_get_mr_time_series_processor(self, post_response): - post_response.return_value = mock_http_response_text_content("POST", load_data_from_textfile( - "launch_processor_data_mock_http_response")) - - task_id = self.service.launch_mr_time_series_processor(start_date="2020-10-09", - end_date="2022-10-09", - list_sensors=["Sentinel_2", "Landsat_8"], - denoiser=True, - smoother="ww", - eoc=True, - aggregation="mean", - index="ndvi", - raw_data=True, - polygon="POLYGON ((-0.49881816 46.27330504, -0.49231649 46.27320122, -0.49611449 46.26983426, -0.49821735 46.27094671, -0.49881816 46.27330504))") - + post_response.return_value = mock_http_response_text_content( + "POST", load_data_from_textfile("launch_processor_data_mock_http_response") + ) + + task_id = self.service.launch_potential_score_processor( + end_date="2021-01-01", + season_start_month=10, + season_duration=120, + season_start_day=30, + sowing_date="2020-01-01", + crop="Corn", + nb_historical_years=5, + geometry=geometry, + seasonfield_id="seasonFieldFakeId", + ) assert task_id == "cb58faaf8a5640e4913d16bfde3f5bbf" - - @patch('geosyspy.utils.http_client.HttpClient.get') - def test_get_s3_path_from_task_and_processor(self, get_response): - get_response.return_value = mock_http_response_text_content("GET", load_data_from_textfile( - "processor_event_data_mock_http_response")) - - s3_path = self.service.get_s3_path_from_task_and_processor(task_id="4d0980e07b7245d49419ff5ec87fff09", - processor_name="mrts") - - assert s3_path == "s3://geosys-geosys-us/2tKecZgMyEP6EkddLxa1gV/mrts/4d0980e07b7245d49419ff5ec87fff09" \ No newline at end of file