3  Exploration of WDPA historical data

3.1 Creation WDPA global historical database 2010-2024

Nous avons développé un jeu de données spatio-temporel consolidant les données mondiales publiées par la World Database on Protected Areas (WDPA) depuis 2010. Nous avons compilé un jeu de données par an, en prenant pour référence le mois d’octobre ou, lorsque les données d’octobre n’étaient pas disponibles, le mois le plus proche.

Les sources ont été obtenues grâce à une recherche approfondie dans les archives pour récupérer les enregistrements historiques publiés par la WDPA, puisque seules les données les plus récentes sont disponibles publiquement sur protectedplanet.net. Google Earth Engine archive les données depuis 2017, et nous avons trouvé les données pour les années 2010 à 2016 dans le dépôt public AWS de l’UNEP-WCMC.

Les schémas des données ont évolué au fil du temps, et nous avons entrepris des efforts d’harmonisation pour aligner les attributs entre les différentes versions du jeu de données.

Le résultat est un jeu de données comprenant 2 721 134 enregistrements annuels d’aires protégées pour le monde entier. Les géométries des aires protégées sont complexes et représentent plus de 95 % du volume des données. La déduplication de ce nombre d’observations est une opération computationnellement intensive. Nous utilisons l’algorithme Blake3, une fonction de hachage cryptographique déterministe qui produit systématiquement la même valeur de hachage pour des données identiques, ce qui le rend extrêmement efficace pour la déduplication des données. Cet algorithme, l’un des plus performants disponibles, est implémenté en C dans notre code. Les hachages produits par Blake3 servent de clés pour séparer les données attributaires des données spatiales.

Ainsi, nous avons obtenu deux fichiers parquet contenant toutes les données WDPA des 15 dernières années pour 365 592 aires protégées : un fichier contenant 2 721 134 enregistrements annuels d’attributs des aires protégées (190 Mo) et un autre contenant 1 425 023 géométries spatiales uniques (13,9 Go).

3.2 Creation d’une base WDPA pour Madagascar pour 2010-2024

Code
library(tidyverse)
library(arrow)
library(geoarrow)
library(sf)

# Load parquet and convert to sf
wdpa_mdg <- read_parquet("data/ISO3_ref=MDG/part-0.parquet")  %>%
  mutate(geometry = st_as_sfc(geometry))

