首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >动态聚集聚类?平面上的点

动态聚集聚类?平面上的点
EN

Stack Overflow用户
提问于 2012-07-31 09:39:58
回答 1查看 254关注 0票数 1

问题:

我有数以百万计的标记(10+),每个标记都有不同的字段:

代码语言:javascript
复制
 1. lat 
 2. lng   
 3. area (double)
 4. size (int)
 5. tolerance (double)
 6. lags (boolean)
 7. channel (boolean)
... (more)

现在,我希望每个集群具有以下聚合数据:

代码语言:javascript
复制
 1. number of markers
 2. min area
 3. max area
 4. avg area
 5. min size
 6. max size
 7. avg size
 8. tolerance distribution (how many where of tolerance < X, other >=X < Y and >=Y <Z where X,Y,Z constants)
 ... (more)

簇是基于标记的lat、lng (距离)和缩放电平(int)来创建的。

无问题部分(**):

计算所有缩放级别的集群,而不考虑“所有”条件。这是通过创建一棵树来完成的,并且为用户抓取集群是直接的。

现在问题是:

用户可以根据标记字段进行查询,例如“向我显示其区域>K和lags = true”的所有标记。仅对于这个查询,就需要创建一个全新的集群树。如果他更改了查询“请告诉我所有标记,它们的区域> K.0001和lags=true”和新树必须创建。我不想为每个用户的查询计算这样的树,也不想将它存储在内存中(不确定是否可能)。

问题:

代码语言:javascript
复制
What approach should be taken?
given the complexity of calculation X # of markers 
(fields inside) X speed factor. 
I was thinking that there's some sort of way to use  the 
"all-in" clusters calculation(**), as it gives me ALL the markers and clusters and from 
there to manipulate in some elegant way.

威尔:

代码语言:javascript
复制
 - space-filling-curve (hilbert) can help? how?  
 - DB approach (what DBand why?)
 - k-d tree ?

整个想法是处理大量的数据和预先计算,这样用户就可以通过在他的端或服务器端计算它来操作它(因此客户端集群不是一个解决方案,融合表也是一个解决方案)。

代码示例非常受欢迎。

EN

回答 1

Stack Overflow用户

发布于 2012-07-31 10:37:54

Hadoop适合于预处理,而不是在线(“实时”)操作。

希尔伯特曲线和k-d树比普通的网格文件/四叉树更复杂,实际上对你也没有多大用处。优化树,以完全匹配您的可视化缩放水平!然后,您可以在不进行任何“集群”的情况下逃走,但只需可视化适当的四叉树单元。

毕竟,您的空间数据只有2d,所以所有的2d方法都能正常工作。你很清楚这个值的范围,因为地球不会改变大小。这就是谷歌地图如此快速的原因:它们使用固定的块,它们可以缓存、高效地服务和预生成。

考虑到您可能不需要ACID和事务以及这些高级特性,使用一个被炒作的NoSQL数据库似乎是合理的。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/11737227

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档