[GRASS-dev] Re: [GRASSLIST:962] Re: GRASS and vector lines: how can I change the direction of digitized lines?

Maciek Sieczka werchowyna at epf.pl
Tue May 16 02:14:31 EDT 2006


(I've already sent this message yesterday, but it didn't make it to the
list, thus resending)



Hamish, All,

Improved (still to be improved further) v.flip 1.1 is attached. Please
take a look at my writing below.



On Mon, 15 May 2006 15:29:03 +1200
Hamish <hamish_nospam at yahoo.com> wrote:

>some hints follow,

<snip>

> Maciek wrote:

>> 2. I use "v.clean tool=snap thresh=0.01" to re-connect the flipped
>> and the remaining original lines. Is it 100% robust? No risk that
>> some won't be connected?

>If anything I would make thresh much smaller so that no new lines are
>snapped. The coordinates should not be changed unless you did printf %f
>from awk (shortens decimal precision, use %s to output full input
>string instead of proccessing as a number). So snapping should be
>exact.

I see. I don't do any maths on coordinates, I only use awk to select
particular lines from v.out.ascii output and pipe them into another
file, in a given order, so I should be on the safe side here.

Is it possible to estimate what treshold should be enough? 0.0001,
else???

>eval `g.findfile element=vector file="$INPUT"`
>    if [ ! "$file" ] ; then
>
>can be shortened, g.findfile returns 1 if the file wasn't found.
>see r.blend:
>http://freegis.org/cgi-bin/viewcvs.cgi/grass6/scripts/r.blend/r.blend?rev=HEAD
>
>just leave those tests out for input= and output=, g.parser checks
>that maps do/don't exist given the rules in "#% gisprompt :",
>--overwrite, etc.

These are cool, thanks. Done.

>Call temporary maps like tmp_vflip_$$_toflip:
>tmp_${PROG} makes it easy to spot orphans, $$ gives it a 1 in 32k
>chance of being unique.

I'm already using $$, I think (TMP="`g.tempfile pid=$$`"). Is this
what you mean? Added $PROG, thanks.

>It is easier to read, if instead of
>
>output=$OUTPUT"_toflip"
>  you do
>output=${OUTPUT}_toflip
>  or
>output="${OUTPUT}_toflip"

Is the 1st one error prone or only "not nice"?

Is any of the 2 you recommend better? I'll correct my script
accordingly.

>you probably want to use "sort -n" instead of "sort" so you don't get
>1
>13
>2
>20
>etc.

In my case it doesn't matter - I only need to put identical words one
after another to filter out only 1 instance of each of them with uniq.

>asis=`cat $TMP.cat_asis`
>asis=`echo $asis | sed 's/ /,/g'`
>probably hit the limitied size cap for a shell variable? (4096 chars?)
>Use a tmp file.

Hmm, $asis is an input in the line 129:

v.extract -t layer=$LAYER input=$INPUT list=$asis output=
$OUTPUT"_leaveasis"

list= has to be a single, long string of numbers separated with ",". So
even if I avoid hitting the 4096 chars limit of a bash variable by
doing all in a TMP file, I will finally have to pass it to "v.extract
list=" as a one string, which will make it fail if the string is
longer than 4096 (is my thinking correct?).

A possible workaround would be to to convert long, continous sets
like eg. 1,2,3,4,5,...,100 into 1-100 and so on to save space. Is there
an easy way of doing it?


>for a in $start_stop
>do
>..
>done
>
>make it easier to follow by indenting the inner part of the loop by a
>few spaces.
>
>see also v.out.ascii.db (wiki add-ons) and v.in.garmin (complex awk+tac
>vector ascii format flipping to count vertices) scripts.

Thank you very much for all the hints. I really appreciate your help.

Best,
Maciek


--------------------
W polskim Internecie s? setki milion?w stron. My przekazujemy Tobie tylko najlepsze z nich!
http://katalog.panoramainternetu.pl/
-------------- next part --------------
A non-text attachment was scrubbed...
Name: v.flip_11
Type: application/octet-stream
Size: 4975 bytes
Desc: not available
Url : http://lists.osgeo.org/pipermail/grass-dev/attachments/20060516/a2e79e76/v.obj


More information about the grass-dev mailing list