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 dealt with.
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.
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: http://www.geog.leeds.ac.uk/people/a.turner/src/andyt/java/grids/ 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.