Skip to content

Commit 3512cac

Browse files
Update bulk interface to match changes in libspatialindex. (#343)
* Update bulk interface to match changes in libspatialindex. * [pre-commit.ci] auto fixes from pre-commit.com hooks for more information, see https://pre-commit.ci --------- Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com>
1 parent 2ca2ea1 commit 3512cac

File tree

1 file changed

+17
-3
lines changed

1 file changed

+17
-3
lines changed

rtree/index.py

+17-3
Original file line numberDiff line numberDiff line change
@@ -1094,7 +1094,13 @@ def intersection_v(self, mins, maxs):
10941094
ids = ids.resize(2 * len(ids), refcheck=False)
10951095

10961096
def nearest_v(
1097-
self, mins, maxs, num_results=1, strict=False, return_max_dists=False
1097+
self,
1098+
mins,
1099+
maxs,
1100+
num_results=1,
1101+
max_dists=None,
1102+
strict=False,
1103+
return_max_dists=False,
10981104
):
10991105
import numpy as np
11001106

@@ -1114,10 +1120,18 @@ def nearest_v(
11141120

11151121
ids = np.empty(n * num_results, dtype=np.int64)
11161122
counts = np.empty(n, dtype=np.uint64)
1117-
dists = np.empty(n) if return_max_dists else None
11181123
nr = ctypes.c_int64(0)
11191124
offn, offi = 0, 0
11201125

1126+
if max_dists is not None:
1127+
assert len(max_dists) == n
1128+
1129+
dists = max_dists.astype(np.float64).copy()
1130+
elif return_max_dists:
1131+
dists = np.zeros(n)
1132+
else:
1133+
dists = None
1134+
11211135
while True:
11221136
core.rt.Index_NearestNeighbors_id_v(
11231137
self.handle,
@@ -1131,7 +1145,7 @@ def nearest_v(
11311145
maxs[offn:].ctypes.data,
11321146
ids[offi:].ctypes.data,
11331147
counts[offn:].ctypes.data,
1134-
dists[offn:].ctypes.data if return_max_dists else None,
1148+
dists[offn:].ctypes.data if dists is not None else None,
11351149
ctypes.byref(nr),
11361150
)
11371151

0 commit comments

Comments
 (0)