Я не знаком с типами Postgres 'geometryri c, но похоже, что оператор ?#
не допускает прямого сравнения между значениями box
и path
, и, кажется, нет быть автоматическими c, чтобы помочь с этим.
Однако вы можете явно преобразовать box
в polygon
, а затем преобразовать polygon
в path
, что вы можете проверить наличие пересечений с другим path
:
SELECT id
FROM public.geometry_polyline_volume
WHERE path(polygon(box'((15,47),(16,48))')) ?# coordinates;
Для справки вы можете проверить поддерживаемые типы ввода для оператора, используя:
select oprleft::regtype::text, oprright::regtype::text
from pg_operator
where oprname = '?#'
... и функции для преобразования между типами геометрии c перечислены в документах .