New Eclipse project SFCurve: Faster queries thanks to space-filling curves
SFCurve is an Eclipse project that stems from two LocationTech programs, looking to solve the same problems and now working to create a robust, optimized set of space-filling curve exercises.
The SFCurve project is currently at the incubator phase under the Eclipse Foundation, which has its origins in two LocationTech projects – GeoTrellis and GeoMesa. Both projects had already developed Scala code for the easy creation and editing of Z-curve indices based on the spatial or spatiotemporal properties of data.
Since both GeoTrellis and GeoMesa produced similar code that looked at solving the same problems, efforts have now been concentrated on creating the common library SFCurve.
Space-filling curves and queries
The initial contribution contains only the GeoTrellis implementation of the Z-order curve for 2-dimensional and 3-dimensional spaces. This will serve as the groundwork for the SFCurve library, which will be collaboratively developed between committers on the GeoTrellis and GeoMesa projects, as well as any other collaborators from the community willing to participate.
One of the most common requirements for software that comes with spatial or spatiotemporal data works (i.e. 2- or 3-dimensional data), is to store this data in a 1-dimensional index. This allows software to convert a 3-dimensional parameter query into a series of 1-dimensional regions, whose beginning and end indices correspond to that of a space-filling curve.
If the number of spatiotemporal data was indexed by the same space-filling curve, the 1-dimensional areas can be used to retrieve the appropriate data. The advantage of this approach is that for many systems it is often significantly faster compared to other query methods.
For this reason, SFCurve will develop Scala and Java APIs that provide and enable the creation, transformation, and querying of space-filling curves. These include several interfaces for handling space-filling curve implementations, as well as the implementation of Z-curves, Hilbert curves and other curve types.
SFCurve is licensed under the Apache License 2.0. Version 0.1.0 is set to be released at the end of an IP Review and further incubation steps. Since both GeoTrellis and GeoMesa are already in the incubation phase, developers expect the time up until release to be manageable.