[This article was first published on r.iresmi.net, and kindly contributed to R-bloggers]. (You can report issue about the content on this page here)
Want to share your content on R-bloggers? click here if you have a blog, or here if you don't.
Want to share your content on R-bloggers? click here if you have a blog, or here if you don't.
Intersecting an area of interest with a layer at opening time
Days 3 and 4 of 30DayMapChallenge : « polygons » and « green » (previously).
The CORINE Landcover dataset is distributed as a geopackage weighting more than 8 Go. To limit the memory used when we only work on a subset, we can clip it at opening time. Here we will map the Cyprus Island :
library(dplyr)
library(ggplot2)
library(stringr)
library(sf)
library(rnaturalearth)
library(glue)
# Using the contour of Cyprus (enlarged) from naturalearth to clip
bb <- ne_countries(scale = "medium", country = "cyprus", returnclass = "sf") %>%
st_transform("EPSG:3035") %>%
st_buffer(90000) %>%
pull(geometry) %>%
st_as_text()
# Corine Land Cover
# download from https://land.copernicus.eu/pan-european/corine-land-cover/clc2018
# (registration required)
# passing the bounding area
cyprus_clc <- read_sf("data/U2018_CLC2018_V2020_20u1.gpkg", query = glue("
SELECT *
FROM U2018_CLC2018_V2020_20u1
WHERE st_intersects(Shape, st_polygonfromtext('{bb}'))"))
legend_colors <- list("TRUE" = "mediumaquamarine",
"FALSE" = "grey90")
legend_labs <- list("TRUE" = "forest",
"FALSE" = "other")
# exclude sea (code 523)
# and classify on forest (codes 3xx)
cyprus_clc %>%
filter(Code_18 != "523") %>%
ggplot() +
geom_sf(aes(fill = str_detect(Code_18, "^3"),
color = str_detect(Code_18, "^3"))) +
scale_fill_manual(name= "type",
values = legend_colors,
labels = legend_labs) +
scale_color_manual(name = "type",
values = legend_colors,
labels = legend_labs) +
labs(title = "Cyprus",
subtitle = "Landcover",
caption = glue("data: Copernicus CLC 2018
projection LAEA
r.iresmi.net {Sys.Date()}")) +
theme_minimal() +
theme(legend.position = "bottom",
plot.caption = element_text(size = 7))
ggsave("cyprus.png", width = 20, height = 12.36, units = "cm", scale = 1.1, type = "cairo")
To leave a comment for the author, please follow the link and comment on their blog: r.iresmi.net.
R-bloggers.com offers daily e-mail updates about R news and tutorials about learning R and many other topics. Click here if you're looking to post or find an R/data-science job.
Want to share your content on R-bloggers? click here if you have a blog, or here if you don't.
