如何从2D numpy(lat,lon)数组中删除扇区/片?

2024-04-26 12:26:50 发布

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

我在numpy数组中有一个二维网格(lat,lon)数据数组。从这个数组中的一个指定点开始,我想在不同的方向上延伸两条线,这样两条线之间的区域就形成了一个圆的扇区。这在下面的可视化中得到了最好的解释:

enter image description here

图像中的数字没有任何意义,它们只是为了形象化。你知道吗

我希望将扇区内的所有点转换为NaN值,以便可以捕获红零的索引。(在图中,把这些画成红零比较容易,但是NaN更可取。这实际上是他们的索引,我在后面。)这个的输入将是数组,弧的中心点,以及每条线相对于水平线(或垂直线)的角度。这些线应该延伸到(lat,lon)区域的边缘之外,如图所示。你知道吗

有人能给我一个开始的建议吗?哪些numpy程序最有帮助?我承认有点难堪。你知道吗

编辑:我还有一个匹配的网格纬度和网格经度数组。中心点的整数索引是已知的(因为我知道中心点的纬度/经度)。”这里的“角”和“线”指的是字面上的地理空间。你知道吗


Tags: 数据numpy网格区域可视化数组nan方向
1条回答
网友
1楼 · 发布于 2024-04-26 12:26:50

让您拥有中心索引cx, cy

预先计算扇区起始角和终止角的值:

  S_Cos = Cos(Start)
  S_Sin = Sin(Start)
  E_Cos = Cos(End)
  E_Sin = Sin(End)

并使用边界条件将floodfill设为零:

 (x-cx) * S_Sin - (y-cy) * S_Cos >= 0   //point is left to starting ray
 (x-cx) * E_Sin - (y-cy) * E_Cos <= 0   //point is right to ending ray
 x >= minx, y>=miny, x<=maxx, y<=maxy   //coordinate is inside array

前一种方法:

对于小弧角(<;90度):

选择填充方向-在大多数情况下,水平线是很好的选择,而对于某些开始/结束方向,垂直填充更方便(例如:350度-10度)

使用Bresenham line algorithm从中心沿光线进行遍历。对于每个Y步,用零填充光线之间或光线与矩形(数组)边框之间的水平线

对于较大的弧-按OX、OY轴将弧分为一些较小的弧。你知道吗

相关问题 更多 >