[GRASS-user] nan values by v.generalize

Daniel Bundala bundala at gmail.com
Sun Dec 16 06:16:52 EST 2007


Dylan,

I was thinking about the problem last night and a solution I have come
up with is the following.

As I mentioned in my previous post, a solution is to translate the
corresponding points little bit. I do not know how good this technique
is, but we can use it "approximate" the tangent at the point in
between. My reasoning is: Take two points p1, p2 which are L metres
apart. And we send p1 to p2 (or vice verse), i.e. L goes to 0 and take
the limit. Then we get (according to the calculation I do in
v.generalize) that the tangent is zero.

I think that this behaviour is consistent with the other possible
situations and shapes of lines. Especially, it would be better if the
algorithm does something "reasonable" which imitates the situations if
the points are close to each other.

If no-one is against this, I will add that one line to the code...

Daniel

On Dec 15, 2007 8:36 PM, Dylan Beaudette <dylan.beaudette at gmail.com> wrote:
> On Saturday 15 December 2007 05:38:44 am Daniel Bundala wrote:
> > Hello,
> >
> > I am not 100% certain as I did not test it, but I think that the
> > problem is that the very last line in myvect map contains 2 points at
> > the exactly same position (131.5, 67.5). Actually, you are so lucky to
> > get this (faulty?) behaviour:) because this occurs only if there is
> > exactly one point in between them. In your case, 2nd and 4th points
> > have the same position whereas 3rd is at a different position.
> >
> > Possible solutions are:
> > -Firstly, is your map correct? I mean, does it make a sense to you
> > that one of your lines is of this strange shape?
> > -If yes, then I believe that the behaviour of the algorithm is
> > undefined. Because Hermitian interpolation needs to have some "notion"
> > of a tangent at each point. And I really don't know what can be a good
> > choice of a tangent at points like your 3rd point on the last line.
> > -So you can either use different smoothing algorithm (Chaiken?) or
> > shuffle the second and fourth point little bit so that they do not
> > coincide. In other words, translate the second point to 131.5000001
> > 67.500001 and fourth point to 131.49999999 67.499999 say. In the later
> > case, I doubt that the output of v.generalize will be particularly
> > nice......
> >
> > Hope this helps,
> > Daniel
>
>
> Daniel / others:
>
> how about doing a first pass to check for points / segments where the
> requested interpolator is undefined ? That way an appropriate warning could
> be issued along with suggestions like you have presented.
>
> I suppose that a moving window on the vertices could accomplish this, checking
> for the conditions above.
>
> What do you think?
>
> Cheers,
>
> Dylan
>
>
> > On Dec 14, 2007 4:41 PM, Andre Hauptfleisch <ahaupt at gmail.com> wrote:
> > > I've attached the myvect and myvect_smooth files.
> > >
> > > Thanks for the help!!
> > >
> > >
> > >
> > >
> > > On Dec 14, 2007 4:53 PM, Moritz Lennert <mlennert at club.worldonline.be >
> > >
> > > wrote:
> > > > On 14/12/07 15:37, Andre Hauptfleisch wrote:
> > > > > I'll try to upload the vector layer I used to an ftp site. What would
> > > > > the best output format be? DXF?
> > > >
> > > > You can just use the output of v.out.ascii. If the file is not too
> > > > large, you can zip the output and send it to me directly.
> > > >
> > > > Moritz
> > > >
> > > > > On Dec 14, 2007 4:13 PM, Moritz Lennert <
> > > > > mlennert at club.worldonline.be
> > > > >
> > > > >
> > > > >
> > > > > <mailto: mlennert at club.worldonline.be>> wrote:
> > > > >
> > > > >     On 14/12/07 14:48, Andre Hauptfleisch wrote:
> > > > >      > Good day guys,
> > > > >      >
> > > > >      > I came across a problem in the v.generalize module. I do the
> > > > >
> > > > >     following:
> > > > >      > v.generalize input=myvect at test output=myvect_smooth type=line
> > > > >      > method=hermite threshold=10
> > > > >      >
> > > > >      > I then do a v.out.svg and noticed the following line in the
> > > > >      > svg
> > >
> > > file:
> > > > >      > <path gg:cat="31" d="M 111.500000 -80.500000 l 8.734748
> > > > >      > 4.771559 9.907176 6.337565 nan nan nan nan nan nan nan nan nan
> > > > >      > nan" />
> > > > >      >
> > > > >      > Any idea how I can get rid of those nan's? They cause stuff
> > > > >      > such
> > >
> > > as
> > >
> > > > >      > v.to.rast to hang.
> > > > >
> > > > >     I cannot reproduce this with the speafish60 dataset:
> > > > >
> > > > >     v.out.svg input=roads at PERMANENT output=roads type=line
> > > > > precision=6 layer=1
> > > > >
> > > > >     and
> > > > >
> > > > >     v.generalize input=roads at PERMANENT output=roads_smooth type=line
> > > > >     method=hermite threshold=10 look_ahead=7 reduction=50 slide= 0.5
> > > > >     angle_thresh=3 degree_thresh=0 closeness_thresh=0
> > >
> > > betweeness_thresh=0
> > >
> > > > >     alpha=1.0 beta=1.0 iterations=1 layer=1
> > > > >
> > > > >     v.out.svg input=roads_smooth at user1 output=roads_smooth type=line
> > > > >     precision=6 layer=1
> > > > >
> > > > >     Both give me svg files without nan's.
> > > > >
> > > > >     Can you reproduce this with spearfish data ? Can you look at the
> > >
> > > line
> > >
> > > > >     with cat=31 in your grass vector (maybe in v.digit) and see if
> > > > > there
> > >
> > > is
> > >
> > > > >     anything abnormal about it ?
> > > > >
> > > > >     Moritz
> > > > >
> > > > >
> > > > >
> > > > >
> > > > > --
> > > > > Groete,
> > > > > Andre Hauptfleisch
> > > > >
> > > > > M: 082 5722 469
> > > > > F: 086 687 1106
> > > > > E: ahaupt at gmail.com <mailto:ahaupt at gmail.com>
> > >
> > > --
> > > Groete,
> > > Andre Hauptfleisch
> > >
> > > M: 082 5722 469
> > > F: 086 687 1106
> > > E: ahaupt at gmail.com
> > > _______________________________________________
> > > grass-user mailing list
> > > grass-user at lists.osgeo.org
> > > http://lists.osgeo.org/mailman/listinfo/grass-user
> >
> > _______________________________________________
> > grass-user mailing list
> > grass-user at lists.osgeo.org
> > http://lists.osgeo.org/mailman/listinfo/grass-user
>
>
>


More information about the grass-user mailing list