[gdal-dev] ERROR when requesting raster data outside coverage of VRT
even.rouault at spatialys.com
Wed Apr 26 02:27:15 PDT 2017
On mercredi 26 avril 2017 09:16:49 CEST Casper Børgesen wrote:
> I am trying to read some floating point data from a VRT file. The VRT file
> references a set of VRT files which again references a set of GeoTIFF
> Using Python I call dataset.ReadAsArray(x, y, width, height) to request the
> data. In my case I end up requesting data which is outside the bounds of
> the VRT file resulting in the following error:
> ERROR 5: my.vrt, band 1: Access window out of range in RasterIO().
> Requested (1129975,637475) of size 2550x2550 on raster of 1132500x885000.
> If I was working with a normal GeoTIFF file I could calculate if I was
> outside the bounds and crop my request accordingly.
Well, a VRT dataset is a GDAL dataset, so there's no difference from API usage when
requesting a VRT or a GeoTIFF
You can use ds.RasterXSize / ds.RasterYSize to know the VRT dimensions and check if x +
width > ds.RasterXSize or y + height > ds.RasterYSize
> But since I am working
> with a VRT file I don't know how to determine if the VRT file has coverage
> or not. I vaguely remember a similar issue with gdal_translate which was
> fixed to allow requesting data partially and completely outside the bounds
> of the VRT file and just return zero (?) on the cells outside.
This is indeed a conveniency of gdal_translate itself. Using ReadAsArray() you must stick to
the dataset dimensions.
Spatialys - Geospatial professional services
-------------- next part --------------
An HTML attachment was scrubbed...
More information about the gdal-dev