了解位置存储和查询算法?


9

配备GIS的数据库最重要的方面之一是,它为用户提供了快速查询与某些附加条件匹配的任意地理区域内所有点的功能。(例如,“在地图上找到距此点最近的3家餐厅。”)

谁能指出我对所涉及算法的理论讨论?我想学习它们的工作方式。

最终,我想对通用的数值数据集应用相同的功能-任意n维非欧氏空间中的大量点云。例如,一个人的脸可以表征为一个数字向量:[眼睛之间的距离,眼睛到嘴巴的距离,脸的宽度,脸的长度等]。我想拍摄人行道流量,估算每个人脸的特征,然后稍后可以对数据进行查询,例如“给这个人的脸,找到我100个最相似的脸”。

当前是否有任何现有软件可以搜索这些广义空间?

Answers:


4

Preparata&Shamos经典著作中很好地说明了2维和3维算法。GIS中使用的算法是Hanan Samet的专长,他出版了几本有关该主题的书。

通常通过初步的数据挖掘,聚类或降维技术来辅助或加快高维搜索。这更多地是数据分析和统计问题,而不是GIS问题,而GIS本质上着重于在一个至四个欧几里德维度中进行搜索。有关更多信息,请在我们的姐妹论坛stats.stackexchange.com上搜索可能的术语,例如聚类多维缩放,以及不太明显的术语,例如pca(主要成分分析)和svm(支持向量机)。这也是询问现有软件的好地方。


4

经典的(古地理学家)答案是使用KD树存储数据(请参见http://en.wikipedia.org/wiki/Kd-tree)。通过在树上向下移动时,依次将数据大致分成每个维度的两个分区来进行工作。它们的优点是,在您找到最近的餐馆时,您也可以在不增加成本的情况下创建最近的餐馆清单,因此回答三个最近的餐馆是什么,就像找到最近的餐馆一样容易。

我在某处读到eHarmony使用KD树在14个维度中查找“兼容匹配”。


+1很好地完成了对有效搜索方法的简短清晰描述。
ub

2

我听说Netezza实现了一些创新的空间并行处理算法。白皮书在这里

Netezza的非对称大规模并行处理体系结构提供了对称多处理(SMP)和大规模并行处理(MPP)的最佳组合,简化了对空间和非空间数据的万亿级,复杂查询处理,而没有传统系统所需的复杂性,调整和聚合。

更新资料

我忘了提到Netezza充分利用了贝叶斯定理。下面是视频的集合在这里

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.