[Qgis-developer] Calling GRASS From a Python QGIS Script

romain riviere romain.riviere.974 at gmail.com
Mon Jun 27 18:55:28 EDT 2011


Hi all,

I'm using windows XP and QGIS 1.7 (classic installation, python 2.5, grass
6.4.1 ). My Goal is to create a QGIS plugin for complex network analysis
(TSP,steinman tree,...), using GRASS capabilities. It aims to be very
user-friendly, and cross-platform.
I'm trying to call GRASS from within a QGIS python plugin, but I get the
following error (python console module):

Code:  (inspired by:
http://grass.osgeo.org/wiki/Working_with_GRASS_without_starting_it_explicitly
)

> import os
>> import sys
>>
>> gisbase = os.environ['GISBASE'] = r" ....path to QGIS ....
>> sys.path.append(os.path.join(os.environ['GISBASE'], "etc", "python"))"
>>
>
>
>> import grass.script as grass
>>
>
Error:

> >>> import grass.script as grass
>
> Traceback (most recent call last):
>
> File "<input>", line 1, in <module>
>
> File "C:/PROGRA~1/QUANTU~2/apps/qgis/./python\qgis\utils.py", line 283, in
> _import
>
> mod = _builtin_import(name, globals, locals, fromlist, level)
>
> File "C:\Program Files\Quantum GIS
> Wroclaw\apps\grass\grass-6.4.1\etc\python\grass\script\__init__.py", line 1,
> in <module>
>
> from core import *
>
> File "C:/PROGRA~1/QUANTU~2/apps/qgis/./python\qgis\utils.py", line 283, in
> _import
>
> mod = _builtin_import(name, globals, locals, fromlist, level)
>
> File "C:\Program Files\Quantum GIS
> Wroclaw\apps\grass\grass-6.4.1\etc\python\grass\script\core.py", line 1073,
> in <module>
>
> debug_level = int(gisenv().get('DEBUG', 0))
>
> File "C:\Program Files\Quantum GIS
> Wroclaw\apps\grass\grass-6.4.1\etc\python\grass\script\core.py", line 514,
> in gisenv
>
> s = read_command("g.gisenv", flags='n')
>
> File "C:\Program Files\Quantum GIS
> Wroclaw\apps\grass\grass-6.4.1\etc\python\grass\script\core.py", line 225,
> in read_command
>
> ps = pipe_command(*args, **kwargs)
>
> File "C:\Program Files\Quantum GIS
> Wroclaw\apps\grass\grass-6.4.1\etc\python\grass\script\core.py", line 202,
> in pipe_command
>
> return start_command(*args, **kwargs)
>
> File "C:\Program Files\Quantum GIS
> Wroclaw\apps\grass\grass-6.4.1\etc\python\grass\script\core.py", line 164,
> in start_command
>
> return Popen(args, **popts)
>
> File "C:\Program Files\Quantum GIS
> Wroclaw\apps\grass\grass-6.4.1\etc\python\grass\script\core.py", line 55, in
> __init__
>
> startupinfo, creationflags)
>
> File "C:\PROGRA~1\QUANTU~2\apps\Python25\lib\subprocess.py", line 587, in
> __init__
>
> errread, errwrite) = self._get_handles(stdin, stdout, stderr)
>
> File "C:\PROGRA~1\QUANTU~2\apps\Python25\lib\subprocess.py", line 700, in
> _get_handles
>
> p2cread = self._make_inheritable(p2cread)
>
> File "C:\PROGRA~1\QUANTU~2\apps\Python25\lib\subprocess.py", line 745, in
> _make_inheritable
>
> DUPLICATE_SAME_ACCESS)
>
> WindowsError: [Error 6] The handle is invalid
>


I am pretty sure this is due to the Python Path, because the same code works
well in a classic python console (outside QGIS). But I'm not able to resolve
this issue. I haven't test yet, but I'm pretty sure it's working on ubuntu.

Another Question:

Does anyone know how to import QGIS  vector layer directly into GRASS ( as
v.in.ogr.qgis.loc from the GRASS Plugin)


Any help is welcome.

Romain,
*
*
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.osgeo.org/pipermail/qgis-developer/attachments/20110628/f2871723/attachment.html


More information about the Qgis-developer mailing list