Skip to content

[Bug]: Temporary VRT fails for unzipped SAFE files due to relativeToVRT=1 #96

@scottstanie

Description

@scottstanie

Checked for duplicates

Yes - I've already checked

Describe the bug

When I ran COMPASS with unzipped files, I was getting read errors.
I checked the _temp.vrt file made for each burst:

$ gdalinfo unzipped/scratch/t087_185679_iw1/20180511/t087_185679_iw1_20180511_VV_temp.vrt

Driver: VRT/Virtual Raster
Files: unzipped/scratch/t087_185679_iw1/20180511/t087_185679_iw1_20180511_VV_temp.vrt
Size is 20492, 1490
Corner Coordinates:
Upper Left  (    0.0,    0.0)
Lower Left  (    0.0, 1490.0)
Upper Right (20492.0,    0.0)
Lower Right (20492.0, 1490.0)
Center      (10246.0,  745.0)
Band 1 Block=128x128 Type=CFloat32, ColorInterp=Undefined
  NoData Value=0
ERROR 4: unzipped/scratch/t087_185679_iw1/20180511/S1A_IW_SLC__1SDV_20180511T161552_20180511T161622_021859_025BF8_1292.SAFE/measurement/s1a-iw1-slc-vv-20180511t161552-20180511t161620-021859-025bf8-004.tiff: No such file or directory

What did you expect?

I expected the VRT to correctly point to the .tiff file

Reproducible steps

The reason for the failure is here: https://github.com/opera-adt/s1-reader/blob/428328de5011968da91174cdf14db6eb3e8264c7/src/s1reader/s1_burst_slc.py#L360

We are using relativeToVRT=1, which means we're saying that the location of the tiff_path will be relative to the location of the VRT.
This is probably only going to be true when we do slc_to_vrt_file('.'), since we're passing some other path to the tiff_path.

The reason this is currently working for the zipped file testing is gdal ignores your indication of relativeToVrt when your path starts with a / and treats it as absolute

Note that "relativeToVRT=0" doesn't mean it has to be a full path. If it's not, then the path is treated relative to whatever directory you are in.

For example:

$ tree
.
├── data
│   └── swath.tiff
├── folder-with-vrt
│   ├── test_absolute.tiff
│   └── test_relative.tiff

 cat folder-with-vrt/test_relative.tiff
<VRTDataset rasterXSize="20492" rasterYSize="1490">
    <VRTRasterBand dataType="CFloat32" band="1">
        <NoDataValue>0.0</NoDataValue>
        <SimpleSource>
            <SourceFilename relativeToVRT="1">data/swath.tiff</SourceFilename>
            <SourceBand>1</SourceBand>
            <SourceProperties RasterXSize="20492" RasterYSize="14900" DataType="CInt16"/>
            <SrcRect xOff="15" yOff="8957" xSize="20459" ySize="1456"/>
            <DstRect xOff="15" yOff="17" xSize="20459" ySize="1456"/>
        </SimpleSource>
    </VRTRasterBand>
</VRTDataset>

$ gdalinfo folder-with-vrt/test_relative.tiff...

ERROR 4: folder-with-vrt/data/swath.tiff: No such file or directory

$ diff folder-with-vrt/test_absolute.tiff folder-with-vrt/test_relative.tiff
5c5
<             <SourceFilename relativeToVRT="0">data/swath.tiff</SourceFilename>
---
>             <SourceFilename relativeToVRT="1">data/swath.tiff</SourceFilename>

$ gdalinfo folder-with-vrt/test_absolute.tiff

(it works)

Metadata

Metadata

Assignees

No one assigned

    Labels

    bugSomething isn't workingneeds triageIssue requires triage to proceed

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions