Verwenden des Rechners in QGIS Graphical Modeler


8

Da der QGIS Graphical Modeler Calculator nicht zu einer Antwort geführt hat, werde ich hier mein Glück noch einmal versuchen. Ich habe in QGIS 2.18.16 ein einfaches Modell erstellt, das eine Entfernung basierend auf der Ausdehnung eines Rasters und einer bestimmten Anzahl von Unterteilungen berechnet, die vom Benutzer als Parameter festgelegt werden. Grundsätzlich soll es dem Fishnet-Tool von ArcGIS ähneln. Das Modell sieht folgendermaßen aus:

Die Beschreibung im Taschenrechner sagt mir Folgendes:

Demnach habe ich meine Formel wie folgt eingerichtet:

(e - d) / b    # this should give me the segment length
(g - f) / a    # this should give me the segment height

Das Protokoll aus dem Modelllauf gibt mir dann die folgende Fehlermeldung:

Parameters: 
    FORMULA =(g-f)/a, 
    NUMBER0 =2, 
    NUMBER1 =3125884.941, 
    NUMBER2 =3135324.941, 
    NUMBER3 =None, NUMBER4 =None, NUMBER5 =None, NUMBER6 =None, NUMBER7 =None, NUMBER8 =None, NUMBER9 =None
Failed
Error executing algorithm Calculator Wrong formula: (None-None)/2

Leider ist die Dokumentation leer. Kann mir jemand sagen, wie man die Variablen richtig einrichtet?


Eigentlich geht es nicht darum, wie man ein Fischnetz erstellt, sondern darum, den Taschenrechner richtig zu verwenden
Uhr

Antworten:


3

Ich denke, dies ist ein Problem mit dem Code in der Datei (für mich ist der Pfad :) /QGIS 2.18/apps/qgis/python/plugins/processing/modeler/CalculatorModelerAlgorithm.py. Es scheint, dass der Code beim Ausführen des Algorithmus alle verfügbaren Variablen (dh) durchläuft 10und ihnen den entsprechenden Wert zuweist.

Dies scheint jedoch nur zu funktionieren, wenn alle Variablen in Ihrer Formel angegeben sind. Andernfalls wird nur den in Ihrer Formel enthaltenen Variablen ein Parameter ( NUMBERX) zugewiesen . Dh aus deinem Log:

Parameters: 
    FORMULA =(g-f)/a, 
     NUMBER0 =2,   --> a
     NUMBER1 =3125884.941,   --> f
     NUMBER2 =3135324.941,   --> g

Eine schnelle Lösung besteht darin, Ihre Formel zu schreiben und alle Variablen einzuschließen, die nicht verwendet werden, indem Sie sie mit multiplizieren 0.


  • Versuchen Sie also für Ihren ersten Taschenrechner Folgendes zu ersetzen:

    (e - d) / b
    

    mit:

    (e - d) / b + (a+c+f+g)*0
    
  • Versuchen Sie für Ihren zweiten Taschenrechner Folgendes zu ersetzen:

    (g - f) / a
    

    mit:

    (g - f) / a + (b+c+d+e)*0
    

1
Stimmt, das ist es. Obwohl ich keine Ahnung habe, warum es so kompliziert ist
s6hebern

@ s6hebern - Ich denke, mit einer kleinen Änderung am Code könnte dieses Problem behoben werden, aber ich bin froh, dass die Problemumgehung funktioniert :)
Joseph

Jetzt stoße ich auf ein anderes Problem, das indirekt damit zusammenhängt ... Der Create Grid-Algorithmus benötigt ein CRS, aber ich kann das nicht als Parameter verwenden. Irgendwelche Vorschläge? Oder eine neue Frage stellen?
S6hebern

@ s6hebern - Poste das besser als neue Frage (mit ähnlichem Detaillierungsgrad, den du hier gepostet hast) und hoffentlich können andere raten, da es seltsam klingt.
Joseph

1

Ich denke, dieses Plugin "Create Indexed Vector Grid" kann Ihnen helfen.


Ich kenne diese Funktion, aber wie in der Frage und dem Kommentar darunter angegeben, geht es nicht darum, insbesondere das Raster zu erstellen, sondern um die korrekte Notation im Taschenrechner.
S6hebern
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.