Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[Feat] GeoArrow incremental rendering (1) #2459

Merged
merged 7 commits into from Dec 9, 2023

Conversation

lixun910
Copy link
Collaborator

This PR is trying to implement progressive rendering of large GeoArrow file by batches. The idea is borrowed from vector tile rendering that each batch (like each tile) is parsed and rendered as a deck.gl geojsonlayer.

incremental-render-utah
(The main thread is not fully blocked even though we don't implement the web worker version)

  • instantaneous rendering of the first batch
  • rendering while loading more batches

Note:

  • Arrow: batch size can be set by -lco BATCH_SIZE=65536 (rows)

Some issues:

  • Ideally, we can parallelize the parsing and tesselation jobs, and each worker handles one batch. However, the data of each batch points to the same underneath array buffer of the same arrow table. That means we can't make it transferrable for each worker, and there seems no way to reattach the transferred buffer back to the arrow table in the main thread.
  • Alternatively, we can make a hard copy of the slice of the array buffer for each batch. However, it will be not efficient.

Any suggestions or comments will be appreciated. Thanks!

Signed-off-by: Xun Li <lixun910@gmail.com>
Signed-off-by: Xun Li <lixun910@gmail.com>
Copy link
Collaborator

@ibgreen ibgreen left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM Is this still rendering using multiple GeoJSONLayers? I don't see that in the code...

src/layers/src/layer-utils.ts Outdated Show resolved Hide resolved
Signed-off-by: Xun Li <lixun910@gmail.com>
@lixun910 lixun910 changed the title [Feat] implement progressive rendering of geoarrow by batches (draft) [Feat] implement progressive rendering of geoarrow by batches Dec 8, 2023
@lixun910 lixun910 changed the title [Feat] implement progressive rendering of geoarrow by batches [Feat] GeoArrow incremental rendering (1) Dec 8, 2023
Signed-off-by: Xun Li <lixun910@gmail.com>
Signed-off-by: Xun Li <lixun910@gmail.com>
Signed-off-by: Xun Li <lixun910@gmail.com>
Signed-off-by: Xun Li <lixun910@gmail.com>
@lixun910
Copy link
Collaborator Author

lixun910 commented Dec 9, 2023

I think it’s ready. Can’t wait to test it on website.

@ibgreen ibgreen merged commit 2024a6d into keplergl:master Dec 9, 2023
7 checks passed
@ilyabo
Copy link
Collaborator

ilyabo commented Dec 9, 2023

Great stuff @lixun910! 👍

chrisgervang pushed a commit to chrisgervang/kepler.gl that referenced this pull request Dec 19, 2023
Signed-off-by: Xun Li <lixun910@gmail.com>
Signed-off-by: Chris Gervang <chris@gervang.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

None yet

3 participants