Search code examples
rgeolocationcombinationsgoogle-geolocation

Finding all Combinations of match places with google geolocation Api


I have one data set like this:

 > head(base_1[,c("logradouro","nomemun_x")])
               logradouro      nomemun_x
1      RODOVIA BR-419 KM 236  Anastácio
2      RUA CASTRO ALVES, 1130 São Marcos
3   CONEGO JOAO MARCHESI, 526 São Marcos
4 RUA BONFILHO NICOLETTI, 670 São Marcos
5         VENANCIO AIRES, 444 São Marcos
6         OSVALDO ARANHA, 478 São Marcos

and i get a code Find the coordinates latitude/longitude:

 geocodeAdddress <- function(address) {
    require(RJSONIO)
    url <- "http://maps.google.com/maps/api/geocode/json?address="
    url <- URLencode(paste(url, address, "&sensor=false", sep = ""))
    x <- fromJSON(url, simplify = FALSE)
    if (x$status == "OK") {
            latitude <- x$results[[1]]$geometry$location$lat
            longitude <- x$results[[1]]$geometry$location$lng
            localizacao_tipo  <- x$results[[1]]$geometry$location_type
            formatacao_endereco  <- x$results[[1]]$formatted_address
            out<-cbind(longitude,latitude,localizacao_tipo,formatacao_endereco)
    } else {
            out <- NA
    }
    Sys.sleep(0.2)  # API only allows 5 requests per second
    out
}

Now a want a program to Make all possible combinations with the variable logradouro and nomemun_x to find the coordinates that I want.


Solution

  • Try this:

    df
    #                                      logradouro   nomemun_x
    #1                   1      RODOVIA BR-419 KM 236   Anastácio
    #2                  2      RUA CASTRO ALVES, 1130  São Marcos
    #3                  3   CONEGO JOAO MARCHESI, 526  São Marcos
    #4                  4 RUA BONFILHO NICOLETTI, 670  São Marcos
    #5                  5         VENANCIO AIRES, 444  São Marcos
    #6                  6         OSVALDO ARANHA, 478  São Marcos
    
    out <- df[as.matrix(expand.grid(1:nrow(df), 1:nrow(df))),]
    head(out, 10)
    #                                         logradouro   nomemun_x
    #1                      1      RODOVIA BR-419 KM 236   Anastácio
    #2                     2      RUA CASTRO ALVES, 1130  São Marcos
    #3                     3   CONEGO JOAO MARCHESI, 526  São Marcos
    #4                     4 RUA BONFILHO NICOLETTI, 670  São Marcos
    #5                     5         VENANCIO AIRES, 444  São Marcos
    #6                     6         OSVALDO ARANHA, 478  São Marcos
    #1.1                   1       RODOVIA BR-419 KM 236   Anastácio
    #2.1                   2      RUA CASTRO ALVES, 1130  São Marcos
    #3.1                   3   CONEGO JOAO MARCHESI, 526  São Marcos
    #4.1                   4 RUA BONFILHO NICOLETTI, 670  São Marcos
    

    or with cartesian product:

    out <- merge(df, df, by=NULL)[1:2]
    head(out, 10)
    #                                     logradouro.x nomemun_x.x
    #1                    1      RODOVIA BR-419 KM 236   Anastácio
    #2                   2      RUA CASTRO ALVES, 1130  São Marcos
    #3                   3   CONEGO JOAO MARCHESI, 526  São Marcos      
    #4                   4 RUA BONFILHO NICOLETTI, 670  São Marcos
    #5                   5         VENANCIO AIRES, 444  São Marcos
    #6                   6         OSVALDO ARANHA, 478  São Marcos
    #7                    1      RODOVIA BR-419 KM 236   Anastácio
    #8                   2      RUA CASTRO ALVES, 1130  São Marcos
    #9                   3   CONEGO JOAO MARCHESI, 526  São Marcos
    #10                  4 RUA BONFILHO NICOLETTI, 670  São Marcos