如何找到 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
快捷方式表示 left
、right
、bottom
、top
。
您使用 min
的代码不起作用,因为 RDD.min
不接受任何参数(至少不在第一个非隐式参数列表中)。好像也没有minBy
/ maxBy
.
我有一个 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
快捷方式表示 left
、right
、bottom
、top
。
您使用 min
的代码不起作用,因为 RDD.min
不接受任何参数(至少不在第一个非隐式参数列表中)。好像也没有minBy
/ maxBy
.