It is desirable to process 2D square celled raster data with potentially millions of
rows and columns on a modern desktop computer. Grids was developed as a package for
handling the processing of raster data and was based on some early work on GeoTools.
Keeping track of how much memory is being used is not straightforward in Java.
However, due to the try and catch method for dealing with errors and excpetions,
OutOfMemoryErrors can be caught and handled. In Grids when an OutOfMemoryError is
encountered a reserve memory is used to activate swap operations to free up space
required for the method that failed. Developing methods to process efficiently
requires organising where the failure due to encountering an OutOfMemoryError will be
Grids 1.0 beta was open sourced in March 2005 although various versions were
distributed for research collaborations prior to this date. The library was made
available on the World Wide Web at the following URL:
Although development has slowed, releases have continued to be made. Many lessons
have been learned in developing this resource. It is useful for what it does, but the
way it operates may have serious implications for other software that incorporates
it. For issues of long term sustainability an effort is needed to open up the
development of the resource. If done well, the capabilities can be maintained and the
various bugs that lie within can be identified and dealt with. Additionally much can
be done to add to this platform. This is about exploring the possibilities, sharing
experiences, learning from each other and future collaboration.
In processing raster data there can be multiple inputs and outputs. The simplest
operations, especially with regard handling OutOfMemoryErrors, affect just one raster
or grid. The OutOfMemoryError handling is more complex when there are multiple inputs
and multiple outputs. This contribution aims to explain some of the data structures
and OutOfMemoryError management. Additionally and perhaps more importantly, it
considers the future of this open source Java library.