Python 使用GDAL/OGR将层/shp与另一层区别或擦除?

Python 使用GDAL/OGR将层/shp与另一层区别或擦除?,python,gdal,Python,Gdal,Gdal是众所周知的用于地理空间数据处理的最快的库,我在python脚本中使用它,我在一项特定任务中遇到了性能问题,这项任务是从另一层中删除一层,这需要花费太多的时间!我首先使用了这个预构建函数: inputLayer.Erase(maskLayer, ResultLayer) 这适用于对象数量较大的图层,但当使用具有200000个功能的图层运行时,它将永远保持不变 因此,我成功地编写了以下代码: for featureI in inputLayer: geomI

Gdal是众所周知的用于地理空间数据处理的最快的库,我在python脚本中使用它,我在一项特定任务中遇到了性能问题,这项任务是从另一层中删除一层,这需要花费太多的时间!我首先使用了这个预构建函数:

inputLayer.Erase(maskLayer, ResultLayer)
这适用于对象数量较大的图层,但当使用具有200000个功能的图层运行时,它将永远保持不变

因此,我成功地编写了以下代码:

       for featureI in inputLayer:
        geomI = featureI.GetGeometryRef()
        maskLayer.SetSpatialFilter(geomI)
        for featureM in maskLayer:
            geomM = featureM.GetGeometryRef()
            featureI.SetGeometry(geomI.Difference(geomM))
            selfLayer.SetFeature(featureI)
但这将持续1200分钟,对我来说太长了

有没有办法加快速度?你有什么建议给我吗

我用python3.5和GDAL2