[GRASS-user] grass-user Digest, Vol 107, Issue 2

Rob Parsons jrobparsons at gmail.com
Wed Mar 4 19:09:51 PST 2015


Thanks for the direction!

I have successfully worked through the examples on
http://grass.osgeo.org/grass70/manuals/libpython/script_intro.html except
for the last one about adding a module interface to a script. I copied the
code into a python file named module_interface.py. After I File-> "Launch
script" and select module_interface.py, the module GUI pops up and prompts
for the raster inputs and output. But, after clicking on "Run", the script
reports the following message:

(Wed Mar 04 21:55:29
2015)
module_interface araster=el_D782_6m at PERMANENT braster=el_D783_6m at PERMANENT
output=el_r_6m
'module_interface' is not recognized as an internal or
external command,
operable program or batch file.
(Wed Mar 04 21:55:29 2015) Command finished (0
sec)

Anyone seen this message?

Rob Parsons
Raleigh NC



On Sun, Mar 1, 2015 at 8:13 PM, <grass-user-request at lists.osgeo.org> wrote:

> Send grass-user mailing list submissions to
>         grass-user at lists.osgeo.org
>
> To subscribe or unsubscribe via the World Wide Web, visit
>         http://lists.osgeo.org/mailman/listinfo/grass-user
> or, via email, send a message with subject or body 'help' to
>         grass-user-request at lists.osgeo.org
>
> You can reach the person managing the list at
>         grass-user-owner at lists.osgeo.org
>
> When replying, please edit your Subject line so it is more specific
> than "Re: Contents of grass-user digest..."
>
>
> Today's Topics:
>
>    1. GRASS 7.0 Running Scripts (.\GRASS GIS 7.0.0\scripts)
>       (Rob Parsons)
>    2. Re: GRASS 7.0 Running Scripts (.\GRASS GIS        7.0.0\scripts)
>       (Vaclav Petras)
>
>
> ----------------------------------------------------------------------
>
> Message: 1
> Date: Sun, 1 Mar 2015 19:37:59 -0500
> From: Rob Parsons <jrobparsons at gmail.com>
> To: grass-user at lists.osgeo.org
> Subject: [GRASS-user] GRASS 7.0 Running Scripts (.\GRASS GIS
>         7.0.0\scripts)
> Message-ID:
>         <
> CAFvPsPBH1xVpEgff15hxknY0qeeMUeehP9bucV4FB9ZgQ_2+cg at mail.gmail.com>
> Content-Type: text/plain; charset="utf-8"
>
> Hello,
>
> How do I run scripts located in C:\Program Files (x86)\GRASS GIS
> 7.0.0\scripts?
>
> I am learning GRASS 7.0.0 on Windows 7 by converting some GRASS 6.4 shell
> scripts to GRASS 7 Python scripts (import grass.script as grass) and GRASS
> 7 PyGRASS scripts (from grass.pygrass.modules import Module).
>
> My installation is working fine. I can manually run the commands (from a
> shell script) in the "Command console" window of the "Layer Manager". For
> example, I can enter "g.region swwake_30m -p" in the "Command prompt" area
> and get the following results:
>
>
> Sun Mar 01 12:32:30
> 2015)
> g.region swwake_30m
> -p
> projection: 99 (Lambert Conformal Conic)
> zone:       0
> datum:      nad83
> ellipsoid:  a=6378137 es=0.006694380022900787
> north:      228500
> south:      215000
> west:       630000
> east:       645000
> nsres:      30
> ewres:      30
> rows:       450
> cols:       500
> cells:      225000
> (Sun Mar 01 12:32:31 2015) Command finished (0
> sec)
>
> I am using the "Pythonwin" IDE to develop the scripts (C:\Program Files
> (x86)\GRASS GIS 7.0.0\Python27\lib\site-packages\pythonwin\Pythonwin.exe).
> In the "GRASS GIS 7.0.0 GUI" Command Prompt window I type "pythonwin" and
> the IDE starts up.
>
> I have spent several days trying to understand how to create GRASS Python
> scripts and GRASS PyGRASS scripts from the online documentation(
> http://grasswiki.osgeo.org/wiki/GRASS_and_Python) and by studying the
> script samples (C:\Program Files (x86)\GRASS GIS 7.0.0\scripts). I have not
> been successful in getting example code to run but I am still working
> through the documentation.
>
> But, I should be able to run scripts located in C:\Program Files
> (x86)\GRASS GIS 7.0.0\scripts.
>
> Correct?
>
> 1. If I open .\scripts\d.what.rast.py in the Pythonwin IDE and try to run
> it, I get this output:
>
> OSError error(9): The handle is invalid
> Traceback (most recent call last):
>   File "C:\Program Files (x86)\GRASS GIS
> 7.0.0\Python27\lib\site-packages\pythonwin\pywin\framework\scriptutils.py",
> line 325, in RunScript
>     exec codeObject in __main__.__dict__
>   File
> "C:\Users\Rob\Documents\grassscripts\pygrass\make_raster_using_mapcalc.py",
> line 8, in <module>
>     g.message("Filter elevation map by a threshold...")
>   File "C:\Program Files (x86)\GRASS GIS
> 7.0.0\etc\python\grass\pygrass\modules\shortcuts.py", line 46, in
> __getattr__
>     return self.cls('%s.%s' % (self.prefix, name.replace('_', '.')))
>   File "C:\Program Files (x86)\GRASS GIS
> 7.0.0\etc\python\grass\pygrass\modules\interface\module.py", line 498, in
> __init__
>     raise GrassError(str_err % self.name)
> GrassError: Error running: `g.message --interface-description`.
> Traceback (most recent call last):
>   File "C:\Program Files (x86)\GRASS GIS
> 7.0.0\Python27\lib\site-packages\pythonwin\pywin\framework\scriptutils.py",
> line 325, in RunScript
>     exec codeObject in __main__.__dict__
>   File "C:\Program Files (x86)\GRASS GIS 7.0.0\scripts\d.what.rast.py",
> line 45, in <module>
>     main()
>   File "C:\Program Files (x86)\GRASS GIS 7.0.0\scripts\d.what.rast.py",
> line 30, in main
>     options, flags = gcore.parser()
>   File "C:\Program Files (x86)\GRASS GIS
> 7.0.0\etc\python\grass\script\core.py", line 680, in parser
>     p = subprocess.Popen([prog, '-n'] + argv, stdout=subprocess.PIPE)
>   File "C:\Program Files (x86)\GRASS GIS 7.0.0\Python27\lib\subprocess.py",
> line 703, in __init__
>     errread, errwrite) = self._get_handles(stdin, stdout, stderr)
>   File "C:\Program Files (x86)\GRASS GIS 7.0.0\Python27\lib\subprocess.py",
> line 839, in _get_handles
>     p2cread = self._make_inheritable(p2cread)
>   File "C:\Program Files (x86)\GRASS GIS 7.0.0\Python27\lib\subprocess.py",
> line 878, in _make_inheritable
>     _subprocess.DUPLICATE_SAME_ACCESS)
> WindowsError: [Error 6] The handle is invalid
> Traceback (most recent call last):
>   File "C:\Program Files (x86)\GRASS GIS
> 7.0.0\Python27\lib\site-packages\pythonwin\pywin\framework\scriptutils.py",
> line 325, in RunScript
>     exec codeObject in __main__.__dict__
>   File "C:\Program Files (x86)\GRASS GIS 7.0.0\scripts\d.what.rast.py",
> line 45, in <module>
>     main()
>   File "C:\Program Files (x86)\GRASS GIS 7.0.0\scripts\d.what.rast.py",
> line 30, in main
>     options, flags = gcore.parser()
>   File "C:\Program Files (x86)\GRASS GIS
> 7.0.0\etc\python\grass\script\core.py", line 680, in parser
>     p = subprocess.Popen([prog, '-n'] + argv, stdout=subprocess.PIPE)
>   File "C:\Program Files (x86)\GRASS GIS 7.0.0\Python27\lib\subprocess.py",
> line 703, in __init__
>     errread, errwrite) = self._get_handles(stdin, stdout, stderr)
>   File "C:\Program Files (x86)\GRASS GIS 7.0.0\Python27\lib\subprocess.py",
> line 839, in _get_handles
>     p2cread = self._make_inheritable(p2cread)
>   File "C:\Program Files (x86)\GRASS GIS 7.0.0\Python27\lib\subprocess.py",
> line 878, in _make_inheritable
>     _subprocess.DUPLICATE_SAME_ACCESS)
> WindowsError: [Error 6] The handle is invalid
> >>>
>
> 2. If I go to the "Python shell" tab on the "Layer Manager" and do File ->
> Launch Script and browse to .\scripts\d.what.rast.py, I get this output:
>
> (Sun Mar 01 12:32:31 2015) Command finished (0
> sec)
> Launching script 'C:\Program Files (x86)\GRASS GIS 7.0.0\scripts\
> d.what.rast.py'...
> Traceback (most recent call last):
>   File "C:\Program Files (x86)\GRASS GIS
> 7.0.0\gui\wxpython\gui_core\forms.py", line 718, in OnRun
>
> gcmd.Command(cmd)
>   File "C:\Program Files (x86)\GRASS GIS
> 7.0.0\gui\wxpython\core\gcmd.py", line 397, in __init__
>
> _("Error: ") + self.__GetError()))
> core.gcmd
> .
> GException
> :
> Execution failed: 'd.what.rast map=elevation'
> Details:
> Error:
>
> Any ideas on what might be going on here?
>
> Rob Parsons
> Raleigh NC
> -------------- next part --------------
> An HTML attachment was scrubbed...
> URL: <
> http://lists.osgeo.org/pipermail/grass-user/attachments/20150301/b41b2959/attachment-0001.html
> >
>
> ------------------------------
>
> Message: 2
> Date: Sun, 1 Mar 2015 20:12:57 -0500
> From: Vaclav Petras <wenzeslaus at gmail.com>
> To: Rob Parsons <jrobparsons at gmail.com>
> Cc: GRASS user list <grass-user at lists.osgeo.org>
> Subject: Re: [GRASS-user] GRASS 7.0 Running Scripts (.\GRASS GIS
>         7.0.0\scripts)
> Message-ID:
>         <CABo5uVt7hq0QnHYqzV5O949h3URGxFOAjHNLxiMx=
> V5rSK_wRw at mail.gmail.com>
> Content-Type: text/plain; charset="utf-8"
>
> On Sun, Mar 1, 2015 at 7:37 PM, Rob Parsons <jrobparsons at gmail.com> wrote:
>
> > Hello,
> >
> > How do I run scripts located in C:\Program Files (x86)\GRASS GIS
> > 7.0.0\scripts?
> >
> > I am learning GRASS 7.0.0 on Windows 7 by converting some GRASS 6.4 shell
> > scripts to GRASS 7 Python scripts (import grass.script as grass) and
> GRASS
> > 7 PyGRASS scripts (from grass.pygrass.modules import Module).
> >
> > My installation is working fine. I can manually run the commands (from a
> > shell script) in the "Command console" window of the "Layer Manager". For
> > example, I can enter "g.region swwake_30m -p" in the "Command prompt"
> area
> > and get the following results:
> >
> >
> > Sun Mar 01 12:32:30
> > 2015)
> > g.region swwake_30m
> > -p
> > projection: 99 (Lambert Conformal Conic)
> > zone:       0
> > datum:      nad83
> > ellipsoid:  a=6378137 es=0.006694380022900787
> > north:      228500
> > south:      215000
> > west:       630000
> > east:       645000
> > nsres:      30
> > ewres:      30
> > rows:       450
> > cols:       500
> > cells:      225000
> > (Sun Mar 01 12:32:31 2015) Command finished (0
> > sec)
> >
> > I am using the "Pythonwin" IDE to develop the scripts (C:\Program Files
> > (x86)\GRASS GIS
> 7.0.0\Python27\lib\site-packages\pythonwin\Pythonwin.exe).
> > In the "GRASS GIS 7.0.0 GUI" Command Prompt window I type "pythonwin" and
> > the IDE starts up.
> >
> > I have spent several days trying to understand how to create GRASS Python
> > scripts and GRASS PyGRASS scripts from the online documentation(
> > http://grasswiki.osgeo.org/wiki/GRASS_and_Python) and by studying the
> > script samples (C:\Program Files (x86)\GRASS GIS 7.0.0\scripts). I have
> not
> > been successful in getting example code to run but I am still working
> > through the documentation.
> >
> > Please try the example from:
>
> http://grass.osgeo.org/grass70/manuals/libpython/script_intro.html
>
> I linked this page from documentation as well as the other Python wiki page
> from the GRASS and Python page:
>
> http://grasswiki.osgeo.org/wiki/GRASS_Python_Scripting_Library
>
> Note that GRASS scripts by default cannot run from outside GRASS GIS
> session (environment). This is probably not emphasized enough in the
> documentation.
>
> But, I should be able to run scripts located in C:\Program Files
> > (x86)\GRASS GIS 7.0.0\scripts.
> >
> > Correct?
> >
> > Correct but can you please try some other module than a d.* module, e.g.
> r.out.xyz? d.* commands are somehow special (although in this case it
> probably doesn't matter).
>
>
> > 1. If I open .\scripts\d.what.rast.py in the Pythonwin IDE and try to
> run
> > it, I get this output:
> >
> > OSError error(9): The handle is invalid
> > Traceback (most recent call last):
> >   File "C:\Program Files (x86)\GRASS GIS
> >
> 7.0.0\Python27\lib\site-packages\pythonwin\pywin\framework\scriptutils.py",
> > line 325, in RunScript
> >     exec codeObject in __main__.__dict__
> >   File
> >
> "C:\Users\Rob\Documents\grassscripts\pygrass\make_raster_using_mapcalc.py",
> > line 8, in <module>
> >     g.message("Filter elevation map by a threshold...")
> >   File "C:\Program Files (x86)\GRASS GIS
> > 7.0.0\etc\python\grass\pygrass\modules\shortcuts.py", line 46, in
> > __getattr__
> >     return self.cls('%s.%s' % (self.prefix, name.replace('_', '.')))
> >   File "C:\Program Files (x86)\GRASS GIS
> > 7.0.0\etc\python\grass\pygrass\modules\interface\module.py", line 498, in
> > __init__
> >     raise GrassError(str_err % self.name)
> > GrassError: Error running: `g.message --interface-description`.
> > Traceback (most recent call last):
> >   File "C:\Program Files (x86)\GRASS GIS
> >
> 7.0.0\Python27\lib\site-packages\pythonwin\pywin\framework\scriptutils.py",
> > line 325, in RunScript
> >     exec codeObject in __main__.__dict__
> >   File "C:\Program Files (x86)\GRASS GIS 7.0.0\scripts\d.what.rast.py",
> > line 45, in <module>
> >     main()
> >   File "C:\Program Files (x86)\GRASS GIS 7.0.0\scripts\d.what.rast.py",
> > line 30, in main
> >     options, flags = gcore.parser()
> >   File "C:\Program Files (x86)\GRASS GIS
> > 7.0.0\etc\python\grass\script\core.py", line 680, in parser
> >     p = subprocess.Popen([prog, '-n'] + argv, stdout=subprocess.PIPE)
> >   File "C:\Program Files (x86)\GRASS GIS
> > 7.0.0\Python27\lib\subprocess.py", line 703, in __init__
> >     errread, errwrite) = self._get_handles(stdin, stdout, stderr)
> >   File "C:\Program Files (x86)\GRASS GIS
> > 7.0.0\Python27\lib\subprocess.py", line 839, in _get_handles
> >     p2cread = self._make_inheritable(p2cread)
> >   File "C:\Program Files (x86)\GRASS GIS
> > 7.0.0\Python27\lib\subprocess.py", line 878, in _make_inheritable
> >     _subprocess.DUPLICATE_SAME_ACCESS)
> > WindowsError: [Error 6] The handle is invalid
> > Traceback (most recent call last):
> >   File "C:\Program Files (x86)\GRASS GIS
> >
> 7.0.0\Python27\lib\site-packages\pythonwin\pywin\framework\scriptutils.py",
> > line 325, in RunScript
> >     exec codeObject in __main__.__dict__
> >   File "C:\Program Files (x86)\GRASS GIS 7.0.0\scripts\d.what.rast.py",
> > line 45, in <module>
> >     main()
> >   File "C:\Program Files (x86)\GRASS GIS 7.0.0\scripts\d.what.rast.py",
> > line 30, in main
> >     options, flags = gcore.parser()
> >   File "C:\Program Files (x86)\GRASS GIS
> > 7.0.0\etc\python\grass\script\core.py", line 680, in parser
> >     p = subprocess.Popen([prog, '-n'] + argv, stdout=subprocess.PIPE)
> >   File "C:\Program Files (x86)\GRASS GIS
> > 7.0.0\Python27\lib\subprocess.py", line 703, in __init__
> >     errread, errwrite) = self._get_handles(stdin, stdout, stderr)
> >   File "C:\Program Files (x86)\GRASS GIS
> > 7.0.0\Python27\lib\subprocess.py", line 839, in _get_handles
> >     p2cread = self._make_inheritable(p2cread)
> >   File "C:\Program Files (x86)\GRASS GIS
> > 7.0.0\Python27\lib\subprocess.py", line 878, in _make_inheritable
> >     _subprocess.DUPLICATE_SAME_ACCESS)
> > WindowsError: [Error 6] The handle is invalid
> > >>>
> >
> >
>
> This might be somehow related to bug in Python itself:
>
> http://bugs.python.org/issue3905
>
> However, please focus on running the scripts for GRASS GIS from GRASS
> session. The easiest way how to do that on MS Windows is to write the
> script and then to start it from GUI (File > Run script) or from Python
> shell tab in the GUI.
>
> It is possible to run scripts which are using GRASS modules from outside of
> GRASS session but it requires you to set up the GRASS environment yourself.
> This is possible but it has some challenges. On the other hand, if you
> write your script in the way that it runs (only) in a GRASS session you can
> use GRASS features for automatic building of interface and thus create a
> true GRASS module.
>
>
> > 2. If I go to the "Python shell" tab on the "Layer Manager" and do File
> ->
> > Launch Script and browse to .\scripts\d.what.rast.py, I get this output:
> >
> > (Sun Mar 01 12:32:31 2015) Command finished (0
> > sec)
> > Launching script 'C:\Program Files (x86)\GRASS GIS 7.0.0\scripts\
> > d.what.rast.py'...
> > Traceback (most recent call last):
> >   File "C:\Program Files (x86)\GRASS GIS
> > 7.0.0\gui\wxpython\gui_core\forms.py", line 718, in OnRun
> >
> > gcmd.Command(cmd)
> >   File "C:\Program Files (x86)\GRASS GIS
> > 7.0.0\gui\wxpython\core\gcmd.py", line 397, in __init__
> >
> > _("Error: ") + self.__GetError()))
> > core.gcmd
> > .
> > GException
> > :
> > Execution failed: 'd.what.rast map=elevation'
> > Details:
> > Error:
> >
> > The error message seems to be incomplete but in any case, please try with
> r.out.xyz script and the example script from:
>
> http://grass.osgeo.org/grass70/manuals/libpython/script_intro.html
>
> Vaclav
>
>
> > Any ideas on what might be going on here?
> >
> > Rob Parsons
> > Raleigh NC
> >
> >
> > _______________________________________________
> > grass-user mailing list
> > grass-user at lists.osgeo.org
> > http://lists.osgeo.org/mailman/listinfo/grass-user
> >
> -------------- next part --------------
> An HTML attachment was scrubbed...
> URL: <
> http://lists.osgeo.org/pipermail/grass-user/attachments/20150301/6ff05a0b/attachment.html
> >
>
> ------------------------------
>
> _______________________________________________
> grass-user mailing list
> grass-user at lists.osgeo.org
> http://lists.osgeo.org/mailman/listinfo/grass-user
>
> End of grass-user Digest, Vol 107, Issue 2
> ******************************************
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.osgeo.org/pipermail/grass-user/attachments/20150304/001b5342/attachment-0001.html>


More information about the grass-user mailing list