logoalt Hacker News

Harder, Better, Faster, Stronger Version of Uber H3 in Rust

87 pointsby ashergill10/23/202530 commentsview on HN

Comments

grim7reaperyesterday at 7:13 PM

Author here!

Funny to see this on the front page xD

That was the blog post for the initial release, and a lot of things have changed since then (definitely deserves a new blog post ^^).

The first big change happened six months after the release, when I rewrote most of the geometrical algorithms (leveraging the excellent geo crate) and got a massive boost in speed and reduction in memory usage which made it applicable at high resolutions and country-scale levels (e.g. some computation went from 15h to 7min, and from 18GB of RAM to 100MB). I also added support for alternative coverage methods (back then H3 only offered centroid containment).

Since then, the reference implementation has caught up in term of coverage predicate and even provides a new experimental coverage algorithm addressing some performance issue. I haven’t implemented yet but, IIRC, my current implementation still outperforms theirs (but less dramatically so).

I’ve also developed a little ecosystem of libraries around h3o: - Tailored compression algorithm with h3o-zip (in optimal cases I’ve observed reductions from ~2GB to 100KB) - Compact data structure for fast lookup with h3o-ice (based on FST) - Map rendering with h3o-mvt

Most of these things run in production at Amo, where one of the main use cases is powering the Scratchmap feature, both client and server side, in the Bump app. I’ve also seen adoption from other projects (bindings for R, Erlang, Polars, ...) and enterprises :)

show 2 replies
serjesteryesterday at 7:03 PM

H3o is an awesome piece of work. I created polars bindings for it(another reason I love polars) and last time I benchmarked it, it had 5X better performance than even duckdb’s C++ implementation.

https://github.com/Filimoa/polars-h3

show 1 reply
mattrighettiyesterday at 9:04 PM

TIL! What are the advantages of hexagonal spatial indexing compared to e.g. quad trees, r-trees?

show 3 replies
kraphtyesterday at 6:17 PM

This is cool. Not personally going to switch because I want to stay with the official implementation, but I appreciate the effort involved in porting libraries.

websiteapiyesterday at 7:24 PM

who is using uber h3 and what for? (besides uber of course)

show 7 replies
ramon156yesterday at 6:23 PM

This is pretty big for WASM projects

jiggawattsyesterday at 8:36 PM

I never understood why anyone would prefer the H3 hex tiles over Google’s much simpler S2 system: http://s2geometry.io/

Sure, hex tiles make certain circular nearest neighbour searches slightly more accurate… but still have an error.

And then… everything else that’s inconvenient with hex tiling, like that issue that subdivisions of a cell leak into the neighbouring cells and hence don’t add up to 100% of the parent! This makes many database queries return lies, or the queries need very complex and slow(!) code to compensate.

show 3 replies