[R] from long/lat to UTM
Greg Snow
greg.snow at ihc.com
Thu Mar 10 18:28:00 CET 2005
>>> Ted Harding <Ted.Harding at nessie.mcc.ac.uk> 03/10/05 09:13AM >>>
>> On 10-Mar-05 Gabor Grothendieck wrote:
>> > <Ted.Harding <at> nessie.mcc.ac.uk> writes:
>> >: [...]
>> >: As Sander says, "Not sure where you would derive the time
zone!".
>> >:
[snip]
>> The only completely general mechanism I can think of would
>> consist of
>>
>> a) a named list of boundary contours
I found a shapefile of time zones at:
http://openmap.bbn.com/data/shape/timezone/
A google search on the keywords timezone & shapefile finds a
few other possibilities.
>> b) a function which, for each name in the list, returns
>> the TZ name
The "maptools" package can read in the above shapefile and
convert it to a list of polygons and the "sgeostat" has an
"in.polygon" function to see if a point is in a given polygon.
The following code worked for me:
library(maptools)
tz <- read.shape('c:/maps/WrldTZA')
plot(tz)
plot(tz,xlim=c(-150,-50), ylim=c(20,50))
mappoly <- Map2poly(tz)
library(sgeostat)
tmp <- sapply(mappoly, function(x){ x <- na.exclude(x)
in.polygon( -110, 42, x[,1], x[,2] ) } )
tz$att.data[tmp,]
the -110 and 42 come from me plotting the map and using
locator to approximate where I am at. I was actually
suprized at how quick the sapply was (under a second on
my fairly fast pc (windows 2000)).
It shouldn't be too hard to convert this into a more general
function.
Greg Snow, Ph.D.
Statistical Data Center
greg.snow at ihc.com
(801) 408-8111
More information about the R-help
mailing list