Skip to content

Instantly share code, notes, and snippets.

@vi-enne
Last active September 2, 2022 21:40
Show Gist options
  • Save vi-enne/dfe0ca21e9470c476b9413f714e1846c to your computer and use it in GitHub Desktop.
Save vi-enne/dfe0ca21e9470c476b9413f714e1846c to your computer and use it in GitHub Desktop.
library(tmaptools)
library(sf)
library(tidyr)
library(stringr)
# Fonti:
# Basi geografiche ISTAT (da scaricare): https://www.istat.it/it/archivio/273443
# Liste candidati Ministero dell'Interno: https://dait.interno.gov.it/elezioni/trasparenza/elezioni-politiche-2022
# Estratte da onData: https://github.com/ondata/elezioni-politiche-2022/tree/main/liste
indirizzo <- "Piazza di Monte Citorio, 00186 Roma RM, Italy"
# Inizio ----
if (!exists("cam_trans")) {
# Carica dati ----
file_path_sen <-
"Collegi_Elettorali_BasiGeografiche\\SENATO_CollegiUNINOMINALI_2020\\SENATO_CollegiUNINOMINALI_2020.shp"
sen_shp <- st_read(file_path_sen)
file_path_cam <-
"Collegi_Elettorali_BasiGeografiche\\CAMERA_CollegiUNINOMINALI_2020\\CAMERA_CollegiUNINOMINALI_2020.shp"
cam_shp <- st_read(file_path_cam)
cam_uni <-
read.csv(
"https://raw.githubusercontent.com/ondata/elezioni-politiche-2022/main/liste/processing/CAMERA_ITALIA_20220925_uni.csv",
encoding = "UTF-8"
)
cam_uni_coal <-
read.csv(
"https://raw.githubusercontent.com/ondata/elezioni-politiche-2022/main/liste/processing/CAMERA_ITALIA_20220925_uni_coalizioni.csv",
encoding = "UTF-8"
)
cam_uni_coal$desc_lista[cam_uni_coal$desc_lista %in%
c(
"ALLEANZA VERDI E SINISTRA",
"+EUROPA",
"IMPEGNO CIVICO LUIGI DI MAIO - CENTRO DEMOCRATICO",
"PARTITO DEMOCRATICO - ITALIA DEMOCRATICA E PROGRESSISTA"
)] = "CENTROSINISTRA"
cam_uni_coal$desc_lista[cam_uni_coal$desc_lista %in%
c(
"FORZA ITALIA",
"FRATELLI D'ITALIA CON GIORGIA MELONI",
"NOI MODERATI/LUPI - TOTI - BRUGNARO - UDC",
"LEGA PER SALVINI PREMIER"
)] = "CENTRODESTRA"
cam_uni <- merge(cam_uni, cam_uni_coal)
cam_uni$Candidato <-
str_to_title(paste(cam_uni$cogn_c, cam_uni$nome_c))
candidatiCam <-
unique(cam_uni[, c("desc_ente", "desc_lista", "Candidato")])
colnames(candidatiCam) <- c("Seggio", "Lista", "Candidato")
candidatiCam <-
spread(candidatiCam, key = Lista, value = Candidato)
sen_uni <-
read.csv(
"https://raw.githubusercontent.com/ondata/elezioni-politiche-2022/main/liste/processing/SENATO_ITALIA_20220925_uni.csv",
encoding = "UTF-8"
)
sen_uni_coal <-
read.csv(
"https://raw.githubusercontent.com/ondata/elezioni-politiche-2022/main/liste/processing/SENATO_ITALIA_20220925_uni_coalizioni.csv",
encoding = "UTF-8"
)
sen_uni_coal$desc_lista[sen_uni_coal$desc_lista %in%
c(
"ALLEANZA VERDI E SINISTRA",
"+EUROPA",
"IMPEGNO CIVICO LUIGI DI MAIO - CENTRO DEMOCRATICO",
"PARTITO DEMOCRATICO - ITALIA DEMOCRATICA E PROGRESSISTA"
)] = "CENTROSINISTRA"
sen_uni_coal$desc_lista[sen_uni_coal$cod_cand %in% c(1350896, 1350905)] <-
"ALLEANZA VERDI E SINISTRA"
sen_uni_coal$desc_lista[sen_uni_coal$cod_cand %in% c(1352725, 1352734)] <-
"PARTITO DEMOCRATICO"
sen_uni_coal$desc_lista[sen_uni_coal$desc_lista %in%
c(
"FORZA ITALIA",
"FRATELLI D'ITALIA CON GIORGIA MELONI",
"NOI MODERATI/LUPI - TOTI - BRUGNARO - UDC",
"LEGA PER SALVINI PREMIER"
)] = "CENTRODESTRA"
sen_uni <- merge(sen_uni, sen_uni_coal)
sen_uni$Candidato <-
str_to_title(paste(sen_uni$cogn_c, sen_uni$nome_c))
candidatiSen <-
unique(sen_uni[, c("desc_ente", "desc_lista", "Candidato")])
colnames(candidatiSen) <- c("Seggio", "Lista", "Candidato")
candidatiSen <-
spread(candidatiSen, key = Lista, value = Candidato)
sen_shp$SU20_DEN <- toupper(sen_shp$SU20_DEN)
cam_shp$CU20_DEN <- toupper(cam_shp$CU20_DEN)
sen_trans <- st_transform(sen_shp, 2163)
cam_trans <- st_transform(cam_shp, 2163)
}
# Ricerca indirizzo ----
tryCatch(
expr = {
pnts <- as.data.frame(t(geocode_OSM(indirizzo)$coords))
},
error = function(e) {
pnts <- data.frame(x = 0, y = 0)
}
)
pnts_sf <- st_as_sf(pnts, coords = c('x', 'y'), crs = st_crs(4326))
pnts_trans <- st_transform(pnts_sf, 2163)
col_sen <-
sen_shp$SU20_DEN[as.integer(st_intersects(pnts_trans, sen_trans))]
if (is.na(col_sen)) {
out_sen <- "Indirizzo non trovato"
} else{
out_sen <- cbind(Dove = "Senato",
candidatiSen[candidatiSen$Seggio == col_sen, ])
out_sen <- t(na.omit(t(out_sen)))
}
col_cam <-
cam_shp$CU20_DEN[as.integer(st_intersects(pnts_trans, cam_trans))]
if (is.na(col_cam)) {
out_cam <- "Indirizzo non trovato"
} else{
out_cam <- cbind(Dove = "Camera dei Deputati",
candidatiCam[candidatiCam$Seggio == col_cam, ])
out_cam <- t(na.omit(t(out_cam)))
}
if (is.na(col_sen)) {
out <- "Indirizzo non trovato"
} else{
out <- rbind(out_sen, out_cam)
}
# Salva risultato ----
write.csv(out,
file = paste0("candidati_", indirizzo, ".csv"),
row.names = F)
write.csv(out, file = "candidati.csv", row.names = F)
out
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment