Master’s Thesis

Spatial indexing for moving geometry in main memory

Master’s Thesis in cooperation with Chalmers University of Technology, Gothenburg, Sweden.

Background

Spatial indexes are data structures which store objects in the form of points or geometry in two or more dimensions in such a way that subsets can be queried with high performance. However, good query performance is no guarantee for a corresponding update performance. There is currently little research of spatial indexing for non-point geometry which receive frequent updates. This thesis studies and compares different spatial indexes for this kind of data.

A graph from the thesis report showing the difference between different R-tree versions for a large geospatial data set.

Summary of results

The evaluated data structures are the simple quadtree, the loose quadtree, the loose-linear quadtree, and the R*-tree. A dynamic array is also implemented to represent a naïve approach. Where applicable, we augment the spatial indexes with two update techniques: bottom-up updating and update memo, to assess if these improve performance.

Evaluation is performed by a benchmark suite, where a scenario of objects sampled from different data distributions is used to quantify query and update performance of the spatial indexes.

The contribution of this thesis is twofold. First, we perform a thorough performance comparison for spatial indexes that support moving non-point geometry. To our knowledge, there exist no such survey at the time of writing. Secondly, we present novel query algorithms for the loose-linear quadtree which perform at least an order of magnitude better than other existing approaches.

This evaluation is divided into two steps. First, parameters specific to each data structure is chosen, with 10 million objects in the scenario. Then, we compare the data structures, the update techniques, and the memory usage of the selection. We find that the loose quadtree performs best for all measured scenarios in both updates and queries, while the R*-tree is worst, if not counting the query performance of the dynamic array. Bottom-up updating and update memo yielded unsatisfactory performance given the extra memory that is needed.

 

More information

Aasa, Jakob & Lundberg, Marcus. Spatial Indexing for Moving Geometry in Main Memory. 2019. https://hdl.handle.net/20.500.12380/300391