Skip to Content

Répondre au commentaire

la solution complète pour utiliser GRASS avec tous les systèmes.

La fonction complète pour utiliser le script pour Windows, Linux et Mac OS X est:

def executeGrass(commands, progress):
        if SextanteUtils.isWindows():
            GrassUtils.createGrassScript(commands)
            command = ["cmd.exe", "/C ", GrassUtils.grassScriptFilename()]
        else:
            gisrc =  SextanteUtils.userFolder() + os.sep + "sextante.gisrc"
            os.putenv("GISRC", gisrc)
            os.putenv("GRASS_MESSAGE_FORMAT", "gui")
            os.putenv("GRASS_BATCH_JOB", GrassUtils.grassBatchJobFilename())
            GrassUtils.createGrassBatchJobFileFromGrassCommands(commands)
            os.chmod(GrassUtils.grassBatchJobFilename(), stat.S_IEXEC | stat.S_IREAD | stat.S_IWRITE)
            if SextanteUtils.isMac():         
                command = "/Applications/GRASS-6.4.app/Contents/MacOS/grass.sh " + GrassUtils.grassMapsetFolder() + "/user"
            else:
                command = "grass64 " + GrassUtils.grassMapsetFolder() + "/user"
        loglines = []
        loglines.append("GRASS execution console output")
        proc = subprocess.Popen(command, shell=True, stdout=subprocess.PIPE, stdin=subprocess.PIPE,stderr=subprocess.STDOUT, universal_newlines=True).stdout
        for line in iter(proc.readline, ""):
            if "GRASS_INFO_PERCENT" in line:
                try:
                    progress.setPercentage(int(line[len("GRASS_INFO_PERCENT")+ 2:]))
                except:
                    pass
            else:
                loglines.append(line)
        SextanteLog.addToLog(SextanteLog.LOG_INFO, loglines)
        shutil.rmtree(GrassUtils.grassMapsetFolder(), True)

et si vous voulez avoir l'aide dans les dialogues (help), placez

GRASS_HELP_FOLDER=/Applications/GRASS-6.4.app/Contents/MacOS/docs/html

dans le fichier sextante_qgis.conf  (/Users/martinlaloux/sextante/sextante_qgis.conf, dans mon cas).

Répondre

Le contenu de ce champ sera maintenu privé et ne sera pas affiché publiquement.