[Proj] problem in trunk/4.9.0 in R/rgdal

Roger Bivand Roger.Bivand at nhh.no
Thu Feb 6 16:00:12 EST 2014


We see a problem in 4.9.0 that is not in 4.8.0 in R. The code provoking 
the problem in rgdal 0.8-15 built against 4.9.0 (trunk):

http://cran.r-project.org/src/contrib/rgdal_0.8-15.tar.gz

minimal install is install.packages(c("sp", "spacetime", "rgdal"))

library(sp)
library(spacetime)
data(air)
library(rgdal)
checkCRSArgs(proj4string(rural at sp))

which shows:

> checkCRSArgs(proj4string(rural at sp))
[[1]]
[1] FALSE

[[2]]
[1] "no options found in 'init' file"

first time round. The object rural is read in from a saved R object, and 
has a stored projection of:

"+init=epsg:4326 +proj=longlat +ellps=WGS84 +datum=WGS84 +no_defs 
+towgs84=0,0,0"

So when this string goes via checkCRSArgs() to C code (same function name) 
calling:


if (!(pj = pj_init_plus(CHAR(STRING_ELT(args, 0))))) {
 	SET_STRING_ELT(VECTOR_ELT(res, 1), 0,
         COPY_TO_USER_STRING(pj_strerrno(*pj_get_errno_ref())));
 	UNPROTECT(1);
 	return(res);
}

where res is a list with first element FALSE by default, second contains 
an error message on failure (or what pj_get_def() returns on success. This 
around line 292 in:

https://r-forge.r-project.org/scm/viewvc.php/pkg/src/projectit.cpp?view=markup&root=rgdal

However, if we then do:

checkCRSArgs("+init=epsg:4326")

we tickle something in pj_init_plus() and it works, and subsequently:

checkCRSArgs(proj4string(rural at sp))

works. I cannot see any changes in pj_init.c in the section looking for 
+init between 4.8.0 and 4.9.0 that might affect this. Under rgdal 0.8-15 
and 4.8.0, there is no trouble, but the issue arises predictably with the 
same rgdal 0.8-15 and current 4.9.0 trunk.

I'd be grateful for any advice.

Best wishes,

Roger

-- 
Roger Bivand
Department of Economics, Norwegian School of Economics,
Helleveien 30, N-5045 Bergen, Norway.
voice: +47 55 95 93 55; fax +47 55 95 95 43
e-mail: Roger.Bivand at nhh.no



More information about the Proj mailing list