[GRASS-user] nan values by v.generalize

Dylan Beaudette dylan.beaudette at gmail.com
Sun Dec 16 13:31:44 EST 2007


On Sunday 16 December 2007 03:16:52 am Daniel Bundala wrote:
> 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

That sounds reasonable to me. Once it is posted, I will try and construct a 
couple pathological cases to test it against.

cheers,

Dylan


>
> 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