Datos de apartamentos turísticos

TURISMO
APARTAMENTOS
ALQUILER
VACACIONES
ESPAÑA
GPKG
Autor/a
Afiliación

Luis Arbona Comas

Universitat de València

Fecha de publicación

10 de mayo de 2024

Input

Se ha obtenido un conjunto de datos geoespaciales sobre apartamentos de alquiler vacacional en España del paquete OpenStreetMaps.

OpenStreetMap (OSM) es un proyecto colaborativo para crear un mapa libre y editable del mundo, el cual permite a los usuarios visualizar, editar y utilizar datos geográficos de cualquier parte del globo. Los datos de OpenStreetMap son creados por personas voluntarias que contribuyen en el proyecto aportando información geoespacial, por ejemplo, mediante el uso de SIG, recopilando datos desde el terreno con dispositivos GPS, dibujando mapas a partir de imágenes satelitales, o agregando información de fuentes públicas.

Para conocer más detalles sobre este conjunto de datos se puede entrar a su página en wikipedia

Página: https://wiki.openstreetmap.org/wiki/Tag%3Atourism%3Dapartment.

Descripción

Se cargan las librerías:

library(tidyverse) 
library(sf)
library(mapSpain) 
library(osmdata)
library(ggspatial)
library(prettymapr)

A continuación para leer el conjunto de datos se crea un cuadro delimitador con coordenadas geógraficas en las que se puede observar España y después siguiendo el esquema del paquete OSM se señala que la temática es el turismo y que el conjunto de datos que se va a utilizar es de los apartamentos.

bbox_spain <- c(-10, 30, 5, 46) #cuadro delimitador
q1 <- bbox_spain %>%
  osmdata::opq(timeout = 2500) %>%
  osmdata::add_osm_feature("tourism", "apartment")  #consulta

Apartment <- osmdata_sf(q1) #consulta a objeto sf
Apartment_sf <- Apartment$osm_points #Extracción solo de ubicaciones
class(Apartment_sf)
[1] "sf"         "data.frame"
dim(Apartment_sf)
[1] 15012   224

En este conjunto de datos se detecta que hay 14938 observaciones es decir apartamentos de alquiler vacacional y hay 222 variables de las cuales todas menos el osm_id es decir la variable que utiliza OpenStreetMaps para geolocalizar a los apartamentos están en su gran mayoría vacías.Entre estas encontramos variables que si de estar completas nos darían información sobre el apartamento como el número de habitaciones de este, cual es su dirección o hasta si se puede pagar con tarjeta.

A continuación, se va a representar con leaflet para poder detectar si hay ubicaciones que no se corresponden con ESpaña.

data <- sf::st_transform(Apartment_sf, crs=4326)
data %>%
  leaflet::leaflet() %>%
  leaflet::addTiles() %>%
  leaflet::addCircles()

Tras visualizar los puntos en el mapa, se detecta que hay muchos apartamentos fuera de los límites de España encontrándose en el norte de África, Portugal y en el sur de Marruecos.

Tratamiento

Para mejorar este conjunto de datos, se obtiene un dataframe con los códigos de las comunidades autónomas de España con el paquete “mapSpain” y se elimina a las Canarias ya que no entran en el cuadro delimitador creado anteriormente.A continuación,las agrupa para quedarse con una misma estructura que Apartment_sf y así después poder utilizar la función intersect para que solo sean representadas los puntos que coinciden tanto en el cuadro delimitador como en las CC_AA y así no se cuelen otros que están dentro del cuadro como los del sur de Francia, en Portugal o en el Norte de África.

spain_ccaa <- mapSpain::esp_get_ccaa(epsg="4326")#obtención CCAA
spain_ccaa <- spain_ccaa %>% filter(!codauto %in% "05")# CANARIAS FUERA
st_crs(spain_ccaa) #estructura spain_ccaa
Coordinate Reference System:
  User input: EPSG:4326 
  wkt:
