Hi,

A better reference file can be created by materializing the VRT. The one 
created by gdal_create has the same raster values on all the pixels but the 
materialized one contains the same original image data. Maybe in your test case 
with uncompressed outputs the difference is not so big, but please test it 
anyway.

gdal_translate -of GTiff -co tiled=yes -co compress=LZW input.vrt output.tif
gdaladdo -ro output.tif

What is the difference in speed now? Ten times slower performance with vrt 
feels quite a lot.

-Jukka Rahkonen-


Lähettäjä: gdal-dev <gdal-dev-boun...@lists.osgeo.org> Puolesta Denis Rykov via 
gdal-dev
Lähetetty: keskiviikko 5. kesäkuuta 2024 4.36
Vastaanottaja: gdal dev <gdal-dev@lists.osgeo.org>
Aihe: [gdal-dev] gdaladdo slowness for VRTs

Hi,

I spotted a slow calculation of overviews and I'm wondering what could be the 
reason.

$ gdal_create in.tif -if 20240602_230818_SN26_RR_VISUAL_MS.vrt
$ time gdaladdo -ro in.tif
gdaladdo -ro in.tif  4,25s user 6,23s system 34% cpu 30,623 total

But on the file of the same size and num of bands but VRT it takes much more 
time:

$ time gdaladdo -ro 20240602_230818_SN26_RR_VISUAL_MS.vrt
gdaladdo -ro   55,36s user 5,06s system 44% cpu 2:14,79 total

Here is the output of gdalinfo of the VRT:

$ gdalinfo 20240602_230818_SN26_RR_VISUAL_MS.vrt
Driver: VRT/Virtual Raster
Files: 20240602_230818_SN26_RR_VISUAL_MS.vrt
       20240602_230818_SN26_RR_VISUAL_MS_340_5020.tif
       20240602_230818_SN26_RR_VISUAL_MS_340_5040.tif
       20240602_230818_SN26_RR_VISUAL_MS_360_5020.tif
       20240602_230818_SN26_RR_VISUAL_MS_360_5040.tif
       20240602_230818_SN26_RR_VISUAL_MS_360_5060.tif
Size is 20779, 46754
Coordinate System is:
PROJCRS["WGS 84 / UTM zone 59S",
    BASEGEOGCRS["WGS 84",
        DATUM["World Geodetic System 1984",
            ELLIPSOID["WGS 84",6378137,298.257223563,
                LENGTHUNIT["metre",1]]],
        PRIMEM["Greenwich",0,
            ANGLEUNIT["degree",0.0174532925199433]],
        ID["EPSG",4326]],
    CONVERSION["UTM zone 59S",
        METHOD["Transverse Mercator",
            ID["EPSG",9807]],
        PARAMETER["Latitude of natural origin",0,
            ANGLEUNIT["degree",0.0174532925199433],
            ID["EPSG",8801]],
        PARAMETER["Longitude of natural origin",171,
            ANGLEUNIT["degree",0.0174532925199433],
            ID["EPSG",8802]],
        PARAMETER["Scale factor at natural origin",0.9996,
            SCALEUNIT["unity",1],
            ID["EPSG",8805]],
        PARAMETER["False easting",500000,
            LENGTHUNIT["metre",1],
            ID["EPSG",8806]],
        PARAMETER["False northing",10000000,
            LENGTHUNIT["metre",1],
            ID["EPSG",8807]]],
    CS[Cartesian,2],
        AXIS["easting",east,
            ORDER[1],
            LENGTHUNIT["metre",1]],
        AXIS["northing",north,
            ORDER[2],
            LENGTHUNIT["metre",1]],
    ID["EPSG",32759]]
