[GRASS-user] Count points in a network between two locations

Moritz Lennert mlennert at club.worldonline.be
Mon Feb 4 04:49:26 PST 2013


On 04/02/13 12:29, Markus Metz wrote:
> On Sat, Feb 2, 2013 at 12:51 PM, Moritz Lennert
> <mlennert at club.worldonline.be>  wrote:
>> On 01/02/13 19:55, Markus Metz wrote:
>>>
>>> On Fri, Feb 1, 2013 at 6:39 PM, Moritz Lennert
>>> <mlennert at club.worldonline.be>   wrote:
>>>>
>>>> On 01/02/13 11:44, Johannes Radinger wrote:
>>>>
>>>>
>>>>>     the problem is that the v.net.allpairs lines are partly
>>>>> overlapping (sharing parts). So there
>>>>> are several barriers on partly overlapping lines, but I want to select
>>>>> all barriers per line category.
>>>>
>>>>
>>>>
>>>>
>>>> IIUC v.net.allpairs actually creates several duplicate segments which
>>>> seems
>>>> contrary to GRASS topology rules.
>>>
>>>
>>> GRASS topology supports overlapping lines.
>>
>>
>> Yes, but having several overlapping line segments that are actually the
>> representation of the exact same path kind of seems against the idea of not
>> duplicating information if not necessary.
>>
>>
>>>
>>>> Shouldn't these rather be represented by
>>>> single segments with multiple category values (like v.buffer in grass7) ?
>>>
>>>
>>> Yes, but only if the segment directions are also identical. For
>>> example, if backward direction costs are identical to forward
>>> direction costs, the path from node A to node B is a duplicate of the
>>> path from node B to node A, but in reverse direction.
>>
>>
>> Right, didn't think about direction here. I was more thinking about the
>> situation where paths from A to B, C, D, E all have a common part before
>> forking to the respective destination later on.
>>
>> But I guess even for this situation overlapping lines are not so much of an
>> evil to justify making this into an issue.
>
> Fixed in r54893.

v.net in=roadsmajor points=schools_wake out=network --o op=connect 
thresh=500
time v.net.allpairs input=network at user1 output=allpairs cats=1-999 --o

r53630

real	0m0.992s
user	0m0.416s
sys	0m0.436s


r54893

Ctrl-C at 78%:
real	26m37.379s
user	26m12.010s
sys	0m10.641s

This is on a very old system (P4 !), but still, this seems a very strong 
performance regression.

Using the old version of v.net.allpairs and then submitting the result 
to v.clean tool=rmdupl:

time v.clean allpairs out=allpairs_rmdupl tool=rmdupl --o
real	0m10.943s
user	0m4.616s
sys	0m5.596s

going from

Number of nodes: 34
Number of primitives: 1156
Number of points: 34
Number of lines: 1122

to

Number of nodes: 34
Number of primitives: 595
Number of points: 34
Number of lines: 561

which just seems to fusion forward and backward paths.

Trying to run with tool=break,rmdupl gives me the following error:

ERROR: Nodes not available for line 1

Moritz


More information about the grass-user mailing list