GEOGCRS["WGS 84",
    ENSEMBLE["World Geodetic System 1984 ensemble",
        MEMBER["World Geodetic System 1984 (Transit)"],
        MEMBER["World Geodetic System 1984 (G730)"],
        MEMBER["World Geodetic System 1984 (G873)"],
        MEMBER["World Geodetic System 1984 (G1150)"],
        MEMBER["World Geodetic System 1984 (G1674)"],
        MEMBER["World Geodetic System 1984 (G1762)"],
        MEMBER["World Geodetic System 1984 (G2139)"],
        ELLIPSOID["WGS 84",6378137,298.257223563,
            LENGTHUNIT["metre",1]],
        ENSEMBLEACCURACY[2.0]],
    PRIMEM["Greenwich",0,
        ANGLEUNIT["degree",0.0174532925199433]],
    CS[ellipsoidal,2],
        AXIS["geodetic latitude (Lat)",north,
            ORDER[1],
            ANGLEUNIT["degree",0.0174532925199433]],
        AXIS["geodetic longitude (Lon)",east,
            ORDER[2],
            ANGLEUNIT["degree",0.0174532925199433]],
    USAGE[
        SCOPE["Horizontal component of 3D system."],
        AREA["World."],
        BBOX[-90,-180,90,180]],
    ID["EPSG",4326]]
spain2 <- spain_ccaa %>% group_by(codauto) %>% summarise()# agrupación sobre CCAA para dejar ubicaciones
st_crs(Apartment_sf)#Comprobación de misma estructura
Coordinate Reference System:
  User input: EPSG:4326 
  wkt:
GEOGCRS["WGS 84",
    ENSEMBLE["World Geodetic System 1984 ensemble",
        MEMBER["World Geodetic System 1984 (Transit)"],
        MEMBER["World Geodetic System 1984 (G730)"],
        MEMBER["World Geodetic System 1984 (G873)"],
        MEMBER["World Geodetic System 1984 (G1150)"],
        MEMBER["World Geodetic System 1984 (G1674)"],
        MEMBER["World Geodetic System 1984 (G1762)"],
        ELLIPSOID["WGS 84",6378137,298.257223563,
            LENGTHUNIT["metre",1]],
        ENSEMBLEACCURACY[2.0]],
    PRIMEM["Greenwich",0,
        ANGLEUNIT["degree",0.0174532925199433]],
    CS[ellipsoidal,2],
        AXIS["geodetic latitude (Lat)",north,
            ORDER[1],
            ANGLEUNIT["degree",0.0174532925199433]],
        AXIS["geodetic longitude (Lon)",east,
            ORDER[2],
            ANGLEUNIT["degree",0.0174532925199433]],
    USAGE[
        SCOPE["Horizontal component of 3D system."],
        AREA["World."],
        BBOX[-90,-180,90,180]],
    ID["EPSG",4326]]
apt_fin <- st_intersection(Apartment_sf,spain2) #Intersección para dejar solo ubicaciones de España
Warning: attribute variables are assumed to be spatially constant throughout
all geometries

Output

Se ha obtenido un nuevo objeto sf con 8334 observaciones y 223 variables:

class(apt_fin)
[1] "sf"         "data.frame"
dim(apt_fin)
[1] 8392  225

En el siguiente gráfico se puede observar como todos los datos se encuentran localizados es España.

ggplot() +
  ggspatial::annotation_map_tile(type = "cartolight", zoom = 8) +
  geom_sf(data = apt_fin, color = "red", size = 2.5, alpha = 0.5) +
  theme_minimal() #gráfico ggplot con mapa base por annotation_map_tile al cual se agrega una capa geom_sf) para mostrar las intersecciones (apt_fin) en rojo.
Zoom: 8

Para descargar el fichero se utilizará el formato GroPackage(gpkg)

sf::st_write(apt_fin, "apt_alq_esp.gpkg")



Proyecto de Innovación Educativa Emergente (PIEE-2737007)