geometry - 极坐标的 epsilon 邻域
问题描述
我有一个基于密度的雷达数据库,我尝试使用基于网格的 DBSCAN 算法对其进行聚类。
为了安全处理时间,我不想将极坐标转换为欧几里得空间。
我的问题关注的算法部分是“核心点条件”。基本上就是以下这些。要确定一个点是否为核心点,它的 epsilon-neighbourhood 中需要有超过一定数量的邻居 (MinPoints)。
epsilon 邻域可以如下确定:
- 计算点P到数据库中所有其他点的距离。
确定 epsilon-neighbourhood:最大值范围内的所有点。eps的距离是邻域的一部分。含义 epsilon 是搜索半径。
核心点条件:如果在其 epsilon-neighbourhood 中至少有 MinPoints,则该点是核心点。
我现在的问题是,如何确定具有方位角 (azi) 和范围 (r) 的极点的 epsilon 邻域。我不完全知道如何计算距离,然后从那里如何确定 epsilon 邻域。
我的最终目标: 雷达具有非等距的远距离采样密度,这意味着靠近雷达的点在方位角方向上的间距比大范围内的点更近。因此,我想实现一个范围相关的 epsilon 向量 eps(r),它定义了 epsilon 方向的搜索半径。
一个简单的方法:
一个简单的方法是计算每个维度的 p 和 q 的距离。
然后我可以确定每个维度中的 epsilon 邻域。你可以把它想象成一个十字+。线性检查 eps_azi 和 eps_r。
问题:如何在圆形或椭圆中找到邻居。所以所有不在十字架上但仍在附近的点。
我试图说明我的问题: 草图问题
红色是简单的解决方案,蓝色是更高级的圆形/椭圆解决方案。
谢谢您的帮助。
解决方案
推荐阅读
- postgresql - psycopg2 无法连接到 dockerized Python-Flask 应用程序中的 postgres 数据库
- odoo - 仅允许用户使用其允许的公司和权限添加新用户
- excel - 变量“上下文菜单”未显示
- java - 在 Flink Process 文件一个接一个并在每个文件处理后更新一个公共 java 对象
- python - 为什么 pickle.dump() 不向文件写入任何内容?
- regex - 如何使用grep从段落中提取句子
- django - 如何将使用 Django Rest Framework 构建的 REST API 与 Flutter 应用程序连接起来
- python - 如何处理 fit_generator 的自定义 Keras 序列中的异常?
- android - 在没有关于“多个可点击项目在屏幕上共享此位置”的预启动警告的情况下防止点击
- python - 如何从 div 中获取文本?