The two functions read the content of a GDAL virtual file (VRT) and check the presence of paths to linked files.

gdal_abs2rel scans the presence of absolute paths: when an absolute path has a common parent directory with the path in which the VRT is, this is replaced with a relative. This is useful when VRT are on a remote driver, which can be mounted to several points.

gdal_rel2abs checks the presence of relative paths, and replace them with the corresponding absolute path (symbolic links are followed). This is useful to grant that VRT can be moved (if the files they link to are not moved).

gdal_abs2rel(in_vrt, out_vrt = NA)

gdal_rel2abs(in_vrt, out_vrt = NA)



The path of the VRT to be read.


(optional) The path of the output VRT file (default is to overwrite in_vrt).


NULL (the function is called for its side effects)


License: GPL 3.0


L. Ranghetti, M. Boschetti, F. Nutini, L. Busetto (2020). "sen2r": An R toolbox for automatically downloading and preprocessing Sentinel-2 satellite data. Computers & Geosciences, 139, 104473. doi:10.1016/j.cageo.2020.104473 , URL:


Luigi Ranghetti, phD (2019)


# Load a VRT containing a relative path
ex_vrt <- system.file(
  package = "sen2r"
abs_vrt <- tempfile(fileext = "_abs.vrt")
rel_vrt <- tempfile(fileext = "_rel.vrt")
gdal_rel2abs(ex_vrt, abs_vrt)
gdal_abs2rel(ex_vrt, rel_vrt)

# Show differences
ex_vrt_content <- readLines(ex_vrt)
abs_vrt_content <- readLines(abs_vrt)
rel_vrt_content <- readLines(rel_vrt)
ex_vrt_content[ex_vrt_content != abs_vrt_content] # Original line
#> [1] "    <SourceDataset relativeToVRT=\"1\">S2A2A_20190723_022_Barbellino_RGB432B_10.tif</SourceDataset>"
abs_vrt_content[ex_vrt_content != abs_vrt_content] # Modified line
#> [1] "    <SourceDataset relativeToVRT=\"0\">C:\\Users\\luigi.ranghetti\\AppData\\Local\\Programs\\R\\R-4.2.1\\library\\sen2r\\extdata\\out\\S2A2A_20190723_022_Barbellino_RGB432B_10.tif</SourceDataset>"
rel_vrt_content[ex_vrt_content != rel_vrt_content] # No edits
#> character(0)