[GRASS-stats] Incompatible library version for module SOLVED but new problem with plugin=TRUE has emerged

Roger Bivand Roger.Bivand at nhh.no
Sun Jan 11 10:48:19 EST 2009


On Sat, 10 Jan 2009, Markus Neteler wrote:

> Roger,
>
> On Sat, Jan 10, 2009 at 9:20 PM, Roger Bivand <Roger.Bivand at nhh.no> wrote:
>> On Sat, 10 Jan 2009, Markus Neteler wrote:
>>
>>> On Sat, Jan 3, 2009 at 11:09 AM, Roger Bivand <Roger.Bivand at nhh.no> wrote:
>>>>
>>>> The current settings of readRAST6() will use the plugin if available (but
>>>> try to check that the regions match) when plugin=NULL. If you want to
>>>> force
>>>> the use of r.out.gdal, set plugin=FALSE and useGDAL=TRUE (version
>>>> 0.5-16).
>>>> Please let me know if this helps.
>>>
>>> I have installed R (R version 2.8.1 (2008-12-22)) + extensions from
>>> scratch.
>>> I get now this message (GRASS book p. 358):
>>>
>>>> elev <- readRAST6("elev_state_500m", mapset="PERMANENT",
>>>> ignore.stderr=TRUE)
>>>
>>>          cols            rows origin.northing  origin.easting
>>>         FALSE           FALSE           FALSE            TRUE
>>> Warning message:
>>> In readRAST6("elev_state_500m", mapset = "PERMANENT",  :
>>>  set plugin=FALSE - raster/current window mismatch
>>>  or plugin=TRUE to override; continuing with plugin=FALSE
>>>
>>> To me it is not clear from the message that I should (better) set
>>> useGDAL=TRUE
>>>
>>> Ideally, the interface would work as simple as this
>>> elev <- readRAST6("elev_state_500m")
>>>
>>> which would
>>> * find the map in the current mapset search path (internally, use
>>> g.findfile),
>>>  in my tests I was in a mapset different from PERMANENT which leads to
>>>    elev <- readRAST6("elev_state_500m", ignore.stderr=TRUE)
>>>    Error in .local(.Object, ...) :
>>>       GDAL Error 4:
>>> `/home/neteler/grassdata/nc_spm_07/user1/cellhd/elev_state_500m' does
>>> not exist in the file system,
>>> and is not recognised as a supported dataset name.
>>>
>>> * use the current region (internally, use r.in.gdal and not the plugin
>>> if GRASS >= 6.4)
>>
>> Markus,
>>
>> This is effectively what I've tried to now. However, the user output is:
>>
>>> library(spgrass6)
>>
>> Loading required package: sp
>> Loading required package: rgdal
>> Geospatial Data Abstraction Library extensions to R successfully loaded
>> Loaded GDAL runtime: GDAL 1.6.0, released 2008/12/04
>> GDAL_DATA: /home/rsb/lib/r_libs/rgdal/gdal
>> Loaded PROJ.4 runtime: Rel. 4.6.1, 21 August 2008
>> PROJ_LIB: /home/rsb/lib/r_libs/rgdal/proj
>> GRASS GIS interface loaded with GRASS version: 6.4.0RC1
>> and location: nc_spm_08
>>>
>>> elev <- readRAST6("elev_state_500m")
>>
>>           cols            rows origin.northing  origin.easting
>>          FALSE           FALSE           FALSE           FALSE
>> ERROR 6: SetColorTable() only supported for Byte or UInt16 bands in TIFF
>> format.
>
> This message *is* confusing as it is a warning only. It comes from GDAL:
> gdal/frmts/gtiff/geotiff.cpp:                  "SetColorTable() only
> supportedfor Byte or UInt16 bands in TIFF format." );
>
>    if( eDataType != GDT_Byte && eDataType != GDT_UInt16 )
>    {
>        CPLError( CE_Failure, CPLE_NotSupported,
>                  "SetColorTable() only supported for Byte or UInt16
> bands in TIFF format." );
>        return CE_Failure;
>    }
>
> I suppose there is some trick to suppress it (since it uses the
> CPLError function).
> I don't know too much about it but found
> http://www.gdal.org/ogr/cpl__error_8h.html#ad2b98dd58e4de706a245faddac90403
>
> Just throw stderr stuff to /dev/null (of course problematic with Windows)?

I've "handled" this for some definition of handle by setting -c in the 
r.out.gdal call - this was controlling whether colour table writing was 
attempted.

>
>> WARNING: Input raster map contains cells with NULL-value (no-data). The
>>         value 999 was used to represent no-data values in the input map.
>>         You can specify nodata value by nodata parameter.
>
> That one comes from r.out.gdal. Indeed a non-feature, see below:
>
>> /home/rsb/topics/grassdata/nc_spm_08/rsb/.tmp/reclus2/elev_state_500m has
>> GDAL driver GTiff
>> and has 620 rows and 1630 columns
>> Warning message:
>> In readRAST6("elev_state_500m") :
>>  set plugin=FALSE - raster/current window mismatch
>>  or plugin=TRUE to override; continuing with plugin=FALSE
>>
>> which I agree is unhelpful (and most of it cannot be avoided on Windows,
>> where stderr cannot be ignored). I can work on some of this, but the two
>> r.out.gdal messages are not on my side. Even if I set GRASS_VERBOSE to 0,
>> won't they still be displayed?
>
> It was implemented as G_warning(). In contact with the person who
> added this, we have now changed to G_important_message() which
> respects GRASS_VERBOSE=0:
>
> http://trac.osgeo.org/grass/changeset/35321
>
> It is in 6.4SVN and 7 SVN and will appear on Monday in 6.4.0RC2.
> GRASS 6.3 and older are not affected as r.out.gdal wasn't there.
>

With 6.4SVN I now get:

> library(spgrass6)
Loading required package: sp
Loading required package: rgdal
Geospatial Data Abstraction Library extensions to R successfully loaded
Loaded GDAL runtime: GDAL 1.6.0, released 2008/12/04
GDAL_DATA: /home/rsb/lib/r_libs/rgdal/gdal
Loaded PROJ.4 runtime: Rel. 4.6.1, 21 August 2008
PROJ_LIB: /home/rsb/lib/r_libs/rgdal/proj
GRASS GIS interface loaded with GRASS version: 6.4.0svn
and location: nc_spm_08
> elev <- readRAST6("elev_state_500m")
raster/current region mismatch detected in components:
            cols            rows origin.northing  origin.easting
           FALSE           FALSE           FALSE           FALSE
set plugin=TRUE to override; continuing with plugin=FALSE
/home/rsb/topics/grassdata/nc_spm_08/rsb/.tmp/reclus2/elev_state_500m has 
GDAL driver GTiff
and has 620 rows and 1630 columns
> elev <- readRAST6("elev_state_500m", ignore.stderr=TRUE)
>

I've committed to sourceforge CVS, could you confirm that this is OK?

How does one manage the plugin links in a mixed 6.4/7.0 setting? I tried 
7.0 first, but I think there was a problem:

ERROR: Incompatible library version for module

which crashed R/rgdal. The plugin was built against 6.4RC1, so probably 
two different library versions had a disagreement.

Best wishes,

Roger

> Thanks,
> Markus
>
>> Roger
>>
>>>
>>> Successfully, I have used today:
>>> elev <- readRAST6("elev_state_500m", mapset="PERMANENT",
>>> ignore.stderr=TRUE, plugin=FALSE, useGDAL=TRUE)
>>>
>>> which is rather long/complex.
>>>
>>> Hope I am not asking too much - try to compensate with GRASS 6.4.x work :)
>>>
>>> Markus
>>>
>>
>> --
>> Roger Bivand
>> Economic Geography Section, Department of Economics, Norwegian School of
>> Economics and Business Administration, 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
>>
>>
>
>
>
>

-- 
Roger Bivand
Economic Geography Section, Department of Economics, Norwegian School of
Economics and Business Administration, 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 grass-stats mailing list