PyQGISでのGIS操作の並列化?
GISの一般的な要件は、処理ツールを多数のファイルに適用するか、1つのファイルの多数のフィーチャのプロセスを別のファイルに適用することです。 これらの演算の多くは、計算結果がループ内の他の演算に影響を与えないという点で、恥ずかしいほど並行しています。それだけでなく、多くの場合、入力ファイルはそれぞれ異なります。 典型的な例は、シェイプファイルを、ポリゴンを含むファイルに対してクリップします。 これは、QGISのPythonスクリプトでこれを達成するための(テスト済みの)古典的な手続き型の方法です。(テストファイルを処理する時間を半分にしたよりも、実際のファイルへの一時メモリファイルの出力をfyi) 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 …