Страница 1 из 1
Не работает ST_Buffer + ST_Crosses
Добавлено: 01 май 2017, 13:47
SmArtem
Здравствуйте, расскажите, пожалуйста, почему запрос не работает корректно. Без ST_Buffer возвращает хоть какие-то пересечения.
Код: Выделить всё
SELECT world_thickets.*
FROM world_roads, world_thickets
WHERE ST_Crosses(ST_Buffer(world_roads.geom, 10, 'endcap=round join=round'), world_thickets.geom);
В чем может причина? Есть альтернативный вариант найти геометрию вдоль мультилинии.
Re: Не работает ST_Buffer + ST_Crosses
Добавлено: 01 май 2017, 14:33
trir
глазками посмотри эти пересечения
Re: Не работает ST_Buffer + ST_Crosses
Добавлено: 01 май 2017, 18:36
Александр Мурый
Судя по слову "world" в названии таблиц могу предположить, что таблицы имеют SRID 4326. Радиус буфера задаётся у вас явно не в градусах.
Попробуйте преобразовать типа геометрии (geography ==> geometry) "на лету":
Код: Выделить всё
SELECT world_thickets.*
FROM world_roads, world_thickets
WHERE ST_Crosses(ST_Buffer(world_roads.geom::geometry, 10, 'endcap=round join=round'), world_thickets.geom);
Re: Не работает ST_Buffer + ST_Crosses
Добавлено: 02 май 2017, 06:45
SmArtem
Извините, забыл указать проекцию. SRID 32646.
Ваша вставка не помогла.
Заработало с ST_Intersects
Код: Выделить всё
SELECT world_thickets.*
FROM world_roads, world_thickets
WHERE ST_Intersects(ST_Buffer(world_roads.geom, 10, 'endcap=round join=round'), world_thickets.geom);
Re: Не работает ST_Buffer + ST_Crosses
Добавлено: 02 май 2017, 08:19
trir
О юный падаван
DE-9IM познать следует тебе