developmentseed / developmentseed/deck.gl-raster

Runtime Custom Visualization & Texture Filtering Control

Open
#215 18 comments 4 reactions 0 assignees View on GitHub
Dominant language
TypeScript
Stars
228
Forks
29
Avg merge
12h 27m
Merged PRs (30d)
4

Description

Hi everyone,

First of all, I really admire the approach taken in this library with the GPU-based raster reprojection and native tiling - it is a fantastic architecture.

We are currently maintaining our own solution for COG visualization ([gisat/deck.gl-geotiff](https://www.google.com/search?q=https://github.com/Gisat/deck.gl-geotiff)), but we are very interested in potentially migrating to use `deck.gl-raster` in the future. However, we have identified two key features that are currently preventing us from doing so, and I wanted to ask about your roadmap for them.

**1. Runtime Custom Visualization**
Currently, it seems `deck.gl-raster` relies heavily on visualization styles that are saved directly within the GeoTIFF/COG file. For our use cases, we need the ability to define custom visualizations dynamically at runtime (e.g., custom pixel-by-pixel filtering, band combinations, dynamic thresholding, and coloring) without modifying the source file.

We implement this in our current architecture by processing pixel data on the fly (see our [architecture docs here](https://github.com/Gisat/deck.gl-geotiff/blob/dev/geoimage/docs/architecture-geoimage.md)).

I noticed in your README that "spectral band math" and "pixel filtering" are listed under "Soon". Could you share if there is a plan or timeline for enabling these custom visualization pipelines? This would be a major enabler for us to switch.

**2. Texture Filtering Control (Nearest vs. Linear)**
We also need the ability to control texture filtering, specifically to disable texture smoothing (blurring) when zoomed in. For scientific data analysis, preserving the "sharp" pixel edges using Nearest Neighbor interpolation is often critical.

In our current implementation, we handle this by passing `textureParameters` to the layer, toggling between `linear` and `nearest` based on user preference:

````typescript
// Example from our CogBitmapLayer.ts
textureParameters: {
minFilter: blurredTexture ? 'linear' : 'nearest',
magFilter: blurredTexture ? 'linear' : 'nearest',
},
````
Is there an option to expose these texture parameters in `COGLayer`?

Thank you for your work on this library!

Contributor guide

No contributing guide indexed for this repository

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.