openforis-whisp 3.0.0a8__py3-none-any.whl → 3.0.0a9__py3-none-any.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1302,6 +1302,9 @@ def whisp_stats_geojson_to_df_concurrent(
1302
1302
  # Track if we had errors that suggest bad bands
1303
1303
  batch_errors = []
1304
1304
 
1305
+ # Fail-fast flag for band errors - shared across threads
1306
+ band_error_detected = threading.Event()
1307
+
1305
1308
  # Suppress fiona logging during batch processing (threads create new loggers)
1306
1309
  fiona_logger = logging.getLogger("fiona")
1307
1310
  pyogrio_logger = logging.getLogger("pyogrio._io")
@@ -1310,6 +1313,15 @@ def whisp_stats_geojson_to_df_concurrent(
1310
1313
  fiona_logger.setLevel(logging.CRITICAL)
1311
1314
  pyogrio_logger.setLevel(logging.CRITICAL)
1312
1315
 
1316
+ # Keywords that indicate missing asset/band errors
1317
+ BAND_ERROR_KEYWORDS = [
1318
+ "image.load",
1319
+ "asset",
1320
+ "not found",
1321
+ "does not exist",
1322
+ "imagecollection.load",
1323
+ ]
1324
+
1313
1325
  try:
1314
1326
  # Don't suppress stdout here - we want progress messages to show in Colab
1315
1327
  with ThreadPoolExecutor(max_workers=pool_workers) as executor:
@@ -1323,6 +1335,13 @@ def whisp_stats_geojson_to_df_concurrent(
1323
1335
  batch_futures = {future: i for future, i in futures.items()}
1324
1336
 
1325
1337
  for future in as_completed(futures):
1338
+ # Check if we should abort due to band error
1339
+ if band_error_detected.is_set():
1340
+ # Cancel remaining futures and skip processing
1341
+ for f in futures:
1342
+ f.cancel()
1343
+ break
1344
+
1326
1345
  batch_idx = batch_futures[future]
1327
1346
  try:
1328
1347
  batch_idx, df_server, df_client = future.result()
@@ -1398,8 +1417,22 @@ def whisp_stats_geojson_to_df_concurrent(
1398
1417
  )
1399
1418
 
1400
1419
  except Exception as e:
1401
- # Batch failed - fail fast with clear guidance
1420
+ # Batch failed - check if it's a band error for fail-fast
1402
1421
  error_msg = str(e)
1422
+ error_msg_lower = error_msg.lower()
1423
+
1424
+ # Check if this is a band/asset error - trigger fail-fast
1425
+ is_this_band_error = any(
1426
+ keyword in error_msg_lower for keyword in BAND_ERROR_KEYWORDS
1427
+ )
1428
+
1429
+ if is_this_band_error and not band_error_detected.is_set():
1430
+ band_error_detected.set()
1431
+ logger.warning(
1432
+ f"Band/asset error detected in batch {batch_idx}. "
1433
+ f"Cancelling remaining batches for retry with validation..."
1434
+ )
1435
+
1403
1436
  logger.error(f"Batch {batch_idx} failed: {error_msg[:100]}")
1404
1437
  logger.debug(f"Full error: {error_msg}")
1405
1438
 
@@ -1419,14 +1452,136 @@ def whisp_stats_geojson_to_df_concurrent(
1419
1452
  # Log completion
1420
1453
  total_time = time.time() - start_time
1421
1454
  time_str = _format_time(total_time)
1422
- logger.info(
1423
- f"Processing complete: {completed_batches:,}/{len(batches):,} batches in {time_str}"
1424
- )
1455
+ if band_error_detected.is_set():
1456
+ logger.info(
1457
+ f"Processing stopped early due to band error after {completed_batches:,}/{len(batches):,} batches in {time_str}"
1458
+ )
1459
+ else:
1460
+ logger.info(
1461
+ f"Processing complete: {completed_batches:,}/{len(batches):,} batches in {time_str}"
1462
+ )
1463
+
1464
+ # If band error was detected, retry immediately with validation (fail-fast path)
1465
+ if band_error_detected.is_set():
1466
+ logger.warning("Retrying all batches with validate_bands=True...")
1467
+ try:
1468
+ with redirect_stdout(io.StringIO()):
1469
+ whisp_image = combine_datasets(
1470
+ national_codes=national_codes, validate_bands=True
1471
+ )
1472
+ logger.info("Image recreated with validation. Reprocessing all batches...")
1473
+
1474
+ # Clear state for full retry
1475
+ results = []
1476
+ batch_errors = []
1477
+ completed_batches = 0
1478
+ shown_milestones = set()
1479
+ start_time = time.time()
1480
+
1481
+ # Suppress fiona logging during retry
1482
+ fiona_logger.setLevel(logging.CRITICAL)
1483
+ pyogrio_logger.setLevel(logging.CRITICAL)
1484
+
1485
+ try:
1486
+ with ThreadPoolExecutor(max_workers=pool_workers) as executor:
1487
+ futures = {
1488
+ executor.submit(process_batch, i, batch): i
1489
+ for i, batch in enumerate(batches)
1490
+ }
1425
1491
 
1426
- # If we have batch errors after retry attempts, fail the entire process
1492
+ for future in as_completed(futures):
1493
+ batch_idx = futures[future]
1494
+ try:
1495
+ batch_idx, df_server, df_client = future.result()
1496
+ if plot_id_column not in df_server.columns:
1497
+ df_server[plot_id_column] = [
1498
+ str(i) for i in range(1, len(df_server) + 1)
1499
+ ]
1500
+ else:
1501
+ df_server[plot_id_column] = df_server[
1502
+ plot_id_column
1503
+ ].astype(str)
1504
+ if plot_id_column in df_client.columns:
1505
+ df_client[plot_id_column] = df_client[
1506
+ plot_id_column
1507
+ ].astype(str)
1508
+
1509
+ # Drop external_id from server if present
1510
+ df_server_clean = df_server.copy()
1511
+ if "external_id" in df_server_clean.columns:
1512
+ df_server_clean = df_server_clean.drop(
1513
+ columns=["external_id"]
1514
+ )
1515
+
1516
+ # Keep essential columns from client
1517
+ keep_external_columns = [plot_id_column]
1518
+ if (
1519
+ external_id_column
1520
+ and "external_id" in df_client.columns
1521
+ ):
1522
+ keep_external_columns.append("external_id")
1523
+ if "geometry" in df_client.columns:
1524
+ keep_external_columns.append("geometry")
1525
+ if geometry_type_column in df_client.columns:
1526
+ keep_external_columns.append(geometry_type_column)
1527
+ centroid_cols = [
1528
+ c
1529
+ for c in df_client.columns
1530
+ if c.startswith("Centroid_")
1531
+ ]
1532
+ keep_external_columns.extend(centroid_cols)
1533
+
1534
+ df_client_clean = df_client[
1535
+ [
1536
+ c
1537
+ for c in keep_external_columns
1538
+ if c in df_client.columns
1539
+ ]
1540
+ ]
1541
+
1542
+ merged = df_server_clean.merge(
1543
+ df_client_clean,
1544
+ on=plot_id_column,
1545
+ how="left",
1546
+ suffixes=("_ee", "_client"),
1547
+ )
1548
+ results.append(merged)
1549
+
1550
+ with progress_lock:
1551
+ completed_batches += 1
1552
+ _log_progress(
1553
+ completed_batches,
1554
+ len(batches),
1555
+ milestones,
1556
+ shown_milestones,
1557
+ start_time,
1558
+ logger,
1559
+ )
1560
+
1561
+ except Exception as e:
1562
+ error_msg = str(e)
1563
+ logger.error(
1564
+ f"Retry batch {batch_idx} failed: {error_msg[:100]}"
1565
+ )
1566
+ original_batch = batch_map[batch_idx]
1567
+ batch_errors.append((batch_idx, original_batch, error_msg))
1568
+ finally:
1569
+ fiona_logger.setLevel(old_fiona_level)
1570
+ pyogrio_logger.setLevel(old_pyogrio_level)
1571
+
1572
+ # Log retry completion
1573
+ retry_time = time.time() - start_time
1574
+ logger.info(
1575
+ f"Retry complete: {completed_batches:,}/{len(batches):,} batches in {_format_time(retry_time)}"
1576
+ )
1577
+
1578
+ except Exception as retry_error:
1579
+ logger.error(f"Failed to recreate image with validation: {retry_error}")
1580
+ # Fall through to error handling below
1581
+
1582
+ # If we have batch errors (either from initial run or retry), raise RuntimeError
1427
1583
  if batch_errors:
1428
1584
  total_failed_rows = sum(len(batch) for _, batch, _ in batch_errors)
1429
- failed_batch_indices = [str(idx) for idx, _, _ in batch_errors]
1430
1585
 
1431
1586
  # Format detailed error information for debugging
1432
1587
  error_details_list = []
@@ -1475,94 +1630,10 @@ def whisp_stats_geojson_to_df_concurrent(
1475
1630
  f"Please reduce batch_size and try again."
1476
1631
  )
1477
1632
 
1478
- # Check if we should retry with validation due to band errors (legacy band error handling)
1633
+ # Check we have results
1479
1634
  if not results:
1480
- # All batches failed - likely a bad band issue
1481
- is_band_error = any(
1482
- keyword in str(batch_errors)
1483
- for keyword in ["Image.load", "asset", "not found", "does not exist"]
1484
- )
1485
-
1486
- if is_band_error:
1487
- logger.warning(
1488
- "Detected potential bad band error. Retrying with validate_bands=True..."
1489
- )
1490
- try:
1491
- with redirect_stdout(io.StringIO()):
1492
- whisp_image = combine_datasets(
1493
- national_codes=national_codes, validate_bands=True
1494
- )
1495
- logger.info(
1496
- "Image recreated with validation. Retrying batch processing..."
1497
- )
1498
-
1499
- # Retry batch processing with validated image
1500
- results = []
1501
- retry_completed = 0
1502
- retry_shown = set()
1503
- retry_start = time.time()
1504
-
1505
- # Suppress fiona logging during batch processing (threads create new loggers)
1506
- fiona_logger = logging.getLogger("fiona")
1507
- pyogrio_logger = logging.getLogger("pyogrio._io")
1508
- old_fiona_level = fiona_logger.level
1509
- old_pyogrio_level = pyogrio_logger.level
1510
- fiona_logger.setLevel(logging.CRITICAL)
1511
- pyogrio_logger.setLevel(logging.CRITICAL)
1512
-
1513
- try:
1514
- with ThreadPoolExecutor(max_workers=pool_workers) as executor:
1515
- futures = {
1516
- executor.submit(process_batch, i, batch): i
1517
- for i, batch in enumerate(batches)
1518
- }
1519
-
1520
- for future in as_completed(futures):
1521
- try:
1522
- batch_idx, df_server, df_client = future.result()
1523
- if plot_id_column not in df_server.columns:
1524
- # Use 1-indexed range to match client-side assignment
1525
- df_server[plot_id_column] = range(
1526
- 1, len(df_server) + 1
1527
- )
1528
- merged = df_server.merge(
1529
- df_client,
1530
- on=plot_id_column,
1531
- how="left",
1532
- suffixes=("", "_client"),
1533
- )
1534
- results.append(merged)
1535
-
1536
- # Update retry progress
1537
- with progress_lock:
1538
- retry_completed += 1
1539
- _log_progress(
1540
- retry_completed,
1541
- len(batches),
1542
- milestones,
1543
- retry_shown,
1544
- retry_start,
1545
- logger,
1546
- )
1547
- except Exception as e:
1548
- logger.error(
1549
- f"Batch processing error (retry): {str(e)[:100]}"
1550
- )
1551
-
1552
- # Log retry completion
1553
- retry_time = time.time() - retry_start
1554
- logger.info(
1555
- f"Retry complete: {retry_completed:,}/{len(batches):,} batches in {_format_time(retry_time)}"
1556
- )
1557
- finally:
1558
- # Restore logger levels
1559
- fiona_logger.setLevel(old_fiona_level)
1560
- pyogrio_logger.setLevel(old_pyogrio_level)
1561
- except Exception as validation_e:
1562
- logger.error(
1563
- f"Failed to recover with validation: {str(validation_e)[:100]}"
1564
- )
1565
- return pd.DataFrame()
1635
+ logger.error("No results obtained from batch processing")
1636
+ return pd.DataFrame()
1566
1637
 
1567
1638
  if results:
1568
1639
  # Filter out empty DataFrames and all-NA columns to avoid FutureWarning in pd.concat
@@ -373,7 +373,19 @@ def g_esri_2020_2023_crop_prep():
373
373
  #### disturbances by year
374
374
 
375
375
  # RADD_year_2019 to RADD_year_< current year >
376
+ # Coverage: Primary humid tropical forest areas of South America, sub-Saharan Africa,
377
+ # and insular Southeast Asia at 10m spatial resolution.
378
+ # Available from January 2019 to present for Africa,
379
+ # and from January 2020 to present for South America and Southeast Asia.
376
380
  def g_radd_year_prep():
381
+ """
382
+ RADD alerts per year as multiband image.
383
+ Each band is binary (1 = alert detected).
384
+ Coverage: Primary humid tropical forest areas of South America, sub-Saharan Africa,
385
+ and insular Southeast Asia at 10m spatial resolution.
386
+ Available from January 2019 to present for Africa,
387
+ and from January 2020 to present for South America and Southeast Asia.
388
+ """
377
389
  radd = ee.ImageCollection("projects/radar-wur/raddalert/v1")
378
390
  radd_date = (
379
391
  radd.filterMetadata("layer", "contains", "alert").select("Date").mosaic()
@@ -582,27 +594,412 @@ def g_radd_before_2020_prep():
582
594
  ).selfMask()
583
595
 
584
596
 
585
- # # DIST_after_2020
586
- # # alerts only for after 2020 currently so need to use date
587
- # def glad_dist_after_2020_prep():
597
+ # DIST_after_2020
598
+
599
+ # DIST alerts are for all veg types so masked by EUFO forest 2020
600
+ # NB alerts only for 2024 onwards (in GEE at least, available for 2023 ofrom the GLAD site)
601
+ # for conistency using "...after_2020..." terminology.
602
+ def g_glad_dist_after_2020_prep():
603
+
604
+ # no need to filter by date as all dates are later than 2023
605
+
606
+ # Load the vegetation disturbance collections
607
+ VEGDISTSTATUS = ee.ImageCollection(
608
+ "projects/glad/HLSDIST/current/VEG-DIST-STATUS"
609
+ ).mosaic()
610
+
611
+ # Key for high-confidence alerts (values 3, 6, 7, 8)
612
+ high_conf_values = [3, 6, 7, 8]
613
+
614
+ # Create high-confidence mask
615
+ dist_high_conf = VEGDISTSTATUS.remap(
616
+ high_conf_values, [1] * len(high_conf_values), 0
617
+ )
618
+
619
+ return dist_high_conf.updateMask(g_jrc_gfc_2020_prep()).rename(
620
+ "DIST_after_2020"
621
+ ) # Mask alerts to forest and rename band
622
+
623
+
624
+ # # DIST_alert_2024 to DIST_alert_< current year >
625
+ # # Notes:
626
+ # # 1) so far only available for 2024 onwards in GEE
627
+ # # 2) masked alerts (as dist alerts are for all vegetation) to JRC EUFO 2020 layer, as close to EUDR definition
628
+
629
+
630
+ def g_glad_dist_year_prep():
631
+ """
632
+ GLAD DIST alerts per year as multiband image.
633
+ Each band is binary (1 = high-confidence disturbance alert).
634
+ Uses VEG-DIST-DATE to filter by year, VEG-DIST-STATUS for confidence.
635
+ Masked to EUFO 2020 forest.
636
+ Note: Only available from 2024 onwards.
637
+ Fully server-side using ee.List.iterate (no Python for loop).
638
+ """
639
+ # Load the vegetation disturbance collections
640
+ # Vegetation disturbance status (0-8, class flag, 8-bit)
641
+ VEGDISTSTATUS = ee.ImageCollection(
642
+ "projects/glad/HLSDIST/current/VEG-DIST-STATUS"
643
+ ).mosaic()
644
+ # Initial vegetation disturbance date (>0: days since 2020-12-31, 16-bit)
645
+ VEGDISTDATE = ee.ImageCollection(
646
+ "projects/glad/HLSDIST/current/VEG-DIST-DATE"
647
+ ).mosaic()
648
+
649
+ # Key for high-confidence alerts (values 3, 6, 7, 8)
650
+ # 3 = <50% loss, high confidence, ongoing
651
+ # 6 = ≥50% loss, high confidence, ongoing
652
+ # 7 = <50% loss, high confidence, finished
653
+ # 8 = ≥50% loss, high confidence, finished
654
+ high_conf_values = [3, 6, 7, 8]
655
+ dist_high_conf = VEGDISTSTATUS.remap(
656
+ high_conf_values, [1] * len(high_conf_values), 0
657
+ )
588
658
 
589
- # # Load the vegetation disturbance collections
590
- # VEGDISTSTATUS = ee.ImageCollection(
591
- # "projects/glad/HLSDIST/current/VEG-DIST-STATUS"
592
- # ).mosaic()
659
+ # Year range: 2024 to current year
660
+ start_year = 2024
661
+ end_year = CURRENT_YEAR
593
662
 
594
- # # Key for high-confidence alerts (values 3, 6, 7, 8)
595
- # high_conf_values = [3, 6, 7, 8]
663
+ # Reference date for day offset calculation (2020-12-31)
664
+ ref_date = ee.Date("2020-12-31")
596
665
 
597
- # # Create high-confidence mask
598
- # dist_high_conf = VEGDISTSTATUS.remap(
599
- # high_conf_values, [1] * len(high_conf_values), 0
600
- # )
666
+ # Create first band (2024)
667
+ first_year = ee.Number(start_year)
668
+ first_start_days = ee.Date.fromYMD(first_year, 1, 1).difference(ref_date, "day")
669
+ first_end_days = ee.Date.fromYMD(first_year.add(1), 1, 1).difference(
670
+ ref_date, "day"
671
+ )
672
+ first_year_mask = VEGDISTDATE.gte(first_start_days).And(
673
+ VEGDISTDATE.lt(first_end_days)
674
+ )
675
+ first_band_name = ee.String("DIST_year_").cat(first_year.format("%d"))
676
+ first_band = (
677
+ first_year_mask.updateMask(dist_high_conf).rename(first_band_name).selfMask()
678
+ )
601
679
 
602
- # return dist_high_conf.updateMask(jrc_gfc_2020_prep()).rename(
603
- # "DIST_after_2020"
604
- # ) # Mask alerts to forest and rename band
680
+ # Server-side iteration to add remaining years
681
+ years = ee.List.sequence(start_year + 1, end_year)
605
682
 
683
+ def add_year_band(year, img_stack):
684
+ year_num = ee.Number(year)
685
+ start_days = ee.Date.fromYMD(year_num, 1, 1).difference(ref_date, "day")
686
+ end_days = ee.Date.fromYMD(year_num.add(1), 1, 1).difference(ref_date, "day")
687
+ year_mask = VEGDISTDATE.gte(start_days).And(VEGDISTDATE.lt(end_days))
688
+ band_name = ee.String("DIST_year_").cat(year_num.format("%d"))
689
+ year_band = year_mask.updateMask(dist_high_conf).rename(band_name).selfMask()
690
+ return ee.Image(img_stack).addBands(year_band)
691
+
692
+ img_stack = ee.Image(years.iterate(add_year_band, first_band))
693
+
694
+ # Mask to EUFO 2020 forest
695
+ return img_stack.updateMask(g_jrc_gfc_2020_prep())
696
+
697
+
698
+ # GLAD-L (GLAD Landsat) Alerts
699
+ # Coverage: Entire tropics (30°N to 30°S) from January 1, 2018 to present,
700
+ # and from 2015 to present for select countries in the Amazon, Congo Basin,
701
+ # and insular Southeast Asia.
702
+ # Uses confidence bands per year where values >= 2 are confirmed alerts
703
+ # Asset paths per year:
704
+ # 2021: projects/glad/alert/2021final (conf21)
705
+ # 2022: projects/glad/alert/2022final (conf22)
706
+ # 2023: projects/glad/alert/2023final (conf23)
707
+ # 2024: NOT AVAILABLE
708
+ # 2025+: projects/glad/alert/UpdResult (conf25, conf26, etc.)
709
+ # More info: https://glad.umd.edu/dataset/glad-forest-alerts
710
+
711
+
712
+ # GLAD-L_after_2020 (combined alerts from 2021 to current year, excluding 2024)
713
+ def g_glad_l_after_2020_prep():
714
+ """
715
+ GLAD Landsat alerts after 2020 (combined from 2021 onwards).
716
+ Uses confidence bands with threshold >= 2 for confirmed alerts.
717
+ Note: 2024 data is not available.
718
+ """
719
+ # Load yearly assets and combine into single multiband image
720
+ glad_combined = (
721
+ ee.ImageCollection("projects/glad/alert/2021final")
722
+ .mosaic()
723
+ .select("conf21")
724
+ .addBands(
725
+ ee.ImageCollection("projects/glad/alert/2022final")
726
+ .mosaic()
727
+ .select("conf22")
728
+ )
729
+ .addBands(
730
+ ee.ImageCollection("projects/glad/alert/2023final")
731
+ .mosaic()
732
+ .select("conf23")
733
+ )
734
+ .addBands(
735
+ ee.ImageCollection("projects/glad/alert/UpdResult")
736
+ .mosaic()
737
+ .select(["conf25", "conf26"])
738
+ )
739
+ )
740
+
741
+ # Combine alerts from all available years (confidence >= 2)
742
+ # 2024 not available
743
+ combined_alerts = (
744
+ glad_combined.select("conf21")
745
+ .gte(2)
746
+ .Or(glad_combined.select("conf22").gte(2))
747
+ .Or(glad_combined.select("conf23").gte(2))
748
+ .Or(glad_combined.select("conf25").gte(2))
749
+ .Or(glad_combined.select("conf26").gte(2))
750
+ )
751
+
752
+ return combined_alerts.rename("GLAD-L_after_2020").selfMask()
753
+
754
+
755
+ # GLAD-L_before_2020 (combined alerts from 2017 to 2020)
756
+ def g_glad_l_before_2020_prep():
757
+ """
758
+ GLAD Landsat alerts before 2020 (combined from 2017-2020 inclusive).
759
+ Uses confidence bands with threshold >= 2 for confirmed alerts.
760
+ Note: 2015 and 2016 assets are not available in GEE.
761
+ Coverage: Tropics (30°N to 30°S).
762
+ """
763
+ # Load yearly assets and combine
764
+ glad_combined = (
765
+ ee.ImageCollection("projects/glad/alert/2017final")
766
+ .mosaic()
767
+ .select("conf17")
768
+ .addBands(
769
+ ee.ImageCollection("projects/glad/alert/2018final")
770
+ .mosaic()
771
+ .select("conf18")
772
+ )
773
+ .addBands(
774
+ ee.ImageCollection("projects/glad/alert/2019final")
775
+ .mosaic()
776
+ .select("conf19")
777
+ )
778
+ .addBands(
779
+ ee.ImageCollection("projects/glad/alert/2020final")
780
+ .mosaic()
781
+ .select("conf20")
782
+ )
783
+ )
784
+
785
+ # Combine alerts from all available years (confidence >= 2)
786
+ combined_alerts = (
787
+ glad_combined.select("conf17")
788
+ .gte(2)
789
+ .Or(glad_combined.select("conf18").gte(2))
790
+ .Or(glad_combined.select("conf19").gte(2))
791
+ .Or(glad_combined.select("conf20").gte(2))
792
+ )
793
+
794
+ return combined_alerts.rename("GLAD-L_before_2020").selfMask()
795
+
796
+
797
+ # GLAD-L timeseries - multiband image with one band per year
798
+ def g_glad_l_year_prep():
799
+ """
800
+ GLAD Landsat alerts per year as multiband image.
801
+ Each band is binary (1 = alert with confidence >= 2).
802
+ Coverage: Entire tropics (30°N to 30°S) from January 1, 2018 to present,
803
+ and from 2017 to present for select countries in the Amazon,
804
+ Congo Basin, and insular Southeast Asia.
805
+ Note: 2015 and 2016 assets are not available in GEE.
806
+ Note: 2024 data is not available.
807
+ Includes years from 2017 onwards.
808
+ """
809
+ # Build multiband image with all available years
810
+ # Years 2017-2023 use YYYYfinal assets, 2025+ use UpdResult
811
+ # Note: 2015final and 2016final assets do not exist in GEE
812
+ img_stack = (
813
+ # 2017
814
+ ee.ImageCollection("projects/glad/alert/2017final")
815
+ .mosaic()
816
+ .select("conf17")
817
+ .gte(2)
818
+ .rename("GLAD-L_year_2017")
819
+ .selfMask()
820
+ # 2018
821
+ .addBands(
822
+ ee.ImageCollection("projects/glad/alert/2018final")
823
+ .mosaic()
824
+ .select("conf18")
825
+ .gte(2)
826
+ .rename("GLAD-L_year_2018")
827
+ .selfMask()
828
+ )
829
+ # 2019
830
+ .addBands(
831
+ ee.ImageCollection("projects/glad/alert/2019final")
832
+ .mosaic()
833
+ .select("conf19")
834
+ .gte(2)
835
+ .rename("GLAD-L_year_2019")
836
+ .selfMask()
837
+ )
838
+ # 2020
839
+ .addBands(
840
+ ee.ImageCollection("projects/glad/alert/2020final")
841
+ .mosaic()
842
+ .select("conf20")
843
+ .gte(2)
844
+ .rename("GLAD-L_year_2020")
845
+ .selfMask()
846
+ )
847
+ # 2021
848
+ .addBands(
849
+ ee.ImageCollection("projects/glad/alert/2021final")
850
+ .mosaic()
851
+ .select("conf21")
852
+ .gte(2)
853
+ .rename("GLAD-L_year_2021")
854
+ .selfMask()
855
+ )
856
+ # 2022
857
+ .addBands(
858
+ ee.ImageCollection("projects/glad/alert/2022final")
859
+ .mosaic()
860
+ .select("conf22")
861
+ .gte(2)
862
+ .rename("GLAD-L_year_2022")
863
+ .selfMask()
864
+ )
865
+ # 2023
866
+ .addBands(
867
+ ee.ImageCollection("projects/glad/alert/2023final")
868
+ .mosaic()
869
+ .select("conf23")
870
+ .gte(2)
871
+ .rename("GLAD-L_year_2023")
872
+ .selfMask()
873
+ )
874
+ # 2024 NOT AVAILABLE
875
+ # 2025
876
+ .addBands(
877
+ ee.ImageCollection("projects/glad/alert/UpdResult")
878
+ .mosaic()
879
+ .select("conf25")
880
+ .gte(2)
881
+ .rename("GLAD-L_year_2025")
882
+ .selfMask()
883
+ )
884
+ # 2026
885
+ .addBands(
886
+ ee.ImageCollection("projects/glad/alert/UpdResult")
887
+ .mosaic()
888
+ .select("conf26")
889
+ .gte(2)
890
+ .rename("GLAD-L_year_2026")
891
+ .selfMask()
892
+ )
893
+ )
894
+
895
+ return img_stack
896
+
897
+
898
+ # GLAD-S2 (GLAD Sentinel-2) Alerts
899
+ # GLAD-S2_after_2020 (combined alerts from 2021 to current year)
900
+ def g_glad_s2_after_2020_prep():
901
+ """
902
+ GLAD Sentinel-2 alerts after 2020 (filtered and combined from 2021 onwards - original data starts 2019).
903
+ Uses alert band with threshold >= 2 for confirmed alerts.
904
+ Coverage: Primary humid tropical forest within Amazon basin region.
905
+ https://glad.umd.edu/dataset/glad-forest-alerts
906
+ """
907
+ col = "projects/glad/S2alert"
908
+ s2alert = ee.Image(col + "/alert")
909
+ alert_date = ee.Image(col + "/alertDate")
910
+
911
+ # Date encoding: days since 2019-01-01
912
+ # 2020-12-31 = 730 days (end of 2020)
913
+ days_end_2020 = 730
914
+
915
+ # Filter alerts after 2020 with confidence >= 2
916
+ # - alert: confidence band (0-4, where 4 is highest confidence)
917
+ alerts_after_2020 = s2alert.gte(2).And(alert_date.gt(days_end_2020))
918
+
919
+ return alerts_after_2020.rename("GLAD-S2_after_2020").selfMask()
920
+
921
+
922
+ # GLAD-S2_before_2020 (combined alerts from 2019 to 2020)
923
+ def g_glad_s2_before_2020_prep():
924
+ """
925
+ GLAD Sentinel-2 alerts before 2020 (from 2019-01-01 to 2020-12-31 inclusive).
926
+ Uses alert band with threshold >= 2 for confirmed alerts.
927
+ Coverage: Primary humid tropical forest within Amazon basin region.
928
+ Note: Data starts from 2019.
929
+ """
930
+ col = "projects/glad/S2alert"
931
+ s2alert = ee.Image(col + "/alert")
932
+ alert_date = ee.Image(col + "/alertDate")
933
+
934
+ # Date encoding: days since 2019-01-01
935
+ # 2019-01-01 = 0, 2020-12-31 = 730 days
936
+ days_end_2020 = 730
937
+
938
+ # Filter alerts up to end of 2020 with confidence >= 2
939
+ alerts_before_2020 = s2alert.gte(2).And(alert_date.lte(days_end_2020))
940
+
941
+ return alerts_before_2020.rename("GLAD-S2_before_2020").selfMask()
942
+
943
+
944
+ # GLAD-S2 timeseries - multiband image with one band per year
945
+ def g_glad_s2_year_prep():
946
+ """
947
+ GLAD Sentinel-2 alerts per year as multiband image.
948
+ Each band is binary (1 = alert with confidence >= 2).
949
+ Coverage: Primary humid tropical forest areas of South America
950
+ from January 2019 to present.
951
+ Date encoding: days since 2019-01-01.
952
+ Includes years from 2019 onwards.
953
+ """
954
+ col = "projects/glad/S2alert"
955
+ s2alert = ee.Image(col + "/alert")
956
+ alert_date = ee.Image(col + "/alertDate")
957
+
958
+ # Confidence threshold for confirmed alerts
959
+ confirmed = s2alert.gte(2)
960
+
961
+ # Date encoding: days since 2019-01-01
962
+ # Year boundaries (days since 2019-01-01):
963
+ # 2019-01-01 = 0, 2020-01-01 = 365, 2021-01-01 = 731, 2022-01-01 = 1096
964
+ # 2023-01-01 = 1461, 2024-01-01 = 1827, 2025-01-01 = 2192, 2026-01-01 = 2557
965
+ ref_date = ee.Date("2019-01-01")
966
+
967
+ # Build multiband image with available years (data starts 2019)
968
+ start_year = 2019
969
+ end_year = CURRENT_YEAR
970
+
971
+ # Create first band (2019)
972
+ first_year = ee.Number(start_year)
973
+ first_start_days = ee.Date.fromYMD(first_year, 1, 1).difference(ref_date, "day")
974
+ first_end_days = ee.Date.fromYMD(first_year.add(1), 1, 1).difference(
975
+ ref_date, "day"
976
+ )
977
+ first_year_mask = alert_date.gte(first_start_days).And(
978
+ alert_date.lt(first_end_days)
979
+ )
980
+ first_band_name = ee.String("GLAD-S2_year_").cat(first_year.format("%d"))
981
+ first_band = (
982
+ confirmed.updateMask(first_year_mask).rename(first_band_name).selfMask()
983
+ )
984
+
985
+ # Server-side iteration to add remaining years
986
+ years = ee.List.sequence(start_year + 1, end_year)
987
+
988
+ def add_year_band(year, img_stack):
989
+ year_num = ee.Number(year)
990
+ start_days = ee.Date.fromYMD(year_num, 1, 1).difference(ref_date, "day")
991
+ end_days = ee.Date.fromYMD(year_num.add(1), 1, 1).difference(ref_date, "day")
992
+ year_mask = alert_date.gte(start_days).And(alert_date.lt(end_days))
993
+ band_name = ee.String("GLAD-S2_year_").cat(year_num.format("%d"))
994
+ year_band = confirmed.updateMask(year_mask).rename(band_name).selfMask()
995
+ return ee.Image(img_stack).addBands(year_band)
996
+
997
+ img_stack = ee.Image(years.iterate(add_year_band, first_band))
998
+
999
+ return img_stack
1000
+
1001
+
1002
+ #### disturbances combined (split into before and after 2020)
606
1003
 
607
1004
  # TMF_deg_before_2020
608
1005
  def g_tmf_deg_before_2020_prep():
@@ -2,68 +2,68 @@ name,order,ISO2_code,theme,theme_timber,use_for_risk,use_for_risk_timber,exclude
2
2
  EUFO_2020,10,,treecover,naturally_reg_2020,1,1,0,float32,1,0,g_jrc_gfc_2020_prep
3
3
  GLAD_Primary,20,,treecover,primary,1,1,0,float32,1,0,g_glad_pht_prep
4
4
  TMF_undist,30,,treecover,primary,1,1,0,float32,1,0,g_jrc_tmf_undisturbed_prep
5
- GFC_TC_2020,50,,treecover,naturally_reg_2020,0,0,0,float32,1,0,g_glad_gfc_10pc_prep
6
- Forest_FDaP,60,,treecover,naturally_reg_2020,1,1,0,float32,1,0,g_glad_gfc_10pc_prep
7
- ESA_TC_2020,70,,treecover,naturally_reg_2020,0,0,0,float32,1,0,g_esa_worldcover_trees_prep
8
- TMF_plant,80,,commodities,NA,1,1,0,float32,1,0,g_jrc_tmf_plantation_prep
9
- Oil_palm_Descals,90,,commodities,NA,1,1,0,float32,1,0,g_creaf_descals_palm_prep
10
- Oil_palm_FDaP,100,,commodities,NA,1,1,0,float32,1,0,g_fdap_palm_prep
11
- Coffee_FDaP,101,,commodities,NA,1,1,0,float32,1,0,g_fdap_coffee_prep
5
+ GFC_TC_2020,40,,treecover,naturally_reg_2020,0,0,0,float32,1,0,g_glad_gfc_10pc_prep
6
+ Forest_FDaP,50,,treecover,naturally_reg_2020,1,1,0,float32,1,0,g_glad_gfc_10pc_prep
7
+ ESA_TC_2020,60,,treecover,naturally_reg_2020,0,0,0,float32,1,0,g_esa_worldcover_trees_prep
8
+ TMF_plant,70,,commodities,NA,1,1,0,float32,1,0,g_jrc_tmf_plantation_prep
9
+ Oil_palm_Descals,80,,commodities,NA,1,1,0,float32,1,0,g_creaf_descals_palm_prep
10
+ Oil_palm_FDaP,90,,commodities,NA,1,1,0,float32,1,0,g_fdap_palm_prep
11
+ Coffee_FDaP,100,,commodities,NA,1,1,0,float32,1,0,g_fdap_coffee_prep
12
12
  Cocoa_FDaP,110,,commodities,NA,1,1,0,float32,1,0,g_fdap_cocoa_prep
13
13
  Cocoa_ETH,120,,commodities,NA,1,1,0,float32,1,0,g_eth_kalischek_cocoa_prep
14
- Rubber_FDaP,140,,commodities,NA,1,1,0,float32,1,0,g_fdap_rubber_prep
15
- Rubber_RBGE,150,,commodities,NA,1,1,0,float32,1,0,g_rbge_rubber_prep
16
- Soy_Song_2020,160,,commodities,NA,1,1,0,float32,1,0,g_soy_song_2020_prep
17
- TMF_def_2000,180,,disturbance_before,NA,0,0,0,float32,1,0,g_tmf_def_per_year_prep
18
- TMF_def_2001,190,,disturbance_before,NA,0,0,0,float32,1,0,g_tmf_def_per_year_prep
19
- TMF_def_2002,200,,disturbance_before,NA,0,0,0,float32,1,0,g_tmf_def_per_year_prep
20
- TMF_def_2003,210,,disturbance_before,NA,0,0,0,float32,1,0,g_tmf_def_per_year_prep
21
- TMF_def_2004,220,,disturbance_before,NA,0,0,0,float32,1,0,g_tmf_def_per_year_prep
22
- TMF_def_2005,230,,disturbance_before,NA,0,0,0,float32,1,0,g_tmf_def_per_year_prep
23
- TMF_def_2006,240,,disturbance_before,NA,0,0,0,float32,1,0,g_tmf_def_per_year_prep
24
- TMF_def_2007,250,,disturbance_before,NA,0,0,0,float32,1,0,g_tmf_def_per_year_prep
25
- TMF_def_2008,260,,disturbance_before,NA,0,0,0,float32,1,0,g_tmf_def_per_year_prep
26
- TMF_def_2009,270,,disturbance_before,NA,0,0,0,float32,1,0,g_tmf_def_per_year_prep
27
- TMF_def_2010,280,,disturbance_before,NA,0,0,0,float32,1,0,g_tmf_def_per_year_prep
28
- TMF_def_2011,290,,disturbance_before,NA,0,0,0,float32,1,0,g_tmf_def_per_year_prep
29
- TMF_def_2012,300,,disturbance_before,NA,0,0,0,float32,1,0,g_tmf_def_per_year_prep
30
- TMF_def_2013,310,,disturbance_before,NA,0,0,0,float32,1,0,g_tmf_def_per_year_prep
31
- TMF_def_2014,320,,disturbance_before,NA,0,0,0,float32,1,0,g_tmf_def_per_year_prep
32
- TMF_def_2015,330,,disturbance_before,NA,0,0,0,float32,1,0,g_tmf_def_per_year_prep
33
- TMF_def_2016,340,,disturbance_before,NA,0,0,0,float32,1,0,g_tmf_def_per_year_prep
34
- TMF_def_2017,350,,disturbance_before,NA,0,0,0,float32,1,0,g_tmf_def_per_year_prep
35
- TMF_def_2018,360,,disturbance_before,NA,0,0,0,float32,1,0,g_tmf_def_per_year_prep
36
- TMF_def_2019,370,,disturbance_before,NA,0,0,0,float32,1,0,g_tmf_def_per_year_prep
37
- TMF_def_2020,380,,disturbance_before,NA,0,0,0,float32,1,0,g_tmf_def_per_year_prep
38
- TMF_def_2021,390,,disturbance_before,NA,0,0,0,float32,1,0,g_tmf_def_per_year_prep
39
- TMF_def_2022,400,,disturbance_before,NA,0,0,0,float32,1,0,g_tmf_def_per_year_prep
40
- TMF_def_2023,410,,disturbance_before,NA,0,0,0,float32,1,0,g_tmf_def_per_year_prep
41
- TMF_def_2024,411,,disturbance_before,NA,0,0,0,float32,1,0,g_tmf_def_per_year_prep
42
- TMF_deg_2000,420,,disturbance_before,NA,0,0,0,float32,1,0,g_tmf_deg_per_year_prep
43
- TMF_deg_2001,430,,disturbance_before,NA,0,0,0,float32,1,0,g_tmf_deg_per_year_prep
44
- TMF_deg_2002,440,,disturbance_before,NA,0,0,0,float32,1,0,g_tmf_deg_per_year_prep
45
- TMF_deg_2003,450,,disturbance_before,NA,0,0,0,float32,1,0,g_tmf_deg_per_year_prep
46
- TMF_deg_2004,460,,disturbance_before,NA,0,0,0,float32,1,0,g_tmf_deg_per_year_prep
47
- TMF_deg_2005,470,,disturbance_before,NA,0,0,0,float32,1,0,g_tmf_deg_per_year_prep
48
- TMF_deg_2006,480,,disturbance_before,NA,0,0,0,float32,1,0,g_tmf_deg_per_year_prep
49
- TMF_deg_2007,490,,disturbance_before,NA,0,0,0,float32,1,0,g_tmf_deg_per_year_prep
50
- TMF_deg_2008,500,,disturbance_before,NA,0,0,0,float32,1,0,g_tmf_deg_per_year_prep
51
- TMF_deg_2009,510,,disturbance_before,NA,0,0,0,float32,1,0,g_tmf_deg_per_year_prep
52
- TMF_deg_2010,520,,disturbance_before,NA,0,0,0,float32,1,0,g_tmf_deg_per_year_prep
53
- TMF_deg_2011,530,,disturbance_before,NA,0,0,0,float32,1,0,g_tmf_deg_per_year_prep
54
- TMF_deg_2012,540,,disturbance_before,NA,0,0,0,float32,1,0,g_tmf_deg_per_year_prep
55
- TMF_deg_2013,550,,disturbance_before,NA,0,0,0,float32,1,0,g_tmf_deg_per_year_prep
56
- TMF_deg_2014,560,,disturbance_before,NA,0,0,0,float32,1,0,g_tmf_deg_per_year_prep
57
- TMF_deg_2015,570,,disturbance_before,NA,0,0,0,float32,1,0,g_tmf_deg_per_year_prep
58
- TMF_deg_2016,580,,disturbance_before,NA,0,0,0,float32,1,0,g_tmf_deg_per_year_prep
59
- TMF_deg_2017,590,,disturbance_before,NA,0,0,0,float32,1,0,g_tmf_deg_per_year_prep
60
- TMF_deg_2018,600,,disturbance_before,NA,0,0,0,float32,1,0,g_tmf_deg_per_year_prep
61
- TMF_deg_2019,610,,disturbance_before,NA,0,0,0,float32,1,0,g_tmf_deg_per_year_prep
62
- TMF_deg_2020,620,,disturbance_before,NA,0,0,0,float32,1,0,g_tmf_deg_per_year_prep
63
- TMF_deg_2021,630,,disturbance_after,NA,0,0,0,float32,1,0,g_tmf_deg_per_year_prep
64
- TMF_deg_2022,640,,disturbance_after,NA,0,0,0,float32,1,0,g_tmf_deg_per_year_prep
65
- TMF_deg_2023,650,,disturbance_after,NA,0,0,0,float32,1,0,g_tmf_deg_per_year_prep
66
- TMF_deg_2024,651,,disturbance_after,NA,0,0,0,float32,1,0,g_tmf_deg_per_year_prep
14
+ Rubber_FDaP,130,,commodities,NA,1,1,0,float32,1,0,g_fdap_rubber_prep
15
+ Rubber_RBGE,140,,commodities,NA,1,1,0,float32,1,0,g_rbge_rubber_prep
16
+ Soy_Song_2020,150,,commodities,NA,1,1,0,float32,1,0,g_soy_song_2020_prep
17
+ TMF_def_2000,160,,disturbance_before,NA,0,0,0,float32,1,0,g_tmf_def_per_year_prep
18
+ TMF_def_2001,170,,disturbance_before,NA,0,0,0,float32,1,0,g_tmf_def_per_year_prep
19
+ TMF_def_2002,180,,disturbance_before,NA,0,0,0,float32,1,0,g_tmf_def_per_year_prep
20
+ TMF_def_2003,190,,disturbance_before,NA,0,0,0,float32,1,0,g_tmf_def_per_year_prep
21
+ TMF_def_2004,200,,disturbance_before,NA,0,0,0,float32,1,0,g_tmf_def_per_year_prep
22
+ TMF_def_2005,210,,disturbance_before,NA,0,0,0,float32,1,0,g_tmf_def_per_year_prep
23
+ TMF_def_2006,220,,disturbance_before,NA,0,0,0,float32,1,0,g_tmf_def_per_year_prep
24
+ TMF_def_2007,230,,disturbance_before,NA,0,0,0,float32,1,0,g_tmf_def_per_year_prep
25
+ TMF_def_2008,240,,disturbance_before,NA,0,0,0,float32,1,0,g_tmf_def_per_year_prep
26
+ TMF_def_2009,250,,disturbance_before,NA,0,0,0,float32,1,0,g_tmf_def_per_year_prep
27
+ TMF_def_2010,260,,disturbance_before,NA,0,0,0,float32,1,0,g_tmf_def_per_year_prep
28
+ TMF_def_2011,270,,disturbance_before,NA,0,0,0,float32,1,0,g_tmf_def_per_year_prep
29
+ TMF_def_2012,280,,disturbance_before,NA,0,0,0,float32,1,0,g_tmf_def_per_year_prep
30
+ TMF_def_2013,290,,disturbance_before,NA,0,0,0,float32,1,0,g_tmf_def_per_year_prep
31
+ TMF_def_2014,300,,disturbance_before,NA,0,0,0,float32,1,0,g_tmf_def_per_year_prep
32
+ TMF_def_2015,310,,disturbance_before,NA,0,0,0,float32,1,0,g_tmf_def_per_year_prep
33
+ TMF_def_2016,320,,disturbance_before,NA,0,0,0,float32,1,0,g_tmf_def_per_year_prep
34
+ TMF_def_2017,330,,disturbance_before,NA,0,0,0,float32,1,0,g_tmf_def_per_year_prep
35
+ TMF_def_2018,340,,disturbance_before,NA,0,0,0,float32,1,0,g_tmf_def_per_year_prep
36
+ TMF_def_2019,350,,disturbance_before,NA,0,0,0,float32,1,0,g_tmf_def_per_year_prep
37
+ TMF_def_2020,360,,disturbance_before,NA,0,0,0,float32,1,0,g_tmf_def_per_year_prep
38
+ TMF_def_2021,370,,disturbance_before,NA,0,0,0,float32,1,0,g_tmf_def_per_year_prep
39
+ TMF_def_2022,380,,disturbance_before,NA,0,0,0,float32,1,0,g_tmf_def_per_year_prep
40
+ TMF_def_2023,390,,disturbance_before,NA,0,0,0,float32,1,0,g_tmf_def_per_year_prep
41
+ TMF_def_2024,400,,disturbance_before,NA,0,0,0,float32,1,0,g_tmf_def_per_year_prep
42
+ TMF_deg_2000,410,,disturbance_before,NA,0,0,0,float32,1,0,g_tmf_deg_per_year_prep
43
+ TMF_deg_2001,420,,disturbance_before,NA,0,0,0,float32,1,0,g_tmf_deg_per_year_prep
44
+ TMF_deg_2002,430,,disturbance_before,NA,0,0,0,float32,1,0,g_tmf_deg_per_year_prep
45
+ TMF_deg_2003,440,,disturbance_before,NA,0,0,0,float32,1,0,g_tmf_deg_per_year_prep
46
+ TMF_deg_2004,450,,disturbance_before,NA,0,0,0,float32,1,0,g_tmf_deg_per_year_prep
47
+ TMF_deg_2005,460,,disturbance_before,NA,0,0,0,float32,1,0,g_tmf_deg_per_year_prep
48
+ TMF_deg_2006,470,,disturbance_before,NA,0,0,0,float32,1,0,g_tmf_deg_per_year_prep
49
+ TMF_deg_2007,480,,disturbance_before,NA,0,0,0,float32,1,0,g_tmf_deg_per_year_prep
50
+ TMF_deg_2008,490,,disturbance_before,NA,0,0,0,float32,1,0,g_tmf_deg_per_year_prep
51
+ TMF_deg_2009,500,,disturbance_before,NA,0,0,0,float32,1,0,g_tmf_deg_per_year_prep
52
+ TMF_deg_2010,510,,disturbance_before,NA,0,0,0,float32,1,0,g_tmf_deg_per_year_prep
53
+ TMF_deg_2011,520,,disturbance_before,NA,0,0,0,float32,1,0,g_tmf_deg_per_year_prep
54
+ TMF_deg_2012,530,,disturbance_before,NA,0,0,0,float32,1,0,g_tmf_deg_per_year_prep
55
+ TMF_deg_2013,540,,disturbance_before,NA,0,0,0,float32,1,0,g_tmf_deg_per_year_prep
56
+ TMF_deg_2014,550,,disturbance_before,NA,0,0,0,float32,1,0,g_tmf_deg_per_year_prep
57
+ TMF_deg_2015,560,,disturbance_before,NA,0,0,0,float32,1,0,g_tmf_deg_per_year_prep
58
+ TMF_deg_2016,570,,disturbance_before,NA,0,0,0,float32,1,0,g_tmf_deg_per_year_prep
59
+ TMF_deg_2017,580,,disturbance_before,NA,0,0,0,float32,1,0,g_tmf_deg_per_year_prep
60
+ TMF_deg_2018,590,,disturbance_before,NA,0,0,0,float32,1,0,g_tmf_deg_per_year_prep
61
+ TMF_deg_2019,600,,disturbance_before,NA,0,0,0,float32,1,0,g_tmf_deg_per_year_prep
62
+ TMF_deg_2020,610,,disturbance_before,NA,0,0,0,float32,1,0,g_tmf_deg_per_year_prep
63
+ TMF_deg_2021,620,,disturbance_after,NA,0,0,0,float32,1,0,g_tmf_deg_per_year_prep
64
+ TMF_deg_2022,630,,disturbance_after,NA,0,0,0,float32,1,0,g_tmf_deg_per_year_prep
65
+ TMF_deg_2023,640,,disturbance_after,NA,0,0,0,float32,1,0,g_tmf_deg_per_year_prep
66
+ TMF_deg_2024,650,,disturbance_after,NA,0,0,0,float32,1,0,g_tmf_deg_per_year_prep
67
67
  GFC_loss_year_2001,660,,disturbance_before,NA,0,0,0,float32,1,0,g_glad_gfc_loss_per_year_prep
68
68
  GFC_loss_year_2002,670,,disturbance_before,NA,0,0,0,float32,1,0,g_glad_gfc_loss_per_year_prep
69
69
  GFC_loss_year_2003,680,,disturbance_before,NA,0,0,0,float32,1,0,g_glad_gfc_loss_per_year_prep
@@ -87,114 +87,137 @@ GFC_loss_year_2020,850,,disturbance_before,NA,0,0,0,float32,1,0,g_glad_gfc_loss_
87
87
  GFC_loss_year_2021,860,,disturbance_after,NA,0,0,0,float32,1,0,g_glad_gfc_loss_per_year_prep
88
88
  GFC_loss_year_2022,870,,disturbance_after,NA,0,0,0,float32,1,0,g_glad_gfc_loss_per_year_prep
89
89
  GFC_loss_year_2023,880,,disturbance_after,NA,0,0,0,float32,1,0,g_glad_gfc_loss_per_year_prep
90
- GFC_loss_year_2024,881,,disturbance_after,NA,0,0,0,float32,1,0,g_glad_gfc_loss_per_year_prep
91
- RADD_year_2019,890,,disturbance_before,NA,0,0,0,float32,1,0,g_radd_year_prep
92
- RADD_year_2020,900,,disturbance_before,NA,0,0,0,float32,1,0,g_radd_year_prep
93
- RADD_year_2021,910,,disturbance_after,NA,0,0,0,float32,1,0,g_radd_year_prep
94
- RADD_year_2022,920,,disturbance_after,NA,0,0,0,float32,1,0,g_radd_year_prep
95
- RADD_year_2023,930,,disturbance_after,NA,0,0,0,float32,1,0,g_radd_year_prep
96
- RADD_year_2024,940,,disturbance_after,NA,0,0,0,float32,1,0,g_radd_year_prep
97
- RADD_year_2025,941,,disturbance_after,NA,0,0,0,float32,1,0,g_radd_year_prep
98
- DIST_year_2024,945,,disturbance_after,NA,0,0,1,float32,1,0,g_glad_dist_year_prep
99
- DIST_year_2025,946,,disturbance_after,NA,0,0,1,float32,1,0,g_glad_dist_year_prep
100
- ESA_fire_2001,950,,disturbance_before,NA,0,0,0,float32,1,0,g_esa_fire_prep
101
- ESA_fire_2002,960,,disturbance_before,NA,0,0,0,float32,1,0,g_esa_fire_prep
102
- ESA_fire_2003,970,,disturbance_before,NA,0,0,0,float32,1,0,g_esa_fire_prep
103
- ESA_fire_2004,980,,disturbance_before,NA,0,0,0,float32,1,0,g_esa_fire_prep
104
- ESA_fire_2005,990,,disturbance_before,NA,0,0,0,float32,1,0,g_esa_fire_prep
105
- ESA_fire_2006,1000,,disturbance_before,NA,0,0,0,float32,1,0,g_esa_fire_prep
106
- ESA_fire_2007,1010,,disturbance_before,NA,0,0,0,float32,1,0,g_esa_fire_prep
107
- ESA_fire_2008,1020,,disturbance_before,NA,0,0,0,float32,1,0,g_esa_fire_prep
108
- ESA_fire_2009,1030,,disturbance_before,NA,0,0,0,float32,1,0,g_esa_fire_prep
109
- ESA_fire_2010,1040,,disturbance_before,NA,0,0,0,float32,1,0,g_esa_fire_prep
110
- ESA_fire_2011,1050,,disturbance_before,NA,0,0,0,float32,1,0,g_esa_fire_prep
111
- ESA_fire_2012,1060,,disturbance_before,NA,0,0,0,float32,1,0,g_esa_fire_prep
112
- ESA_fire_2013,1070,,disturbance_before,NA,0,0,0,float32,1,0,g_esa_fire_prep
113
- ESA_fire_2014,1080,,disturbance_before,NA,0,0,0,float32,1,0,g_esa_fire_prep
114
- ESA_fire_2015,1090,,disturbance_before,NA,0,0,0,float32,1,0,g_esa_fire_prep
115
- ESA_fire_2016,1100,,disturbance_before,NA,0,0,0,float32,1,0,g_esa_fire_prep
116
- ESA_fire_2017,1110,,disturbance_before,NA,0,0,0,float32,1,0,g_esa_fire_prep
117
- ESA_fire_2018,1120,,disturbance_before,NA,0,0,0,float32,1,0,g_esa_fire_prep
118
- ESA_fire_2019,1130,,disturbance_before,NA,0,0,0,float32,1,0,g_esa_fire_prep
119
- ESA_fire_2020,1140,,disturbance_before,NA,0,0,0,float32,1,0,g_esa_fire_prep
120
- MODIS_fire_2000,1150,,disturbance_before,NA,0,0,0,float32,1,0,g_modis_fire_prep
121
- MODIS_fire_2001,1160,,disturbance_before,NA,0,0,0,float32,1,0,g_modis_fire_prep
122
- MODIS_fire_2002,1170,,disturbance_before,NA,0,0,0,float32,1,0,g_modis_fire_prep
123
- MODIS_fire_2003,1180,,disturbance_before,NA,0,0,0,float32,1,0,g_modis_fire_prep
124
- MODIS_fire_2004,1190,,disturbance_before,NA,0,0,0,float32,1,0,g_modis_fire_prep
125
- MODIS_fire_2005,1200,,disturbance_before,NA,0,0,0,float32,1,0,g_modis_fire_prep
126
- MODIS_fire_2006,1210,,disturbance_before,NA,0,0,0,float32,1,0,g_modis_fire_prep
127
- MODIS_fire_2007,1220,,disturbance_before,NA,0,0,0,float32,1,0,g_modis_fire_prep
128
- MODIS_fire_2008,1230,,disturbance_before,NA,0,0,0,float32,1,0,g_modis_fire_prep
129
- MODIS_fire_2009,1240,,disturbance_before,NA,0,0,0,float32,1,0,g_modis_fire_prep
130
- MODIS_fire_2010,1250,,disturbance_before,NA,0,0,0,float32,1,0,g_modis_fire_prep
131
- MODIS_fire_2011,1260,,disturbance_before,NA,0,0,0,float32,1,0,g_modis_fire_prep
132
- MODIS_fire_2012,1270,,disturbance_before,NA,0,0,0,float32,1,0,g_modis_fire_prep
133
- MODIS_fire_2013,1280,,disturbance_before,NA,0,0,0,float32,1,0,g_modis_fire_prep
134
- MODIS_fire_2014,1290,,disturbance_before,NA,0,0,0,float32,1,0,g_modis_fire_prep
135
- MODIS_fire_2015,1300,,disturbance_before,NA,0,0,0,float32,1,0,g_modis_fire_prep
136
- MODIS_fire_2016,1310,,disturbance_before,NA,0,0,0,float32,1,0,g_modis_fire_prep
137
- MODIS_fire_2017,1320,,disturbance_before,NA,0,0,0,float32,1,0,g_modis_fire_prep
138
- MODIS_fire_2018,1330,,disturbance_before,NA,0,0,0,float32,1,0,g_modis_fire_prep
139
- MODIS_fire_2019,1340,,disturbance_before,NA,0,0,0,float32,1,0,g_modis_fire_prep
140
- MODIS_fire_2020,1350,,disturbance_before,NA,0,0,0,float32,1,0,g_modis_fire_prep
141
- MODIS_fire_2021,1360,,disturbance_after,NA,0,0,0,float32,1,0,g_modis_fire_prep
142
- MODIS_fire_2022,1370,,disturbance_after,NA,0,0,0,float32,1,0,g_modis_fire_prep
143
- MODIS_fire_2023,1380,,disturbance_after,NA,0,0,0,float32,1,0,g_modis_fire_prep
144
- MODIS_fire_2024,1390,,disturbance_after,NA,0,0,0,float32,1,0,g_modis_fire_prep
145
- MODIS_fire_2025,1391,,disturbance_after,NA,0,0,0,float32,1,0,g_modis_fire_prep
146
- TMF_deg_before_2020,1400,,disturbance_before,NA,1,1,0,float32,1,0,g_tmf_deg_before_2020_prep
147
- TMF_def_before_2020,1410,,disturbance_before,NA,1,1,0,float32,1,0,g_tmf_def_before_2020_prep
148
- GFC_loss_before_2020,1420,,disturbance_before,NA,1,1,0,float32,1,0,g_glad_gfc_loss_before_2020_prep
149
- ESA_fire_before_2020,1430,,disturbance_before,NA,1,1,0,float32,1,0,g_esa_fire_before_2020_prep
150
- MODIS_fire_before_2020,1440,,disturbance_before,NA,1,1,0,float32,1,0,g_modis_fire_before_2020_prep
151
- RADD_before_2020,1450,,disturbance_before,NA,1,1,0,float32,1,0,g_radd_before_2020_prep
152
- TMF_deg_after_2020,1460,,disturbance_after,NA,1,1,0,float32,1,0,g_tmf_deg_after_2020_prep
153
- TMF_def_after_2020,1470,,disturbance_after,NA,1,1,0,float32,1,0,g_tmf_def_after_2020_prep
154
- GFC_loss_after_2020,1480,,disturbance_after,NA,1,1,0,float32,1,0,g_glad_gfc_loss_after_2020_prep
155
- MODIS_fire_after_2020,1490,,disturbance_after,NA,1,1,0,float32,1,0,g_modis_fire_after_2020_prep
156
- RADD_after_2020,1500,,disturbance_after,NA,1,1,0,float32,1,0,g_radd_after_2020_prep
157
- DIST_after_2020,1600,,disturbance_after,NA,1,1,1,float32,1,0,g_glad_dist_after_2020_prep
158
- GFT_primary,1700,,NA,primary,0,1,0,float32,1,0,g_gft_primary_prep
159
- IFL_2020,1710,,NA,primary,0,1,0,float32,1,0,g_ifl_2020_prep
160
- European_Primary_Forest,1720,,NA,primary,0,1,0,float32,1,0,g_epfd_prep
161
- GFT_naturally_regenerating,1800,,NA,naturally_reg_2020,0,1,0,float32,1,0,g_gft_nat_reg_prep
162
- GFT_planted_plantation,1900,,NA,planted_plantation_2020,0,1,0,float32,1,0,g_gft_plantation_prep
163
- IIASA_planted_plantation,1910,,NA,planted_plantation_2020,0,1,0,float32,1,0,g_iiasa_planted_prep
164
- TMF_regrowth_2023,2000,,NA,treecover_after_2020,0,1,0,float32,1,0,g_tmf_regrowth_prep
165
- ESRI_2023_TC,2010,,NA,treecover_after_2020,0,1,0,float32,1,0,g_esri_2023_tc_prep
166
- Oil_palm_2023_FDaP,2100,,NA,agri_after_2020,0,1,0,float32,1,0,g_fdap_palm_2023_prep
167
- Rubber_2023_FDaP,2110,,NA,agri_after_2020,0,1,0,float32,1,0,g_fdap_rubber_2023_prep
168
- Coffee_FDaP_2023,2111,,NA,agri_after_2020,0,1,0,float32,1,0,g_fdap_coffee_2023_prep
169
- Cocoa_2023_FDaP,2120,,NA,agri_after_2020,0,1,0,float32,1,0,g_fdap_cocoa_2023_prep
170
- ESRI_crop_gain_2020_2023,2130,,NA,agri_after_2020,0,1,0,float32,1,0,g_esri_2020_2023_crop_prep
171
- GFW_logging_before_2020,2200,,NA,logging_concession,0,1,0,float32,1,0,g_logging_concessions_prep
172
- nCO_ideam_forest_2020,2310,CO,treecover,NA,1,1,0,float32,1,0,nco_ideam_forest_2020_prep
173
- nCO_ideam_eufo_commission_2020,2320,CO,commodities,NA,1,1,0,float32,1,0,nco_ideam_eufo_commission_2020_prep
174
- nBR_INPE_TC_primary_forest_Amazon_2020,2400,BR,treecover,primary,1,1,0,float32,1,0,nbr_terraclass_amz20_primary_prep
175
- nBR_INPE_TC_secondary_forest_Amazon_2020,2401,BR,treecover,naturally_reg_2020,1,1,0,float32,1,0,nbr_terraclass_amz20_secondary_prep
176
- nBR_BFS_primary_forest_Pantanal_2020,2402,BR,treecover,primary,1,1,0,float32,1,0,nbr_bfs_ptn_f20_prep
177
- nBR_BFS_primary_forest_Caatinga_2020,2403,BR,treecover,primary,1,1,0,float32,1,0,nbr_bfs_caat_f20_prep
178
- nBR_BFS_primary_forest_AtlanticForest_2020,2404,BR,treecover,primary,1,1,0,float32,1,0,nbr_bfs_atlf_f20_prep
179
- nBR_BFS_primary_forest_Pampa_2020,2405,BR,treecover,primary,1,1,0,float32,1,0,nbr_bfs_pmp_f20_prep
180
- nBR_BFS_primary_and_secondary_forest_Cerrado_2020,2406,BR,treecover,naturally_reg_2020,1,1,0,float32,1,0,nbr_bfs_cer_f20_prep
181
- nBR_MapBiomas_col9_forest_Brazil_2020,2407,BR,treecover,naturally_reg_2020,1,1,0,float32,1,0,nbr_mapbiomasc9_f20_prep
182
- nBR_INPE_TCsilviculture_Amazon_2020,2408,BR,treecover,planted_plantation_2020,1,1,0,float32,1,0,nbr_terraclass_amz20_silv_prep
183
- nBR_INPE_TCsilviculture_Cerrado_2020,2409,BR,treecover,planted_plantation_2020,1,1,0,float32,1,0,nbr_terraclass_silv_cer20_prep
184
- nBR_MapBiomas_col9_silviculture_Brazil_2020,2410,BR,treecover,planted_plantation_2020,1,1,0,float32,1,0,nbr_mapbiomasc9_silv20_prep
185
- nBR_PRODES_deforestation_Brazil_before_2020,2411,BR,disturbance_before,NA,1,1,0,float32,1,0,nbr_prodes_before_2020_prep
186
- nBR_DETER_forestdegradation_Amazon_before_2020,2412,BR,disturbance_before,NA,1,1,0,float32,1,0,nbr_deter_amazon_before_2020_prep
187
- nBR_PRODES_deforestation_Brazil_after_2020,2413,BR,disturbance_after,NA,1,1,0,float32,1,0,nbr_prodes_after_2020_prep
188
- nBR_DETER_forestdegradation_Amazon_after_2020,2414,BR,disturbance_after,NA,1,1,0,float32,1,0,nbr_deter_amazon_after_2020_prep
189
- nBR_INPE_TCamz_cer_perennial_2020,2415,BR,commodities,NA,1,1,0,float32,1,0,nbr_terraclass_amz_cer20_pc_prep
190
- nBR_MapBiomas_col9_coffee_2020,2416,BR,commodities,NA,1,1,0,float32,1,0,nbr_mapbiomasc9_cof_prep
191
- nBR_MapBiomas_col9_palmoil_2020,2417,BR,commodities,NA,1,1,0,float32,1,0,nbr_mapbiomasc9_po_prep
192
- nBR_MapBiomas_col9_pc_2020,2418,BR,commodities,NA,1,1,0,float32,1,0,nbr_mapbiomasc9_pc_prep
193
- nBR_INPE_TCamz_cer_annual_2020,2419,BR,commodities,NA,1,1,0,float32,1,0,nbr_terraclass_amz_cer20_ac_prep
194
- nBR_MapBiomas_col9_soy_2020,2420,BR,commodities,NA,1,1,0,float32,1,0,nbr_mapbiomasc9_soy_prep
195
- nBR_MapBiomas_col9_annual_crops_2020,2421,BR,commodities,NA,1,1,0,float32,1,0,nbr_mapbiomasc9_ac_prep
196
- nBR_INPE_TCamz_pasture_2020,2422,BR,commodities,NA,1,1,0,float32,1,0,nbr_terraclass_amz20_pasture_prep
197
- nBR_INPE_TCcer_pasture_2020,2423,BR,commodities,NA,1,1,0,float32,1,0,nbr_terraclass_cer20_ac_prep
198
- nBR_MapBiomas_col9_pasture_2020,2424,BR,commodities,NA,1,1,0,float32,1,0,nbr_mapbiomasc9_pasture_prep
199
- nCI_Cocoa_bnetd,3000,CI,commodities,NA,1,1,0,float32,1,0,nci_ocs2020_prep
200
- nCM_Treecover_2020,3100,CM,treecover,NA,1,0,0,float32,1,0,ncm_treecover_2020_prep
90
+ GFC_loss_year_2024,890,,disturbance_after,NA,0,0,0,float32,1,0,g_glad_gfc_loss_per_year_prep
91
+ RADD_year_2019,900,,disturbance_before,NA,0,0,0,float32,1,0,g_radd_year_prep
92
+ RADD_year_2020,910,,disturbance_before,NA,0,0,0,float32,1,0,g_radd_year_prep
93
+ RADD_year_2021,920,,disturbance_after,NA,0,0,0,float32,1,0,g_radd_year_prep
94
+ RADD_year_2022,930,,disturbance_after,NA,0,0,0,float32,1,0,g_radd_year_prep
95
+ RADD_year_2023,940,,disturbance_after,NA,0,0,0,float32,1,0,g_radd_year_prep
96
+ RADD_year_2024,950,,disturbance_after,NA,0,0,0,float32,1,0,g_radd_year_prep
97
+ RADD_year_2025,960,,disturbance_after,NA,0,0,0,float32,1,0,g_radd_year_prep
98
+ RADD_year_2026,970,,disturbance_after,NA,0,0,0,float32,1,0,g_radd_year_prep
99
+ DIST_year_2024,980,,disturbance_after,NA,0,0,0,float32,1,0,g_glad_dist_year_prep
100
+ DIST_year_2025,990,,disturbance_after,NA,0,0,0,float32,1,0,g_glad_dist_year_prep
101
+ DIST_year_2026,1000,,disturbance_after,NA,0,0,0,float32,1,0,g_glad_dist_year_prep
102
+ GLAD-L_year_2017,1010,,disturbance_before,NA,0,0,0,float32,1,0,g_glad_l_year_prep
103
+ GLAD-L_year_2018,1040,,disturbance_before,NA,0,0,0,float32,1,0,g_glad_l_year_prep
104
+ GLAD-L_year_2019,1050,,disturbance_before,NA,0,0,0,float32,1,0,g_glad_l_year_prep
105
+ GLAD-L_year_2020,1060,,disturbance_before,NA,0,0,0,float32,1,0,g_glad_l_year_prep
106
+ GLAD-L_year_2021,1070,,disturbance_after,NA,0,0,0,float32,1,0,g_glad_l_year_prep
107
+ GLAD-L_year_2022,1080,,disturbance_after,NA,0,0,0,float32,1,0,g_glad_l_year_prep
108
+ GLAD-L_year_2023,1090,,disturbance_after,NA,0,0,0,float32,1,0,g_glad_l_year_prep
109
+ GLAD-L_year_2025,1100,,disturbance_after,NA,0,0,0,float32,1,0,g_glad_l_year_prep
110
+ GLAD-L_year_2026,1110,,disturbance_after,NA,0,0,0,float32,1,0,g_glad_l_year_prep
111
+ GLAD-S2_year_2019,1120,,disturbance_before,NA,0,0,0,float32,1,0,g_glad_s2_year_prep
112
+ GLAD-S2_year_2020,1130,,disturbance_before,NA,0,0,0,float32,1,0,g_glad_s2_year_prep
113
+ GLAD-S2_year_2021,1140,,disturbance_after,NA,0,0,0,float32,1,0,g_glad_s2_year_prep
114
+ GLAD-S2_year_2022,1150,,disturbance_after,NA,0,0,0,float32,1,0,g_glad_s2_year_prep
115
+ GLAD-S2_year_2023,1160,,disturbance_after,NA,0,0,0,float32,1,0,g_glad_s2_year_prep
116
+ GLAD-S2_year_2024,1170,,disturbance_after,NA,0,0,0,float32,1,0,g_glad_s2_year_prep
117
+ GLAD-S2_year_2025,1180,,disturbance_after,NA,0,0,0,float32,1,0,g_glad_s2_year_prep
118
+ GLAD-S2_year_2026,1190,,disturbance_after,NA,0,0,0,float32,1,0,g_glad_s2_year_prep
119
+ ESA_fire_2001,1200,,disturbance_before,NA,0,0,0,float32,1,0,g_esa_fire_prep
120
+ ESA_fire_2002,1210,,disturbance_before,NA,0,0,0,float32,1,0,g_esa_fire_prep
121
+ ESA_fire_2003,1220,,disturbance_before,NA,0,0,0,float32,1,0,g_esa_fire_prep
122
+ ESA_fire_2004,1230,,disturbance_before,NA,0,0,0,float32,1,0,g_esa_fire_prep
123
+ ESA_fire_2005,1240,,disturbance_before,NA,0,0,0,float32,1,0,g_esa_fire_prep
124
+ ESA_fire_2006,1250,,disturbance_before,NA,0,0,0,float32,1,0,g_esa_fire_prep
125
+ ESA_fire_2007,1260,,disturbance_before,NA,0,0,0,float32,1,0,g_esa_fire_prep
126
+ ESA_fire_2008,1270,,disturbance_before,NA,0,0,0,float32,1,0,g_esa_fire_prep
127
+ ESA_fire_2009,1280,,disturbance_before,NA,0,0,0,float32,1,0,g_esa_fire_prep
128
+ ESA_fire_2010,1290,,disturbance_before,NA,0,0,0,float32,1,0,g_esa_fire_prep
129
+ ESA_fire_2011,1300,,disturbance_before,NA,0,0,0,float32,1,0,g_esa_fire_prep
130
+ ESA_fire_2012,1310,,disturbance_before,NA,0,0,0,float32,1,0,g_esa_fire_prep
131
+ ESA_fire_2013,1320,,disturbance_before,NA,0,0,0,float32,1,0,g_esa_fire_prep
132
+ ESA_fire_2014,1330,,disturbance_before,NA,0,0,0,float32,1,0,g_esa_fire_prep
133
+ ESA_fire_2015,1340,,disturbance_before,NA,0,0,0,float32,1,0,g_esa_fire_prep
134
+ ESA_fire_2016,1350,,disturbance_before,NA,0,0,0,float32,1,0,g_esa_fire_prep
135
+ ESA_fire_2017,1360,,disturbance_before,NA,0,0,0,float32,1,0,g_esa_fire_prep
136
+ ESA_fire_2018,1370,,disturbance_before,NA,0,0,0,float32,1,0,g_esa_fire_prep
137
+ ESA_fire_2019,1380,,disturbance_before,NA,0,0,0,float32,1,0,g_esa_fire_prep
138
+ ESA_fire_2020,1390,,disturbance_before,NA,0,0,0,float32,1,0,g_esa_fire_prep
139
+ MODIS_fire_2000,1400,,disturbance_before,NA,0,0,0,float32,1,0,g_modis_fire_prep
140
+ MODIS_fire_2001,1410,,disturbance_before,NA,0,0,0,float32,1,0,g_modis_fire_prep
141
+ MODIS_fire_2002,1420,,disturbance_before,NA,0,0,0,float32,1,0,g_modis_fire_prep
142
+ MODIS_fire_2003,1430,,disturbance_before,NA,0,0,0,float32,1,0,g_modis_fire_prep
143
+ MODIS_fire_2004,1440,,disturbance_before,NA,0,0,0,float32,1,0,g_modis_fire_prep
144
+ MODIS_fire_2005,1450,,disturbance_before,NA,0,0,0,float32,1,0,g_modis_fire_prep
145
+ MODIS_fire_2006,1460,,disturbance_before,NA,0,0,0,float32,1,0,g_modis_fire_prep
146
+ MODIS_fire_2007,1470,,disturbance_before,NA,0,0,0,float32,1,0,g_modis_fire_prep
147
+ MODIS_fire_2008,1480,,disturbance_before,NA,0,0,0,float32,1,0,g_modis_fire_prep
148
+ MODIS_fire_2009,1490,,disturbance_before,NA,0,0,0,float32,1,0,g_modis_fire_prep
149
+ MODIS_fire_2010,1500,,disturbance_before,NA,0,0,0,float32,1,0,g_modis_fire_prep
150
+ MODIS_fire_2011,1510,,disturbance_before,NA,0,0,0,float32,1,0,g_modis_fire_prep
151
+ MODIS_fire_2012,1520,,disturbance_before,NA,0,0,0,float32,1,0,g_modis_fire_prep
152
+ MODIS_fire_2013,1530,,disturbance_before,NA,0,0,0,float32,1,0,g_modis_fire_prep
153
+ MODIS_fire_2014,1540,,disturbance_before,NA,0,0,0,float32,1,0,g_modis_fire_prep
154
+ MODIS_fire_2015,1550,,disturbance_before,NA,0,0,0,float32,1,0,g_modis_fire_prep
155
+ MODIS_fire_2016,1560,,disturbance_before,NA,0,0,0,float32,1,0,g_modis_fire_prep
156
+ MODIS_fire_2017,1570,,disturbance_before,NA,0,0,0,float32,1,0,g_modis_fire_prep
157
+ MODIS_fire_2018,1580,,disturbance_before,NA,0,0,0,float32,1,0,g_modis_fire_prep
158
+ MODIS_fire_2019,1590,,disturbance_before,NA,0,0,0,float32,1,0,g_modis_fire_prep
159
+ MODIS_fire_2020,1600,,disturbance_before,NA,0,0,0,float32,1,0,g_modis_fire_prep
160
+ MODIS_fire_2021,1610,,disturbance_after,NA,0,0,0,float32,1,0,g_modis_fire_prep
161
+ MODIS_fire_2022,1620,,disturbance_after,NA,0,0,0,float32,1,0,g_modis_fire_prep
162
+ MODIS_fire_2023,1630,,disturbance_after,NA,0,0,0,float32,1,0,g_modis_fire_prep
163
+ MODIS_fire_2024,1640,,disturbance_after,NA,0,0,0,float32,1,0,g_modis_fire_prep
164
+ MODIS_fire_2025,1650,,disturbance_after,NA,0,0,0,float32,1,0,g_modis_fire_prep
165
+ TMF_deg_before_2020,1660,,disturbance_before,NA,1,1,0,float32,1,0,g_tmf_deg_before_2020_prep
166
+ TMF_def_before_2020,1670,,disturbance_before,NA,1,1,0,float32,1,0,g_tmf_def_before_2020_prep
167
+ GFC_loss_before_2020,1680,,disturbance_before,NA,1,1,0,float32,1,0,g_glad_gfc_loss_before_2020_prep
168
+ ESA_fire_before_2020,1690,,disturbance_before,NA,0,1,0,float32,1,0,g_esa_fire_before_2020_prep
169
+ MODIS_fire_before_2020,1700,,disturbance_before,NA,0,1,0,float32,1,0,g_modis_fire_before_2020_prep
170
+ RADD_before_2020,1710,,disturbance_before,NA,1,1,0,float32,1,0,g_radd_before_2020_prep
171
+ GLAD-L_before_2020,1715,,disturbance_before,NA,1,1,0,float32,1,0,g_glad_l_before_2020_prep
172
+ GLAD-S2_before_2020,1718,,disturbance_before,NA,1,1,0,float32,1,0,g_glad_s2_before_2020_prep
173
+ TMF_deg_after_2020,1720,,disturbance_after,NA,1,1,0,float32,1,0,g_tmf_deg_after_2020_prep
174
+ TMF_def_after_2020,1730,,disturbance_after,NA,1,1,0,float32,1,0,g_tmf_def_after_2020_prep
175
+ GFC_loss_after_2020,1740,,disturbance_after,NA,1,1,0,float32,1,0,g_glad_gfc_loss_after_2020_prep
176
+ MODIS_fire_after_2020,1750,,disturbance_after,NA,0,1,0,float32,1,0,g_modis_fire_after_2020_prep
177
+ RADD_after_2020,1760,,disturbance_after,NA,1,1,0,float32,1,0,g_radd_after_2020_prep
178
+ DIST_after_2020,1770,,disturbance_after,NA,1,1,0,float32,1,0,g_glad_dist_after_2020_prep
179
+ GLAD-L_after_2020,1780,,disturbance_after,NA,1,1,0,float32,1,0,g_glad_l_after_2020_prep
180
+ GLAD-S2_after_2020,1790,,disturbance_after,NA,1,1,0,float32,1,0,g_glad_s2_after_2020_prep
181
+ GFT_primary,1800,,NA,primary,0,1,0,float32,1,0,g_gft_primary_prep
182
+ IFL_2020,1810,,NA,primary,0,1,0,float32,1,0,g_ifl_2020_prep
183
+ European_Primary_Forest,1820,,NA,primary,0,1,0,float32,1,0,g_epfd_prep
184
+ GFT_naturally_regenerating,1830,,NA,naturally_reg_2020,0,1,0,float32,1,0,g_gft_nat_reg_prep
185
+ GFT_planted_plantation,1840,,NA,planted_plantation_2020,0,1,0,float32,1,0,g_gft_plantation_prep
186
+ IIASA_planted_plantation,1850,,NA,planted_plantation_2020,0,1,0,float32,1,0,g_iiasa_planted_prep
187
+ TMF_regrowth_2023,1860,,NA,treecover_after_2020,0,1,0,float32,1,0,g_tmf_regrowth_prep
188
+ ESRI_2023_TC,1870,,NA,treecover_after_2020,0,1,0,float32,1,0,g_esri_2023_tc_prep
189
+ Oil_palm_2023_FDaP,1880,,NA,agri_after_2020,0,1,0,float32,1,0,g_fdap_palm_2023_prep
190
+ Rubber_2023_FDaP,1890,,NA,agri_after_2020,0,1,0,float32,1,0,g_fdap_rubber_2023_prep
191
+ Coffee_FDaP_2023,1900,,NA,agri_after_2020,0,1,0,float32,1,0,g_fdap_coffee_2023_prep
192
+ Cocoa_2023_FDaP,1910,,NA,agri_after_2020,0,1,0,float32,1,0,g_fdap_cocoa_2023_prep
193
+ ESRI_crop_gain_2020_2023,1920,,NA,agri_after_2020,0,1,0,float32,1,0,g_esri_2020_2023_crop_prep
194
+ GFW_logging_before_2020,1930,,NA,logging_concession,0,1,0,float32,1,0,g_logging_concessions_prep
195
+ nCO_ideam_forest_2020,1940,CO,treecover,NA,1,1,0,float32,1,0,nco_ideam_forest_2020_prep
196
+ nCO_ideam_eufo_commission_2020,1950,CO,commodities,NA,1,1,0,float32,1,0,nco_ideam_eufo_commission_2020_prep
197
+ nBR_INPE_TC_primary_forest_Amazon_2020,1960,BR,treecover,primary,1,1,0,float32,1,0,nbr_terraclass_amz20_primary_prep
198
+ nBR_INPE_TC_secondary_forest_Amazon_2020,1970,BR,treecover,naturally_reg_2020,1,1,0,float32,1,0,nbr_terraclass_amz20_secondary_prep
199
+ nBR_BFS_primary_forest_Pantanal_2020,1980,BR,treecover,primary,1,1,0,float32,1,0,nbr_bfs_ptn_f20_prep
200
+ nBR_BFS_primary_forest_Caatinga_2020,1990,BR,treecover,primary,1,1,0,float32,1,0,nbr_bfs_caat_f20_prep
201
+ nBR_BFS_primary_forest_AtlanticForest_2020,2000,BR,treecover,primary,1,1,0,float32,1,0,nbr_bfs_atlf_f20_prep
202
+ nBR_BFS_primary_forest_Pampa_2020,2010,BR,treecover,primary,1,1,0,float32,1,0,nbr_bfs_pmp_f20_prep
203
+ nBR_BFS_primary_and_secondary_forest_Cerrado_2020,2020,BR,treecover,naturally_reg_2020,1,1,0,float32,1,0,nbr_bfs_cer_f20_prep
204
+ nBR_MapBiomas_col9_forest_Brazil_2020,2030,BR,treecover,naturally_reg_2020,1,1,0,float32,1,0,nbr_mapbiomasc9_f20_prep
205
+ nBR_INPE_TCsilviculture_Amazon_2020,2040,BR,treecover,planted_plantation_2020,1,1,0,float32,1,0,nbr_terraclass_amz20_silv_prep
206
+ nBR_INPE_TCsilviculture_Cerrado_2020,2050,BR,treecover,planted_plantation_2020,1,1,0,float32,1,0,nbr_terraclass_silv_cer20_prep
207
+ nBR_MapBiomas_col9_silviculture_Brazil_2020,2060,BR,treecover,planted_plantation_2020,1,1,0,float32,1,0,nbr_mapbiomasc9_silv20_prep
208
+ nBR_PRODES_deforestation_Brazil_before_2020,2070,BR,disturbance_before,NA,1,1,0,float32,1,0,nbr_prodes_before_2020_prep
209
+ nBR_DETER_forestdegradation_Amazon_before_2020,2080,BR,disturbance_before,NA,1,1,0,float32,1,0,nbr_deter_amazon_before_2020_prep
210
+ nBR_PRODES_deforestation_Brazil_after_2020,2090,BR,disturbance_after,NA,1,1,0,float32,1,0,nbr_prodes_after_2020_prep
211
+ nBR_DETER_forestdegradation_Amazon_after_2020,2100,BR,disturbance_after,NA,1,1,0,float32,1,0,nbr_deter_amazon_after_2020_prep
212
+ nBR_INPE_TCamz_cer_perennial_2020,2110,BR,commodities,NA,1,1,0,float32,1,0,nbr_terraclass_amz_cer20_pc_prep
213
+ nBR_MapBiomas_col9_coffee_2020,2120,BR,commodities,NA,1,1,0,float32,1,0,nbr_mapbiomasc9_cof_prep
214
+ nBR_MapBiomas_col9_palmoil_2020,2130,BR,commodities,NA,1,1,0,float32,1,0,nbr_mapbiomasc9_po_prep
215
+ nBR_MapBiomas_col9_pc_2020,2140,BR,commodities,NA,1,1,0,float32,1,0,nbr_mapbiomasc9_pc_prep
216
+ nBR_INPE_TCamz_cer_annual_2020,2150,BR,commodities,NA,1,1,0,float32,1,0,nbr_terraclass_amz_cer20_ac_prep
217
+ nBR_MapBiomas_col9_soy_2020,2160,BR,commodities,NA,1,1,0,float32,1,0,nbr_mapbiomasc9_soy_prep
218
+ nBR_MapBiomas_col9_annual_crops_2020,2170,BR,commodities,NA,1,1,0,float32,1,0,nbr_mapbiomasc9_ac_prep
219
+ nBR_INPE_TCamz_pasture_2020,2180,BR,commodities,NA,1,1,0,float32,1,0,nbr_terraclass_amz20_pasture_prep
220
+ nBR_INPE_TCcer_pasture_2020,2190,BR,commodities,NA,1,1,0,float32,1,0,nbr_terraclass_cer20_ac_prep
221
+ nBR_MapBiomas_col9_pasture_2020,2200,BR,commodities,NA,1,1,0,float32,1,0,nbr_mapbiomasc9_pasture_prep
222
+ nCI_Cocoa_bnetd,2210,CI,commodities,NA,1,1,0,float32,1,0,nci_ocs2020_prep
223
+ nCM_Treecover_2020,2220,CM,treecover,NA,1,0,0,float32,1,0,ncm_treecover_2020_prep
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.3
2
2
  Name: openforis-whisp
3
- Version: 3.0.0a8
3
+ Version: 3.0.0a9
4
4
  Summary: Whisp (What is in that plot) is an open-source solution which helps to produce relevant forest monitoring information and support compliance with deforestation-related regulations.
5
5
  License: MIT
6
6
  Keywords: whisp,geospatial,data-processing
@@ -1,20 +1,20 @@
1
1
  openforis_whisp/__init__.py,sha256=YihdNrybfFygwcwa2Bis59V7sYpNR9aAxL-VNO4dqEI,3659
2
- openforis_whisp/advanced_stats.py,sha256=yXwPIimbHZV3jxRL-mLMQoWZk9_UEec30I-0flNsOx8,99055
2
+ openforis_whisp/advanced_stats.py,sha256=rqSOAWpVGOaJiclf6A6vsB4RX55vITcS93LAr9z4oZ0,102048
3
3
  openforis_whisp/data_checks.py,sha256=jxShBiihtX0rel__Vkzu1bZfqgVQIx_l-uPP1OeCaKY,37015
4
4
  openforis_whisp/data_conversion.py,sha256=L2IsiUyQUt3aHgSYGbIhgPGwM7eyS3nLVEoNO9YqQeM,21888
5
- openforis_whisp/datasets.py,sha256=fAGj1jaeoPszWm60p8N00x2qrw398-iDklX-4nkC6mI,53855
5
+ openforis_whisp/datasets.py,sha256=8IGh0nY0dutrKYraf6-b4Je0893wIHpdGdkgVf5QL8g,68483
6
6
  openforis_whisp/logger.py,sha256=gFkRTwJDJKIBWcHDOK74Uln3JM7fAybURo7pQpGL790,3395
7
7
  openforis_whisp/parameters/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
8
8
  openforis_whisp/parameters/config_runtime.py,sha256=NOo39MAi60XCwEx5pwkS0EHKJBh0XY1q06y4j0HAABg,1421
9
9
  openforis_whisp/parameters/lookup_context_and_metadata.csv,sha256=KgK0ik_Gd4t_Nq5cUkGPT4ZFZVO93HWSG82jRrOukt4,1298
10
10
  openforis_whisp/parameters/lookup_gaul1_admin.py,sha256=cQr5liRdXi85QieTxrz4VAkn0COvRCp82ZV0dYFWOio,474980
11
- openforis_whisp/parameters/lookup_gee_datasets.csv,sha256=7KdnFocEgbZO5m8JmWQchzZTurg9rJ96y17z8UyLtI0,17537
11
+ openforis_whisp/parameters/lookup_gee_datasets.csv,sha256=45WvutxbkZbdTZkwTHPbff03Xdxmw3WfXyP3GMTr5eE,19483
12
12
  openforis_whisp/pd_schemas.py,sha256=0z-oPmYIDUIn7mNY41W_uUpmTwjoR7e254mOCoHVsOg,2878
13
13
  openforis_whisp/reformat.py,sha256=i_ckmxuOirrfRHbeY05_5JajrJ00T5MoZ_jgzj_h0wA,32939
14
14
  openforis_whisp/risk.py,sha256=tVkgVdRpdxaCBtyCjw8Z8MQt7EV9lGy34Bz8r_1Qb8Y,37135
15
15
  openforis_whisp/stats.py,sha256=RJ_PJSXyvz9FnoHeQ3tqrfhhWibXjz9AlX27suSKiO4,63319
16
16
  openforis_whisp/utils.py,sha256=AISWF-MpfFdYkhd6bei4BViw2Iag20mmq61ykrF9YTk,31287
17
- openforis_whisp-3.0.0a8.dist-info/LICENSE,sha256=nqyqICO95iw_iwzP1t_IIAf7ZX3DPbL_M9WyQfh2q1k,1085
18
- openforis_whisp-3.0.0a8.dist-info/METADATA,sha256=2kDHgW5mjXMry11nvYsX7auboQMf4Mzj6BVgVa8TIsI,14173
19
- openforis_whisp-3.0.0a8.dist-info/WHEEL,sha256=XbeZDeTWKc1w7CSIyre5aMDU_-PohRwTQceYnisIYYY,88
20
- openforis_whisp-3.0.0a8.dist-info/RECORD,,
17
+ openforis_whisp-3.0.0a9.dist-info/LICENSE,sha256=nqyqICO95iw_iwzP1t_IIAf7ZX3DPbL_M9WyQfh2q1k,1085
18
+ openforis_whisp-3.0.0a9.dist-info/METADATA,sha256=DRndfId3nvxBSKIf5Yw8g9xi3g6inyuJp2IlmKwfE3c,14173
19
+ openforis_whisp-3.0.0a9.dist-info/WHEEL,sha256=XbeZDeTWKc1w7CSIyre5aMDU_-PohRwTQceYnisIYYY,88
20
+ openforis_whisp-3.0.0a9.dist-info/RECORD,,