Skip to content

Commit 2defaff

Browse files
committed
[processing] Much faster random points in polygon by using
prepared geometries
1 parent 81aa2f9 commit 2defaff

File tree

1 file changed

+7
-1
lines changed

1 file changed

+7
-1
lines changed

python/plugins/processing/algs/qgis/RandomPointsPolygons.py

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -136,6 +136,9 @@ def processAlgorithm(self, parameters, context, feedback):
136136
if feedback.isCanceled():
137137
break
138138

139+
if not f.hasGeometry():
140+
continue
141+
139142
current_progress = total * current
140143
feedback.setProgress(current_progress)
141144

@@ -147,6 +150,9 @@ def processAlgorithm(self, parameters, context, feedback):
147150
continue
148151

149152
fGeom = f.geometry()
153+
engine = QgsGeometry.createGeometryEngine(fGeom.constGet())
154+
engine.prepareGeometry()
155+
150156
bbox = fGeom.boundingBox()
151157
if strategy == 0:
152158
pointCount = int(value)
@@ -176,7 +182,7 @@ def processAlgorithm(self, parameters, context, feedback):
176182

177183
p = QgsPointXY(rx, ry)
178184
geom = QgsGeometry.fromPointXY(p)
179-
if geom.within(fGeom) and \
185+
if engine.contains(geom.constGet()) and \
180186
vector.checkMinDistance(p, index, minDistance, points):
181187
f = QgsFeature(nPoints)
182188
f.initAttributes(1)

0 commit comments

Comments
 (0)