При использовании этого модуля я столкнулся с небольшой проблемой. На самом деле, модуль делает именно то, о чем я его прошу... а именно находит среди этой сетки все ближайшие точки сетки для заданных координат.
Но когда данные координаты очень близки к точке сетки, а сетка имеет более длинные шаги с одной стороны, это дает что-то вроде:
Итак, на этом изображении точкой для вычисления ближайшего соседа является красная точка, которую вы видите в левом нижнем углу. Результаты, данные KDTree, представляют собой синие квадраты. Зеленый ромб — это четвертая точка, которую я хотел бы получить вместо одинокого синего в верхней части изображения.
Код :
>>> grid.head()
x y
0 0.000000 -9.490125
1 0.959131 -9.490125
2 1.918263 -9.490125
3 2.877394 -9.490125
4 3.836526 -9.490125
>>> pt
[4.0092010999999998e-05, -9.4901299629261011]
>>>tree = ssp.KDTree(grid)
>>>dis, idx = tree.query(pt,4)
>>> idx
array([ 0, 71, 1, 142])
>>> grid.iloc[idx]
x y
0 0.000000 -9.490125
71 0.000000 -8.980481
1 0.959131 -9.490125
142 0.000000 -8.470837
Вопрос:
Есть ли способ указать, что нам нужен массив прямоугольной формы в запросе или что-то в этом роде? Может быть, указав, что нам нужны только 2 y для одного x?