Команда ReQL: getNearest
Синтаксис команды
table.getNearest(point).optArg("index", index) → array
Описание
Возвращает список документов, ближайших к заданной точке, на основе геопространственного индекса, отсортированных по возрастанию расстояния.
Аргумент index является обязательным. Дополнительные аргументы:
-
max_results: максимальное количество возвращаемых результатов (по умолчанию 100). -
unit: единица измерения расстояния. Возможные значения:m(метр, по умолчанию),km(километр),mi(миля),nm(морская миля),ft(фут). -
max_dist: максимальное расстояние от объекта до заданной точки (по умолчанию 100 км). -
geo_system: используемый референсный эллипсоид для географических координат. Возможные значения:WGS84(по умолчанию), стандартная модель геометрии Земли, илиunit_sphere, идеальная сфера радиусом 1 метр.
Результат будет массивом объектов с двумя ключами: dist и doc, содержащими расстояние между заданной точкой и документом (в единицах, указанных в unit, по умолчанию в метрах), и сам документ соответственно. Массив будет отсортирован по значениям dist.
Пример: Возвращение списка из 25 ближайших вражеских укрытий к секретной базе.
import com.rethinkdb.gen.ast.Point;
Point secretBase = r.point(-122.422876,37.777128);
r.table("hideouts")
.getNearest(secretBase)
.optArg("index", "location")
.optArg("max_results", 25)
.run(conn);
Если нужно найти все точки в определённом радиусе от другой точки, часто быстрее использовать getIntersecting с circle, если приближение круга, которое
circleгенерирует, достаточно.
© RethinkDB contributors
Licensed under the Creative Commons Attribution-ShareAlike 3.0 Unported License.
https://rethinkdb.com/api/java/get_nearest/