Lazy Loading Tie Point Grids

Background

Tie point grids are generally fast to create since they only require a few data points which are usually taken from metadata.

However, in some special cases, TPGs can take significant amount of time to create. One example is the slant range time and incidence angles in the ALOS CEOS products. In this case the data is stored in the image records and take some time to seek and read in the files.

Action items

  • TPGs should be created as normal with all the current information needed for the current constructors.
  • The ProductReader interface should be updated to include: 
default void readTiePointGridRasterData(TiePointGrid tpg,
int destOffsetX, int destOffsetY,
int destWidth, int destHeight,
ProductData destBuffer, ProgressMonitor pm) throws IOException {
throw new IOException("readTiePointGridRasterData not implemented");
}
  • On getPixels() if the data has not been loaded, the reader.readTiePointGridRasterData will be called to populate the destBuffer