我正在尝试使用QNEAT3在独立脚本中运行一些最短路径计算。但是,当我使用addProvider函数将QNEAT3算法添加到处理注册表后,这些算法无法正确显示在注册表列表中,因此无法调用必要的函数。
我在Windows 10上运行OSGeo4W64 shell(QGIS3)。经过反复试验,我设法在shell中启动并运行。当我列出处理注册表中可用的算法时,我会得到一长串看起来像这样的东西:
gdal:aspect --> Aspect
gdal:assignprojection --> Assign projection
gdal:buffervectors --> Buffer vectors
gdal:buildvirtualraster --> Build virtual raster
gdal:cliprasterbyextent --> Clip raster by extent
gdal:cliprasterbymasklayer --> Clip raster by mask layer
...
太好了。现在,当我导入Qneat3Provider并将其添加为提供程序时,它将返回“ True”,表明请求已生效。但是,当我再次检查时,注册表显示仅添加了一堆“空”算法:
: ->
: ->
: ->
: ->
: ->
: ->
: ->
: ->
: ->
: ->
: ->
: ->
: ->
: ->
gdal:aspect --> Aspect
gdal:assignprojection --> Assign projection
gdal:buffervectors --> Buffer vectors
gdal:buildvirtualraster --> Build virtual raster
gdal:cliprasterbyextent --> Clip raster by extent
gdal:cliprasterbymasklayer --> Clip raster by mask layer
...
我在这里做什么错了?
我的代码:
if __name__ == '__main__':
import sys
from qgis.core import QgsApplication
QgsApplication.setPrefixPath('/usr', True)
qgs = QgsApplication([], False)
qgs.initQgis()
sys.path.append(r'C:\OSGeo4W64\apps\qgis\python\plugins')
import processing
from processing.core.Processing import Processing
Processing.initialize()
sys.path.append("C:/Users/vice7j3/AppData/Roaming/QGIS/QGIS3/profiles/default/python/plugins")
from QNEAT3.Qneat3Provider import Qneat3Provider
QgsApplication.processingRegistry().addProvider(Qneat3Provider())
for alg in QgsApplication.processingRegistry().algorithms():
print(alg.id(), "->", alg.displayName())
我期望注册表应该具有如下新元素:
qneat3:shortestpathbetweenpoints
qneat3:OdMatrixFromLayersAsLines
qneat3:OdMatrixFromLayersAsTable
...