Mehr

R.topidx-Fehler: erforderliche Parameterausgabe nicht gesetzt

R.topidx-Fehler: erforderliche Parameterausgabe nicht gesetzt


Ich rufe GRASS r.topidx von QGIS 2.2.0 auf. Ich kann mir andere Tools holen, um an der DTM zu arbeiten, zum Beispiel r.watershed. Aber r.topidx bekomme ich die Hoppla-Meldung:

Ups! Die folgenden Ausgabe-Layer konnten nicht geöffnet werden: C:/Users/User/Documents/GIS DataBase/Gills/Terrain/TopIdx.tif Die obigen Dateien konnten nicht geöffnet werden, was wahrscheinlich darauf hindeutet, dass sie vom ausgeführten Algorithmus nicht korrekt erzeugt wurden Wenn Sie die Protokollinformationen überprüfen, können Sie möglicherweise erkennen, warum diese Layer nicht wie erwartet erstellt wurden. Dieser Algorithmus erfordert die Ausführung von GRASS. Es wurde ein Test durchgeführt, um zu überprüfen, ob GRASS in Ihrem System korrekt installiert und konfiguriert ist, mit folgendem Ergebnis: GRASS scheint korrekt installiert und konfiguriert zu sein

Wenn ich mir das Protokoll ansehe, finde ich: C:PROGRA~1QGISVA~1in>r.topidx input=tmp14037940151265 Output topographic index layer=Output topographic index layer1a269dc6704c40399e5421e3bc50f16e --overwrite Entschuldigung ist keine gültige Option Sorry ist nicht gültig option Sorry ist keine gültige Option Sorry, ist kein gültiger Parameter Sorry ist keine gültige Option Sorry ist keine gültige Option Sorry ist keine gültige Option

Aber wie Sie an der Ooops (sehr nervig) Nachricht sehen können, ist die Ausgabedatei auf /TopIdx.tif gesetzt. was soll ok sein?

Hast du eine Idee, was hier schief laufen könnte?


1) Zuerst müssen Sie den Befehl r.topidx von GRASS GIS konsultieren:

Mit GRASS-GIS:

Der Befehl ist

r.topidx [email protected]_divers output=test_topixd

2) dasselbe mit QGIS

Das Verarbeitungsprotokoll

ALGORITHMUS|Do 26. Juni 2014 20:45:33|processing.runalg("grass:r.topidx","/Users/Shared/avauffe.tif","202086.577,205625.414407,88411.048,90534.3504441",0,"/Users /Shared/test.tif")

Aus der Hilfe:

input = /Users/Shared/avauffe.tif" GRASS_REGION_PARAMETER = "202086.577,205625.414407,88411.048,90534.3504441" GRASS_REGION_CELLSIZE_PARAMETER = 0 Ausgabe des topografischen Indexlayers = /Users/Shared/test.tif"

Wenn ein Problem auftritt, erhalten Sie die Fehlermeldung „Ups…“

Überprüfen:

Wenn Sie einen GRASS-Befehl aus der Verarbeitung verwenden, erstellt das verarbeitende Python-Modul zuerst eine Stapeldatei mit dem Befehl namens "grass_batch_job.sh" (Linux, Mac OS X) oder "grass_script.bat" (Windows) im Ordner… /. qgis2/Verarbeitung: :

