# Configuració i càrrega dels paquets
knitr::opts_chunk$set(
echo = TRUE, message = FALSE, warning = TRUE, error = FALSE, cache = FALSE,
fig.width = 10, fig.height = 5.6, dpi = 150,
fig.align = "center", out.width = "100%", fig.path = "figures/"
)
options(OutDec = ",")
library(readxl)
library(ggplot2)
# Colors i format compartits per totes les figures
colors_categories <- c("Cultural" = "#0072B2", "Natural" = "#009E73",
"Mixta" = "#CC79A7")
font_dades <- "Font: UNESCO, Excel baixa(2).xlsx."
font_mapa <- paste(font_dades, "Base cartogràfica: paquet maps.", sep = "\n")
theme_set(theme_minimal(base_size = 12))
theme_update(plot.title = element_text(face = "bold"),
plot.caption = element_text(hjust = 0, size = 9),
legend.position = "bottom",
panel.grid.minor = element_blank())# Importació de les dades
dades_originals <- read_excel("data/baixa(2).xlsx",
sheet = "World Heritage List")
# Comprovació dels tipus de dades, els valors absents i els duplicats
auditoria_columnes <- data.frame(
variable = names(dades_originals),
tipus = unname(sapply(dades_originals, typeof)),
absents = unname(colSums(is.na(dades_originals)))
)
columnes_necessaries <- c("id_no", "name_en", "category", "date_inscribed",
"danger", "danger_list", "date_end", "region_en",
"states_name_en", "transboundary", "longitude", "latitude")
stopifnot(all(columnes_necessaries %in% names(dades_originals)),
!anyNA(dades_originals$id_no),
!anyDuplicated(dades_originals$id_no),
!anyDuplicated(dades_originals))
# Selecció de les variables de treball
bens <- dades_originals |>
dplyr::select(dplyr::all_of(columnes_necessaries))
stopifnot(!anyNA(bens$category), !anyNA(bens$date_inscribed),
!anyNA(bens$danger), !anyNA(bens$region_en),
!anyNA(bens$states_name_en),
all(bens$category %in% c("Cultural", "Natural", "Mixed")),
all(bens$danger %in% c(0, 1)),
is.numeric(bens$date_inscribed),
all(bens$date_inscribed == floor(bens$date_inscribed)))
bens <- bens |>
dplyr::mutate(
id = as.integer(id_no),
nom = gsub("<[^>]+>", "", name_en),
categoria = factor(category, levels = c("Cultural", "Natural", "Mixed"),
labels = c("Cultural", "Natural", "Mixta")),
any_inscripcio = as.integer(date_inscribed),
en_perill = danger == 1
)
# Taula de béns per regió: separem els valors de les cel·les compartides
bens_regio <- bens |>
tidyr::separate_rows(region_en, sep = ",") |>
dplyr::mutate(region_en = trimws(region_en)) |>
dplyr::distinct(id, region_en, .keep_all = TRUE)
regions_originals <- c("Africa", "Arab States", "Asia and the Pacific",
"Europe and North America", "Latin America and the Caribbean")
regions_catala <- c("Àfrica", "Estats Àrabs", "Àsia i el Pacífic",
"Europa i Amèrica del Nord", "Amèrica Llatina i el Carib")
stopifnot(all(bens_regio$region_en %in% regions_originals))
bens_regio <- bens_regio |>
dplyr::mutate(regio = factor(region_en, levels = regions_originals,
labels = regions_catala))
taula_regions <- bens_regio |>
dplyr::group_by(regio) |>
dplyr::summarise(total = dplyr::n(), perill = sum(en_perill), .groups = "drop") |>
dplyr::mutate(percentatge = 100 * perill / total) |>
dplyr::arrange(dplyr::desc(total))
# Comprovació separada dels països o territoris compartits
bens_pais <- bens |>
tidyr::separate_rows(states_name_en, sep = ",") |>
dplyr::mutate(states_name_en = trimws(states_name_en)) |>
dplyr::distinct(id, states_name_en, .keep_all = TRUE)
bens_compartits <- bens_pais |>
dplyr::count(id) |>
dplyr::filter(n > 1)
bens_multiregio <- bens_regio |>
dplyr::count(id) |>
dplyr::filter(n > 1)
stopifnot(setequal(bens_compartits$id, bens$id[bens$transboundary == 1]))
# Xifres que s'incorporen automàticament al text
total_bens <- dplyr::n_distinct(bens$id)
total_perill <- sum(bens$en_perill)
percentatge_perill <- 100 * total_perill / total_bens
taula_categories <- bens |>
dplyr::count(categoria, name = "bens", .drop = FALSE) |>
dplyr::mutate(percentatge = 100 * bens / total_bens)
europa <- taula_regions |> dplyr::filter(regio == "Europa i Amèrica del Nord")
asia <- taula_regions |> dplyr::filter(regio == "Àsia i el Pacífic")
africa <- taula_regions |> dplyr::filter(regio == "Àfrica")
arabs <- taula_regions |> dplyr::filter(regio == "Estats Àrabs")Europa i Amèrica del Nord reuneix el nombre més alt de béns reconeguts. Però la proporció més elevada de patrimoni en perill es troba als Estats Àrabs: 24,5 % dels seus béns estan marcats en perill. La distribució del reconeixement i la de les alertes dibuixen dues geografies diferents.
Una ciutat històrica, un parc natural o un paisatge que combina cultura i natura poden compartir un mateix reconeixement: formar part del Patrimoni Mundial. La fotografia que ofereix l’Excel de la UNESCO analitzat aquí reuneix 1.273 béns, dels quals 58 estan marcats en perill. La pregunta no és només on són aquests espais, sinó com canvia el mapa quan l’atenció passa del reconeixement a la conservació.
Les dades permeten seguir aquest recorregut per regions, categories i anys d’inscripció. Mostren diferències clares, però no expliquen per si soles per què s’han produït.
# Gràfic de barres sobre la distribució regional
grafic_regions <- ggplot(taula_regions,
aes(x = reorder(regio, total), y = total)) +
geom_bar(stat = "identity", fill = "#0072B2", width = 0.65) +
geom_text(aes(label = total), hjust = -0.2, size = 4) +
coord_flip() +
scale_y_continuous(expand = expansion(mult = c(0, 0.12))) +
labs(title = "Europa i Amèrica del Nord encapçala el recompte",
subtitle = "Béns presents a cada regió de la UNESCO",
x = NULL, y = "Nombre de béns", caption = font_dades)
grafic_regionsFigura 1. Cada bé compartit es compta una vegada a cadascuna de les seves regions.
Europa i Amèrica del Nord agrupa 591 béns, davant dels 315 d’Àsia i el Pacífic. A l’altre extrem, els Estats Àrabs en tenen 102 i Àfrica, 115. Són agrupacions de la UNESCO, no continents estrictes: els Estats Àrabs, per exemple, inclouen territoris africans i asiàtics.
La suma regional arriba a 1278 presències perquè 4 béns pertanyen a més d’una regió. Cada bé es compta una sola vegada al total mundial i una vegada a cada regió corresponent. És el cas de l’obra arquitectònica de Le Corbusier, que el fitxer assigna a tres regions. Aquest criteri evita convertir una llista de regions en una categoria territorial fictícia.
Les barres descriuen el reconeixement recollit a la llista. No mesuren tot el patrimoni existent ni permeten decidir quina regió és «més rica» en patrimoni: el fitxer no aporta les candidatures presentades, la població o els recursos dedicats a preparar-les.
Els béns culturals són majoritaris: 991, el 77,8 % del total. Els acompanyen 240 béns naturals i 42 mixtos, que combinen valors culturals i naturals.
# Comprovació de les coordenades
stopifnot(is.numeric(bens$longitude), is.numeric(bens$latitude))
bens <- bens |>
dplyr::mutate(
coordenades_absents = is.na(longitude) | is.na(latitude),
coordenades_valides = !coordenades_absents &
is.finite(longitude) & is.finite(latitude) &
longitude >= -180 & longitude <= 180 & latitude >= -90 & latitude <= 90
)
bens_mapa <- bens |> dplyr::filter(coordenades_valides)
exclosos_mapa <- bens |> dplyr::filter(!coordenades_valides)
fora_rang <- bens |> dplyr::filter(!coordenades_absents & !coordenades_valides)
punts_origen <- bens_mapa |> dplyr::filter(longitude == 0 & latitude == 0)
coordenades_repetides <- bens_mapa |>
dplyr::count(longitude, latitude) |>
dplyr::filter(n > 1)
stopifnot(nrow(fora_rang) == 0, nrow(punts_origen) == 0,
all(bens_mapa$latitude >= -60 & bens_mapa$latitude <= 85))
# Base cartogràfica del paquet maps
mon <- ggplot2::map_data("world")# Mapa mundial dels béns segons la categoria
mapa_categories <- ggplot() +
geom_polygon(data = mon, aes(x = long, y = lat, group = group),
fill = "#F1F3F5", colour = "#B6BDC5", linewidth = 0.2) +
geom_point(data = bens_mapa,
aes(x = longitude, y = latitude, colour = categoria, shape = categoria),
size = 1.7, alpha = 0.65) +
scale_colour_manual(values = colors_categories, drop = FALSE) +
scale_shape_manual(values = c("Cultural" = 16, "Natural" = 17, "Mixta" = 15),
drop = FALSE) +
coord_fixed(ratio = 1, xlim = c(-180, 180), ylim = c(-60, 85), expand = FALSE) +
labs(title = "On són els béns del Patrimoni Mundial?",
subtitle = paste(nrow(bens_mapa), "béns representats de", total_bens),
x = "Longitud (graus)", y = "Latitud (graus)",
colour = "Categoria", shape = "Categoria", caption = font_mapa)
mapa_categoriesMapa 1. Una coordenada de referència per bé; els punts no representen la seva superfície.
La densitat de punts a Europa i en diverses àrees d’Àsia fa visible una concentració que les grans agrupacions regionals només resumeixen. Els béns naturals i mixtos apareixen distribuïts en diferents continents. En zones amb molts llocs propers, els punts se superposen: el mapa permet localitzar-los, però les barres són més adequades per comparar-ne les quantitats.
Hi apareixen 1233 béns. Els altres 40 no tenen coordenades al fitxer i continuen inclosos en totes les taules i els recomptes. Cada punt situa un bé, encara que tingui components repartits en diversos països; no en delimita l’extensió.
# Taula de les inscripcions per any
inscripcions_any <- bens |>
dplyr::count(any_inscripcio, name = "inscripcions") |>
tidyr::complete(any_inscripcio = seq(min(bens$any_inscripcio),
max(bens$any_inscripcio)),
fill = list(inscripcions = 0)) |>
dplyr::arrange(any_inscripcio)
# El zero indica que no hi ha files amb aquell any; no substitueix cap NA.
anys_maxim <- inscripcions_any |>
dplyr::filter(inscripcions == max(inscripcions))
anys_sense_registres <- inscripcions_any |> dplyr::filter(inscripcions == 0)# Gràfic de l'evolució de les inscripcions
grafic_anys <- ggplot(inscripcions_any, aes(x = any_inscripcio, y = inscripcions)) +
geom_line(colour = "#0072B2", linewidth = 0.8) +
geom_point(colour = "#0072B2", size = 1.5) +
scale_x_continuous(breaks = c(1978, 1985, 1990, 1995, 2000, 2005,
2010, 2015, 2020, 2026)) +
scale_y_continuous(limits = c(0, NA)) +
labs(title = "Un ritme d'inscripcions irregular",
subtitle = "Béns del fitxer segons l'any de la primera inscripció",
x = "Any d'inscripció", y = "Nombre de béns", caption = font_dades)
grafic_anysFigura 2. Primera inscripció dels béns presents al fitxer; no és una sèrie acumulada.
La sèrie s’estén de 1978 a 2026. El màxim correspon a 2000, amb 61 béns. Després d’aquest pic, la incorporació de béns no segueix una trajectòria contínua d’augment: hi ha anys de més activitat i d’altres amb menys inscripcions.
Els zeros de 2020 i 2022 volen dir que no hi ha béns amb aquests anys d’inscripció a l’Excel. El fitxer, per si sol, no n’explica el motiu. Tampoc permet donar per tancat l’any més recent.
La línia compta inscripcions inicials, no ampliacions. És una mirada al passat dels béns presents en aquesta versió, no una reconstrucció exacta de la llista vigent en cada any: hi faltaria incorporar les retirades i altres canvis històrics.
# Resum dels anys d'inscripció segons la categoria
anys_categoria <- bens |>
dplyr::group_by(categoria) |>
dplyr::summarise(bens = dplyr::n(),
primer_quartil = quantile(any_inscripcio, 0.25),
mediana = median(any_inscripcio),
tercer_quartil = quantile(any_inscripcio, 0.75), .groups = "drop")# Diagrama de caixes dels anys d'inscripció
grafic_caixes <- ggplot(bens, aes(x = categoria, y = any_inscripcio, fill = categoria)) +
geom_boxplot(width = 0.55, alpha = 0.8) +
scale_fill_manual(values = colors_categories) +
scale_y_continuous(breaks = seq(1980, 2030, 10)) +
labs(title = "Les tres categories comparteixen períodes d'inscripció",
subtitle = paste("Culturals:", taula_categories$bens[1],
"· Naturals:", taula_categories$bens[2],
"· Mixtos:", taula_categories$bens[3]),
x = "Categoria", y = "Any d'inscripció", fill = "Categoria",
caption = font_dades) +
theme(legend.position = "none")
grafic_caixesFigura 3. La caixa conté el 50 % central dels anys d’inscripció; la ratlla interior és la mediana.
Els períodes centrals de les tres categories se superposen àmpliament. La mediana és 2000 per als culturals, 1999 per als naturals i 1996,5 per als mixtos. El decimal d’aquesta última és el punt intermedi entre els dos anys centrals, no una inscripció a mitjan any. Les caixes comparen la distribució temporal, mentre que el nombre de béns de cada categoria, molt diferent, s’indica al subtítol. Aquestes diferències no demostren un canvi en les prioritats de la UNESCO.
# Comprovació de l'estat de perill i dels antecedents
registre_Y <- !is.na(bens$danger_list) & grepl("^Y ", bens$danger_list)
stopifnot(all(bens$en_perill == registre_Y))
antecedents_perill <- bens |> dplyr::filter(!is.na(danger_list), !en_perill)
perill_amb_data_final <- bens |> dplyr::filter(en_perill, !is.na(date_end))
taula_perill <- taula_regions |> dplyr::arrange(dplyr::desc(percentatge))
perill_categoria <- bens |>
dplyr::group_by(categoria) |>
dplyr::summarise(total = dplyr::n(), perill = sum(en_perill), .groups = "drop") |>
dplyr::mutate(percentatge = 100 * perill / total)Els 58 béns marcats en perill representen el 4,6 % del total mundial. Aquesta etiqueta descriu l’estat registrat a l’Excel: no és una mesura de la gravetat de cada situació ni significa que la resta de béns estiguin lliures d’amenaces.
# Recompte i proporció del patrimoni en perill per regió
knitr::kable(taula_perill, digits = 1,
col.names = c("Regió UNESCO", "Total de béns", "En perill", "% en perill"),
caption = "Béns en perill sobre el total de cada regió. Font: Excel UNESCO.")| Regió UNESCO | Total de béns | En perill | % en perill |
|---|---|---|---|
| Estats Àrabs | 102 | 25 | 24,5 |
| Àfrica | 115 | 13 | 11,3 |
| Amèrica Llatina i el Carib | 155 | 7 | 4,5 |
| Àsia i el Pacífic | 315 | 6 | 1,9 |
| Europa i Amèrica del Nord | 591 | 7 | 1,2 |
Els Estats Àrabs encapçalen tant el recompte com la proporció: 25 de 102 béns, el 24,5 %. Àfrica en té 13 de 115, el 11,3 %. En canvi, Europa i Amèrica del Nord, que concentrava més béns reconeguts, en té 7 en perill, l’1,2 % del seu total.
La comparació entre Àfrica i Àsia i el Pacífic és especialment il·lustrativa: la primera té menys béns a la llista, però més béns en perill i una proporció més alta. Cada percentatge utilitza com a denominador el total de la mateixa regió, inclosos els béns sense coordenades. Així, la taula distingeix el volum de casos del pes que tenen dins de cada conjunt.
La distinció també importa per categories. Hi ha 43 béns culturals en perill i 15 naturals. Tot i tenir menys casos, els naturals presenten una proporció més elevada: 6,2 %, davant del 4,3 % dels culturals. Cap dels 42 mixtos està marcat en perill en aquesta versió.
# Mapa del patrimoni en perill
perill_mapa <- bens_mapa |> dplyr::filter(en_perill)
altres_mapa <- bens_mapa |> dplyr::filter(!en_perill)
mapa_perill <- ggplot() +
geom_polygon(data = mon, aes(x = long, y = lat, group = group),
fill = "#F1F3F5", colour = "#B6BDC5", linewidth = 0.2) +
geom_point(data = altres_mapa,
aes(x = longitude, y = latitude, colour = "Altres béns del fitxer"),
size = 1.1, alpha = 0.4) +
geom_point(data = perill_mapa,
aes(x = longitude, y = latitude, colour = "Béns en perill"),
size = 2.5, alpha = 0.9) +
scale_colour_manual(values = c("Altres béns del fitxer" = "#828C99",
"Béns en perill" = "#C44E22")) +
coord_fixed(ratio = 1, xlim = c(-180, 180), ylim = c(-60, 85), expand = FALSE) +
labs(title = "El perill dibuixa una geografia diferent",
subtitle = paste(nrow(perill_mapa), "dels", total_perill,
"béns en perill disposen de coordenades"),
x = "Longitud (graus)", y = "Latitud (graus)",
colour = "Estat segons el fitxer", caption = font_mapa)
mapa_perillMapa 2. Els béns en perill destaquen sobre la resta de localitzacions disponibles.
El mapa destaca agrupacions al Pròxim Orient i en diverses àrees africanes, a més de casos a Europa, Àsia, Amèrica i el Pacífic. A diferència del primer, que mostrava les categories, aquest centra la mirada en l’estat de perill. Les localitzacions ajuden a llegir la distribució espacial; no permeten atribuir-la a conflictes, pressió turística o altres causes sense informació addicional.
Només es poden situar 54 dels 58 béns en perill. Garamba, Mount Amel Castles, Boma–Badingilo Migratory Landscape i Sebastia no tenen coordenades al fitxer. Aquests quatre casos continuen comptant a les proporcions. La manca de coordenades també afecta tots els 25 béns amb any d’inscripció 2026: el mapa no mostra, per tant, totes les incorporacions més recents recollides a l’Excel.
La panoràmica mundial deixa una doble conclusió. El reconeixement està dominat numèricament pels béns culturals i té el recompte regional més alt a Europa i Amèrica del Nord. Quan es compara el patrimoni en perill amb el total de cada regió, l’atenció es desplaça cap als Estats Àrabs i Àfrica.
Llegir juntes aquestes dues geografies evita confondre tenir més béns reconeguts amb tenir una proporció més gran de béns en perill. La llista mostra què s’ha reconegut; l’indicador de perill afegeix una segona mirada sobre l’estat registrat d’aquest patrimoni. Explicar les causes de les diferències exigiria una altra investigació.
Dades: exclusivament el full
World Heritage List de l’Excel baixa(2).xlsx,
vinculat a la Llista del
Patrimoni Mundial de la UNESCO. La pàgina de referència es va
consultar el 9 de novembre de 2026; aquesta data no identifica
l’actualització del fitxer, que no està confirmada. No s’ha substituït
per una descàrrega nova ni s’hi han incorporat altres estadístiques. La
base cartogràfica és la del paquet maps.
Recompte: cada identificador id_no
correspon a un bé únic en aquest fitxer, sense identificadors absents o
repetits. Els béns compartits compten una vegada en cada regió
assignada, tant al numerador com al denominador de les proporcions. Per
això les sumes territorials poden superar el total mundial. Les regions
són les definides a l’Excel.
Perill i temps: es considera en perill un bé amb
danger = 1. danger_list també conserva
antecedents de 42 béns que no estan marcats en perill.
date_end no indica necessàriament una sortida definitiva: 4
béns marcats en perill tenen aquest camp informat. No s’han calculat
durades a partir d’aquestes dates. El gràfic anual utilitza
date_inscribed, sense sumar-hi ampliacions ni reconstruir
una llista històrica acumulada.
Mapes: s’han exclòs només de les representacions els 40 béns sense coordenades. No s’han imputat zeros ni afegit localitzacions externes. Els valors informats passen els controls de rang, però no s’ha verificat individualment cada ubicació. Els punts no representen superfícies ni tots els components dels béns en sèrie; el mapa de longitud i latitud és orientatiu i deforma les superfícies.
# Comprovació final dels resultats
stopifnot(sum(taula_categories$bens) == total_bens,
sum(inscripcions_any$inscripcions) == total_bens,
sum(taula_regions$total) == nrow(bens_regio),
all(taula_regions$perill <= taula_regions$total),
all(taula_regions$percentatge >= 0 & taula_regions$percentatge <= 100),
nrow(bens_mapa) + nrow(exclosos_mapa) == total_bens,
nrow(perill_mapa) + sum(exclosos_mapa$en_perill) == total_perill)
# Valors de control de l'Excel
stopifnot(total_bens == 1273, total_perill == 58,
nrow(bens_regio) == 1278, nrow(bens_compartits) == 51,
nrow(bens_multiregio) == 4, nrow(bens_mapa) == 1233,
nrow(exclosos_mapa) == 40, nrow(perill_mapa) == 54,
all(is.na(exclosos_mapa$longitude)),
all(is.na(exclosos_mapa$latitude)),
all(!bens$coordenades_valides[bens$any_inscripcio == max(bens$any_inscripcio)]),
setequal(exclosos_mapa$id[exclosos_mapa$en_perill], c(136, 1810, 1808, 1809)))
control_regions <- taula_regions |> dplyr::arrange(regio)
stopifnot(all(control_regions$total == c(115, 102, 315, 591, 155)),
all(control_regions$perill == c(13, 25, 6, 7, 7)),
all(taula_categories$bens == c(991, 240, 42)),
all(anys_categoria$mediana == c(2000, 1999, 1996.5)),
all(!bens$en_perill[bens$id %in% bens_multiregio$id]),
anys_maxim$any_inscripcio == 2000, anys_maxim$inscripcions == 61)