Skip to content

How do I set ENVI file interleave when using GDALTransientDataset?

4 messages · Roger Bivand, Jonathan Greenberg

#
I'm writing a function to mimic ENVI/IDL's "ENVI_SETUP_HEAD" using 
rgdal, and I was wondering how I set the interleave (BIP vs BSQ vs 
BIL)?  The subsection of my code that I assume this belongs in is below:

    driver="ENVI"
    d.drv <- new("GDALDriver", driver)
    tds.out <- new("GDALTransientDataset", driver = d.drv, rows = 
dims[2],cols = dims[1], bands = bands, type = type)
    gt <- c(offset[1] - 0.5 * cellsize[1], cellsize[1], 0.0,offset[2] + 
(dims[2] -0.5) * cellsize[2], 0.0, -cellsize[2])
    .Call("RGDAL_SetGeoTransform", tds.out, gt, PACKAGE = "rgdal")
    .Call("RGDAL_SetProject", tds.out, file_projection, PACKAGE = "rgdal")
    fn <- tempfile()
    saveDataset(tds.out, fn)

Thanks!

--j
#
On Thu, 9 Jul 2009, Jonathan Greenberg wrote:

            
You'll need to use the options= argument to pass through these values when 
you instantiate the transient dataset. There is an example of its use in 
?writeOGR.

Roger

  
    
#
On Fri, 10 Jul 2009, Roger Bivand wrote:

            
Sorry, ?writeGDAL, of course. The valid options are given on the GDAL 
supported formats pages for creation and/or copying - not (naturally) the 
reading options.

  
    
#
Roger, thanks, but I've modded the call to say:

    tds.out <- new("GDALTransientDataset", driver = d.drv, rows = 
dims[2],cols = dims[1], bands = bands, type = type, 
options="INTERLEAVE=BIL")

I THINK this is right, because if I change the interleave to something 
weird, say:

    tds.out <- new("GDALTransientDataset", driver = d.drv, rows = 
dims[2],cols = dims[1], bands = bands, type = type, 
options="INTERLEAVE=MOO")

I get the error:
Warning message:
In .local(.Object, ...) :
    GDAL Error 6: 'MOO' is an unexpected value for INTERLEAVE creation 
option of type string-select.

However, the output header is still not containing the modified 
interleave, its still defaulting to BSQ in the output header.

I noticed in the documentation of the GDALTransientDataset-class, the 
options appear to be disabled:

"options
Driver specific options (currently ignored)"

Could this be what's going on?  Is there a plan to enable these in the 
future?  The reason I'm going through all this is so I can make an ENVI 
header ONLY (not the image file associated with it -- I'm doing that via 
line-by-line writeBin statements to realize tiled processing).

--j
Roger Bivand wrote: