Страница 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 познать следует тебе