The geoperu package provides a convenient interface to
access official spatial datasets of Peru directly from R. These data are
collected from the National Institute of Statistics and Informatics
(INEI) of Peru.
Install the released version of geoperu from CRAN:
install.packages("geoperu")Install the development version from GitHub with
pak:
pak::pak("PaulESantos/geoperu")To access spatial information of districts from any province in Peru,
you can use the get_geo_peru() function.
library(geoperu)
#> This is geoperu 0.0.1
cusco <- geoperu::get_geo_peru(geography = "CUSCO",
level = "dep",
simplified = FALSE,
showProgress = FALSE)
cusco
#> Simple feature collection with 112 features and 4 fields
#> Geometry type: MULTIPOLYGON
#> Dimension: XY
#> Bounding box: xmin: -73.9811 ymin: -15.45829 xmax: -70.34507 ymax: -11.21229
#> Geodetic CRS: WGS 84
#> First 10 features:
#> departamento provincia distrito capital
#> 1 CUSCO ESPINAR PICHIGUA PICHIGUA
#> 2 CUSCO ESPINAR SUYCKUTAMBO SUYCKUTAMBO /5
#> 3 CUSCO ESPINAR PALLPATA HECTOR TEJADA
#> 4 CUSCO ESPINAR ESPINAR YAURI
#> 5 CUSCO QUISPICANCHI ANDAHUAYLILLAS ANDAHUAYLILLAS
#> 6 CUSCO CALCA LARES LARES
#> 7 CUSCO CHUMBIVILCAS LLUSCO LLUSCO
#> 8 CUSCO ESPINAR OCORURO OCORURO
#> 9 CUSCO CALCA CALCA CALCA
#> 10 CUSCO ACOMAYO MOSOC LLACTA MOSOC LLACTA
#> geom
#> 1 MULTIPOLYGON (((-71.18148 -...
#> 2 MULTIPOLYGON (((-71.51302 -...
#> 3 MULTIPOLYGON (((-70.97839 -...
#> 4 MULTIPOLYGON (((-71.36934 -...
#> 5 MULTIPOLYGON (((-71.6563 -1...
#> 6 MULTIPOLYGON (((-71.90762 -...
#> 7 MULTIPOLYGON (((-72.10355 -...
#> 8 MULTIPOLYGON (((-71.05453 -...
#> 9 MULTIPOLYGON (((-71.87228 -...
#> 10 MULTIPOLYGON (((-71.43954 -...
cusco_simplified <- geoperu::get_geo_peru(geography = "CUSCO",
level = "dep",
simplified = TRUE,
showProgress = FALSE)
cusco_simplified
#> Simple feature collection with 1 feature and 1 field
#> Geometry type: POLYGON
#> Dimension: XY
#> Bounding box: xmin: -73.9811 ymin: -15.45829 xmax: -70.34507 ymax: -11.21229
#> Geodetic CRS: WGS 84
#> departamento geom
#> 1 CUSCO POLYGON ((-70.8315 -14.0698...
prov_sf <- geoperu::get_geo_peru(geography = "ANTA",
level = "prov",
simplified = TRUE,
showProgress = FALSE)
prov_sf
#> Simple feature collection with 1 feature and 1 field
#> Geometry type: POLYGON
#> Dimension: XY
#> Bounding box: xmin: -72.77286 ymin: -13.71406 xmax: -72.00001 ymax: -13.28477
#> Geodetic CRS: WGS 84
#> provincia geom
#> 1 ANTA POLYGON ((-72.11767 -13.396...
islay_sf <- geoperu::get_geo_peru(geography = "ISLAY",
level = "prov",
simplified = FALSE,
showProgress = FALSE)
islay_sf
#> Simple feature collection with 6 features and 5 fields
#> Geometry type: MULTIPOLYGON
#> Dimension: XY
#> Bounding box: xmin: -72.22384 ymin: -17.28501 xmax: -71.30225 ymax: -16.67504
#> Geodetic CRS: WGS 84
#> tag departamento provincia distrito capital
#> 1 arequipa_islay AREQUIPA ISLAY PUNTA DE BOMBON PUNTA DE BOMBON
#> 2 arequipa_islay AREQUIPA ISLAY MEJIA MEJIA
#> 3 arequipa_islay AREQUIPA ISLAY ISLAY ISLAY (MATARANI)
#> 4 arequipa_islay AREQUIPA ISLAY COCACHACRA COCACHACRA
#> 5 arequipa_islay AREQUIPA ISLAY DEAN VALDIVIA LA CURVA
#> 6 arequipa_islay AREQUIPA ISLAY MOLLENDO MOLLENDO
#> geom
#> 1 MULTIPOLYGON (((-71.44018 -...
#> 2 MULTIPOLYGON (((-71.8306 -1...
#> 3 MULTIPOLYGON (((-71.99808 -...
#> 4 MULTIPOLYGON (((-71.48244 -...
#> 5 MULTIPOLYGON (((-71.76488 -...
#> 6 MULTIPOLYGON (((-71.66772 -...The objects returned by geoperu work directly with
ggplot2. A restrained grey scale, fine district borders,
and a geographic grid produce a clear, technical map of Cusco:
library(ggplot2)
ggplot() +
geom_sf(
data = cusco,
aes(fill = provincia),
color = "#FFFFFF",
linewidth = 0.15
) +
geom_sf(
data = cusco_simplified,
fill = NA,
color = "#374151",
linewidth = 0.7
) +
scale_fill_grey(start = 0.35, end = 0.8, guide = "none") +
coord_sf(expand = FALSE) +
labs(
title = "CUSCO",
subtitle = "Provincias y límites distritales",
caption = "Datos: INEI · Mapa: geoperu"
) +
theme_minimal(base_size = 11) +
theme(
plot.background = element_rect(fill = "#FAFAF9", color = NA),
panel.background = element_rect(fill = "#FAFAF9", color = NA),
panel.grid = element_line(color = "#E5E7EB", linewidth = 0.3),
axis.text = element_text(color = "#6B7280", size = 7),
plot.title = element_text(color = "#1F2937", size = 18, face = "bold"),
plot.subtitle = element_text(color = "#4B5563"),
plot.caption = element_text(color = "#6B7280")
)
geoperu also provides access to spatial information of
natural protected areas in Peru. These areas, managed and declared by
the National Service of Natural Areas Protected by the State (SERNANP),
encompass a diverse range of ecosystems. The get_anp_peru()
function allows users to download spatial data representing these
protected areas directly into their R environment.
manu <- get_anp_peru(anp = "manu", showProgress = FALSE)
manu
#> Simple feature collection with 1 feature and 4 fields
#> Geometry type: POLYGON
#> Dimension: XY
#> Bounding box: xmin: -72.41719 ymin: -13.2059 xmax: -70.85217 ymax: -11.31585
#> Geodetic CRS: WGS 84
#> anp_cate anp_nombre anp_sect anp_ubpo
#> 1 Parque Nacional Manu <NA> Cusco y Madre de Dios
#> geom
#> 1 POLYGON ((-71.36212 -11.656...
manu |>
ggplot() +
geom_sf(fill = "#AAB7B0", color = "#3F5148", linewidth = 0.7) +
coord_sf(expand = FALSE) +
labs(
title = "PARQUE NACIONAL\nDEL MANU",
subtitle = "Cusco y Madre de Dios",
caption = "Datos: SERNANP · Mapa: geoperu"
) +
theme_minimal(base_size = 11) +
theme(
plot.background = element_rect(fill = "#FAFAF9", color = NA),
panel.background = element_rect(fill = "#FAFAF9", color = NA),
panel.grid = element_line(color = "#E5E7EB", linewidth = 0.3),
axis.text = element_text(color = "#6B7280", size = 7),
plot.title = element_text(
color = "#26332D", size = 16, face = "bold", hjust = 0,
lineheight = 0.9
),
plot.subtitle = element_text(color = "#526159"),
plot.caption = element_text(color = "#6B7280")
)
These maps use only ggplot2; colors, typography, and
line widths can be adapted without modifying the spatial data.