This project implements Ruby bindings for the NearTree C library. NearTree provides an R-Tree structure with fast nearest k-neighbour searches.
The NearTree C library is at:
The bindings have only been tested on NearTree 2.3.2.
require 'neartree' rtree = NearTree::RTree.new(2) # number of dimensions # insert coordinates/value pair # coordinates must be an array of Numeric objects # The value can be any ruby object rtree.insert([ 0.0, 0.0], 10.0) # coordinates, value rtree.insert([ 2.0, 0.0], 2.0) rtree.insert([-2.0, -2.0], 0.0) rtree.find_nearest([ 0.5, 0.5]) # => [[0.0, 0.0], 10.0] rtree.find_nearest([100.0, 0.0]) # => [[2.0, 0.0], 2.0] # coordinates, number_of_neighbours, radius rtree.find_k_nearest([1.2, 0.5], 3, 2.0) # => [[[2.0, 0.0], 2.0], [[0.0, 0.0], 10.0]] rtree.find_k_nearest([1.2, 0.5], 1, 2.0) # => [[[2.0, 0.0], 2.0]]