А если сделать пространственное соединение на копию шейпа с условием пересечения с буфером. Потом, в большом файле что получится поудалять лишниее комбинации.
Я похожим алгоритмом пользовался когда нужно было выбрать в одном слое дома, которые прикасаются между собой.