[R-sig-Geo] Geonames elevation help

Tomislav Hengl T.Hengl at uva.nl
Tue Nov 25 18:05:46 CET 2008


You could also loop e.g. (this way you have a bit more control):

> long <- c(-81.66,-82.66)
> lat <- c(36.21,37.21)
> df <- data.frame(lat,long)
> df$srtm <- rep(NA, length(df$lat))
> for(i in 1:length(df$srtm)){
+   df$srtm[i] <- GNsrtm3(df$lat[i],df$long[i])$srtm3
+ }
> df
    lat   long srtm
1 36.21 -81.66  990
2 37.21 -82.66  500

But Barry's solution is more straight forward.


Tom Hengl


-----Original Message-----
From: r-sig-geo-bounces at stat.math.ethz.ch [mailto:r-sig-geo-bounces at stat.math.ethz.ch] On Behalf Of
Barry Rowlingson
Sent: Tuesday, November 25, 2008 5:40 PM
To: r-sig-geo at stat.math.ethz.ch
Subject: Re: [R-sig-Geo] Geonames elevation help

2008/11/25 Michael Denslow <mwdenslow at yahoo.com>:

> I am hoping that someone can help me with the GNsrtm3 function in the Geonames package. I am
trying to get elevation values for more than one lat,long stored in a data frame. I am not sure if
this function can process more than one request since it is a web query. But since R seems to be
able to do anything, I figured I was missing something.
>
> I am an R novice so any help would be most appreciated. Here is a shortened example of what I am
trying to do.
>
> library(geonames)
>
> long <- c(-81.66,-82.66)
> lat <- c(36.21,37.21)
> df <- data.frame(lat,long)
> GNsrtm3(df$lat,df$long)
>
> # the result below is only for the first set of coordinates
>  srtm3    lng   lat
> 1   990 -81.66 36.21
>
> I also tried using apply, but it also only seemed to work for the first set of coordinates.
>
> Thanks in advance,
> Michael
>
>

 Maybe you were using apply wrong.

 With your df, you can do:

 > df$srtm3=apply(df,1,function(l){GNsrtm3(l[1],l[2])$srtm3})
 > df
     lat   long srtm3
 1 36.21 -81.66   990
 2 37.21 -82.66   500

 apply() passes the row of the dataframe as a vector to the function,
so I just get the first and last element and call GNsrtm3, and strip
off just the result.

 Oh, make sure I've got the lat-long the right way round.

Barry

_______________________________________________
R-sig-Geo mailing list
R-sig-Geo at stat.math.ethz.ch
https://stat.ethz.ch/mailman/listinfo/r-sig-geo




More information about the R-sig-Geo mailing list