如何在没有过滤的情况下完成对地理数据的范围查询?

时间:2016-04-17 23:06:40

标签: database geospatial geohashing nosql

我想我理解如何存储(x,y)或(lat,log)以便在对排序数据使用范围查询时允许检索某些空间范围内的所有点。 Geohash通过交替lat(奇数位)和log(偶数位)来实现这一点,这样随着x的分辨率增加,y的分辨率也增加。像希尔伯特曲线这样的其他方法也依赖于这个基本原理来提高两个维度的分辨率。但是,我无法理解添加额外时间维度的内容。例如,GeoMesa uses index which look like this "YXTTYXTTYX" acconding to their site。我没有得到的是TT比特如何允许提出诸如“获得X内的所有点,Y在最小值我是否误解了地理位置索引中这些位和额外维度的目的?

我理解它的方式,将那些位放在那里会使得时间分辨率随着空间分辨率的增加而增加。假设我们有像[10] [00]这样的位,其中Ts是。第一个位将空间划分为两个块,零表示小于一半,1表示超过一半,因此,对于一个假想的四千年集合,我们得到0 = year < 2000, 1 = year > 2000。此[10]导致2000 < t < 2500,下一位0导向2000 < t < 22500导致2000 < t < 2125。使用这种方法,我没有看到如何在特定时间范围内检索某些时间范围内的所有事件,并且不清楚这可以用于什么。到目前为止,我所看到的所有地理论文和演示文稿都主要关注空间散列,并没有详细讨论额外维度的使用。

1 个答案:

答案 0 :(得分:1)

GeoMesa网站错误的空间填充曲线是一个geohash。 geohash是G. Niedermayer的发明!但你也可以像二维一样扁平3d。 sfc还保留了3d中的位置信息,但质量更好,努力增加。我不建议你使用3d希尔伯特曲线。 z曲线更容易理解!