[GRASS5] line types

rgrmill at rt66.com rgrmill at rt66.com
Tue Apr 9 12:31:44 EDT 2002


Radim wrote:

> I cannot agree. You are still talking about your one special case.

No, it isn't one special case.  It is a fairly general case.  Many of us 
have to deal with public data sets.  The data sets tend to be large, 
they tend to be imperfect and they often don't fit the GRASS vector 
model.

> You are missing some functionality for some modules. I think that what 
you 
> need is 'type=edge,line' instead of only 'type=line', you can add 
'edge'
> type to that modules. 

This is a change that I can make myself.  It's a simple work around for 
these two modules.  There are certainly other modules that share the 
problem.

> Instead, you propose as a solution, to limit grass funcionality to 
only area 
> edges. I don't think that it is good idea, to resolve problems of 
missing 
> funcionality by another reduction of existing functionality. Better is 
to 
> extend existing options.

This isn't a matter of limiting functionality.  If a user needs to 
distinguish between lines and area edges then the functionality is 
already there in the category values and in layer separation.  Removing 
the distinction between area edges and lines can actually increase the 
functionality.  I already demonstrated that by removing the distinction 
from two modules and getting behavior out of those modules that I could 
not get otherwise.

As a practical matter I think it's always best to start with simple 
concepts and make them work perfectly before complicating things.

The division between lines of type "line" and lines of type "area edge" 
is wrong; it's a bad model.  There is no actual distinction between the 
edge of an area and a line.  A fence is also an edge of a field.  A user 
could very reasonably want to know both the length of the fence line and 
the area of the field. A single object should be able to serve both 
functions. Trying to draw and maintain a synthetic distinction may work 
for some things but in the long run I don't think that it is a good 
idea.

> I can give you some examples where to distinguish edges and lines is 
usefull:
> 
> 1) map with mixed area and line features:
> - line feature in area, obviously it may not be area edge, otherwise 
build
>    fails
> - report size for lines (length) and areas (area), of course here we 
don't
>    want lengt of areas' perimeters (BTW, I used this many times)
> 
> 2) map with one feature type
> - imagine road network, if you use only area edges, build process 
will
>    try to build ares (lost time), it will report problems with 
topology
>    because some areas are not closed (free ends of roads), and if user 
query
>    the map with d.what.vect, he will get report on area sizes - is not 
that
>    confusing for road network?

A lot of problems can be avoided by separating line features and areas 
into different data sets.  Once they're separated the distinction should 
be insignificant.  What difference should the line type make if the data 
set contains only one type of data?  Category values can also be used to 
draw the distinction.

The behavior of queries is certainly something we can adjust, so I don't 
find that to be a strong argument against simplifying the system.  

Errors in building the topology are nothing new.  I guess I would worry 
more about reported errors in the build if the system worked now without 
errors.  It doesn't.

Finally, I far prefer spending a few extra minutes waiting for v.support 
to build extra areas to spending days manually assigning the correct 
line types.  Imagine digging through 45,000 lines of type "line" to 
manually toggle 10,000 lines to "area edge" so that they can be used to 
define areas.


Roger Miller





More information about the grass-dev mailing list