Ejemplo de integración de esDBpedia con API de localidata
This is version . It is not the current version, and thus it cannot be edited.
Back to current version   Restore this version

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)
#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 con _
                        )                        
          )
library(jsonlite)
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

# draw a map
library(ggmap)
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 los datos de esDBpedia
library(SPARQL)
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
                        )