使用polygon.contains(Python)优化多个点的形状文件搜索

2024-05-12 23:16:13 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个数据帧(df),它包含一些点(coord_point),我使用Shapely从lat long坐标构建了这些点。我试图确定这些点是否位于shapefile(shapefile1)中描述的指定区域中。为了检查单个点的情况,我可以使用下面的函数(在_rsa中)并为其提供一个点,其中它返回一个布尔值,表示该点是否包含在该shapefile中

def in_rsa(coord):
    return shapefile1.contains(coord)[0]

数据帧由47496个点组成,因此我尝试执行一个行操作。我尝试的第一种方法很有效,但花了很长时间,它是一个简单的lambda函数

df1 = df.apply(lambda x: in_rsa(x.coord_point), axis = 1)

所以我试着用swifter来加速这个过程,但它也需要20分钟才能完成

df2 = df['coord_point'].swifter.apply(in_rsa)

我是geodata的新手,我想了解为什么这些过程需要如此长的时间,也许可以指向一个更有效的方向


Tags: 数据lambda函数indf过程rsapoint