为什么我不能在独立脚本中添加QNEAT3作为处理提供者?

2024-05-28 20:45:21 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在尝试使用QNEAT3在独立脚本中运行一些最短路径计算。但是在我使用addProvider函数将QNEAT3算法添加到处理注册表之后,这些算法没有正确地出现在注册表列表中,因此我无法调用必要的函数。你知道吗

我正在Windows10上运行OSGeo4W64 shell(QGIS3)。经过大量的尝试和错误,我成功地在shell中启动并运行了处理程序。当我在processing registry中列出可用的算法时,会得到一个很长的列表,如下所示:

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
...

Tags: fromimport算法clipby注册表sysalg

热门问题