[GRASS-dev] terminology issues in grass7
Moritz Lennert
mlennert at club.worldonline.be
Wed Jun 17 11:48:35 EDT 2009
On 17/06/09 14:58, Roger Miller wrote:
> The "layer=" feature of the commands seems to me to be largely if not
> entirely superfluous. The function that it performs can be duplicated
> by "where="
This would mean mixing different types of objects into the same layer
and thus the same attribute table. I.e. in the field boundaries = roads
example, you would have to use the same table for the centroids
characterising the fields and for the boundary line which (also)
represents a road.
Not very clean in my understanding...
> and/or "catlist=".
But this supposes that the user knows the cats, which often is not the
case, and it eliminates the possibility of linking different types of
objects to different attribute tables.
So, neither of these would really replace the current layer feature.
> Further, the term "layer" is widely used
> with other meanings in fields where GIS is applied and that leads to
> confusion.
As has already been said, "layer" is used in different ways, even within
the GIS world. The OGR definition of layers is not really identical to
the definition used by some softwares. The choice in GRASS at the time
was to attempt to stick as close to the OGR definition as possible,
while providing, withing GRASS, additional possible uses of layers.
Just to make this more visual:
d.vect testlayers2 layer=1 fcol=green
d.vect testlayers2 layer=2 fcol=red icon=basic/circle size=10
d.vect testlayers2 layer=3 col=blue width=5 type=line
giving you
http://geog-pc40.ulb.ac.be/grass/misc/layer_example.png
This is the "classical" CAD model. Main advantage: you only have to
carry around one vector map, instead of three and you might be able to
more easily work out topology between the different features (although
I'm not sure this is true). But I agree that the advantages of this
usage are debatable and one can argue that splitting up the three
"themes" into three separate maps is cleaner.
However, consider this example:
d.vect testlayers3 layer=1 -c
d.vect testlayers3 layer=2 cat=1 width=3 col=blue
d.vect testlayers3 layer=3 size=10 type=point icon=basic/circle fcol=green
which gives you:
http://geog-pc40.ulb.ac.be/grass/misc/layer_example2.png
Here, the boundary between the two fields in layer 1 is also part of the
path with cat 1 in layer 2. Or, said the other way around, it is the
path which defines the boundary between the two fields.
Now, when this path is diverted, thus also changing the form of the
field, you only have to move this line once to get something like this:
http://geog-pc40.ulb.ac.be/grass/misc/layer_example3.png.
This example highlights the use of layers for ensuring data integrity,
i.e. making sure that the path is always the same line as the boundary.
You will notice that I have not used any attribute tables in this example.
I think one of the problems is that many people are used to shapefiles
and thus think of layers as separate files, each containing different
types of objects, but that is a very restrictive, data-format driven
understanding of layers and falls apart as soon as you look at DXF, DGN
or (AFAIU) Tiger files.
Moritz
More information about the grass-dev
mailing list