I had an idea for a geographic application not so long ago and I was looking for an algorithm to find all elements in a specific region (e.g. spatial index), finally I came upon an algorithm called RTree but I still couldn't find a C# code.
So I decided to port Java Spatial Index Library
You can find it here:
https://sourceforge.net/projects/cspatialindexrt/
Basic usage
Create a new instance:
RTree.RTree<T> tree = new RTree.RTree<T>();
Create a rectangle:
RTree.Rectangle rect = new RTree.Rectangle(1, 2, 3, 4, 5, 6);
Add a new rectangle to the RTree:
tree.Add(rect, object);
Check which objects are inside the rectangle:
var objects = tree.Contains(rect);
Count how many items in the RTree:
var i = tree.Count;
Check which objects intersect with the rectangle:
var objects = tree.Intersects(rect);
Create a point:
RTree.Point point = new RTree.Point(1, 2, 3);
Get a list of rectangles close to the point with maximum distance:
var objects = tree.Nearest(point, 10);
The library's code can be improved, but I needed something quick for a POC.
So I decided to port Java Spatial Index Library
You can find it here:
https://sourceforge.net/projects/cspatialindexrt/
Basic usage
Create a new instance:
RTree.RTree<T> tree = new RTree.RTree<T>();
Create a rectangle:
RTree.Rectangle rect = new RTree.Rectangle(1, 2, 3, 4, 5, 6);
Add a new rectangle to the RTree:
tree.Add(rect, object);
Check which objects are inside the rectangle:
var objects = tree.Contains(rect);
Count how many items in the RTree:
var i = tree.Count;
Check which objects intersect with the rectangle:
var objects = tree.Intersects(rect);
Create a point:
RTree.Point point = new RTree.Point(1, 2, 3);
Get a list of rectangles close to the point with maximum distance:
var objects = tree.Nearest(point, 10);
The library's code can be improved, but I needed something quick for a POC.