[raster] Raster dataset functionality
|Reported by:||bnordgren||Owned by:||pracine|
I was playing around with a means of treating a table of raster data as if each row were a "block" in gdal or a tile in Java2D/JAI. The basic addition here is a "dataset" raster having only one band, where each "pixel" is a foreign key to the actual block with all the pixel data. Most operations are then two-phase: lookup the key in the "dataset", then perform the operation on the correct "block".
For this to work the way I wrote it, the table of raster blocks must have a "serial" primary key column. Also, it will only handle regularly tiled data (but tiles can be missing).
I'm attaching preliminary code for inferring a "dataset" from a pool of blocks having a filename field, code to read/write raster blocks and code to read/write pixels using the original (in file) pixel coordinates.
For this to represent an improvement, the "dataset" raster is going to have to be persisted in a table along with certain other information (srid, num_bands, pixel_types, nodata_values, etc.). Doing this with PostGIS functions rather than requiring all connecting applications to "roll-their-own" dataset constructs may aid interoperability.
The attached code is useful to get an idea of what will need to be stored in the "dataset table" (or view). Once the table is created, functions with smaller parameter lists can be fabricated because they can just reference the information in the table.