1

In QGIS 3.22 I have got 2,000 points distributed unevenly over 50 shp. All the points in each shp have the same coordinates and stand for ecological observations. They are represented by displaced symbols on a common ring for each shp.

Is there a way to align the ring symbols (or the shapefiles) on a vertical line next to the actual positions?

  • maybe using specific coordinates (i.e. with a common X, but different Y)? I have read about the Vertex Editor working with coordinates, but it seems that it only works for a single vertex/point, and I don't want to do that for each single one of those 2,000 points.

  • or might there be a symbology tool that does just that?

  • or is there a variable approach to it?

edit: Here is a screenshot of a part of my map, indicating what I want it to look like. Since the map has to cover the whole area and the symbol rings overlap a lot at that scale, I want them to spread across the page and be aligned top to bottom on the left hand side. (To clarify which place each symbol refers to, my idea was to add one layer with labelled single markers for the actual positions and another one with line vectors connecting each marker point with its corresponding symbol.)

enter image description here

edit: This is what it looks like after using the Geometry Generator with @Babel's expression (I changed the original "+ 50000" to "+ 50", otherwise the symbols would not show up at all):

make_point (
x_min (@map_extent) + 50, -- distance from left border of map canvas
y_max  (@map_extent) - $id * 10 -- vertical distance

)

enter image description here

shoebird
  • 19
  • 3
  • Maybe a hint : Geometry Generator layer symbol with translate expression : https://docs.qgis.org/3.22/en/docs/user_manual/expressions/functions_list.html?#translate – J. Monticolo Dec 02 '22 at 09:26
  • 1
    Can you provide a screeshot - what you have and how the result should look? Otherwise it's difficult to imagine. – Babel Dec 02 '22 at 09:41
  • @Babel I've added a screenshot. – shoebird Dec 02 '22 at 10:57
  • See here, the header color legend: https://gis.stackexchange.com/a/385506/88814 If I understood it correctly, it is similar to what you want to do, right? – Babel Dec 02 '22 at 12:38
  • I think you mainly have a semiologic issue. Couldn't you make the symbols easier to differenciate and understand, while taking less place ? – Cupain Dec 02 '22 at 12:40
  • @Babel Thank you, yes, that is what I want. When I add the expression from your example to my symbols, they are moved to the left edge of the map, which is good. However, they end up stacked on top of each other, leaving behind an empty ring. – shoebird Dec 05 '22 at 11:02
  • Can you show a screenshot of the result and the expression you used? – Babel Dec 05 '22 at 11:06
  • @Cupain I see your point. Right now, I don't know how to simplify the symbols, since they store information on three different variables plus the spatial data. Have to think about it. – shoebird Dec 05 '22 at 11:07
  • Adapt the $id * 10 part choose a number that corresponds to a suitable vertical distance. If unsure and don't have success, alternatively resplace with something like: $id * ( y_max(@map_extent) - y_min(@map_extent)) / 10 and change 10 by the numer of points you have + 1. – Babel Dec 05 '22 at 14:11
  • Or even easier than finding a number: replace 10 by (array_length(array_agg( $id)) +1 ), so it evenly distributes vertically the number of points you have. – Babel Dec 05 '22 at 14:16

0 Answers0