datos <- sf::st_read("C:/Users/sixto/OneDrive/Documentos/Papers/Land distances/dist_covid/datos_agregados.gpkg")
## Reading layer `datos_agregados' from data source
## `C:\Users\sixto\OneDrive\Documentos\Papers\Land distances\dist_covid\datos_agregados.gpkg'
## using driver `GPKG'
## Simple feature collection with 91122 features and 2 fields (with 1 geometry empty)
## Geometry type: POINT
## Dimension: XY
## Bounding box: xmin: -13016370 ymin: -7331031 xmax: 1.0463e-306 ymax: 3850032
## Projected CRS: WGS 84 / Pseudo-Mercator
datos <- sf::st_read("C:/Users/sixto/OneDrive/Documentos/Papers/Land distances/dist_covid/datos_globales_por_anio.gpkg")
## Reading layer `datos_globales_por_anio' from data source
## `C:\Users\sixto\OneDrive\Documentos\Papers\Land distances\dist_covid\datos_globales_por_anio.gpkg'
## using driver `GPKG'
## Simple feature collection with 117639 features and 4 fields (with 2 geometries empty)
## Geometry type: POINT
## Dimension: XY
## Bounding box: xmin: -13016370 ymin: -7331031 xmax: 1.0463e-306 ymax: 3850032
## Projected CRS: WGS 84 / Pseudo-Mercator
datos$covid <- ifelse(datos$anio < 2022, 0, 1)
alcaldias = c("BOGOTA","MEDELLIN","CORDOBA","LA PLATA", "CURITIBA","BELO HORIZONTE", "BUENOS AIRES", "FORTALEZA", "LOJA", "EL SALVADOR")
lat_coord = c(-74.0797202,-75.5781105,-64.2007216,-57.9576927,-49.2859511, -43.9507902, -58.3720765,-38.5247386, -79.2021704,-89.1926163)
lon_coord = c(4.5954893,6.2439913,-31.4131208,-34.9200356,-25.437794, -19.9288533, -34.6084374,-3.7252513, -3.9960413, 13.6977517)
alcaldias <- data.frame(alcaldias,lat_coord, lon_coord)
colnames(alcaldias) <- c("alcaldia",'lon','lat')
calculadora = function(ciudad, ciudad_bb , nombre_ciudad, alcaldia) {
#Primero, decidimos una ciudad#
osm = function(ciudad , llave, valor) {
opq(bbox = ciudad) %>%
add_osm_feature(key = llave, value = valor) %>%
osmdata_sf ()}
filtrar_lista = function(dataset) {
dataset$osm_polygons}
#Sacamos a la alcaldia, La alcaldia se pone en formato lon, lat (yyy,xxx)#
alcaldia = st_as_sf(x = alcaldia, coords = c("lon", "lat"), crs = 4326)
#Sacamos todas las calles#
calles = osm(ciudad,"highway", c("motorway","primary","secondary","tertiary"))
calles = calles$osm_lines
calles_autopista = filter(calles, highway =="motorway")
calles_primarias = filter(calles, highway =="primary")
calles_secundarias = filter(calles, highway =="secondary")
calles_terciarias = filter(calles, highway =="tertiary")
#Paradas de tren#
tren = osm(ciudad, "railway","station")
tren = tren$osm_polygons
#Acá preguntar que onda tema lines, points and polygons#
#Ahora los polígonos industriales#
usos_industriales = osm(ciudad, "landuse","industrial")
usos_industriales = usos_industriales$osm_polygons
#Ahora los rios#
rio = osm(ciudad, "water","river")
rio = filtrar_lista(rio)
#Para fortaleza ver cuales tienen playa#
#If not null#
#if null then nothing#
#IFNA() =NA sacarlo de la formula#
#Vamos con los parques
parques = osm(ciudad, "leisure", "park")
parques = parques$osm_polygons
#Calcular distancias del dataset#
#Distancia de tamaño#
#El valor de la ciudad para hacer el filtro del dataset#
datos <- st_transform(datos, st_crs(ciudad_bb))
ciudad_suelo = st_intersection(datos, ciudad_bb)
ciudad_suelo = sample_n(ciudad_suelo,1500)
#Calculamos la distancia en metros lineales, en un futuro un ruteo puede ser mejor#
ciudad_suelo = ciudad_suelo %>% mutate(dist_parque = (0.00001 + apply(st_distance(ciudad_suelo, parques), 1 , function (x) min(x))))
ciudad_suelo = ciudad_suelo %>% mutate(dist_autopista = (0.00001 + apply(st_distance(ciudad_suelo, calles_autopista), 1 , function (x) min(x))))
ciudad_suelo = ciudad_suelo %>% mutate(dist_calles_primarias = (0.00001 + apply(st_distance(ciudad_suelo, calles_autopista), 1 , function (x) min(x))))
ciudad_suelo = ciudad_suelo %>% mutate(dist_calles_secundarias = (0.00001 + apply(st_distance(ciudad_suelo, calles_secundarias), 1 , function (x) min(x))))
ciudad_suelo = ciudad_suelo %>% mutate(dist_calles_terciarias = (0.00001 + apply(st_distance(ciudad_suelo, calles_terciarias), 1 , function (x) min(x))))
ciudad_suelo = ciudad_suelo %>% mutate(dist_tren = (0.00001 + apply(st_distance(ciudad_suelo, tren), 1 , function (x) min(x))))
ciudad_suelo = ciudad_suelo %>% mutate(dist_usos_industriales = (0.00001 + apply(st_distance(ciudad_suelo, usos_industriales), 1 , function (x) min(x))))
ciudad_suelo = ciudad_suelo %>% mutate(dist_rio = (0.00001 + apply(st_distance(ciudad_suelo, rio), 1 , function (x) min(x))))
ciudad_suelo = ciudad_suelo %>% mutate(dist_alcaldia = (0.00001 + apply(st_distance(ciudad_suelo, alcaldia), 1 , function (x) min(x))))
}
Empezamos por Bogotá
ciudad = "Bogota D.C, Colombia"
ciudad_bb = getbb(ciudad, format_out = "sf_polygon")
ciudad_bb = ciudad_bb$polygon
ciudad_bb_ <- ciudad_bb[1, ]
filtrar_lista = function(dataset) {
dataset$osm_polygons}
acaldia_bogota = alcaldias %>% filter(alcaldia =="BOGOTA")
Intersectamos los datos para que estén en el polígono de Bogotá
# Transform CRS of datos to match ciudad_bb_
datos <- st_transform(datos, st_crs(ciudad_bb_))
# Perform intersection
datos_bogota <- st_intersection(datos, ciudad_bb_)
## Warning: attribute variables are assumed to be spatially constant throughout all
## geometries
mapview(datos_bogota , zcol = "v_suelo")