一、前言
最近看了sigmod2023的一篇tutorial,在此记录一下。
Tsz Nam Chan在sigmod2023发布了一篇tutorial名为Large-scale Geospatial Analytics: Problems, Challenges, and Opportunities.,以及一篇Demonstrations名为PyNKDV: An Efficient Network Kernel Density Visualization Library for Geospatial Analytic Systems.,顾名思义,前者分析了地理空间分析工具的发展现状以及相关技术需求,后者是作者设计的一种可供参考和使用的地理空间分析系统。
二、Large-scale Geospatial Analytics
目前的问题:大多数常用的地理空间分析工具在支持大规模数据集方面效率不高,甚至不可行。
地理分析工具的两种应用类型:热点检测(对应KDV技术,kernel density visualization),相关性分析(对应k-function技术)
1. 定义
定义1(生成KDV)
给定一个位置数据集,包含n个空间数据点以及一个具有X*Y像素的地理区域,需要根据核心密度值对每个像素着色:
其中w是归一化参数,K是kernel function,kernel function有好多种:
定义2(k-function)
k-function用于相关性分析,相关性分析用来分析一个位置数据集是否展示了集群属性。
给定,以及空间阈值s,则该数据集的k函数为:
其中是指示函数:
定义3(k-function plot)
给定一个位置数据集P,随机生成L个大小为n的数据集,D个空间阈值.
黑色曲线超过蓝色虚线时,认为数据集对于这些阈值有有意义的集群/热点,否则,认为数据点要么是随机分布的,要么是分散的。
2. KDV的最新解决方案
目前提高KDV生成效率的方法有四种:
(1)函数近似方法
开发kernel density函数的有效上下界函数和
因为,所以试着缩小上下界,就可以得到密度函数的近似值
其中就是近似密度值
(2)数据采样方法
提取数据集P的子集S,修正密度函数:
(3)计算共享法
利用一些共享属性,提高计算单个KDV或多个KDV的效率
(4)并行/分布式和基于硬件的方法
用GPU等优化计算
3. KDV的两种变体
(1)NKDV
在道路网络中,用最短路径代替中的,因为空间上相近的点,在道路上可能并不相近。(例如图中的q1和q2)
(2)STKDV
考虑病毒传播等情景,不同时间戳的热点不同,因此需要根据不同时间戳的数据计算密度函数
4. k-function的最新解决方案
(1)range-query-based methods
定义2中计算k-function的公式表明我们需要计算与每个数据点pi的距离s内的所有数据点pj,以便计算k-function,因此一种方法是采用一些索引结构,如kd-tree、球树等获得每个数据点的范围查询集:
k-function可以表示为:
(2)parallel/distributed and hardware-based methods
5. k-function的两种变体
(1)network k-function
和NKDV的场景相同,将距离换成最短路
(2)spatiotemporal k-function
和STKDV的场景相同,这里需要添加时间戳变量,使用三维曲面绘制k-function plot。
位置数据集表示为:
计算方法变成:
6. Future Opportunities
KDV:降低KDV、NKDV、STKDV的时间复杂度,处理其它核函数的优化
k-function:有很多方法可以优化network k-function,但很少有方法处理k-function和spationtemporal k-function,根据作者了解,目前方法的时间复杂度为O(n2)。
并且提到KDV生成效率的方法尚未扩展到k-function。
三、PyNKDV
该方法可以在不同的地理空间分析系统中有效地生成NKDV,包括QGIS和ArcGIS。
也就是计算定义1中的函数
1. ADA(Aggregate distance augmentation)
在道路系统中,每个点只属于一条边,因此密度函数可化为:
其中
增强总距离,对于每个边e=(u,v)的所有数据点p:
已知和,可以用二分搜索在O(log|P(e)|)的时间内计算函数,具体做法为:先用二分查找找到满足的最大的p*,然后用的时间计算:
2. 并行计算
计算和不互相依赖,可并行。