[GRASS-dev] Re: [GRASS-user] vector layer labelling doesn't work....

Moritz Lennert mlennert at club.worldonline.be
Sun Aug 10 12:11:12 EDT 2008


On 10/08/08 17:37, Michael Barton wrote:
> 
> 
> On Aug 9, 2008, at 5:48 AM, <grass-user-request at lists.osgeo.org> wrote:
> 
>> I have no definite opinion on this, but I see Giovanni's point and I
>> think the latest patch I posted responds to this: labelling areas when
>> areas+labelling is asked for, without showing centroids...
>>
>> So, let's ask for more opinions: should labelling of areas be linked to
>> centroids only, and thus display of centroids obligatory for seeing
>> labels for areas, or should labels for areas be displayed even if
>> centroids aren't ?
>>
>> I filed this as an enhancement ticket on Trac:
>> http://trac.osgeo.org/grass/ticket/252, so maybe discussion should go on
>> there.
> 
> Let me suggest something more radical, since we're rethinking this for 
> GRASS 7 too.
> 
> Do we really NEED an explicit and user accessible vector area centroid? 
> What for?
> 
> The "centroid" is NOT in the center of an area poygon. It can be 
> anywhere inside. It is only a place holder to differentiate an area from 
> a boundary. It is a feature of GRASS's internal structure for creating 
> vector objects from primitives. It currently also serves as the area 
> labeling point, but annoyingly has to be displayed just to see a label. 
> But what else does it do from the GIS use point of view?
> 
> I suggest the following...
> 
> 1) Area centroids should always be created by GRASS (not by a user 
> clicking a point somewhere in the area), and they should be the 
> geographic centroid of the area. In this way, they have topological 
> significance and can be used for some vector operations.

That is not possible as sometimes the geographic centroid of an area 
lies outside the area.

> 2) Area centroids are never displayed by default, but like line 
> directions can be displayed and accessed if needed.

+1
This should just be a very minor change in d.vect, i.e.

--- main.c      2008-08-10 17:53:47.000000000 +0200
+++ main.c.copy 2008-08-10 17:54:22.000000000 +0200
@@ -139,7 +139,7 @@

      /* Query */
      type_opt = G_define_standard_option(G_OPT_V_TYPE);
-    type_opt->answer = "point,line,boundary,centroid,area,face";
+    type_opt->answer = "point,line,boundary,area,face";
      type_opt->options = "point,line,boundary,centroid,area,face";
      type_opt->guisection = _("Query");


> 3) Area centroids can be associated with labels or not be associated 
> with labels. I can see utility of doing either.

I think the question goes beyond labels. Centroids are the main element 
representing areas. Attributes are attached to centroids, as areas do 
not have a "physical" representation, which IIUC is due to the 
topological logic of GRASS features, as you cannot unambigously 
associate identify the area a boundary belongs to, so you need something 
inside the area. So, by definition, any attribute information pertaining 
to areas is associated with the centroid.

Moritz


More information about the grass-dev mailing list