增强geopandas覆盖(交叉点)的性能

时间:2016-11-22 19:34:33

标签: python arcgis intersection polygons geopandas

我有两组带有多边形的shapefile。一套shapefile只是我感兴趣的美国县,而且不同公司和年份都有所不同。另一组shapefile是公司的业务领域,当然这会因公司和年份而异。我需要在每年为每个公司获得这两个层的交集。到目前为止,函数叠加(df1,df2,how ='intersection')完成了我的目标。但每个公司年需要大约300秒。鉴于我有很多公司和很多年,我需要几天才能完成。有没有办法提高这种性能?

我注意到如果我在ArcGIS中做同样的事情,那么300秒就会缩短几秒钟。但我是ArcGIS的新用户,还不熟悉它中的python。

2 个答案:

答案 0 :(得分:3)

如果您查看当前的geopandas覆盖源代码,他们实际上已经更新了覆盖功能以利用Rtree空间索引!我不认为此时手动进行Rtree会更快(实际上可能会更慢)。

在此处查看源代码:https://github.com/geopandas/geopandas/blob/master/geopandas/tools/overlay.py

答案 1 :(得分:0)

希望您现在已经明白这一点,但解决方案是利用Geopanda的R-tree空间索引。通过适当实施,您可以实现数量级的改进。

Goeff Boeing写了excellent tutorial

http://geoffboeing.com/2016/10/r-tree-spatial-index-python/