Используя базу данных PostGIS, я бы хотел отфильтровать из списка точек (сохраненных в виде геометрии в таблице) точку, ближайшую к определенной точке, переданной в запрос.
Я уже пробовал ST_3DClosestPoint , но они всегда говорят о точке на линии.
Как я могу отфильтровать свой список, чтобы определить только трехмерную точку моего облака точек, которая находится ближе всего к данной точке? Есть ли шанс сделать это с PostGIS (версия 2.5)?
Редактировать Структура таблицы и некоторые примеры данных:
CREATE TABLE points_list (id SERIAL PRIMARY KEY, name VARCHAR(64), geom GEOMETRY(POINTZ, 3857));
INSERT INTO points_list (geom) VALUES (ST_TRANSFORM(ST_SetSRID(ST_MakePoint(4571450, 5800300, -246.028076), 31468), 3857));
INSERT INTO points_list (geom) VALUES (ST_TRANSFORM(ST_SetSRID(ST_MakePoint(4571550, 5800300, -246.033478), 31468), 3857));
INSERT INTO points_list (geom) VALUES (ST_TRANSFORM(ST_SetSRID(ST_MakePoint(4571650, 5800300, -246.040100), 31468), 3857));
INSERT INTO points_list (geom) VALUES (ST_TRANSFORM(ST_SetSRID(ST_MakePoint(4571750, 5800300, -246.062714), 31468), 3857));
INSERT INTO points_list (geom) VALUES (ST_TRANSFORM(ST_SetSRID(ST_MakePoint(4571850, 5800300, -246.104797), 31468), 3857));
INSERT INTO points_list (geom) VALUES (ST_TRANSFORM(ST_SetSRID(ST_MakePoint(4571950, 5800300, -246.162323), 31468), 3857));
Затем запрос должен спросить для ближайшей точки, переданной в запросе, например, 4571547, 5800297, -246,0312
. Я ожидаю, что запись № 2 из моих примеров значений будет результатом этого запроса.