删除边界条件Python外的栅格上的点

2024-03-29 10:26:27 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个点网格(例如(1,1),(1,2),(1,3)…(100,99),(100100)),它包含在pandas数据帧中,也作为.csv文件导出。在

然后我有一个边界条件,例如在网格中心有一个直径为25的圆。我希望能够删除圆之外的所有点,只需将内部的点保留在新的数据帧中。在

我可以得到圆的边界,xmin,xmax,ymin,ymax,但是当我删除与此相关的点时,我得到了一个正方形(因为最小/最大值是一个整数,只找到离中心最远的点)。在

是否可以保存圆内部的所有点?最好用一种通用的方法,可以应用于省略等

编辑:我找到了这个,它类似于:How to delete a set of meshgrid points inside a circle?

但取决于输入代码的圆的尺寸,因此不具有通用性。因为我有形状的边界点,所以我必须计算它,并假设它是圆形的(可能并不总是这样)。有没有办法适应这种情况,这样我就可以使用边界点创建一个“填充”区域,然后执行布尔运算?在


Tags: 文件csv数据网格pandas中心边界xmin
1条回答
网友
1楼 · 发布于 2024-03-29 10:26:27

既然你的问题是。。。在

Is it possible to save all the points internal to the circle?

是的,这是可能的,这有一个公式。distance_from下面的函数是二维平面的基本欧几里德距离。在

def encloses(center_of_circle, vector2D, radius_of_circle):
    return distance_from(center_of_circle, vector2D) <= radius_of_circle

如果向量2d在圆中,此函数encloses()将返回True。否则为假。用它过滤你的熊猫数据框。在

我怀疑,当你得到一个正方形而不是一个圆时,你在计算公式encloses()是一个正方形,而不是一个圆。。。在

相关问题 更多 >