Data axis to CRS axis mapping: 1,2
Origin = (353999.799999999988358,5068000.629999999888241)
Pixel Size = (0.770000000000000,-0.770000000000000)
Corner Coordinates:
Upper Left  (  353999.800, 5068000.630) (169d 9'45.50"E, 44d31'35.55"S)
Lower Left  (  353999.800, 5032000.050) (169d 9' 8.52"E, 44d51' 1.68"S)
Upper Right (  369999.630, 5068000.630) (169d21'50.06"E, 44d31'46.58"S)
Lower Right (  369999.630, 5032000.050) (169d21'17.12"E, 44d51'12.83"S)
Center      (  361999.715, 5050000.340) (169d15'30.36"E, 44d41'24.33"S)
Band 1 Block=128x128 Type=Byte, ColorInterp=Red
  NoData Value=0
Band 2 Block=128x128 Type=Byte, ColorInterp=Green
  NoData Value=0
Band 3 Block=128x128 Type=Byte, ColorInterp=Blue
  NoData Value=0
Band 4 Block=128x128 Type=Byte, ColorInterp=Undefined
  NoData Value=0

And gdalinfo output for one of the underlying rasters:

gdalinfo 20240602_230818_SN26_RR_VISUAL_MS_360_5040.tif
Driver: GTiff/GeoTIFF
Files: 20240602_230818_SN26_RR_VISUAL_MS_360_5040.tif
Size is 10390, 25974
Coordinate System is:
PROJCRS["WGS 84 / UTM zone 59S",
    BASEGEOGCRS["WGS 84",
        DATUM["World Geodetic System 1984",
            ELLIPSOID["WGS 84",6378137,298.257223563,
                LENGTHUNIT["metre",1]]],
        PRIMEM["Greenwich",0,
            ANGLEUNIT["degree",0.0174532925199433]],
        ID["EPSG",4326]],
    CONVERSION["UTM zone 59S",
        METHOD["Transverse Mercator",
            ID["EPSG",9807]],
        PARAMETER["Latitude of natural origin",0,
            ANGLEUNIT["degree",0.0174532925199433],
            ID["EPSG",8801]],
        PARAMETER["Longitude of natural origin",171,
            ANGLEUNIT["degree",0.0174532925199433],
            ID["EPSG",8802]],
        PARAMETER["Scale factor at natural origin",0.9996,
            SCALEUNIT["unity",1],
            ID["EPSG",8805]],
        PARAMETER["False easting",500000,
            LENGTHUNIT["metre",1],
            ID["EPSG",8806]],
        PARAMETER["False northing",10000000,
            LENGTHUNIT["metre",1],
            ID["EPSG",8807]]],
    CS[Cartesian,2],
        AXIS["(E)",east,
            ORDER[1],
            LENGTHUNIT["metre",1]],
        AXIS["(N)",north,
            ORDER[2],
            LENGTHUNIT["metre",1]],
    USAGE[
        SCOPE["Engineering survey, topographic mapping."],
        AREA["Between 168°E and 174°E, southern hemisphere between 80°S and 
equator, onshore and offshore. New Zealand."],
        BBOX[-80,168,0,174]],
    ID["EPSG",32759]]
Data axis to CRS axis mapping: 1,2
Origin = (359999.640000000013970,5060000.330000000074506)
Pixel Size = (0.770000000000000,-0.770000000000000)
Metadata:
  AREA_OR_POINT=Area
Image Structure Metadata:
  COMPRESSION=LZW
  INTERLEAVE=PIXEL
Corner Coordinates:
Upper Left  (  359999.640, 5060000.330) (169d14' 9.36"E, 44d35'59.00"S)
Lower Left  (  359999.640, 5040000.350) (169d13'49.66"E, 44d46'46.86"S)
Upper Right (  367999.940, 5060000.330) (169d20'12.11"E, 44d36' 4.44"S)
Lower Right (  367999.940, 5040000.350) (169d19'53.53"E, 44d46'52.34"S)
Center      (  363999.790, 5050000.340) (169d17' 1.19"E, 44d41'25.70"S)
Band 1 Block=256x256 Type=Byte, ColorInterp=Red
  NoData Value=0
Band 2 Block=256x256 Type=Byte, ColorInterp=Green
  NoData Value=0
Band 3 Block=256x256 Type=Byte, ColorInterp=Blue
  NoData Value=0
Band 4 Block=256x256 Type=Byte, ColorInterp=Undefined
  NoData Value=0

What could be the reason for such a significant difference?
_______________________________________________
gdal-dev mailing list
gdal-dev@lists.osgeo.org
https://lists.osgeo.org/mailman/listinfo/gdal-dev

Reply via email to