1

本文解释了如何计算 bigmin 和 litmax(大最小值和小最大值)。

我很难理解第 4 步的措辞,以了解它如何转换为伪代码、C 或 python。

第4步

一个水平分割我们知道我们需要计算最接近yn的分割线的Latitude值。取最小值和最大值的最高有效位,直到它们最初不同的位置 yn,并将其称为 y[1..m] 我们知道在分割线上方的纬度值将被二进制编码为 y[1..m ] 0111... 和 y[1..m] 1000... 转换为 LitMax 和 BigMin 的纬度值。

由于在我们的示例中不同的最重要位是 y4,因此我们的 LitMax 和 BigMin Latitude 值等于 0111 和 1000。

在垂直除法中,我们只需将其反转为 x 位和经度。

我从 coord 转换 z 顺序索引没有问题,反之亦然。

我只是对计算 bigmin 和 litmax 感兴趣,因为它们可以大大加快速度。我已经搜索过,但找不到关于那些特定位掩码操作的详细信息(此处的答案How to use Morton Order(z order curve) in range search?并没有真正涵盖它,链接的 dynamodb 文章也没有) .

4

1 回答 1

0

查看原始文章http://hermanntropf.de/media/multidimensionalrangequery.pdf中的第 76 页决策表 在美国专利 US7321890B2 中更详细地描述了 Z-Indexing 的 Bigmin 计算背后的想法使用希尔伯特顺序而不是 Z 顺序。请参阅第 2 节:“Z-Indexing 的 BIGMIN 解决方案”,因为专利中的许多想法与 Hilbert 索引的应用程序相同,所以已将其包括在内以简化描述。 https://patents.google.com/patent/US7321890B2/en?assignee=hermann+tropf&oq=hermann+tropf。一旦实现 Bigmin,只需查看原始文章中的 Litmax 决策表。我希望这可能会有所帮助。

于 2020-08-06T13:33:33.640 回答