0

我在 multiLineString.geojson 中有 34k++ 的特征,在我的 geoserver 中有大约 100 多个特征,test:multipolygon 和 pyqgis3 处理的附加源代码。时间约为10分钟。无论如何我可以改善处理时间吗?可以使用 geopandas 或 pandas 将 processing.run 划分为线程吗?

import processing 
from processing.core.Processing import Processing 

app = QApplication(sys.argv) 

qgis_prefix = os.getenv("QGIS_PREFIX_PATH")      
qgis.core.QgsApplication.setPrefixPath(qgis_prefix, True) 
qgs = qgis.core.QgsApplication([], False)
qgs.initQgis()

Processing.initialize() 
qgis.core.QgsApplication.processingRegistry().addProvider(qgis.analysis.QgsNativeAlgorithms())

mLayer = QgsVectorLayer("multiLineString.geojson", "MultiLineString Layer", "ogr")

params = {
    'service': 'WFS',
    'version': '2.0.0',
    'request': 'GetFeature',
    'typename': 'test:multipolygon'
}

uri = 'http://localhost:8095/geoserver/test/ows?' + urllib.parse.unquote(urllib.parse.urlencode(params))

vlayer = QgsVectorLayer(uri, "my wfs layer", "WFS")

params = { 
    'INPUT': mLayer,
    'INPUT_FIELDS' : [], 
    'OUTPUT' : 'TEMPORARY_OUTPUT', 
    'OVERLAY' : vlayer, 
    'OVERLAY_FIELDS' : [], 
    'OVERLAY_FIELDS_PREFIX' : ''
}

context = dataobjects.createContext()
context.setInvalidGeometryCheck(QgsFeatureRequest.GeometryNoCheck)

output = processing.run("native:intersection", params, context=context)

features = output["OUTPUT"].getFeatures()
exporter = QgsJsonExporter()
json_string=exporter.exportFeatures(features)
print(json_string)
4

0 回答 0