一、空间连接定义
随着全球定位系统和移动互联设备的普及,海量的空间数据也随之产生。空间连接(Spatial Join)运算是一类最常用的空间数据分析算子,具有广泛的应用场景。例如统计地铁站周围500米的POI,帮助店主合理选择商铺选址;从同一个数据集中分析空间相邻的同伴关系,辅助警方侦察;查询河流周围的居民区和农田,在汛期排除洪水隐患;查找去过疫区的人群,方便疫情防控等。
下面给出空间连接的定义:给定空间对相集合R和S以及空间谓词θ,计算并输出所有空间对象二元组(r, s),满足r∈R,s∈S,且r和s满足空间谓词θ,形式化定义如下。
(1)
空间谓词θ可以分为三类。
1)空间拓扑:如intersects(相交)、contains(包含)等;
2)空间距离:即distance,表示空间对象s与r的空间距离小于等于设定阈值δ,由定义(1)派生出distance连接的定义如下。
(2)
3)空间k最近邻:即kNN(k Nearest Neighbors),表示空间对象s是数据集S中与r距离最近的k个空间对象之一,由定义(1)派生出kNN连接的定义如下。
(3)
三、实验分析
为了验证不同空间索引在空间连接运算中的性能,我们利用真实的空间数据对不同空间索引、不同空间对象类型和不同空间连接运算做了对比实验,总结出了不同空间索引的适用场景。
3.1 实验数据和实验环境
我们使用OSM(Open Street Map)提供的部分全球空间数据作为实验数据,如表1所示。实验环境是8核CPU、16GB内存的个人电脑。
表1 实验数据集
数据集 |
点(Point) |
线(LineString) |
面(Polygon) |
数据量 |
50万条 |
20万条 |
20万条 |
文件大小 |
5.47MB |
62.1MB |
57.5MB |