I have a point shapefile which has for a few occasions multiple points with the same ID. Doesn't look nice with the normal label-display. Is it possible in QGIS to only display one label then? I couldn't find a check/uncheck option... Perhaps it would be possible to retrieve labels via a SQL-query, with a »GROUP BY id«?
3 Answers
I assume that you have multiple features with the same ID and not real multipoint. If needed there is also a solution with real multipoint, let me know.
You can add an integer field to your shapefile that you populate with 1 if you want to display the label for this features and 0 for others.
Then in the renderer of the label use data-defined property for show or not labels.
EDIT :
Answer by @Kazuhito gave me an idea to go further.
You can also add two fields (x_lbl and y_lbl for example) and use them to get a total control on the placement of your label by using data-defined properties for label placement. Fill these fields with the coordinates where you need your label, you can then modify easily the place from the QGIS Interface. Look for this buttons:
-
1I'm wondering if you have found any solution to labeling multipoint features because I'm stuck with this problem for real multipoint geometries now... Feb 28, 2019 at 21:39
If a virtual layer
is an option,
SELECT id, st_pointonsurface(st_union(geometry))
FROM your_layer
GROUP BY id
will place a point at around the center of each group.
I like the answer by @YoLecomte , which gives us more control to select where to put the label.
Another option is to use "Collect Geometries" under the Vector->Geometry Tools menu. Then choose the field to group them by. This will create multipart geometries with one table record and only one label will be generated for grouped features.