Conversation
|
I removed the extraneous merging utilities to decrease the size of the PR. |
|
Hey @wayofthefuture, thanks so much for the thoughtful work on this — definitely going to review carefully. And sorry for a late response — somehow I only noticed the PR now when I've been pointed to it, had some crazy weeks recently... |
|
Thanks for the message! I figured you were very busy your reputation precedes you! Thanks for your time. I did my best to make this updateable and it was done carefully, so hopefully I didn't make any major mistakes. While it might not improve performance in all situations, it was doing quite well with my tests so hopefully it will be an improvement. Please let me know if you think anything needs to be changed. |
|
@mourner Okay hopefully this is good! Had to finish invalidation within the buffer edges but all appears to be working as planned... |
This PR introduces differential update support to GeoJSON-VT, enabling incremental updates to existing source data without requiring a full tile-stack regeneration. This significantly improves performance when only a subset of features have changed, since tiles unaffected by the update can be retained.
The update workflow removes only the tiles impacted by the modified feature set, then defers to the standard getTile generation path to rebuild those tiles as needed. This also reduces the overhead associated with repeatedly simplifying the entire dataset.
This PR attempts to not touch or affect current/core functionality of this package. The
updateableoption must be set in the constructor for the code to take effect. There are also a couple of added utility functions to merge differential updates that are currently not in use but may be useful in the case of high-frequency asynchronous updates.Note: @mourner This is currently a draft PR. I am still validating correctness and performance and would appreciate feedback on the approach and implementation details before requesting a full review.
Benchmark comparisons between the existing workflow and the new incremental update process are included below.
diff.mov