Skip to main content

Six ways to use Fused

Β· 2 min read
Daniel Jahn
Platform Engineer @ Sylvera

At its heart, Sylvera rates carbon projects. Our ratings are powered by a large number of earth observation and geospatial analysis data products. From climate risk data, and deforestation indicators, to biomass-predicting ML models, a wealth of data goes to what ultimately ends up as a single-letter rating.

The problem​

With this abundance of data, it’s difficult to know how to best present this data to the client. On one hand, we want the client to be able to see the data that tell the story of the project’s rating. On the other, we don’t want to overwhelm the client with fun interactive visualisations that leave them without a clear takeaway.

This is why we decided to organize an internal hackathon, aimed at discovering what the modern geospatial data stack can do when it comes to enabling user experience with geospatial data.

The solution​

To enable quick iteration, the crucial initial choice was the right stack. Our data lives in Zarr format in Arraylake, a data lake platform for managing array data.

We explored the current landscape and considered a number of options. Should we serve pre-computed visualisations through xpublish or TiTiler? Create interactive dashboards through Felt, or build them in Mapbox?

In the end, we settled on what we perceived as the most agile and powerful stack: an interactive React + deck.gl application powered entirely by Fused.

Fused has the unique power of instantly providing arbitrary compute on-the-fly whilst also automatically providing a tileserver. No other technology provides this. If we wanted a quick histogram, or a differencing map layer, we would have to pre-compute it. With Fused, we could change a few lines of a UDF and immediately see the results in the app.

Fused also offers the App builder – in-browser Streamlit. This is the simplest way to create a prototype for an application on top of Fused UDFs. We decided to build a custom react application. Although this required more setup, it also gave us full control. Most importantly, this stack is compatible with our existing frontend setup, meaning a straightforward integration.

[I think some code examples here would be nice] [UDF: read from arraylake] [UDF: call previous UDF for two data points & do e.g. differencing, or a histogram using the nail/hammer udfs] [react+deck.gl minimal example of displaying the output of a UDF – it’s really simple!]

Conclusion and future work​

The application we built isn’t yet fully featured to be put in front of userspretty – but that’s the point. We were not aiming for a finished product. Instead, we achieved rapid iteration that enabled us to gather relevant stakeholder feedback.

The speed we could reach wouldn’t have been possible without Fused’s development platform. Fused collapses three typically quite distinct parts into a single solution: prototype code, scaling its execution and visualisation. Thanks to this, was an indispensable tool for product iteration.

[ this assumes Zarr integration is planned – Sina mentioned this in a call in December ]

In the future, we would like to explore the coming integration with Zarr stores. Being able to not only visualise the results but also to immediately persist them into a Zarr store will be a game-changing capability.