3
在PyQGIS中并行进行GIS操作?
GIS中的一个常见要求是将处理工具应用于多个文件,或者将一个文件中多个特征的处理应用于另一个文件。 这些操作中的许多操作都是令人尴尬地并行的,因为计算结果绝不会影响循环中的任何其他操作。不仅如此,而且输入文件通常每个都是不同的。 一个典型的例子就是将形状文件与包含多边形的文件进行平铺。 这是一个(经过测试的)经典过程方法,可通过QGIS的python脚本实现。(将临时内存文件输出为真实文件的时间比处理我的测试文件的时间减少了一半以上) import processing import os input_file="/path/to/input_file.shp" clip_polygons_file="/path/to/polygon_file.shp" output_folder="/tmp/test/" input_layer = QgsVectorLayer(input_file, "input file", "ogr") QgsMapLayerRegistry.instance().addMapLayer(input_layer) tile_layer = QgsVectorLayer(clip_polygons_file, "clip_polys", "ogr") QgsMapLayerRegistry.instance().addMapLayer(tile_layer) tile_layer_dp=input_layer.dataProvider() EPSG_code=int(tile_layer_dp.crs().authid().split(":")[1]) tile_no=0 clipping_polygons = tile_layer.getFeatures() for clipping_polygon in clipping_polygons: print "Tile no: "+str(tile_no) tile_no+=1 geom = clipping_polygon.geometry() clip_layer=QgsVectorLayer("Polygon?crs=epsg:"+str(EPSG_code)+\ "&field=id:integer&index=yes","clip_polygon", "memory") clip_layer_dp = clip_layer.dataProvider() clip_layer.startEditing() clip_layer_feature …