Цель: по заданной координате X найти "n" ближайших прямых-многоугольников для координаты X, а не просто "n" ближайших точек. Пример: https://i.imgur.com/qyxV2MF.png
У меня есть группа пространственных линейных многоугольников, которые могут иметь более двух координат. Их координаты хранятся в (scipy)KDtree, чтобы обеспечить поиск NN.
Во-первых, я запрошу "i" количество ближайших координат, а затем найду соответствующие линии-многоугольники-> "i" координаты не обязательно могут давать "i" строки.
Чтобы получить «n» ближайших строк, мне нужно будет увеличить «i». Моя проблема в том, что «i» может быть непредсказуемым, потому что количество координат варьируется между каждым линейным многоугольником. Например, линия-многоугольник может быть представлена 2 координатами, а другая может быть представлена 10 координатами. В большинстве случаев мне нужны только 2 ближайших соседних линейных многоугольника из точки X.
В примере изображения мне нужны линии A и B в качестве результата. Даже при "i" = 3 будет найдена только линия A, потому что A1, A2, A3 являются ближайшими соседями X.
Вопрос: есть ли способ сгруппировать координаты фигуры вместе, а затем выполнить поиск NN, чтобы получить "n" уникальных фигур? (кроме грубого форсирования «i», чтобы обеспечить «n» уникальных форм)
Текущий псевдокод обходного пути:
found = []
while True:
if first_loop:
result = look up N nearest coords
else:
result = look up Nth nearest coord
look up shapes using result and append to found
perform de-duplication of found
if len(found) >= required:
return found
else:
N = N+1 # to check the Nth neighbor next iteration