функция st_intersects() не существует при использовании PostgreSQL 9.3

У меня есть таблица, как показано ниже, с тремя столбцами.

Таблица: геометрия

create table geomet
(
cola float,
colb float,
geopath geometry
);

Вставка записей:

insert into geomet values('12.32232442','43.2324535',point(12.32232442,43.2324535)::geometry);

У меня есть это:

select * from geomet;

cola          colb         geopath
---------------------------------------------------------------------
12.32232442   43.2324535   01010000004F34D5B407A528409D2B4A09C19D4540

Примечание. Мне нужно найти пересечение столбца geopath в моей таблице, как показано выше. Я также установил PostGIS.

Итак, я пробовал это:

Попробуйте 1:

SELECT ST_Intersects(geopath) from geomet;

Ошибка:

ERROR:  function st_intersects(geometry) does not exist

Попробуйте 2:

SELECT ST_Intersects(cola,colb) from geomet;

Ошибка:

ERROR:  function st_intersects(double precision, double precision) does not exist

person MAK    schedule 22.01.2015    source источник


Ответы (1)


Для ST_Intersects требуется две геометрии или два поля геометрии, так как вы проверяете пересечение между одной геометрией и другой. или один набор и другой набор.

SELECT ST_Intersects(geomA, geomB) FROM some_table;

or

SELECT a.id., b.id, ST_Intersects(a.geom, b.geom)
FROM table a, table b 
WHERE a.id > b.id;

даст вам все попарные пересечения между двумя таблицами. Очевидно, вы можете использовать ST_Intersects в предложении where аналогичным образом, чтобы возвращать только строки, в которых пересекаются записи из двух разных таблиц.

person John Powell    schedule 22.01.2015
comment
Барка, спасибо большое. Он вернет t для истинного или f для ложного. Но не 1 или 0. Я не ошибаюсь? - person MAK; 22.01.2015
comment
Да, он возвращает логическое значение, то есть t или f, которое при необходимости можно легко преобразовать в 1/0, используя приведение или оператор приведения :: - person John Powell; 22.01.2015
comment
Барка, спасибо большое. - person MAK; 22.01.2015