[GRASS-dev] grass7 addon python script - finishes in normal and --verbose mode, but not in --quiet mode

Anna Petrášová kratochanna at gmail.com
Fri Nov 14 07:05:26 PST 2014


On Fri, Nov 14, 2014 at 9:47 AM, Anna Petrášová <kratochanna at gmail.com>
wrote:

>
>
> On Fri, Nov 14, 2014 at 6:37 AM, Moritz Lennert <
> mlennert at club.worldonline.be> wrote:
>
>> On 14/11/14 10:25, Helmut Kudrnovsky wrote:
>>
>>> Anna Petrášová wrote
>>>
>>>>
>>>>> but in --quiet mode it fails with:
>>>>>
>>>>> v.fixed.segmentpoints --quiet vector=iselflipped at myricaria cat=1
>>>>> dir=C:\tmp\grassscript distance=25000
>>>>> Traceback (most recent call last):
>>>>>    File "C:\Users\myricaria\AppData\Roaming\GRASS7\addons/scr
>>>>> ipts/v.fixed.segmentpoints.py", line 226, in
>>>>>
>>>> <module>
>>>>
>>>>>      sys.exit(main())
>>>>>    File "C:\Users\myricaria\AppData\Roaming\GRASS7\addons/scr
>>>>> ipts/v.fixed.segmentpoints.py", line 100, in main
>>>>>      vector_line_length =
>>>>> float(tmp.split('\n')[1].split('|')[1])
>>>>> IndexError: list index out of range
>>>>> (Thu Nov 13 21:40:08 2014) Befehl ausgeführt (2 Sek)
>>>>>
>>>>> any idea?
>>>>>
>>>>>
>>>> Could you try to print tmp with and without quiet?
>>>>
>>>
>>> http://trac.osgeo.org/grass/browser/grass-addons/grass7/
>>> vector/v.fixed.segmentpoints/v.fixed.segmentpoints.py#L102
>>>
>>> 102         # Read length
>>> 103         tmp = grass.read_command('v.to.db', map = voutline,
>>> 104                                          type = 'line',
>>> 105                                          layer = 1,
>>> 106                                          qlayer = 1,
>>> 107                                          option = 'length',
>>> 108                                          units = 'meters',
>>> 109                                          column = 'vlength',
>>> 110                                          flags = 'p')
>>> 111         vector_line_length = float(tmp.split('\n')[1].split('|')[1])
>>> 112
>>> 113         # Print vector line length
>>> 114         grass.message( "Vector line length in meter:" )
>>> 115         grass.message( vector_line_length )
>>> 116         grass.message( "----" )
>>>
>>> it's just to get the length of the vector line for further calculations:
>>>
>>> in normal and verbose mode:
>>>
>>> ----
>>> Lese Objekte...
>>> Vector line length in meter:
>>> 58858.3366368
>>> ----
>>>
>>> as Moritz points out, it seems quiet mode suppresses the access to the
>>> output of grass.read_command; his solution/workaround with GRASS_VERBOSE
>>> env
>>> variable seems not to work here on my side.
>>>
>>>
>> I'm afraid that --quiet supersedes any settings in the code, but am not
>> sure.
>
>
> So how about  setting quiet=False when calling v.to.db? Anyway I don't
> think quiet causes read_command to be completely silent, just run
>
> grass.read_command('r.info', map='elevation', flags='g', quiet=True)
>
> and it gives output as expected.
>

It's because of the header line:
cat|length
1|572.767146965659

but in quiet mode you get:

1|572.767146965659

so I would suggest set quiet=True for v.to.db and change the code for
parsing to expect just one line.

Anna



>
>>
>> Moritz
>>
>> _______________________________________________
>> grass-dev mailing list
>> grass-dev at lists.osgeo.org
>> http://lists.osgeo.org/mailman/listinfo/grass-dev
>>
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.osgeo.org/pipermail/grass-dev/attachments/20141114/9fec4b0c/attachment.html>


More information about the grass-dev mailing list