GSA Annual Meeting in Seattle, Washington, USA - 2017

Paper No. 355-4
Presentation Time: 9:00 AM-6:30 PM

GEOSTATION: AN OPEN SOURCE SCALA LIBRARY FOR SPATIAL DATA ANALYSIS


SCHWAT, Eli L., Department of Earth and Environmental Sciences, Vanderbilt University, Nashville, TN 37235, eli.l.schwat@vanderbilt.edu

Geostation is an open source Scala library for the interpretation and analysis of spatial datasets that might otherwise require complicated (and often expensive) software suites. Geostation is extensible and open source, providing opportunity for the easy creation of modules that take geospatial data as input.

At its core, the Geostation library is a read library for complicated file formats. Geostation’s basic purpose is to abstract spatial-dataset formats (.bil, .flt, .hdr, .png, etc.) to 3 and 4 dimensional matrices. In doing so, Geostation allows the intricacies of different file formats to be ignored and various spatial datasets to be interpreted similarly. The current state of the library allows access to temperature, precipitation, and elevation datasets. Current modules allow access to point-data, average data, extrema data, and time-series data-sets. The existing Geostation library can be easily leveraged to build modules for more specific scientific analyses. The key to building such modules is taking advantage of Geostations key feature - the universal abstraction of all datasets to multi-dimensional arrays.

Geostation is written in Scala, a modern programming language that contains functional programming features while maintaining a strong static type system. Scala is thus a perfect language with which to explore functional programming while limiting the confusion that comes with a weakly-typed language.

Geostation has also been created as an educational opportunity for earth and computer science students to learn a modern programming language and contribute to a library that can be utilized for a variety of original research purposes. The Geostation library is simple and accessible to those with a limited amount of programming knowledge and can be utilized in compiled applications or in the Scala scripting shell.