[GRASS-user] nan values by v.generalize

Wolf Bergenheim wolf+grass at bergenheim.net
Sun Dec 16 13:03:53 EST 2007


I think that would be OK.

If you send the patch to the list I'll commit it to trunk and the 6.3
release branch.

--Wolf

On 16.12.2007 13:16, 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
> 
> 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
>>
>>
> _______________________________________________
> grass-user mailing list
> grass-user at lists.osgeo.org
> http://lists.osgeo.org/mailman/listinfo/grass-user

-- 

<:3 )---- Wolf Bergenheim ----( 8:>



More information about the grass-user mailing list