XZ-ordering:A Space-Filling Curve for Objects with Spatial Extension

Z-order

Z-Ordering in Point Databases

Z曲线定义

将数据空间分割成四个sub-quadrants。这将递归地重复,直到达到某个基本分辨率为止。固定的递归迭代次数称为分辨率g。然后我们停止并使用得到的g位序列(称为象限序列)作为点的排序键(按字典顺序排序)。本文中每个代表数据空间中的一个区域的象限序列被称为元素(element)。
在这里插入图片描述

Z曲线查询

假设一个具有指定窗口的窗口查询。数据空间被分解为四个象限。测试每个象限与查询窗口的交集。

  • 如果象限不与查询窗口相交,则不需要做任何操作。
  • 如果象限完全包含在查询窗口中,则必须从数据库中检索所有点,并将该element的象限序列作为其键的前缀。如果键被表示为整数,我们必须检索后续数字的间隔。
  • 所有被窗口相交但没有完全封闭在窗口中的剩余象限(即相交)被递归分解,直到达到基本分辨率为止。

A Naive Approach for Polygon Databases

为了扩展z-order的概念来管理具有空间扩展的对象(例如矩形或多边形),我们面临一个给定的多边形与许多单元相交的问题。一种简单的方法是将对象覆盖的每个单元存储在数据库中。显然,这种方法会导致巨大的存储开销,除非基本网格非常粗糙。

One-Value-Approximation

面对象由包含该完整对象的最小element近似。在这种情况下,我们确定象限序列的递归算法修改如下:将当前数据空间划分为四个象限。如果恰好有一个象限与该对象相交,则递归处理该象限。如果超过一个象限相交,则停止。使用到此点为止的象限序列作为排序键。

该方法有一个明显的优点,

  • 即每个对象都由单个键表示,而不是像Naive Approach那样由一组键表示。

但这种方法也有一些缺点。

  • 第一个缺点是:在这种方法的象限序列有不同的长度,取决于最小的封闭象限的分辨率。因此,我们将其简单地解释为数值是不可能的。键必须存储为可变长度的字符串,并按字典顺序进行比较,这比数值比较效率低。
  • objects may be represented very poorly。例如,任何与数据空间中间的轴平行线(直线x = 0.5和直线y = 0.5)相交的多边形只能用空象限序列逼近。如果要逼近的多边形非常大,用空序列或非常短的序列逼近似乎是合理的。对于小多边形,相对逼近误差太大。因此,物体近似的相对空间开销是无限的。实际上,用空象限序列近似的对象是用户请求的每个查询的候选对象。数据库中存储的具有短象限序列的对象越多,索引的选择性就越差。
    在这里插入图片描述

XZ-order

与之前的方法相比,XZ曲线避免了对象重复和变长象限序列的缺点。为了实现这种健壮性,我们采用了三个方法:

  1. 将重叠纳入元素的概念中。我们将定义元素,使相同分辨率级别l的相邻元素相互重叠高达50%。(这种方法使我们能够存储没有冗余和没有失控的近似误差的对象。特别地,一个非常小的物体不可能用一个非常短的序列甚至是空序列来表示)
  2. 第二种思路是利用一种复杂的四象限序列编码方案,将变长四象限序列以保持距离的方式映射到整数域。
  3. 第三种思想是查询处理中interval generation的一种有效算法。

Overlapping Cells and Elements

事实上,如果一个对象位于大元素之间的边界上,那么任何将空间分解为互不连接的单元格的技术都会遇到麻烦。因此,我们修改元素的定义,使相同分辨率级别l上的元素之间允许重叠。

设想重叠元素定义的最简单方法是采用z顺序获得的原始元素,并向上和向右将高度和宽度扩大2倍。然后,两个相邻的cell相互重叠50%。其特殊的优点是,该定义还包含了与中轴相交的对象的小元素。
在这里插入图片描述
Definition 1: Enlarged elements
Enlarged elements的左下角对应于z - order的左下角。设s是这个左下角的象限序列,让|s|表示其长度,将右上角进行平移,使元素的高度和宽度为0.5^(|s|-1)。

Lemma 1. Minimum and Maximum Length of the Quadrant Sequence
高度h和宽度w的对象的象限序列s的长度受以下限制:
在这里插入图片描述

Numbering Quadrant Sequences

我们给出了一个长度从0变化到由基本分辨率决定的最大长度g的象限序列。我们的问题是要以保序的方式给序列赋数,即数字的less-equal-order必须与四象限序列的字典序相对应
在这里插入图片描述
对于我们的编号方案的定义,我们必须确保后面两个长度为l的字符串s1和s2的代码之间有足够的数字来表示在s1和s2之间排序的所有字符串。以s1作为前缀的字符串,它们的数量是(4^(g-i) - 1)/ 3。

所以为象限序列<q0 q1 q2 …q(l -1)>的每个quadrant number qi 乘上 (4^(g-i) - 1)/ 3。
在这里插入图片描述

Query Processing

Insert and Delete

在这里插入图片描述
一旦确定了象限序列的长度l,则象限序列s由对象边界盒的左下角对应的左下角。这个序列s被剪到长度l,并根据定义2进行编码。

From Window Queries to Interval Sets

对于查询处理,我们可以采用类似于之前介绍的算法的递归方式进行。我们确定查询与哪些象限相交。

  • 那些不相交的被忽略。
  • 如果一个象限完全包含在查询窗口中,那么所有以对应象限序列作为前缀的元素都完全包含在查询中。因此,将生成相应的xz值的间隔(查询范围),并标记为以后从数据库中检索。
  • 如果一个象限相交,首先该象限相应的xz值被确定并标记(it is handled as a one-value interval,我认为应该是该象限的四个子象限的xz值)。然后递归调用算法的所有子象限。
An Efficient Algorithm for the Interval Generation
  • 1
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值