Как найти минимум и максимум точек в координатах x и y - PullRequest
0 голосов
/ 10 января 2019

У меня есть коллекция точек с координатами x и y в формате RDD [Double, Double]. Я хочу найти минимум и максимум широт и долгот из этого СДР. Из минимальных и максимальных значений моя цель - найти нижнюю левую и верхнюю правую координаты ограничительной рамки всего пространства (как показано на рисунке в этой ссылке). https://www.mathworks.com/matlabcentral/mlc-downloads/downloads/submissions/48509/versions/3/previews/COMP_GEOM_TLBX/html/Bounding_box_2D_01.png

Это то, с чего я начинаю, но там написано "Слишком много аргументов для метода 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 и прошу прощения, если это кажется простой проблемой.

1 Ответ

0 голосов
/ 10 января 2019

Я предполагаю, что вы имели в виду 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.

...