GithubHelp home page GithubHelp logo

rtree-3d's Introduction

rtree-3d

Travis CI
Maven Central

Note: this project is NOT under active development. See rtree-multi for an n-dimensional R-Tree.

Three dimensional R-Tree in java.

  • motivated by spatio-temporal queries
  • nodes can be serialized to disk or network storage.
  • particularly interested in serializing large static datasets into a top tree and many sub-tree files that might be accessed over medium latency and medium bandwidth io (e.g. using AWS S3 from EC2).

Status: pre-alpha

Progress is being made on this project. I've copied my rtree 2D implementation and beefed it up for 3D.

  • expanded the R* Selector and Splitter implementations to handle 3 dimensions
  • enhanced Quadratic Selector and Splitter implementations to handle 3 dimensions
  • normalized coordinates so they range from 0..1
  • added R language code to produce PNG visualizations of tree structure (below)

If the coordinates are normalized to the [0..1] range then the data structure doesn't favour one dimension over another. To favour time over position for instance just scale the time value down by a constant (experiment with your data!). Note also that if your entries are added to the R-tree in say ascending time order then the resultant R-tree may be affected negatively in terms of the efficiency of its structure. A useful strategy to avoid this is to shuffle the entries before adding. For example:

RTree<Object, Point> tree = 
  tree.add(
    entries
      .toList()
      .flatMapIterable(list -> {Collections.shuffle(list);return list}));

Visualization

Given the 38,377 data points of greek earthquakes (lat, long, time) from 1964 to 2000, the data is scanned to establish the ranges for each coordinate then normalized to a [0,1] range. The points are shuffled then added to an R-tree with minChildren=2 and maxChildren=4 using either the R* heuristics or standard R-tree heuristics. Visualization of the bounding boxes at nodes by method and depth is below.

Generated with this commit.

The plots below are generated from the same shuffle of data points.

Quadratic split R*-tree split

Commands to generate:

mvn test
cd src/test/r
./source.r

Images are generated in target directory (plot*.png).

rtree-3d's People

Contributors

davidmoten avatar dependabot[bot] avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar

rtree-3d's Issues

error when I import project in my myecplise

version is myeclipse10.7 in win8 OS.
many error appears.
Protoc-jar-maven-plugin:3.0.0-b2:run(2 errors)
execution gen-main,in/pom.xml
execution gen-test,in/pom.xml

m2e connector for build-helper-maven-plugin 0.15.0.201207090124 ???
[ERROR] Failed to execute goal on project rtree-3d: Could not resolve dependenci
es for project com.github.davidmoten:rtree-3d:jar:0.1-SNAPSHOT: Could not find a
rtifact au.gov.amsa.risky:formats:jar:0.5.4-SNAPSHOT -> [Help 1]
[ERROR]
[ERROR] To see the full stack trace of the errors, re-run Maven with the -e swit
ch.
[ERROR] Re-run Maven using the -X switch to enable full debug logging.
[ERROR]
[ERROR] For more information about the errors and possible solutions, please rea
d the following articles:
[ERROR] [Help 1] http://cwiki.apache.org/confluence/display/MAVEN/DependencyReso
lutionException

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.