apache / apache/lucene

A SpatialPrefixTree based on the Hilbert Curve and variable grid sizes [LUCENE-4922]

Open
#5,987 18 comments 0 reactions 1 assignee Claimed by @dsmiley View on GitHub
legacy-jira-label:gsoc2014 legacy-jira-priority:Major module:spatial type:enhancement
Dominant language
Java
Stars
3.6k
Forks
1.4k
Avg merge
2d 11h
Merged PRs (30d)
88

Description

My wish-list for an ideal SpatialPrefixTree has these properties:
- Hilbert Curve ordering
- Variable grid size per level (ex: 256 at the top, 64 at the bottom, 16 for all in-between)
- Compact binary encoding (so-called "Morton number")
- Works for geodetic (i.e. lat & lon) and non-geodetic

Some bonus wishes for use in geospatial:
- Use an equal-area projection such that each cell has an equal area to all others at the same level.
- When advancing a grid level, if a cell's width is less than half its height. then divide it as 4 vertically stacked instead of 2 by 2. The point is to avoid super-skinny cells which occurs towards the poles and degrades performance.

All of this requires some basic performance benchmarks to measure the effects of these characteristics.

---
Migrated from [LUCENE-4922](https://issues.apache.org/jira/browse/LUCENE-4922) by David Smiley (@dsmiley), 2 votes, updated Aug 22 2014
Attachments: [HilbertConverter.zip](https://apache.github.io/lucene-jira-archive/attachments/LUCENE-4922/HilbertConverter.zip), [LUCENE-4922.patch](https://apache.github.io/lucene-jira-archive/attachments/LUCENE-4922/LUCENE-4922.patch)

Contributor guide

Open the contributing guide

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.