У меня есть две точки WGS 84 p1 (lonul, latul) в левой верхней точке и p2 (lonbr, latbr) в нижней правой точке, и я хочу увидеть, какой цилиндр пересекается с прямоугольником, который определяется ими, чтобы я сделал следующий запрос к CrudRepository:
CREATE TABLE protected_area
(
id serial not null primary key,
constraint_id integer not null,
radius float not null,
height float not null,
coordinates path not null,
gtype geometrytype not null,
name varchar(50),
);
@Query("SELECT u FROM ProtectedArea u WHERE u.gtype='Cylinder' AND polygon( box(point(:lonul - (180/pi()) * (u.radius/(6378137*cos(pi()*:lonul/180))), :latul - (180/pi()) * (u.radius/6378137)), point(:lonbr + (180/pi()) * (u.radius/(6378137*cos(pi()*:lonbr/180))),:latbr + (180/pi()) * (u.radius/6378137)))) @> polygon(coordinates)")
кажется, что оператор @> указывает, содержится ли геометрия в другом
, но я принимаю эту ошибку
Вызывается: org.hibernate.QueryException: неожиданный символ: '@' [ВЫБРАТЬ u ИЗ ЗАЩИЩЕННОЙ ОБЛАСТИ u ГДЕ u.gtype = 'Цилиндр' И полигон (поле (точка (: lonul - (180 / pi ()) * (u.radius / (6378137 * cos (pi () *: lonul / 180))),: latul - (180 / pi ()) * (u.radius / 6378137)), точка (: lonbr + (180 / pi ()) * (u.radius / (6378137 * cos (pi () *: lonbr / 180))),: latbr + (180 / pi ()) * (u.radius / 6378137)))) @ > многоугольник (координаты)]