Skip to content

Improve relativeToVRT sources management in VRTRawRasterBands#67

Closed
avalentino wants to merge 1 commit into
OSGeo:trunkfrom
avalentino:VRTRawRasterBand_relativeToVrt
Closed

Improve relativeToVRT sources management in VRTRawRasterBands#67
avalentino wants to merge 1 commit into
OSGeo:trunkfrom
avalentino:VRTRawRasterBand_relativeToVrt

Conversation

@avalentino
Copy link
Copy Markdown
Member

The path addresses some inconsistencies relative to the SourceFilename of VRTRawRasterBands when the relativeToVRT element is set to ture.

With the current implementation datasets that are successfully created in a sub-directory can't be reopened for reading:

import os
import numpy as np
from osgeo import gdal
from osgeo.gdal_array import NumericTypeCodeToGDALTypeCode

gdal.UseExceptions()

filename = 'subdir/data.vrt'
os.makedirs('subdir', exist_ok=True)
data = np.ones((10, 10))
drv = gdal.GetDriverByName('VRT')
ysize, xsize = data.shape
gdtype = NumericTypeCodeToGDALTypeCode(data.dtype)
ds = drv.Create(filename, xsize, ysize, 0)
srcpath = os.path.splitext(filename)[0] + '.dat'
pixel_offset = gdal.GetDataTypeSize(gdtype) // 8
line_offset = xsize * pixel_offset
options = {
    'subClass': 'VRTRawRasterBand',
    'SourceFilename': srcpath,
    'ImageOffset': 0,
    'PixelOffset': pixel_offset,
    'LineOffset': line_offset,
    'relativeToVRT': 1,
}
options = ['{}={}'.format(k, v) for k, v in options.items()]
ds.AddBand(gdtype, options)
b = ds.GetRasterBand(1)
b.WriteArray(data)
ds.FlushCache()

data2 = gdal.Open(filename).ReadAsArray()

the above script gives the following error:

RuntimeError                              Traceback (most recent call last)
<ipython-input-1-84f5e1183627> in <module>()
     30 ds.FlushCache()
     31 
---> 32 data2 = gdal.Open(filename).ReadAsArray()
     33 

RuntimeError: Unable to open subdir/subdir/data.dat.
No such file or directory

@rouault
Copy link
Copy Markdown
Member

rouault commented Aug 20, 2015

Committed in trunk r29691

@rouault rouault closed this Aug 20, 2015
kwrobot pushed a commit to aashish24/gdal-svn that referenced this pull request Aug 20, 2015
…and (patch by Antonio Valentino, OSGeo/gdal#67)

git-svn-id: https://svn.osgeo.org/gdal/trunk/gdal@29691 f0d54148-0727-0410-94bb-9a71ac55c965
@avalentino avalentino deleted the VRTRawRasterBand_relativeToVrt branch August 20, 2015 17:25
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants