<html><head></head><body><div class="ydpd4abf845yahoo-style-wrap" style="font-family:Helvetica Neue, Helvetica, Arial, sans-serif;font-size:13px;"><div></div>
        <div dir="ltr" data-setdir="false">You might want to try generating a random diameter for the points in the symbology. For example using a Graduated symbology set the Value to 'rand(2, 20)' and Method to Size. You could then adjust the color for each of the classes to add even more variability.</div><div dir="ltr" data-setdir="false"><br></div><div dir="ltr" data-setdir="false">-Thayer</div><div dir="ltr" data-setdir="false"><br></div><div><br></div></div><div id="ydp67cbe5f0yahoo_quoted_0282854523" class="ydp67cbe5f0yahoo_quoted"><div style="font-family:'Helvetica Neue', Helvetica, Arial, sans-serif;font-size:13px;color:#26282a;"><div><div dir="ltr">Date: Mon, 18 May 2020 14:02:18 -0500<br></div><div dir="ltr">From: David Fawcett <<a href="mailto:david.fawcett@gmail.com" rel="nofollow" target="_blank">david.fawcett@gmail.com</a>><br></div><div dir="ltr">To: qgis-user <<a href="mailto:qgis-user@lists.osgeo.org" rel="nofollow" target="_blank">qgis-user@lists.osgeo.org</a>><br></div><div dir="ltr">Subject: [Qgis-user] Geometry Generator - Generating buffered points<br></div><div dir="ltr">    from    polys<br></div><div dir="ltr">Message-ID:<br></div><div dir="ltr">    <CAF7K3b_q3S4AAR+ZbpfqhEo3-xCRv-MXBFL7bf6PdVVz+<a href="mailto:RR56g@mail.gmail.com" rel="nofollow" target="_blank">RR56g@mail.gmail.com</a>><br></div><div dir="ltr">Content-Type: text/plain; charset="utf-8"<br></div><div dir="ltr"><br></div><div dir="ltr">Hi,<br></div><div dir="ltr"><br></div><div dir="ltr">I am working through an exercise to figure out the best way to represent<br></div><div dir="ltr">some wooded areas in a map that I am making.<br></div><div dir="ltr"><br></div><div dir="ltr">The current iteration uses geometry generators to create slightly<br></div><div dir="ltr">randomized points to fill the polygons that represent wooded areas. I based<br></div><div dir="ltr">it off of the great examples at<br></div><div dir="ltr"><a href="https://impermanent.io/2017/05/05/generative-pseudo-random-polygon-fill-patterns-in-qgis/" rel="nofollow" target="_blank">https://impermanent.io/2017/05/05/generative-pseudo-random-polygon-fill-patterns-in-qgis/</a><br></div><div dir="ltr">And, it works great!<br></div><div dir="ltr"><br></div><div dir="ltr">After looking at it a while, I want to introduce some variability in the<br></div><div dir="ltr">size of the point symbols too.<br></div><div dir="ltr"><br></div><div dir="ltr">I have two ideas on how to do that:<br></div><div dir="ltr"><br></div><div dir="ltr">The first one is to create and populate an attribute for each point<br></div><div dir="ltr">feature, and then apply symbology rules based on that value. The challenge<br></div><div dir="ltr">is that right now, my custom function is returning multi-point features, so<br></div><div dir="ltr">all of the points within a forest poly would have the same attribute.<br></div><div dir="ltr"><br></div><div dir="ltr">I am currently pursuing the second one. That strategy is to use the same<br></div><div dir="ltr">altered grid of points, and then buffer each point. I am having a hard time<br></div><div dir="ltr">figuring out how to return a layer with several multi-polygon features<br></div><div dir="ltr">created by buffering the points.<br></div><div dir="ltr"><br></div><div dir="ltr">In this example, "buffer" is not defined, so the expression is invalid.<br></div><div dir="ltr"><br></div><div dir="ltr">  for xOff in range(countX+1):<br></div><div dir="ltr">    for yOff in range(countY+1):<br></div><div dir="ltr">      ptX = xMin + xOff*(xInterval) + rand * random.uniform(0,xInterval)<br></div><div dir="ltr">      ptY = yMin + yOff*(yInterval) + rand * random.uniform(0,xInterval)<br></div><div dir="ltr"><br></div><div dir="ltr">      pt = QgsPointXY(ptX,ptY)<br></div><div dir="ltr">      point = QgsGeometry.fromPointXY(pt)<br></div><div dir="ltr"><br></div><div dir="ltr"><br></div><div dir="ltr">      if feature.geometry().contains(point):<br></div><div dir="ltr">          sym = buffer(point,200.0,10)<br></div><div dir="ltr">          #points.append(pt)<br></div><div dir="ltr">          bufs.append(sym)<br></div><div dir="ltr"><br></div><div dir="ltr">  return collect_geometries(bufs)<br></div><div dir="ltr"><br></div></div>
            </div>
        </div></body></html>