English version

Localidata es una empresa española que, entre otras cosas, proporciona un API para acceder a sus datos semánticos. 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 podemos obtener de Localidata los segmentos del contorno del barrio de Justicia (Madrid) y, siguiendo el primer ejemplo, pintar los puntos donde esDBpedia tiene datos.

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
                        )

          

Este es el resultado

Add new attachment

Only authorized users are allowed to upload new attachments.

List of attachments

Kind Attachment Name Size Version Date Modified Author Change note
png
justicia.png 666.6 kB 1 07-Apr-2014 14:05 Mariano Rico
« This page (revision-5) was last changed on 07-Apr-2014 15:35 by Mariano Rico  
G’day (anonymous guest) My Prefs

Página principal
Main page




OEG
UPM
UAM
RTE Linked Data


Project support: "Red Temática Española de Linked Data" project (TIN2010-10811-E) and "Go Lite" project (TIN2011-24139).


JSPWiki v2.8.4