World Database on Protected Areas (WDPA) - Central America Analysis

This notebook contains preliminary analysis of protected area coverage in Central American countries using the World Database on Protected Areas (WDPA) datasets.

The data accessed here is a subset of the original dataset and it only includes polygons for protected areas in Latin America (the original dataset is global with both polygon and point data). This subset was prepared for educational purposes and can be downloaded from the course’s Google Drive through the zip file WDPA_Nov2025_Latam.zip. It maintains the file structure of the original complete dataset.

References

UNEP-WCMC and IUCN (2025), Protected Planet: The World Database on Protected Areas (WDPA) [On-line], November 2025, Cambridge, UK: UNEP-WCMC and IUCN. Available at: www.protectedplanet.net.

UNEP-WCMC (2019). User Manual for the World Database on Protected Areas and world database on other effective area-based conservation measures: 1.6. UNEP-WCMC: Cambridge, UK. Available at: http://wcmc.io/WDPA_Manual

Data import and preparation

import os
import pandas as pd
import geopandas as gpd

pd.set_option('display.max_columns', None)

# ------ IMPORT DATASETS ------

data_folder = os.path.join('data', 'WDPA_Nov2025_Latam')

fp = os.path.join(data_folder, 'WDPA_Nov2025_Latam_shp_0', 'WDPA_Nov2025_Latam_shp0-polygons.shp')
wdpa0 = gpd.read_file(fp)

fp = os.path.join(data_folder, 'WDPA_Nov2025_Latam_shp_1', 'WDPA_Nov2025_Latam_shp1-polygons.shp')
wdpa1 = gpd.read_file(fp)

fp = os.path.join(data_folder, 'WDPA_Nov2025_Latam_shp_2', 'WDPA_Nov2025_Latam_shp2-polygons.shp')
wdpa2 = gpd.read_file(fp)

