[GRASS-user] Previewing column names in input ASCII file without
messing g.parser up
Luigi Ponti
lponti at inbox.com
Wed Jun 9 05:37:53 EDT 2010
Hi there,
Working on windows 7, I was trying to run a GRASS bash shell script
(written for the Cygwin version of GRASS) using the
WinGRASS-6.4.SVN-r42329-1 installed from
<http://josef.fsv.cvut.cz/wingrass/>. After some tuning to adopt the
direct rendering approach and to adjust to msys pathname conventions,
all runs fine (winGRASS is in "Program Files" and no problems occur
using a variety of grass and shell commands) except for one feature of
the script that I am not able to reproduce in the native winGRASS version.
The shell script basically imports (v.in.ascii) an ASCII text file with
columns including latitude, longitude, and some variables, and then maps
a variable of choice. It calls a little Perl script that prints column
order and names before g.parser is called. In the Cygwin version, this
results in (1) the output of the Perl script to be printed to the
GRASS/bash terminal, and (2) the script GUI to be launched as well. This
way, the user can look at names/numbers of columns in the ASCII file,
and input column numbers of choice in the GUI for v.in.ascii.
In winGRASS, the execution of the Perl script that prints column
names/numbers prevents the GUI of the main shell script from starting up
when called in the Cmd> text box of the Python wxgui (started using the
shortcut created by the installer), with the following error message in
the command output tab:
self.goutput.RunCmd(cmd, switchPage=False)
File "C:\Program
Files\GRASS-64-SVN\etc\wxpython\gui_modules\goutput.py",
line 354, in RunCmd
menuform.GUI().ParseCommand(cmdlist, parentframe=self)
File "C:\Program
Files\GRASS-64-SVN\etc\wxpython\gui_modules\menuform.py",
line 1853, in ParseCommand
handler)
File "C:\OSGeo4W\apps\Python25\lib\xml\sax\__init__.py",
line 49, in parseString
parser.parse(inpsrc)
File
"C:\OSGeo4W\apps\Python25\lib\xml\sax\expatreader.py", line
107, in parse
xmlreader.IncrementalParser.parse(self, source)
File "C:\OSGeo4W\apps\Python25\lib\xml\sax\xmlreader.py",
line 123, in parse
self.feed(buffer)
File
"C:\OSGeo4W\apps\Python25\lib\xml\sax\expatreader.py", line
211, in feed
self._err_handler.fatalError(exc)
File "C:\OSGeo4W\apps\Python25\lib\xml\sax\handler.py",
line 38, in fatalError
raise exception
xml.sax._exceptions
.
SAXParseException
:
<unknown>:2:0: syntax error
However, when calling the shell script in winGRASS text mode (started
using the shortcut created by the installer) the Cygwin behavior is
reproduced, i.e. column numbers and names are printed to the DOS
terminal by the Perl script, and the GUI of the main shell script is
launched as well. Apparently, this is due to the wxpython not having a
DOS prompt where to print. Also, it seems to be calling code from
OSGeo4W although I have checked my %PATH% environment variable, and
there does not seem to be any reference to the C:\OSGeo4W installation:
typing
path | FINDSTR OSGeo4W
at the DOS prompt returns nothing.
Does anybody see a way around the wxpython problem that would allow
column number/names in the input ASCII file to be previewed without
preventing the g.parser GUI to start up?
A side note: it seems like the /scripts/ folder is not accessible inside
custom shell scripts so that I had to add
@set PATH=%GISBASE%\scripts\;%PATH%
in the corresponding .bat file that lives inside GISBASE/bin/ and is
used to call the custom script itself from wxpython gui. Not sure why
this happens.
Finally, I wanted to thank authors of posts from which I have collected
info that enabled me to port shell scripts to native winGRASS (e.g.
Glynn Clements and Elena Mitasova).
Kind regards and sorry for a long post of somewhat mixed content,
Luigi
More information about the grass-user
mailing list