我在 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)