Giter Club home page Giter Club logo

r-tree's Introduction

R-tree indexing structure 🌳

An 2-D tree for spatial indexing

Features:

  • Single threaded approach with variable minimum number of records and maximum number of records. πŸ—ƒοΈ
  • 2 methods for node splitting: LinearSplitting and QuadraticSplitting. 🌱
  • Insert, Delete and 3 types of search methods: exactSearch(), rangeSearch() and knnSearch(). πŸš€
  • Multi-threaded approach with a fine-grained locking approach for search and a coarse grained locking for writing methods. πŸ”’
  • Spark implementation with comparison between randomly partitioned records and comparison with spatially re-partitioned RDDs. πŸ“Š

Visualization:

Here is an example of an R-tree with 1000 points as records and 16 as min page size and 50 as max page size with Quadratic splitting. The less overlap between the nodes, the slower the search queries will become.

Rtree with 1000 items

A bit of context:

A spatial index is more or less identical to a normal index: the role of any index is to allow very quick access to a selection of items from a large amount of data. Spatial data objects are not well represented by location points and represented in multi-dimensional spaces. R-trees are tree-like data structures used to index those multidimensional information (called spatial data) in an efficient way.

A typical use case for R-trees is the storage of geographic information such as restaurant locations or the processing of game static data. A typical request might be ”find all the restaurants within a radius of 2 kilometers”. The problem is that traditional one-dimensional structures database indexing are not suitable for multidimensional spatial searching. In particular, we can mention those that use an exact match with values (hash table) or those that use key values ordering (B-Trees, ISAM).

Many structures have been proposed to handle multidimensional data: Cell methods, Quad trees, k-d trees, K-D-B Trees. But for different reasons, these methods have proven to be not appropriate (not good for dynamic structures, useful only for point data . . . ) [9]. Among the functional methods, we will deal in particular with the R-tree structure, which represents data objects by intervals in several dimensions.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    πŸ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. πŸ“ŠπŸ“ˆπŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❀️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.