[R-sig-Geo] rgdal project; inverse does not return original values

Robert Hijmans r.hijmans at gmail.com
Tue May 19 04:41:52 CEST 2009


Sorry, that was stupid,
This:
 xyinv <- project(xysin, "+proj=longlat", inv=TRUE)

had to be:
 xyinv <- project(xysin, "+proj=sinu", inv=TRUE)

problem solved....

Robert

On Tue, May 19, 2009 at 10:29 AM, Robert Hijmans <r.hijmans at gmail.com> wrote:
> I am confused about this behavior of rgdal
>
>> require(rgdal)
>> # make a matrix of coordinates
>> xygeo <- rbind(c(-180, 0), c(180,0), c(0,0), c(0,20), c(0,90))
>> # project to sinusoidial
>> xysin <- project(xygeo, "+proj=sinu", inv=FALSE)
>> # project back to longlat
>> xyinv <- project(xysin, "+proj=longlat", inv=TRUE)
>> xygeo
>     [,1] [,2]
> [1,] -180    0
> [2,]  180    0
> [3,]    0    0
> [4,]    0   20
> [5,]    0   90
>> xyinv
>     [,1]      [,2]
> [1,]  180         0
> [2,] -180         0
> [3,]    0         0
> [4,]    0 126759249
> [5,]    0 573070423
>>
>
> Why are rows 4 and 5 different?
>
>
> An illustration of the same problem, using 'raster'
>
>> library(raster)
>> r <- raster(nrow=36, ncol=18,  projs= "+proj=longlat")
>> xy <- xyFromCell(r,1:ncell(r))
>> par(mfrow=c(1, 3))
>> plot(xy) # ok
>> xysin <- project(xy, "+proj=sinu", inv=FALSE)
>> plot(xysin)   # nice
>> xyinv <- project(xysin, "+proj=longlat", inv=TRUE)
>> plot(xyinv)  # ???
>
>
> Robert
>
>> sessionInfo()
> R version 2.9.0 (2009-04-17)
> i386-pc-mingw32
>
> locale:
> LC_COLLATE=English_United States.1252;LC_CTYPE=English_United
> States.1252;LC_MONETARY=English_United
> States.1252;LC_NUMERIC=C;LC_TIME=English_United States.1252
>
> attached base packages:
> [1] stats     graphics  grDevices utils     datasets  methods   base
>
> other attached packages:
> [1] rgdal_0.6-8 sp_0.9-34
>
> loaded via a namespace (and not attached):
> [1] grid_2.9.0      lattice_0.17-22
>>
>



More information about the R-sig-Geo mailing list