Python 计算geopandas中多边形网格上的每条线交点

Python 计算geopandas中多边形网格上的每条线交点,python,numpy,geopandas,Python,Numpy,Geopandas,我有一个40年来历次风暴的大型数据集(~20000),其中有一个间隔3小时的中心点列表。我试图将网格网格覆盖到一个较大的区域上,我想从中计算每个风暴经过任何给定网格单元的次数,但是我当前的实现仅在这三个小时的间隔内跟踪该位置,导致在某些情况下,当还应计算时,轨迹跳过网格空间 我尝试使用geopandas来解决这个问题,为每个风暴轨迹创建一个线系列,然后对网格网格执行交集,但是,我找不到任何允许我这样做的功能实现 要在geopandas中创建网格,我将使用上一个问题中的: lonCount = (

我有一个40年来历次风暴的大型数据集(~20000),其中有一个间隔3小时的中心点列表。我试图将网格网格覆盖到一个较大的区域上,我想从中计算每个风暴经过任何给定网格单元的次数,但是我当前的实现仅在这三个小时的间隔内跟踪该位置,导致在某些情况下,当还应计算时,轨迹跳过网格空间

我尝试使用geopandas来解决这个问题,为每个风暴轨迹创建一个线系列,然后对网格网格执行交集,但是,我找不到任何允许我这样做的功能实现

要在geopandas中创建网格,我将使用上一个问题中的:

lonCount = ((plotExtent[1]+360) - (plotExtent[0]+360)) * gridResolution
latCount = ((plotExtent[3]) - (plotExtent[2])) * gridResolution

lons = np.linspace(plotExtent[0], plotExtent[1], lonCount)
lats = np.linspace(plotExtent[2], plotExtent[3], latCount)
# Store the meshgrid in polygon format
xlines = [((x1, yi), (x2, yi)) for x1, x2 in zip(lons[:-1], lons[1:]) for yi in lats]
ylines = [((xi, y1), (xi, y2)) for y1, y2 in zip(lats[:-1], lats[1:]) for xi in lons]
# Save as a Shapely object, then store in geopandas
grids = list(polygonize(MultiLineString(xlines + ylines)))
polyFrame = gpd.GeoDataFrame(grids)
这将创建一系列约5600个多边形对象的地理数据库。然后,我循环遍历我的每个storm对象,以剥离lat/lon列表对,并将其转换为一个shapely LineSeries对象,然后将其读入geopandas,如下所示:

polyLine = LineString(list(zip(storm_lons, storm_lats)))
coord_tests = gpd.GeoSeries(polyLine)
我的目标是简单地做如下事情:

I = coord_tests.intersects(polyFrame)
但是,若要收集线条字符串与之相交的多边形列表,将提示以下错误:

AttributeError: No geometry data set yet (expected in column 'geometry'.)
我想知道这里是否有格式不正确的东西,是否将调用错误地传递给了这个函数,或者是否有更有效的方法来完成我在这里尝试做的事情

如蒙协助,将不胜感激

谢谢

polyFrame = gpd.GeoDataFrame(geometry=grids)
:-)

:-)