# Standardize column names to lowercase
wdpa0.columns = wdpa0.columns.str.lower()
wdpa1.columns = wdpa1.columns.str.lower()
wdpa2.columns = wdpa2.columns.str.lower()
print("WDPA0 shape:", wdpa0.shape)
wdpa0.head()
WDPA0 shape: (3679, 31)
wdpaid wdpa_pid pa_def name orig_name desig desig_eng desig_type iucn_cat int_crit marine rep_m_area gis_m_area rep_area gis_area no_take no_tk_area status status_yr gov_type own_type mang_auth mang_plan verif metadataid sub_loc parent_iso iso3 supp_info cons_obj geometry
0 1.0 1 1 Diamond Reef and Salt Fish Tail Reef Diamond Reef Marine Reserve Marine Reserve National Ia Not Applicable 2 14.572487 14.587808 14.581467 14.587808 All 14.572487 Designated 1973 Federal or national ministry or agency State Fisheries Division Not Reported State Verified 1807 AG-04 ATG ATG Not Applicable Not Applicable POLYGON ((-61.82494 17.18497, -61.82497 17.184...
1 2.0 2 1 Palaster Reef Palaster Reef Marine Reserve Marine Reserve National Ia Not Applicable 2 3.829107 3.833094 3.831674 3.833094 All 3.829107 Designated 1973 Federal or national ministry or agency State Fisheries Division Not Reported State Verified 1807 AG-10 ATG ATG Not Applicable Not Applicable POLYGON ((-61.74007 17.52001, -61.77174 17.526...
2 3.0 3 1 Laguna de los Pozuelos Laguna de los Pozuelos Monumento Natural Nature Monument National III Not Applicable 0 0.000000 0.000000 160.000000 217.931016 Not Applicable 0.000000 Designated 1980 Federal or national ministry or agency Not Reported Administración de Parques Nacionales Not Reported State Verified 1935 AR-Y ARG ARG Not Applicable Not Applicable POLYGON ((-65.98955 -22.47423, -65.99441 -22.4...
3 4.0 4 1 Formosa Formosa Reserva Natural Nature Reserve National Ia Not Applicable 0 0.000000 0.000000 90.050000 90.746053 Not Applicable 0.000000 Designated 1968 Federal or national ministry or agency Not Reported Administración de Parques Nacionales https://sib.gob.ar/archivos/plan_de_gestion_RN... State Verified 1935 AR-P ARG ARG Not Applicable Not Applicable POLYGON ((-61.83791 -24.20686, -61.83781 -24.2...
4 6.0 6 1 Los Glaciares Los Glaciares Parque Nacional National Park National II Not Applicable 0 0.000000 0.000000 5385.500000 5368.384077 Not Applicable 0.000000 Designated 1937 Federal or national ministry or agency Not Reported Administración de Parques Nacionales https://sib.gob.ar/archivos/PG_PN_LOS_GLACIARE... State Verified 1935 AR-Z ARG ARG Not Applicable Not Applicable POLYGON ((-73.14850 -49.27008, -73.14368 -49.2...
print("WDPA1 shape:", wdpa1.shape)
wdpa1.head()
WDPA1 shape: (3421, 31)
wdpaid wdpa_pid pa_def name orig_name desig desig_eng desig_type iucn_cat int_crit marine rep_m_area gis_m_area rep_area gis_area no_take no_tk_area status status_yr gov_type own_type mang_auth mang_plan verif metadataid sub_loc parent_iso iso3 supp_info cons_obj geometry
0 478006.0 478006 1 Estero La Manzanilla Estero La Manzanilla Sitio Ramsar, Humedal de Importancia Internaci... Ramsar Site, Wetland of International Importance International Not Reported (ii)(iv)(vii)(viii) 0 0.0 0.000334 2.64 2.641565 Not Applicable 0.0 Designated 2008 Not Reported Not Reported Not Reported Not Reported State Verified 1856 MX-JAL MEX MEX Not Applicable Not Applicable POLYGON ((-104.82210 19.31424, -104.82200 19.3...
1 478007.0 478007 1 Laguna Barra de Navidad Laguna Barra de Navidad Sitio Ramsar, Humedal de Importancia Internaci... Ramsar Site, Wetland of International Importance International Not Reported (i)(ii)(iv)(vii)(viii) 1 0.0 2.817812 7.94 7.946036 Not Reported 0.0 Designated 2008 Not Reported Not Reported Not Reported Not Reported State Verified 1856 MX-JAL MEX MEX Not Applicable Not Applicable POLYGON ((-104.68078 19.20175, -104.68132 19.2...
2 478008.0 478008 1 Estero Majahuas Estero Majahuas Sitio Ramsar, Humedal de Importancia Internaci... Ramsar Site, Wetland of International Importance International Not Reported (ii)(iv)(vii)(viii) 0 0.0 0.004628 7.86 7.867309 Not Applicable 0.0 Designated 2008 Not Reported Not Reported Not Reported Not Reported State Verified 1856 MX-JAL MEX MEX Not Applicable Not Applicable POLYGON ((-105.37759 19.84940, -105.37710 19.8...
3 478009.0 478009 1 Laguna Chalacatepec Laguna Chalacatepec Sitio Ramsar, Humedal de Importancia Internaci... Ramsar Site, Wetland of International Importance International Not Reported (i)(ii)(iv)(vii)(viii) 0 0.0 0.000000 10.93 10.942113 Not Applicable 0.0 Designated 2008 Not Reported Not Reported Not Reported Not Reported State Verified 1856 MX-JAL MEX MEX Not Applicable Not Applicable POLYGON ((-105.21927 19.64621, -105.21986 19.6...
4 478010.0 478010 1 Oasis de la Sierra El Pilar Oasis de la Sierra El Pilar Sitio Ramsar, Humedal de Importancia Internaci... Ramsar Site, Wetland of International Importance International Not Reported (i)(ii)(iii) 0 0.0 0.000000 1808.03 1775.209223 Not Applicable 0.0 Designated 2008 Not Reported Not Reported Not Reported Not Reported State Verified 1856 MX-BCS MEX MEX Not Applicable Not Applicable POLYGON ((-110.90110 25.02583, -110.88632 25.0...
print("WDPA2 shape:", wdpa2.shape)
wdpa2.head()
WDPA2 shape: (3276, 31)
wdpaid wdpa_pid pa_def name orig_name desig desig_eng desig_type iucn_cat int_crit marine rep_m_area gis_m_area rep_area gis_area no_take no_tk_area status status_yr gov_type own_type mang_auth mang_plan verif metadataid sub_loc parent_iso iso3 supp_info cons_obj geometry
0 555636487.0 555636487 1 Reserva Biológica Do Parque Equitativa Reserva Biológica Do Parque Equitativa Reserva Biológica Biological Reserve National Ia Not Applicable 0 0.0 0.0 1.570550 1.570551 Not Applicable 0.0 Designated 2014 Sub-national ministry or agency Not Reported Secretaria Municipal De Meio Ambiente, Agricul... Not Reported State Verified 1802 BRA-RJ BRA BRA Not Applicable Not Applicable MULTIPOLYGON (((-43.25874 -22.63150, -43.25894...
1 555636488.0 555636488 1 Parque Natural Municipal Corredores De Biodive... Parque Natural Municipal Corredores De Biodive... Parque Park National II Not Applicable 0 0.0 0.0 0.715180 0.715174 Not Applicable 0.0 Designated 2011 Sub-national ministry or agency Not Reported Secretaria Do Meio Ambiente, Parques E Jardins... Not Reported State Verified 1802 BRA-SP BRA BRA Not Applicable Not Applicable POLYGON ((-47.47996 -23.39006, -47.48335 -23.3...
2 555636489.0 555636489 1 Parque Natural Municipal De Brigadeiro Tobias Parque Natural Municipal De Brigadeiro Tobias Parque Park National II Not Applicable 0 0.0 0.0 0.118531 0.118531 Not Applicable 0.0 Designated 2015 Sub-national ministry or agency Not Reported Secretaria Do Meio Ambiente, Parques E Jardins... Not Reported State Verified 1802 BRA-SP BRA BRA Not Applicable Not Applicable POLYGON ((-47.36366 -23.50666, -47.36462 -23.5...
3 555636490.0 555636490 1 Reserva Particular Do Patrimônio Natural Boa Fé Reserva Particular Do Patrimônio Natural Boa Fé Reserva Particular do Patrimônio Natural Natural Heritage Private Reserve National IV Not Applicable 0 0.0 0.0 0.141830 0.141829 Not Applicable 0.0 Designated 2016 Individual landowners Individual landowners Instituto Estadual De Meio Ambiente E Recursos... Not Reported State Verified 1802 BRA-ES BRA BRA Not Applicable Not Applicable POLYGON ((-41.14679 -20.07258, -41.14852 -20.0...
4 555636491.0 555636491 1 Parque Estadual Ponta Da Tulha Parque Estadual Ponta Da Tulha Parque Park National II Not Applicable 0 0.0 0.0 17.053069 17.052181 Not Applicable 0.0 Designated 2015 Sub-national ministry or agency Not Reported Instituto Do Meio Ambiente E Recursos Hídricos... Not Reported State Verified 1802 BRA-BA BRA BRA Not Applicable Not Applicable POLYGON ((-39.06462 -14.59730, -39.06520 -14.5...

Calculate protected area coverage in Central America

# Calculate total protected reported area for each Central American country from WDPA datasets

# Standardize column names to lowercase
wdpa0.columns = wdpa0.columns.str.lower()
wdpa1.columns = wdpa1.columns.str.lower()
wdpa2.columns = wdpa2.columns.str.lower()

# Belize
area0 = wdpa0.loc[wdpa0["iso3"] == "BLZ", "rep_area"].sum()
area1 = wdpa1.loc[wdpa1["iso3"] == "BLZ", "rep_area"].sum()
area2 = wdpa2.loc[wdpa2["iso3"] == "BLZ", "rep_area"].sum()
total_area_blz = area0 + area1 + area2
print(f"Total protected area in Belize (sq. km): {total_area_blz:,.2f}")

# Costa Rica
area0 = wdpa0.loc[wdpa0["iso3"] == "CRI", "rep_area"].sum()
area1 = wdpa1.loc[wdpa1["iso3"] == "CRI", "rep_area"].sum()
area2 = wdpa2.loc[wdpa2["iso3"] == "CRI", "rep_area"].sum()
total_area_cri = area0 + area1 + area2
print(f"Total protected area in Costa Rica (sq. km): {total_area_cri:,.2f}")

# El Salvador
area0 = wdpa0.loc[wdpa0["iso3"] == "SLV", "rep_area"].sum()
area1 = wdpa1.loc[wdpa1["iso3"] == "SLV", "rep_area"].sum()
area2 = wdpa2.loc[wdpa2["iso3"] == "SLV", "rep_area"].sum()
total_area_slv = area0 + area1 + area2
print(f"Total protected area in El Salvador (sq. km): {total_area_slv:,.2f}")

# Guatemala
area0 = wdpa0.loc[wdpa0["iso3"] == "GTM", "rep_area"].sum()
area1 = wdpa1.loc[wdpa1["iso3"] == "GTM", "rep_area"].sum()
area2 = wdpa2.loc[wdpa2["iso3"] == "GTM", "rep_area"].sum()
total_area_gtm = area0 + area1 + area2
print(f"Total protected area in Guatemala (sq. km): {total_area_gtm:,.2f}")

# Honduras
area0 = wdpa0.loc[wdpa0["iso3"] == "HND", "rep_area"].sum()
area1 = wdpa1.loc[wdpa1["iso3"] == "HND", "rep_area"].sum()
area2 = wdpa2.loc[wdpa2["iso3"] == "HND", "rep_area"].sum()
total_area_hnd = area0 + area1 + area2
print(f"Total protected area in Honduras (sq. km): {total_area_hnd:,.2f}")

# Nicaragua
area0 = wdpa0.loc[wdpa0["iso3"] == "NIC", "rep_area"].sum()
area1 = wdpa1.loc[wdpa1["iso3"] == "NIC", "rep_area"].sum()
area2 = wdpa2.loc[wdpa2["iso3"] == "NIC", "rep_area"].sum()
total_area_nic = area0 + area1 + area2
print(f"Total protected area in Nicaragua (sq. km): {total_area_nic:,.2f}")

# Panama
area0 = wdpa0.loc[wdpa0["iso3"] == "PAN", "rep_area"].sum()
area1 = wdpa1.loc[wdpa1["iso3"] == "PAN", "rep_area"].sum()
area2 = wdpa2.loc[wdpa2["iso3"] == "PAN", "rep_area"].sum()
total_area_pan = area0 + area1 + area2
print(f"Total protected area in Panama (sq. km): {total_area_pan:,.2f}")
Total protected area in Belize (sq. km): 10,181.87
Total protected area in Costa Rica (sq. km): 199,170.72
Total protected area in El Salvador (sq. km): 5,701.12
Total protected area in Guatemala (sq. km): 40,316.17
Total protected area in Honduras (sq. km): 96,103.89
Total protected area in Nicaragua (sq. km): 84,985.39
Total protected area in Panama (sq. km): 133,553.40
# ----------------------------------------------------------------
# Calculate percentage of protected   area for Belize
pct_blz = (total_area_blz / 22966) * 100
print(f"Percentage of protected area in Belize relative to country's land area: {pct_blz:.2f}%\n")
Percentage of protected area in Belize relative to country's land area: 44.33%

TO DO: Repeat percentage calculation for the rest of the Central American countries.

The areas are:

  • Belize: 22,966 km²
  • Costa Rica: 51,180 km²
  • El Salvador: 21,041 km²
  • Guatemala: 108,889 km²
  • Honduras: 112,492 km²
  • Nicaragua: 130,375 km²
  • Panama: 75,417 km²

Source: Wikipedia, November 5, 2025.