¿Cómo puedo contar la cantidad de polígonos que se cruza una forma?

Tengo un conjunto de datos muy grande con polígonos y puntos con búferes a su alrededor. Me gustaría crear una nueva columna en los datos de puntos que incluya el número de polígonos que se cruzan en el búfer de ese punto.

Aquí hay un ejemplo simplificado:

import pandas as pd
import geopandas as gp
from shapely.geometry import Polygon
from shapely.geometry import Point
import matplotlib.pyplot as plt

## Create polygons and points ##

df = gp.GeoDataFrame([['a',Polygon([(1, 0), (1, 1), (2,2), (1,2)])],
                     ['b',Polygon([(1, 0.25), (2,1.25), (3,0.25)])]],
                     columns = ['name','geometry'])
df = gp.GeoDataFrame(df, geometry = 'geometry')

points = gp.GeoDataFrame( [['box', Point(1.5, 1.115), 4],
                        ['triangle', Point(2.5,1.25), 8]],
                     columns=['name', 'geometry', 'value'], 
                     geometry='geometry')

##Set a buffer around the points##

buf = points.buffer(0.5)
points['buffer'] = buf
points = points.drop(['geometry'], axis = 1) 
points = points.rename(columns = {'buffer': 'geometry'})

Esta información se ve así:o que me gustaría hacer es crear otra columna en el marco de datos de puntos que incluya la cantidad de polígonos que se cruzan en el punto.

He intentado utilizar un bucle for como tal:

points['intersect'] = []
for geo1 in points['geometry']:
    for geo2 in df['geometry']:
        if geo1.intersects(geo2):
            points['intersect'].append('1')

Que entonces sumaría para obtener el número total de intersecciones. Sin embargo, aparece el error: 'La longitud de los valores no coincide con la longitud del índice'. Sé que esto se debe a que está intentando asignar tres filas de datos a un marco con solo dos filas.

¿Cómo puedo agregar los recuentos para que el primer punto tenga asignado un valor de 2 y el segundo un valor de 1?

Respuestas a la pregunta(1)

Su respuesta a la pregunta