Почему я не могу добавить QNEAT3 в качестве поставщика обработки в автономном скрипте? - PullRequest
0 голосов
/ 13 мая 2019

Я пытаюсь выполнить некоторые вычисления кратчайшего пути в автономном скрипте с использованием QNEAT3. Но после добавления алгоритмов QNEAT3 в реестр обработки с помощью функции addProvider алгоритмы не отображаются должным образом в списке реестра, и поэтому я не могу вызвать необходимую функцию.

Я использую оболочку OSGeo4W64 (QGIS3) в Windows 10. После долгих проб и ошибок мне удалось запустить обработку в оболочке. Когда я перечисляю алгоритмы, доступные в реестре обработки, я получаю длинный список, похожий на:

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