[R] passing of longitude and lattitude arguments to read URL in Google Maps and extract routes
dwinsemius at comcast.net
Tue Jul 2 15:55:54 CEST 2013
On Jul 2, 2013, at 1:59 AM, Franckx Laurent wrote:
> Dear all
> I try to use Google Maps to calculate travel times per transit between an origin an destination.
> The guidelines for the search can be found at: https://developers.google.com/maps/documentation/directions/#TravelModes
> When I submit the latitude and the longitude of the origin and destination as literals, things work fine.
> For instance, the following code executes correctly and we obtain the distance and trip duration (the output of the search is in JSON format and is converted to an R object with fromJSON)
> route <- url('http://maps.googleapis.com/maps/api/directions/json? origin=51.13854,4.384575&destination=51.13156,4.387118®ion=be&sensor=false&mode=transit&departure_time=1372665319')
> route_file <- file("route_file.json")
> L <- readLines(route,-1)
> writeLines(L, route_file)
> routesR_zone1_to_zone20 <- fromJSON( file = route_file )
> However, what I am really interested in is to repeat this operation for thousands of origin-destination pairs. The longitude and the latitude of the origins and destinations then become variables.
> For instance:
>  51.13854
>  4.384575
>  51.13156
>  4.387118
>> route <- url('http://maps.googleapis.com/maps/api/directions/json? origin=lat_or,long_or&destination=lat_des,long_des®ion=be&sensor=false&mode=transit&departure_time=1372665319')
>> route_file <- file("route_file.json")
>> L <- readLines(route,-1)
>> writeLines(L, route_file)
>> routesR_zone1_to_zone20 <- fromJSON( file = route_file )
>  "NOT_FOUND"
> Thus, although the coordinates are the same as in the previous example, this time, no route is found.
> I suppose that the problem is that, when the url is accessed, lat_or etc are not "translated" in the corresponding numeric values, and that Google tries to calculate the route between the literals " lat_or,long_or" and " lat_des,long_des".
Yes. That seems likely. R would not interpret a text literal. I don't understand why you are not using the ordinary text handling function 'paste0'.
> lat_or <- 51.13854
long_or <- 4.384575
lat_des <- 51.13156
long_des <- 4.387118
(Also tested on Mac with R 3.0.0 RC using Google JSON Data Interpreter for R, Version: 1.0.01.)
> Does anyone have a suggestion on how to circumvent the problem?
> Laurent Franckx, PhD
> VITO NV
> Boeretang 200, 2400 MOL, Belgium
Alameda, CA, USA
More information about the R-help