str(wdpa_mdg)
Classes 'sf' and 'data.frame':  1775 obs. of  36 variables:
 $ WDPAID        : int  1299 2303 2305 2306 2307 2308 2309 2310 2311 2312 ...
 $ WDPA_PID      : Factor w/ 347909 levels "0","1","10","100",..: 9478 54520 54524 54526 54527 54528 54531 54539 54546 54553 ...
 $ PA_DEF        : Factor w/ 2 levels "0","1": 2 2 2 2 2 2 2 2 2 2 ...
 $ NAME          : Factor w/ 496546 levels " Lac des Oiseaux",..: 44584 44033 252844 416588 416685 44132 275339 60332 231579 178037 ...
 $ ORIG_NAME     : Factor w/ 498513 levels " Lac des Oiseaux",..: 43673 43148 248610 409772 409864 43243 270345 59430 227450 176569 ...
 $ DESIG         : Factor w/ 11750 levels "- Íåò äàííûõ -",..: 5342 5342 5342 9579 5342 5342 5342 9579 5342 5342 ...
 $ DESIG_ENG     : Factor w/ 3300 levels "§3 protected habitats (all lakes, bogs, streams, heaths and meadows etc.)",..: 1522 1522 1522 2894 1522 1522 1522 2894 1522 1522 ...
 $ DESIG_TYPE    : Factor w/ 5 levels "ABNJ","International",..: 3 3 3 3 3 3 3 3 3 3 ...
 $ IUCN_CAT      : Factor w/ 12 levels "I","Ia","Ib",..: 4 4 4 2 4 4 11 2 4 4 ...
 $ INT_CRIT      : Factor w/ 391 levels "(i)","(i) (ii)",..: 388 388 388 388 388 388 388 388 388 388 ...
 $ MARINE        : Factor w/ 3 levels "0","1","2": 1 1 1 1 1 1 1 1 2 1 ...
 $ REP_M_AREA    : num  0 0 0 0 0 0 0 0 0.21 0 ...
 $ GIS_M_AREA    : num  0 0 0 0 0 ...
 $ REP_AREA      : num  1695 872 753 1491 2630 ...
 $ GIS_AREA      : num  1697 872 753 1492 2632 ...
 $ NO_TAKE       : Factor w/ 6 levels "All","None","Not applicable",..: 4 4 4 4 4 4 4 4 5 4 ...
 $ NO_TK_AREA    : num  0 0 0 0 0 0 0 0 0 0 ...
 $ STATUS        : Factor w/ 13 levels "Adopted","Designated",..: 2 2 2 2 2 2 2 2 2 2 ...
 $ STATUS_YR     : int  1927 1939 1952 1927 1927 1927 1927 1927 1927 1962 ...
 $ GOV_TYPE      : Factor w/ 58 levels "Co-managed Protected Areas",..: 43 43 43 26 43 43 43 26 15 43 ...
 $ OWN_TYPE      : Factor w/ 12 levels "Communal","Community",..: 9 9 9 9 9 9 9 9 9 9 ...
 $ MANG_AUTH     : Factor w/ 17025 levels "\n","\nEnte Parco Di Montemarcello Magra\n\n",..: 10703 10703 10703 10703 10703 10703 10703 10703 10703 10703 ...
 $ MANG_PLAN     : Factor w/ 7240 levels " "," http://www.boe.es/boe/dias/2011/09/14/pdfs/BOE-A-2011-14661.pdf",..: 6834 6834 6834 6834 6834 6834 6834 6834 6834 6834 ...
 $ VERIF         : Factor w/ 4 levels "Expert Verified",..: 4 4 4 4 4 4 4 4 4 4 ...
 $ METADATAID    : int  390 390 390 390 390 390 390 390 390 390 ...
 $ SUB_LOC       : Factor w/ 4878 levels "ABNJ","AD-02",..: 3189 3189 3189 3189 3189 3189 3189 3189 3189 3189 ...
 $ PARENT_ISO_old: Factor w/ 39 levels "ABNJ","AIA","ANT",..: NA NA NA NA NA NA NA NA NA NA ...
 $ ISO3_old      : Factor w/ 32 levels "ABNJ","ALA","ANT",..: NA NA NA NA NA NA NA NA NA NA ...
 $ SUPP_INFO     : Factor w/ 3 levels "https://www.novascotia.ca/nse/protectedareas/wa_eiggmountain.asp",..: 2 2 2 2 2 2 2 2 2 2 ...
 $ CONS_OBJ      : Factor w/ 2 levels "Not Applicable",..: 1 1 1 1 1 1 1 1 1 1 ...
 $ data_year     : int  2024 2024 2024 2024 2024 2024 2024 2024 2024 2024 ...
 $ ISO3          : Factor w/ 264 levels "ABNJ","ABW","AFG",..: 156 156 156 156 156 156 156 156 156 156 ...
 $ PARENT_ISO    : Factor w/ 216 levels "ABNJ","AFG","AGO",..: 128 128 128 128 128 128 128 128 128 128 ...
 $ COUNTRY_old   : Factor w/ 240 levels "ABNJ","ABNJ - High Seas",..: NA NA NA NA NA NA NA NA NA NA ...
 $ data_month    : int  NA NA NA NA NA NA NA NA NA NA ...
 $ geometry      :sfc_MULTIPOLYGON of length 1775; first list element: List of 16
  ..$ :List of 1
  .. ..$ : num [1:4, 1:2] 47.2 47.2 47.2 47.2 -16.1 ...
  ..$ :List of 1
  .. ..$ : num [1:5, 1:2] 47.2 47.2 47.2 47.2 47.2 ...
  ..$ :List of 1
  .. ..$ : num [1:4, 1:2] 47.2 47.2 47.2 47.2 -16.1 ...
  ..$ :List of 1
  .. ..$ : num [1:4, 1:2] 47.2 47.2 47.2 47.2 -16.1 ...
  ..$ :List of 1
  .. ..$ : num [1:9, 1:2] 47.2 47.2 47.2 47.2 47.2 ...
  ..$ :List of 1
  .. ..$ : num [1:4, 1:2] 47.2 47.2 47.2 47.2 -16.1 ...
  ..$ :List of 1
  .. ..$ : num [1:5, 1:2] 47.2 47.2 47.2 47.2 47.2 ...
  ..$ :List of 1
  .. ..$ : num [1:4, 1:2] 47.2 47.2 47.2 47.2 -16.1 ...
  ..$ :List of 1
  .. ..$ : num [1:10, 1:2] 47.2 47.2 47.2 47.2 47.2 ...
  ..$ :List of 1
  .. ..$ : num [1:6, 1:2] 47.2 47.2 47.2 47.2 47.2 ...
  ..$ :List of 1
  .. ..$ : num [1:4, 1:2] 47.2 47.2 47.2 47.2 -16.1 ...
  ..$ :List of 1
  .. ..$ : num [1:5, 1:2] 47.2 47.2 47.2 47.2 47.2 ...
  ..$ :List of 1
  .. ..$ : num [1:6, 1:2] 47.2 47.2 47.2 47.2 47.2 ...
  ..$ :List of 1
  .. ..$ : num [1:9, 1:2] 47.2 47.2 47.2 47.2 47.2 ...
  ..$ :List of 1
  .. ..$ : num [1:4, 1:2] 47.2 47.2 47.2 47.2 -16 ...
  ..$ :List of 232
  .. ..$ : num [1:263, 1:2] 47.2 47.2 47.2 47.2 47.2 ...
  .. ..$ : num [1:5, 1:2] 47.2 47.2 47.2 47.2 47.2 ...
  .. ..$ : num [1:18, 1:2] 47.2 47.2 47.2 47.2 47.2 ...
  .. ..$ : num [1:7, 1:2] 47.1 47.1 47.1 47.1 47.1 ...
  .. ..$ : num [1:9, 1:2] 47.1 47.1 47.1 47.1 47.1 ...
  .. ..$ : num [1:25, 1:2] 47.1 47.1 47.1 47.1 47.1 ...
  .. ..$ : num [1:11, 1:2] 47.1 47.1 47.1 47.1 47.1 ...
  .. ..$ : num [1:7, 1:2] 47.1 47.1 47.1 47.1 47.1 ...
  .. ..$ : num [1:5, 1:2] 47.1 47.1 47.1 47.1 47.1 ...
  .. ..$ : num [1:5, 1:2] 47.1 47.1 47.1 47.1 47.1 ...
  .. ..$ : num [1:21, 1:2] 47.1 47.1 47.1 47.1 47.1 ...
  .. ..$ : num [1:5, 1:2] 47.1 47.1 47.1 47.1 47.1 ...
  .. ..$ : num [1:20, 1:2] 47.2 47.2 47.2 47.2 47.2 ...
  .. ..$ : num [1:4, 1:2] 47.1 47.1 47.1 47.1 -16 ...
  .. ..$ : num [1:4, 1:2] 47.1 47.1 47.1 47.1 -16 ...
  .. ..$ : num [1:7, 1:2] 47.1 47.1 47.1 47.1 47.1 ...
  .. ..$ : num [1:9, 1:2] 47.1 47.1 47.1 47.1 47.1 ...
  .. ..$ : num [1:7, 1:2] 47.1 47.1 47.1 47.1 47.1 ...
  .. ..$ : num [1:7, 1:2] 47.1 47.1 47.1 47.1 47.1 ...
  .. ..$ : num [1:5, 1:2] 47.2 47.2 47.2 47.2 47.2 ...
  .. ..$ : num [1:5, 1:2] 47.2 47.2 47.2 47.2 47.2 ...
  .. ..$ : num [1:7, 1:2] 47.1 47.1 47.1 47.1 47.1 ...
  .. ..$ : num [1:16, 1:2] 47.1 47.1 47.1 47.1 47.1 ...
  .. ..$ : num [1:5, 1:2] 47.1 47.1 47.1 47.1 47.1 ...
  .. ..$ : num [1:7, 1:2] 47.2 47.2 47.2 47.2 47.2 ...
  .. ..$ : num [1:25, 1:2] 47.2 47.2 47.2 47.2 47.2 ...
  .. ..$ : num [1:4, 1:2] 47.2 47.2 47.2 47.2 -16 ...
  .. ..$ : num [1:5, 1:2] 47.2 47.2 47.2 47.2 47.2 ...
  .. ..$ : num [1:7, 1:2] 47.2 47.2 47.2 47.2 47.2 ...
  .. ..$ : num [1:4, 1:2] 47.1 47.1 47.1 47.1 -16 ...
  .. ..$ : num [1:4, 1:2] 47.1 47.1 47.1 47.1 -16 ...
  .. ..$ : num [1:4, 1:2] 47.1 47.1 47.1 47.1 -16 ...
  .. ..$ : num [1:10, 1:2] 47.2 47.2 47.2 47.2 47.2 ...
  .. ..$ : num [1:18, 1:2] 47.2 47.2 47.2 47.2 47.2 ...
  .. ..$ : num [1:15, 1:2] 47.2 47.2 47.2 47.2 47.2 ...
  .. ..$ : num [1:4, 1:2] 47.1 47.1 47.1 47.1 -16.1 ...
  .. ..$ : num [1:6, 1:2] 47.1 47.1 47.1 47.1 47.1 ...
  .. ..$ : num [1:4, 1:2] 47.1 47.1 47.1 47.1 -16.1 ...
  .. ..$ : num [1:5, 1:2] 47 47 47 47 47 ...
  .. ..$ : num [1:5, 1:2] 47 47 47 47 47 ...
  .. ..$ : num [1:7, 1:2] 47 47 47 47 47 ...
  .. ..$ : num [1:11, 1:2] 47 47 47 47 47 ...
  .. ..$ : num [1:6, 1:2] 47 47 47 47 47 ...
  .. ..$ : num [1:5, 1:2] 47 47 47 47 47 ...
  .. ..$ : num [1:7, 1:2] 47 47 47 47 47 ...
  .. ..$ : num [1:7, 1:2] 47 47 47 47 47 ...
  .. ..$ : num [1:6, 1:2] 47 47 47 47 47 ...
  .. ..$ : num [1:4, 1:2] 47 47 47 47 -16.1 ...
  .. ..$ : num [1:4, 1:2] 47 47 47 47 -16.1 ...
  .. ..$ : num [1:4, 1:2] 47 47 47 47 -16.1 ...
  .. ..$ : num [1:5, 1:2] 47 47 47 47 47 ...
  .. ..$ : num [1:4, 1:2] 47 47 47 47 -16.1 ...
  .. ..$ : num [1:4, 1:2] 47 47 47 47 -16.1 ...
  .. ..$ : num [1:9, 1:2] 46.9 46.9 46.9 46.9 46.9 ...
  .. ..$ : num [1:9, 1:2] 46.9 46.9 46.9 46.9 46.9 ...
  .. ..$ : num [1:4, 1:2] 46.9 46.9 46.9 46.9 -16.1 ...
  .. ..$ : num [1:4, 1:2] 46.9 46.9 46.9 46.9 -16.1 ...
  .. ..$ : num [1:6, 1:2] 46.9 46.9 46.9 46.9 46.9 ...
  .. ..$ : num [1:15, 1:2] 46.9 46.9 46.9 46.9 46.9 ...
  .. ..$ : num [1:5, 1:2] 46.9 46.9 46.9 46.9 46.9 ...
  .. ..$ : num [1:6, 1:2] 46.8 46.8 46.8 46.9 46.9 ...
  .. ..$ : num [1:32, 1:2] 47.3 47.3 47.3 47.3 47.3 ...
  .. ..$ : num [1:8, 1:2] 46.8 46.8 46.8 46.8 46.8 ...
  .. ..$ : num [1:9, 1:2] 46.8 46.8 46.8 46.8 46.8 ...
  .. ..$ : num [1:24, 1:2] 47.3 47.3 47.3 47.3 47.3 ...
  .. ..$ : num [1:7, 1:2] 46.8 46.8 46.8 46.8 46.8 ...
  .. ..$ : num [1:7, 1:2] 47.3 47.3 47.3 47.3 47.3 ...
  .. ..$ : num [1:22, 1:2] 47.2 47.2 47.2 47.2 47.2 ...
  .. ..$ : num [1:4, 1:2] 46.8 46.8 46.8 46.8 -16.2 ...
  .. ..$ : num [1:15, 1:2] 47.3 47.3 47.3 47.3 47.3 ...
  .. ..$ : num [1:10, 1:2] 46.8 46.8 46.8 46.8 46.8 ...
  .. ..$ : num [1:4, 1:2] 46.8 46.8 46.8 46.8 -16.2 ...
  .. ..$ : num [1:7, 1:2] 46.8 46.8 46.8 46.8 46.8 ...
  .. ..$ : num [1:9, 1:2] 46.8 46.8 46.8 46.8 46.8 ...
  .. ..$ : num [1:9, 1:2] 46.8 46.8 46.8 46.8 46.8 ...
  .. ..$ : num [1:19, 1:2] 47.3 47.3 47.3 47.3 47.3 ...
  .. ..$ : num [1:4, 1:2] 46.8 46.8 46.8 46.8 -16.2 ...
  .. ..$ : num [1:5, 1:2] 46.8 46.8 46.8 46.8 46.8 ...
  .. ..$ : num [1:5, 1:2] 46.8 46.8 46.8 46.8 46.8 ...
  .. ..$ : num [1:6, 1:2] 46.8 46.8 46.8 46.8 46.8 ...
  .. ..$ : num [1:163, 1:2] 47.2 47.2 47.2 47.2 47.2 ...
  .. ..$ : num [1:360, 1:2] 46.8 46.8 46.8 46.8 46.8 ...
  .. ..$ : num [1:128, 1:2] 47.1 47.1 47.1 47.1 47.1 ...
  .. ..$ : num [1:145, 1:2] 47.1 47.1 47.1 47.1 47.1 ...
  .. ..$ : num [1:173, 1:2] 47.1 47.1 47.1 47.1 47.1 ...
  .. ..$ : num [1:28, 1:2] 47 47 47 47 47 ...
  .. ..$ : num [1:47, 1:2] 47 47 47 47 47 ...
  .. ..$ : num [1:19, 1:2] 47 47 47 47 47 ...
  .. ..$ : num [1:47, 1:2] 46.9 46.9 46.9 46.9 46.9 ...
  .. ..$ : num [1:12, 1:2] 46.9 46.9 46.9 46.9 46.9 ...
  .. ..$ : num [1:14, 1:2] 46.9 46.9 46.9 46.9 46.9 ...
  .. ..$ : num [1:18, 1:2] 46.9 46.9 46.9 46.9 46.9 ...
  .. ..$ : num [1:29, 1:2] 46.9 46.9 46.9 46.9 46.9 ...
  .. ..$ : num [1:8, 1:2] 46.8 46.8 46.8 46.8 46.8 ...
  .. ..$ : num [1:8, 1:2] 46.8 46.8 46.8 46.8 46.8 ...
  .. ..$ : num [1:6, 1:2] 46.8 46.8 46.8 46.8 46.8 ...
  .. ..$ : num [1:39, 1:2] 46.6 46.6 46.6 46.6 46.6 ...
  .. ..$ : num [1:6, 1:2] 46.8 46.8 46.8 46.8 46.8 ...
  .. ..$ : num [1:11, 1:2] 46.8 46.8 46.8 46.8 46.8 ...
  .. .. [list output truncated]
  ..- attr(*, "class")= chr [1:3] "XY" "MULTIPOLYGON" "sfg"
 - attr(*, "sf_column")= chr "geometry"
 - attr(*, "agr")= Factor w/ 3 levels "constant","aggregate",..: NA NA NA NA NA NA NA NA NA NA ...
  ..- attr(*, "names")= chr [1:35] "WDPAID" "WDPA_PID" "PA_DEF" "NAME" ...
Code
# Calculer le nombre d'aires protégées par année
ap_per_year <- wdpa_mdg %>%
  st_drop_geometry() %>%
  group_by(data_year) %>%
  summarise(Number_of_APs = n())

# Calculer la surface totale par année
area_per_year <- wdpa_mdg %>%
  st_drop_geometry() %>%
  group_by(data_year) %>%
  summarise(Total_Area = sum(GIS_AREA, na.rm = TRUE))

# Graphique : Nombre d'aires protégées par année
ggplot(ap_per_year, aes(x = data_year, y = Number_of_APs)) +
  geom_bar(stat = "identity", fill = "blue") +
  labs(
    title = "Nombre d'aires protégées par année",
    x = "Année",
    y = "Nombre d'AP"
  ) +
  theme_minimal()

Code
# Graphique : Surface totale des aires protégées par année
ggplot(area_per_year, aes(x = data_year, y = Total_Area)) +
  geom_bar(stat = "identity", fill = "green") +
  labs(
    title = "Surface totale des aires protégées par année",
    x = "Année",
    y = "Surface totale (ha)"
  ) +
  theme_minimal()