Opened 6 years ago

Closed 6 years ago

#7082 closed enhancement (fixed)

Remove restricted calls to AdviseRead() in GDALDatasetCopyWholeRaster()

Reported by: Even Rouault Owned by: Even Rouault
Priority: normal Milestone: 2.3.0
Component: default Version: unspecified
Severity: normal Keywords:
Cc:

Description

Currently GDALDatasetCopyWholeRaster() only calls AdviseRead() on the source dataset if the driver is ECW and if the swath width is the raster width. This is not ideal for other drivers

All in-tree drivers that support AdviseRead() are :

  • WMS (if explicitly requested in the WMS configuration file)
  • NITF: but as a proxy for the underlying JPEG/JPEG2000 dataset
  • OGDI raster
  • ECW. The restriction to call Adviseead() only if the swath width is the raster width comes from a SDK limitation on how window bufferig can be used. But this limitation should be hidden inside the ECW driver

Change History (10)

comment:1 by Even Rouault, 6 years ago

In 40393:

ECW: make AdviseRead() to store its call parameters, and only do the actual work in RunDeferedAdviseRead() if TryWinRasterIO() determines that the IRasterIO() parameters are compatible of the AdviseRead() ones (refs #7082)

comment:2 by Even Rouault, 6 years ago

In 40394:

WMS: avoid AdviseRead() to download too many tiles at once (refs #7082)

comment:3 by Even Rouault, 6 years ago

In 40395:

GDALDatasetCopyWholeRaster(): always call AdviseRead() on the full extent of the source dataset (refs #7082)

comment:4 by Even Rouault, 6 years ago

In 40396:

WMS AdviseRead(): make sure it works with downsampled requests, and avoid consecutive AdviseRead() with same parameters to cause repeated work (refs #7082)

comment:5 by Even Rouault, 6 years ago

In 40397:

GDALRasterBandCopyWholeRaster(): call AdviseRead() (refs #7082)

comment:6 by Even Rouault, 6 years ago

In 40398:

GDALCreateCopy(): call AdviseRead() (refs #7082)

comment:7 by Even Rouault, 6 years ago

In 40399:

ECW: fix wrong comparison of r40393, and avoid performance issue on subsampled request (refs #7082)

comment:8 by Even Rouault, 6 years ago

In 40400:

VRT: implement VRTDataset::AdviseRead() (in the particular case of a single source) (refs #7082)

comment:9 by Even Rouault, 6 years ago

In 40401:

Warp: use AdviseRead() when source chunks are sufficiently compact (refs #7082)

comment:10 by Even Rouault, 6 years ago

Milestone: 2.3.0
Resolution: fixed
Status: assignedclosed
Note: See TracTickets for help on using tickets.