几百万个三维坐标中判断富集的簇,如何做比较好?

189 天前
 skydcnmana

现在有几百万个三维坐标点数据,希望判断其中数据点富集的若干区域,比如指定富集半径是 15 ,指定富集点数为 10000 ,那么就希望获取所有半径 15 球体范围内包含 10000 个以上点的区域,然后返回这些区域的中心点。

这个中心点也希望是由中心点发出符合半径长度的射线,所重合点数最多的情况,比如一个金字塔形的边框组成的区域被局部覆盖,那么中心点应当是塔尖,而非金字塔中心。

目前数据是以文本形式存储的。

该如何实现这样的计算?算法逻辑和需要用到的库和工具有哪些?

向量数据库有助于这种数据处理吗?我没接触过向量数据库。

1489 次点击
所在节点    算法
7 条回复
skydcnmana
189 天前
MongoDB 支持 3D 索引,是不是也比较适合?

// 创建 3D 索引
var collection = database.GetCollection<Point3D>("points");
var indexKeys = Builders<Point3D>.IndexKeys.Geo3D("Coordinates");
collection.Indexes.CreateOne(new CreateIndexModel<Point3D>(indexKeys));
skydcnmana
189 天前
@skydcnmana 呃,不对,好像 MongoDB 没有 Geo3D 啊,DeepSeek 的幻觉么。。。
hurrytospring
189 天前
向量数据库不是干这个的,不过为啥一定要存数据库里,是有长期持续分析或者写入的需求?如果没有,直接用代码或者计算工具计算就行了
sillydaddy
189 天前
你的业务需求是啥?是做点云吗?查询频率怎么样?不同的数据特征,不同的业务需求,可以针对性的优化。
sillydaddy
189 天前
比如 kdtree 可以快速精确查找半径内的点。聚类算法可以快速找到聚集的点。两者配合也许能,也许不能满足你的要求,单看需求是什么样的。
skydcnmana
186 天前
@sillydaddy #4 频率很低,就是用倾斜摄影生成的 3D 数据,判断杆件,我是想先查找到富集的中心来确定杆件的连接处,再以各个连接处之间的线段作为依据判定杆件是否存在,以及杆件的直径。
Jax6
186 天前
常规点云处理就好了,PCL 库,提速的话最好数据下采样一下。和工业视觉的应该类似

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/1126512

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX