Comments (8)
The reason I didn't do this is that item sorting functions (sort by minX, minY, etc.) heavily affect the performance of the library, and they need to be as simple and direct as possible to perform well. If I accepted a format function that returns a bbox from an item, I would be forced to call it from inside the sorting functions, and performance would drop dramatically. Function compilation performs much better.
from rbush.
What I was thinking was a function that would be called when the feature was added not one to be used internally.
from rbush.
I see... This has some implications as well, as you would have to keep all item bboxes separately from items. Is there a really important use case for this that I'm missing, or is it just more of a nice to have for convenience?
from rbush.
off the top of my head the use case was consuming geojson that doesn't have the bbox property set but also coordinate transformations would be another conceivable use
from rbush.
I think I'd suggest data pre-processing in this case. E.g. go over all features and set a bbox property. Also, next GeoJSON spec will restrict coordinates to WGS84, so no need for coords convertions. geojson/draft-geojson#6
from rbush.
Those are two separate thoughts btw but I was actually thinking in terms of someone wanting to have the tree be in a projected coordinate system not the other way around.
Pre-processing would be the optimal way but that can be applied to having the data in any other format besides the default. If done right (and I can send a pull request) it shouldn't slow down anyone who doesn't use it.
from rbush.
But if it indeed does slow down the algorithm if used, I'd rather encourage data preprocessing than allow using RBush with expectedly subpar performance. And so far I couldn't come up with a way to introduce a format function without affecting the performance much due to the way sorting is used in the algorithm. If you do, please let me know.
from rbush.
Fixed in a way by #14
from rbush.
Related Issues (20)
- Can you provide a browserify distribution? HOT 1
- How to limit the result count from the query? HOT 11
- how to search by id ? HOT 2
- tree.getById(id) how to get by id? HOT 2
- Why "RTree" is geographically even distribution while "RBush" is NOT? HOT 1
- About evenly geographic distribution when limit the result size HOT 2
- Invalid collision on maxX/Y (pixel-perfect collision false positive) HOT 3
- Does RBUSH supports to use Latitude and Longitude? HOT 5
- Hi i can't figure out how to use this library can anyone help? HOT 3
- Typescript attempts to use missing default constructor HOT 4
- How to search when usiong the extended class for points HOT 1
- is there any quick way to return the bounding box of tree itself? HOT 1
- Questions: Performance Remove + Moving item HOT 1
- Definition of "intersection" could be made more explicit in the readme HOT 2
- Returns all items when bounds provided to search contains center 0,0 HOT 3
- Support esm HOT 1
- search & collides support custom intersects & contains
- Balancing? HOT 1
- Unable to resolve dependency tree
- Performance benchmark vs other libraries HOT 1
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from rbush.