4

我正在处理一大群存储位置的实体。它们显示在地图上。当从更高的位置查看时,我试图想出一种有效的方法将附近的实体分组为一个实体。因此,例如,如果您非常高,向下看时,您会看到一个实体,它代表一个区域中一组位置很近的实体。放大到足够近会将该实体拆分为其包含的实体。

有没有一种有效的算法来做到这一点?我考虑过根据高度对视图进行网格化,然后根据位置将实体放入网格框中,然后渲染框点。我唯一担心的是,如果所有实体都位于该框的右上角,则呈现为代表它们的实体可能位于中间而不是实体组的位置。

有什么想法或想法吗?

4

3 回答 3

1

如果您将实体预先分配到实体组中,或者某个“视野”中的所有实体自动在“组”中,那么您可以使用“中心”为实体组分配“位置”质量”算法,实际上纬度只是所有包含纬度的平均值,经度也是如此......将它们相加并除以计数,对于两个维度......

如果您想要一种算法来“创建”分组,那么您需要指定一些业务规则,当“视图”中有两个候选组时,如何确定一个实体应该属于两个或多个潜在组中的哪一个您正在计算的高度。

于 2008-12-02T00:50:15.630 回答
1

我认为植绒可以帮助在这里创建这些群体。因为看起来想要彼此聚集的不同实体应该是一个群体的一部分。

http://arxiv.org/abs/math?papernum=0502342

http://flashorbit.com/?page_id=40

在计算群体时,“Boids”似乎在同一个街区。 http://www.red3d.com/cwr/boids/

于 2008-12-02T01:13:24.430 回答
1

我相信您正在寻找的是“聚类算法”。有很多可用的。一个好的开始可能是K-means 算法。最终,尽管听起来您想要某种层次聚类算法。

于 2008-12-02T03:34:24.830 回答