Dann führt es diesen Befehl mit dem Python-Modul-Unterprozess aus ((Python-Skript… /plugins/processing/algs/grass/GrassUtils.py)

Was ist der Inhalt Ihrer Batch-Datei?

Die Batchdatei mit v.voronoi:

g.proj -c proj4="+proj=utm +zone=30 +ellps=intl +towgs84=-87,-98,-121,0,0,0,0 +units=m +no_defs" v.in. ogr min_area=0.0001 snap=-1 dsn="/Users/Shared/telechargement/30_06_14/qgis-mac-2.4/QGIS_2.3-dev_SnoLeo.app/Contents/MacOS/… /Resources/python/plugins/processing/tests/ data" layer=points output=tmp1403985550269 --overwrite -o g.region n=4458983.8488 s=4458921.97814 e=270855.745301 w=270778.60198 res=1 v.voronoi input=tmp1403985550269 output=output4973a4a8d42444ce8b.b -c -e -z input=output4973a4a8d42444ce8ac8de404e4b13b7 dsn="/var/folders/vu/vu099NovH-KZpE5TEa83BU+++TI/-Tmp-/Processing/1b556bdecead4a11a31da2fc029aRI_Shapefile type=ESaRI_Out"

kommt aus dem Skript GrassUtils.py (Zeile 353-392), um zu überprüfen, ob GRASS GIS installiert ist:

def checkGrassIsInstalled(ignorePreviousState=False): if isWindows(): path = GrassUtils.grassPath() if path ==": return 'GRASS-Ordner ist nicht konfiguriert.
Bitte konfigurieren Sie ihn, bevor Sie GRASS-Algorithmen ausführen.' cmdpath = os.path.join(path, 'bin', 'r.out.gdal.exe') if not os.path.exists(cmdpath): return 'Der angegebene GRASS-Ordner enthält keinen gültigen  Satz von GRASS module.
'  + 'Bitte gehen Sie zum Dialog Verarbeitungseinstellungen und  prüfen Sie, ob der GRASS
'  + 'Ordner richtig konfiguriert ist' if not ignorePreviousState: if GrassUtils.isGrassInstalled: return try: from processing import runalg result = runalg( 'grass:v.voronoi', points(), False, False, '270778.60198,270855.745301,4458921.97814,4458983.8488', -1, 0.0001, 0, None, ) if not os.path.exists(result[ 'output']): return 'Es scheint, dass GRASS in Ihrem System nicht korrekt installiert und konfiguriert ist.
Bitte installieren Sie es, bevor Sie GRASS-Algorithmen ausführen.' außer: s = traceback.format_exc() return 'Fehler beim Überprüfen der GRASS-Installation. GRASS ist möglicherweise nicht richtig konfiguriert.
' + s GrassUtils.isGrassInstalled = True

Diese Funktion wird aufgerufen, wenn ein Problem auftritt und der Befehl nicht ausgeführt werden kann -> Ihre grass_script.bat

GRASS scheint korrekt installiert und konfiguriert zu sein

Eine Lösung ?

Verwenden Sie GRASS GIS direkt (ein nicht GRASS GIS von QGIS über Verarbeitung) oder das GRASS Plugin


Die Antwort scheint zu sein, dass r.topidx funktioniert, wenn es über die GRASS-Tools aufgerufen wird, die nach Auswahl und Laden des GRASS-Plugins verfügbar sind. Es ist verfügbar, funktioniert aber (bei mir) nicht, wenn es aus der Processing Toolbox aufgerufen wird.

Ich fand dies verwirrend, da einige GRASS-Routinen funktionieren, wenn sie aus der Processing Toolbox aufgerufen werden.

Um r.topidx (und r.fill.dir) zu verwenden, MÜSSEN Sie die Anweisungen im Benutzerhandbuch/Handbuch befolgen, um ein neues GRASS-Kartenset zu erstellen, Ihr DEM darin zu importieren und r.fill.dir und dann r.topix von aufzurufen die GRASS-Toolbox, die durch Klicken auf das Symbol GRASS-Tools öffnen in der GRASS-Symbolleiste geöffnet wird. Dann funktioniert es.

Ich reiche diese Antwort auf meine eigene Frage ein, falls andere Benutzer die gleiche Verwirrung feststellen.

Übrigens ist das SAGA Topographic Wetness Index Modul eine Alternative, die ohne lästiges Öffnen eines speziellen Mapsets auskommt.


Schau das Video: How to Project Raster in ArcGIS