On Jun 16, 2009, at 11:06 PM, Markus GRASS wrote:
Michael Barton wrote:
On Jun 16, 2009, at 12:39 PM, Paul Kelly wrote:
On Tue, 16 Jun 2009, Michael Barton wrote:
In GRASS, displaying Layer 1 will show all objects for some vector
topologies, and only ID 1 and 2 for other topologies. However, by
putting
values into cat for Layer 1, you can also display ID's 3 & 4 for
Layer 1. You
can achieve the same effect by querying cat = 1 for Layer 2. The
difference
is that sometimes empty cats are displayed and sometimes they are
not. To me
this is kind of an automatic (inadvertent even) query. Some of this
is only
semantics, but I think we all agree that semantics can be
important.
IMHO these are all side-effects of the inconsistent way layers are
handled
amongst different GRASS modules. It's an implementation problem
(perhaps
caused by confusion among developers as options were added and
modified
over the years), rather than a fundamental problem with the layer
concept.
The inconsistent implementation is an issue certainly. I don't think
that there is a problem with underlying concept of the layer feature.
Indeed, it is a very powerful data management feature of GRASS. I
just
think that another name for the feature would help users to
understand
and make use of it better--especially since we also use the term
layers in the GUI layer manager to refer to superimposed displays of
distinct geospatial data files, a very common usage in GIS.
You may notice that you have to specify a vector layer for d.vect in
the
GUI layer manager, i.e. the GUI layer manager displays a vector layer
unless layer=-1. I bet you yourself use most of the time d.vect
layer=1
and not layer=-1.
I do. But that is because I prefer to use a linked attribute table to
control what is displayed, what is not displayed, and what is used for
labels--and usually only need to link a single table to do so. I
prefer the linked table because the actual cat values that make up
each layer table are more difficult to manage than an attribute table
linked to the vector file via the cat values. There is no way that I
know of to access and change these values directly--only through
v.category or v.reclass. In both cases, these programs display the
raster-like heritage of vector data management and layers, but we lack
the equivalent of a d.rast.edit. This also makes layers as now
structured difficult to use for differentially displaying sets of
vector objects.
While I'm happy with the way vector layers work now, but think they
should be called something different to avoid confusion with display
layers and OGR layers, several commentators are expressing a
preference for a function that does work like OGR layers to subset
vector objects within a file for display or other manipulation. If we
really want a structure that will subset a vector file into mutually-
exclusive groups like CAD layers, we need to rework how GRASS vector
layers actually work. In this sense, the database relationship should
be 1 layer to many vector objects, rather than the current 1 vector
object to many layers. Moreover, to make this truly useful, I suggest
we also look at changing vector manipulation modules (v.distance,
v.overlay, etc) so that selecting a layer works like a MASK in rasters
by only carrying out the operation on the objects that are grouped
into that layer. Other programs that use vector layers work in this
way, allowing you to "lock" a layer so that objects in that layer are
not altered during editing actions.
Michael
If we manage to come to a full understanding of the capabilities and
possibilities of the concept of vector layers in GRASS (which I feel
this
discussion is really helping us to work towards, for me anyway),
then it
would be an exciting project to do an audit of all vector modules
and
the
way they handle layers, and tidy up all the inconsistencies so
that the
meaning of layers is much more obvious, simply from the module
options and
flags. Perhaps too radical though.
Tidying up inconsistencies is not radical but regular maintenance
work IMHO.
Markus
_______________________________________________
grass-dev mailing list
grass-dev@lists.osgeo.org
http://lists.osgeo.org/mailman/listinfo/grass-dev