Need help with eyros?
Click the “chat” button below for chat support from the developer who created it, or find similar developers for support.

About the developer

160 Stars 6 Forks Other 413 Commits 5 Opened issues


interval database

Services available


Need anything else?

Contributors list


eyros (εύρος) is a multi-dimensional interval database.

The database is based on bkd and interval trees.

eyros operates on scalar (x) or interval (min,max) coordinates for each dimension. There are 2 operations: batched write (for inserting and deleting) and query by bounding box. All features that intersect the bounding box are returned in the query results.


This example inserts 5000 records, writes the data to disk, then queries and prints records inside the bounding box


The bounding box is of the form

use eyros::{Row,Coord};
use rand::random;
use async_std::prelude::*;

type P = (Coord,Coord,Coord); type V = u64; type E = Box;

#[async_std::main] async fn main() -> Result { let mut db = eyros::open_from_path3( &std::path::PathBuf::from("/tmp/eyros.db") ).await?; let batch: Vec> = (0..5_000).map(|i| { let xmin = (random::()2.0-1.0)180.0; let xmax = xmin + random::().powf(16.0)(180.0-xmin); let ymin = (random::()*2.0-1.0)*90.0; let ymax = ymin + random::().powf(16.0)(90.0-ymin); let z = random::(); let point = ( Coord::Interval(xmin,xmax), Coord::Interval(ymin,ymax), Coord::Scalar(z) ); Row::Insert(point, i) }).collect(); db.batch(&batch).await?; db.sync().await?;

let bbox = ((-120.0,20.0,10_000),(-100.0,35.0,20_000)); let mut stream = db.query(&bbox).await?; while let Some(result) = { println!("{:?}", result?); } Ok(()) }

The output from this program is of the form

(coords, value)
$ cargo run --example polygons -q
((Interval(-100.94689, -100.94689), Interval(20.108843, 20.109331), Scalar(16522)), 4580)
((Interval(-111.62768, -110.40406), Interval(-7.519809, 86.154755), Scalar(12384)), 2603)
((Interval(-114.46505, -31.340988), Interval(-57.901405, 20.235504), Scalar(11360)), 1245)
((Interval(-159.97859, 121.304184), Interval(32.35743, 32.35743), Scalar(10164)), 3294)
((Interval(-150.29192, -35.475517), Interval(-39.97779, 29.163605), Scalar(15333)), 2336)
((Interval(-162.45879, -92.46166), Interval(31.187943, 31.187975), Scalar(12221)), 2826)
((Interval(-160.53441, -88.66396), Interval(10.031784, 21.852394), Scalar(11711)), 2366)
((Interval(-132.39021, -98.14838), Interval(-0.06010294, 53.88453), Scalar(10685)), 3441)


license zero parity 7.0.0 and apache 2.0 (contributions)

We use cookies. If you continue to browse the site, you agree to the use of cookies. For more information on our use of cookies please see our Privacy Policy.