Kyrix
s2geometry
Our great sponsors
Kyrix | s2geometry | |
---|---|---|
2 | 26 | |
143 | 2,168 | |
- | 1.9% | |
0.0 | 5.9 | |
10 months ago | 14 days ago | |
JavaScript | C++ | |
MIT License | Apache License 2.0 |
Stars - the number of stars that a project has on GitHub. Growth - month over month growth in stars.
Activity is a relative number indicating how actively a project is being developed. Recent commits have higher weight than older ones.
For example, an activity of 9.0 indicates that a project is amongst the top 10% of the most actively developed projects that we are tracking.
Kyrix
-
Implicit In-order Forests: Zooming a billion trace events at 60fps
We built a general 2D zooming visualization system which supports data in PostgreSQL: https://github.com/tracyhenry/kyrix. Under the hood, it uses PostgreSQL quad tree index to fetch data on demand.
We have also tested with Citus, which helped us scaled to billions of objects. Demo: https://youtu.be/ccES97ni_vI
- Exploring Databases Visually
s2geometry
-
Hexagons and Hilbert Curves – The Horrors of Distributed Spatial Indices
I experimented with geospatial Hilbert Curves as a Postgres extension [0] for PostGIS using the S2 [1] spherical geometry library. S2 uses a scale free cell coverage pattern that is numbered using six interlocking space filling Hilbert Curves [2].
By having both high level (cell) and low level (cell id) geometries it was a very powerful library which allowed projection from the hilbert space into a Postgres spatial index (spgist) including various trees, like noted in this article. It appears to be still quite active in development.
-
Show HN: TG – Fast geometry library in C
Howdy, I work on S2 [1] so I have questions! How do you deal with polygons that cross the antimeridian?
The indexing structure you've come up with seems very interesting. In spherical coordinates line sweep algorithms like that are a little less intuitive because there's not really a min and max y value to work with. Does your index support multiple polygons indexed together?
The lack of exact predicates worries me a little bit. It's tricky because it will work right until it doesn't for mysterious reasons, and it's very hard to test for if you haven't built it on a foundation of exact predicates. You'll periodically fall into the fractal foam around edges when testing if you cross them or not ([2] has some good pictures). We do this in S2 by relying on a set of predicates [3] that fall all the way back to symbolic perturbation if they have to. We simply don't have to think about colinear points in S2 for that reason.
- Unum: Vector Search engine in a single file
- Evaluation of Location Encoding Systems
-
Floating Point Math
For an example of safe geometric calculation in floating point, see Google's S2 library:
-
Anyone doing geospatial queries? NoSQL? Amazon Location Service?
A more popular alternative is S2 by Google (https://s2geometry.io/), but Uber claims they solved it slightly better.
- S2: Computational geometry and spatial indexing on the sphere
-
Implicit In-order Forests: Zooming a billion trace events at 60fps
If generalized to 2D (and over the unit sphere), you'd get Google's S2 library (https://s2geometry.io/).
In 3D, the same can be done with morton codes (or a 3D hilbert curve) to build an implicit octree. Some raytracing systems use this for fast BVH construction.
In either case, this approach differs from mipmaps in that the underlying data can be sparse, and is simply stored in a sorted array.
-
Protocol buffers database, a Key-Value database on the wire
Nice! I've been considering learning Rust by taking a stab at something similar with it. I probably would have already if there was a fully ported s2 crate.
What are some alternatives?
h3 - Hexagonal hierarchical geospatial indexing system
S2 geometry - S2 geometry library in Go
0.30000000000000004 - Floating Point Math Examples
s2 - Node.js JavaScript / TypeScript bindings for Google S2
SQLiteViz - Visualize SQLite3 database schema
protoc-gen-star - protoc plugin library for efficient proto-based code generation
sled - the champagne of beta embedded databases
open-location-code - Open Location Code is a library to generate short codes, called "plus codes", that can be used as digital addresses where street addresses don't exist.
BTrDB - Berkeley Tree Database (BTrDB) server
ld - Lean Database
ogc-grpc - Proto api and proxy server for ogc / inspire compliant API