Wondering what’s next for npm?Check out our public roadmap! »

    rtree-ldf

    0.0.9 • Public • Published

    Rtree LDF

    Rtree-ldf is based on rbush, a high-performance JavaScript library for 2D spatial indexing of points and rectangles. It is completely disk based and uses a nosql-database for storage and a lru-cache for improved performance. Please note that this implementation isn't optimal and an implementation in another language such as c++ will be much faster. Performance will also greatly depend on the cache size given to the tree.

    Install

    Install with NPM (npm install --save rtree-ldf).

    Usage

    const Rtree = require('rtree-ldf')

    Creating a Tree

    const tree = new Rtree({
        dir: './db',
        openExisting: true,
        cacheSize: 100000,
        maxEntries: 16,
    });
    • dir: Directory where the tree will be saved on disk
    • openExisting (Opt.): Open an existing tree located in dir (default: false)
    • cacheSize (Opt.): Amount of nodes that will can be cached (max 1.000.000, default: 100.000)
    • maxEntries (Opt.): defines the maximum number of entries in a tree node (default: 9)

    Closing a tree

    If you want to make sure your tree is completely saved to the disk, make sure to call tree.close() when you are done.

    Adding Data

    Insert an item:

    const item = {
        minX: 20, 
        minY: 40,
        maxX: 30,
        maxY: 50,
        "@id": "gtfs:station",
        foo: bar
    };
    tree.insert(item);

    minX, minY, maxX and maxY are required. You can also add extra data properties.

    Removing Data

    Remove a previously inserted item:

    tree.remove(item);

    You can also pass a custom equals function.

    tree.remove(itemCopy, function (a, b) {
        return a.id === b.id;
    });

    Remove all items:

    tree.clear();

    Bulk-Inserting Data

    Load an array of data into the tree.

    tree.load([item1, item2, ...]);

    Search

    var result = tree.search({
        minX: 40,
        minY: 20,
        maxX: 80,
        maxY: 70
    });

    Returns an array of data items (points or rectangles) that the given bounding box intersects.

    var allItems = tree.all();

    Returns all items of the tree.

    Collisions

    var result = tree.collides({minX: 40, minY: 20, maxX: 80, maxY: 70});

    Returns true if there are any items intersecting the given bounding box, otherwise false.

    Export to JSON

    // export data as JSON object
    var treeData = tree.toJSON();

    Export to linked data fragments

    tree.toFragments({
        outDir: './fragments/', 
        treeDir: 'tree', 
        dataDir: 'data', 
        collection: 'stations' , 
        manages: 'http://vocab.gtfs.org/terms#station'
    });
     

    The tree will be exported into fragments conform to the TreeOntology. The fragments are formatted in JSON-LD and most will be around 500 kB which should give a fragment size of around 50 kB after compression.

    • outDir: base directory where the fragments will be exported to
    • collection: name of the fragment describing the collection. This fragment will be placed in the out directory
    • manages: type of data the collection manages
    • treeDir (opt.): directory starting from outDir where the treeFragments will be exported to. The fragments are exported to the outDir by default.
    • dataDir (opt.): directory starting from outDir where the dataFragments will be exported to. The fragments are exported to the outDir by default.

    Keywords

    Install

    npm i rtree-ldf

    DownloadsWeekly Downloads

    15

    Version

    0.0.9

    License

    MIT

    Unpacked Size

    53.4 kB

    Total Files

    16

    Last publish

    Collaborators

    • avatar