如何找到 x 和 y 坐标中点的最小值和最大值

How to find minimum and maximum of points in x and y coordinates

我有一个 RDD[Double, Double] 格式的 x 和 y 坐标点集合。我想从这个 RDD 中找到纬度和经度的最小值和最大值。从最小值和最大值,我的目标是找到整个space的bounding box的左下坐标和右上坐标(如本link中的图像所示)。 https://www.mathworks.com/matlabcentral/mlc-downloads/downloads/submissions/48509/versions/3/previews/COMP_GEOM_TLBX/html/Bounding_box_2D_01.png

这就是我的开头,但上面写着 "Too many arguments for method min()"

val minX= points.min(p=>p(0))
val minY=points.min(p=>p(1))
val maxX=points.min(p=>p(0))
val maxY=points.max(p=>p(1))

我是 Scala 的新手,如果这看起来是一个简单的问题,请原谅我。

我假设你的意思是 RDD[(Double, Double)]。您可以先将每个点转换为零面积边界框,然后减少所有边界框,一次组合所有四个值:

val boundingBox = 
  points
  .map{ case (x, y) => (x, x, y, y) }
  .reduce { case ((xl, xr, xb, xt), (yl, yr, yb, yt)) =>
    (xl min yl, xr max yr, xb min yb, xt max yt)
  }

l, r, b, t 快捷方式表示 leftrightbottomtop

您使用 min 的代码不起作用,因为 RDD.min 不接受任何参数(至少不在第一个非隐式参数列表中)。好像也没有minBy / maxBy.