The LocationTech SFCurve library is a Scala library for the creation, transformation, and querying of space-filling curves (http://en.wikipedia.org/wiki/Space-filling_curve).
It is a common requirement for software dealing with spatial or spatiotemporal data (2- or 3-dimensional data) to store that data based on a 1-dimensional index. For instance, say I wanted to query a set of spatiotemporal data, and I only wanted to retrieve information between the years 2014 and 2015, within the state of Pennsylvania. Software could translate the 3-dimensional query parameters (one dimension being the time, and two dimensions being the longitude and latitude properties of the geographical boundary) into a set of 1-dimensional ranges. The start and end of these ranges would correspond to indices that were derived by a space-filling curve. If the set of spatiotemporal data was indexed by the same space filling curve, the 1-dimensional ranges could be used to retrieve the appropriate data. In many systems, including the ones that GeoTrellis and GeoMesa operate on, this method of querying spatiotemporal data is significantly faster than retrieving the data based directly on its 3-dimensional properties.
SFCurve provides (or will provide) Scala and Java APIs for functionality dealing with space filling curves. This includes a set of interfaces that provide a common and well-defined way for dealing with space filling curve implementations, as well as implementations of curves such as the Z-order curve and Hilbert curve.
The content of this open source project is received and distributed under the license(s) listed above. Some source code and binaries may be distributed under different terms. Specific license information is provided in file headers and in NOTICE files distributed with the project's binaries.