library(tidyverse)
library(sf)
library(httr)
library(ggvoronoi)
library(ggmap)
<- "https://wms.ign.gob.ar/geoserver/ows"
ign_geoserver_base_url
<- list(service="wfs",
ign_geoserver_query version="1.1.0",
request="GetFeature",
typeNames="ign:departamento",
cql_filter="in1='02007'")
<- modify_url(url = ign_geoserver_base_url,
ign_geoserver_url query = ign_geoserver_query)
<- read_sf(ign_geoserver_url)
comuna1_sf
<- st_centroid(comuna1_sf)
comuna1_centroid <- st_bbox(comuna1_sf)
comuna1_bbox
<- "https://www.idecom.gob.ar/geoserver/ows"
idecom_geoserver_base_url
<- list(service="wfs",
idecom_geoserver_query version="1.3.0",
request="GetFeature",
typeNames="publico:Antenas103-NO4G-5-3",
cql_filter=paste0("BBOX(the_geom,", paste(comuna1_bbox[c(2,1,4,3)], collapse = ","), ")", " AND Banda='7'"))
<- modify_url(url=idecom_geoserver_base_url,
idecom_geoserver_url query = idecom_geoserver_query)
<- read_sf(idecom_geoserver_url)
radiobases_4g_comuna1
<- radiobases_4g_comuna1 %>%
radiobases_4g_comuna1 as_Spatial() %>%
::remove.duplicates() %>%
spst_as_sf() %>%
na.omit()
register_google(Sys.getenv("GOOGLE_MAPS_API_KEY"))
<- get_googlemap(center = c(lon=-58.37869433449463,
comuna1_map lat=-34.606838945727),
zoom = 15)
ggmap(comuna1_map,
base_layer = ggplot(data = na.omit(st_drop_geometry(radiobases_4g_comuna1)),
aes(Longitud, Latitud))) +
geom_path(stat = "voronoi", alpha = 0.6, size = 0.4) +
geom_point(color = "blue", size = 0.7) +
theme_minimal() +
theme(axis.text = element_blank(),
axis.title = element_blank())
Note: for those interested in the code used to generate each visualization, you can see it by clicking the “Show/Hide All Code” button at the top right of the page or the “Code” button above and to the right of each visualization.
Day 3 - Polygons
Mobile network cells can be modeled using Voronoi Diagrams. Typically, this is done for mobility analysis with cellular signaling data, as shown in this paper.

Day 4 - Hexagons
Hexagons can also be used to plot 4G radio bases, using color intensity to show their density.
library(hexbin)
<- "https://wms.ign.gob.ar/geoserver/ows"
ign_geoserver_base_url
<- list(service="wfs",
ign_geoserver_query version="1.1.0",
request="GetFeature",
typeNames="ign:provincia",
CQL_FILTER="in1='02'")
<- modify_url(url = ign_geoserver_base_url,
ign_geoserver_url query = ign_geoserver_query)
<- read_sf(ign_geoserver_url)
caba
<- st_bbox(caba)
caba_bb
<- "https://www.idecom.gob.ar/geoserver/ows"
idecom_geoserver_base_url
<- list(service="wfs",
idecom_geoserver_query version="1.3.0",
request="GetFeature",
typeNames="publico:Antenas103-NO4G-5-3",
cql_filter=paste0("BBOX(the_geom,", paste(caba_bb[c(2,1,4,3)], collapse = ","), ")"))
<- modify_url(url=idecom_geoserver_base_url,
idecom_geoserver_url query = idecom_geoserver_query)
<- read_sf(idecom_geoserver_url)
radiobases_4g_caba
if(st_crs(caba)!=st_crs(radiobases_4g_caba)) {
<- st_transform(radiobases_4g_caba, crs = st_crs(caba))
radiobases_4g_caba
}<- st_join(radiobases_4g_caba, caba, left=FALSE)
radiobases_4g_caba
%>%
caba ggplot() +
geom_sf() +
geom_hex(data = radiobases_4g_caba, aes(Longitud, Latitud)) +
theme_bw() +
coord_sf(datum = NA) +
scale_fill_viridis_c(direction = -1, name = "Radiobases 4G") +
theme(axis.title.x = element_blank(),
axis.title.y = element_blank())
