Localidata es una empresa española que, entre otras cosas, proporciona un API para acceder a los datos. Podemos pedir información de locales comerciales, información de geometrías de barrios y distritos, y mucho más.
Para usar este API debes usar una api_key que obtienes cuando te registras.
Con este código R tan sencillo podemos obtener el polígono del barrio de Justicia, en Madrid.
library(httr) library(jsonlite) library(ggmap) library(SPARQL) #Ejemplo que no necesita paginación #Info sobre el barrio de Justicia (código 280796014) res <- GET("http://datos.localidata.com", path = "recurso/territorio/Barrio/280796014.geojson", query = list( api_key = "TU_API_KEY", `_view` = "coordenadas" #Escapa las variable que empiezan con _ ) ) json <- fromJSON(rawToChar(res$content)) #Así saco el json enviado por el servidor #Tengo 1 polylinea que define el contorno del barrio en #json$features$geometry$coordinates[[1]][[1]][[1]][[N]] #N coordenadas. Hay 359 segmentos. v_lat <- numeric(length(json$features$geometry$coordinates[[1]][[1]][[1]])) v_lon <- numeric(length(json$features$geometry$coordinates[[1]][[1]][[1]])) for (i in 1:length(v_lat)){ v_lon[i] <- json$features$geometry$coordinates[[1]][[1]][[1]][[i]][1] v_lat[i] <- json$features$geometry$coordinates[[1]][[1]][[1]][[i]][2] } dfpoli <- data.frame(lat=v_lat, lon=v_lon) #Las long NO hay que cambiarlas de signo #Mapa con polígono del barrio map.center <- geocode("Chueca, Madrid, Spain") map <- get_map(c(lon=map.center$lon, lat=map.center$lat), source="google", zoom=15) plot <- ggmap(map) + geom_polygon(aes(lon, lat), data = dfpoli, colour = NA, fill = "red", alpha = .3) #Añado al mapa los datos de esDBpedia endpoint <- "http://es.dbpedia.org/sparql" query <- "SELECT * WHERE { ?uri geo:lat ?lat . ?uri geo:long ?lon . ?uri rdf:type ?thetype . FILTER ( (?lat> 40.418 && ?lat < 40.430) && (?lon> -3.704 && ?lon <-3.690) && regex(?thetype,'^http://schema.org') ) } " reslist <- SPARQL(endpoint,query) df <- reslist$results df$thetype <- factor(df$thetype) plot + geom_point(data=df, aes(x=lon, y=lat, colour=thetype, position="dodge"), size=6, alpha=0.8 )
Ontology Engineering Group. ETSI Informáticos, Universidad Politécnica de Madrid (UPM)