Re: [GRASS-user] Feed and manipulate the result of v.distance -pa in python

2010-08-04 Thread Hamish
Nikos Alexandris wrote:
 I need to convert the following bash-one-liner:
 
 v.distance --q -pa from=ref_points to=coi_points upload=cat \
   column=anycol | cut -d| -f2 | sort -nu | tail -1
 
 into python.
 
 My unsolved problem is that v.distance -pa returns for
 example thousands of 
 lines in the following format:
 ...
 7839|16
 7839|17
 7839|22
 7839|23
 7839|24
 
 Reading the main command in python is not the problem
 (although I am a bit 
 confused between grass.pipe, grass.feed, grass.read). Are
 there any examples 
 (scripts in grass trunk maybe?) to follow in order to split
 the output, keep 
 the second column, sort and keep the maximum? Actually
 the split is what 
 worries me most. I 've been looking for quite some time to
 find something that 
 gives me a strait answer but no luck yet.

try v.rast.stats.py:   cats.append(line.rstrip('\r\n').split(';')[0])

that splits on ; as the sep, and takes the first entry (column counting
starts at 0 not 1 here)

so for you:   line.split('|')[1]

no idea about sorting, but you may be able to program a loop which 
starts out empty and only updates if the line's dmax is bigger that the
one stored in the overall variable's, or if the variable is empty (for
the first).


Hamish



  
___
grass-user mailing list
grass-user@lists.osgeo.org
http://lists.osgeo.org/mailman/listinfo/grass-user


[GRASS-user] Feed and manipulate the result of v.distance -pa in python

2010-08-03 Thread Nikos Alexandris
Hi!

I need to convert the following bash-one-liner:

v.distance --q -pa from=ref_points to=coi_points upload=cat column=anycol | 
cut -d| -f2 | sort -nu | tail -1

into python.

My unsolved problem is that v.distance -pa returns for example thousands of 
lines in the following format:
...
7839|16
7839|17
7839|22
7839|23
7839|24

Reading the main command in python is not the problem (although I am a bit 
confused between grass.pipe, grass.feed, grass.read). Are there any examples 
(scripts in grass trunk maybe?) to follow in order to split the output, keep 
the second column, sort and keep the maximum? Actually the split is what 
worries me most. I 've been looking for quite some time to find something that 
gives me a strait answer but no luck yet.

The idea is to feed later on v.what.vect with a dmax= as this seems to 
reduce the eXtremely slow v.distance process as suggested by MoritzL in [1] 
(v.distance is running for 2 days here over large files[*]!).

I timed two different versions of v.what.vect (with and without dmax=) and 
it seems to make a difference (tested however in small spearfish vector data). 
All this as part of a horrible script of mine [2]. I feel however that this 
fits as an enhancement to v.what.vect itself.

Regards, Nikos
---

[1] http://lists.osgeo.org/pipermail/grass-user/2009-May/050330.html

[*] e.g. first result after 10h:

Finding nearest lines...
Finding nearest areas...
404347 categories read from the map
404347 categories exist in the table
404347 categories read from the map exist in the table
404347 records updated
...

[2] Script pareto_3 within the tarred attached file in 
http://trac.osgeo.org/grass/ticket/804
___
grass-user mailing list
grass-user@lists.osgeo.org
http://lists.osgeo.org/mailman/listinfo/grass-user