Skip to content

Commit 6e4fbf8

Browse files
committed
move common function to tools package
1 parent 72997dc commit 6e4fbf8

File tree

4 files changed

+26
-52
lines changed

4 files changed

+26
-52
lines changed

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

+2-17
Original file line numberDiff line numberDiff line change
@@ -38,7 +38,7 @@
3838
from processing.parameters.ParameterExtent import ParameterExtent
3939
from processing.parameters.ParameterNumber import ParameterNumber
4040
from processing.outputs.OutputVector import OutputVector
41-
41+
from processing.tools import vector
4242

4343
class RandomPointsExtent(GeoAlgorithm):
4444

@@ -90,7 +90,7 @@ def processAlgorithm(self, progress):
9090
pnt = QgsPoint(rx, ry)
9191
geom = QgsGeometry.fromPoint(pnt)
9292
if geom.within(extent) and \
93-
self.checkMinDistance(pnt, index, minDistance, points):
93+
vector.checkMinDistance(pnt, index, minDistance, points):
9494
f = QgsFeature(nPoints)
9595
f.initAttributes(1)
9696
f.setFields(fields)
@@ -110,18 +110,3 @@ def processAlgorithm(self, progress):
110110
'number of attempts exceeded.')
111111

112112
del writer
113-
114-
def checkMinDistance(self, point, index, distance, points):
115-
if distance == 0:
116-
return True
117-
118-
neighbors = index.nearestNeighbor(point, 1)
119-
if len(neighbors) == 0:
120-
return True
121-
122-
if neighbors[0] in points:
123-
np = points[neighbors[0]]
124-
if np.sqrDist(point) < (distance * distance):
125-
return False
126-
127-
return True

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

+1-16
Original file line numberDiff line numberDiff line change
@@ -92,7 +92,7 @@ def processAlgorithm(self, progress):
9292
geom = QgsGeometry.fromPoint(pnt)
9393
ids = idxLayer.intersects(geom.buffer(5, 5).boundingBox())
9494
if len(ids) > 0 and \
95-
self.checkMinDistance(pnt, index, minDistance, points):
95+
vector.checkMinDistance(pnt, index, minDistance, points):
9696
for i in ids:
9797
f = layer.getFeatures(request.setFilterFid(i)).next()
9898
tmpGeom = QgsGeometry(f.geometry())
@@ -116,18 +116,3 @@ def processAlgorithm(self, progress):
116116
'number of attempts exceeded.')
117117

118118
del writer
119-
120-
def checkMinDistance(self, point, index, distance, points):
121-
if distance == 0:
122-
return True
123-
124-
neighbors = index.nearestNeighbor(point, 1)
125-
if len(neighbors) == 0:
126-
return True
127-
128-
if neighbors[0] in points:
129-
np = points[neighbors[0]]
130-
if np.sqrDist(point) < (distance * distance):
131-
return False
132-
133-
return True

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

+4-18
Original file line numberDiff line numberDiff line change
@@ -55,14 +55,15 @@ class RandomPointsPolygonsFixed(GeoAlgorithm):
5555
]
5656

5757
def defineCharacteristics(self):
58-
self.name = 'Random points inside polygons'
58+
self.name = 'Random points inside polygons (fixed)'
5959
self.group = 'Vector creation tools'
6060
self.addParameter(ParameterVector(self.VECTOR,
6161
'Input layer',[ParameterVector.VECTOR_TYPE_POLYGON]))
6262
self.addParameter(ParameterSelection(
6363
self.STRATEGY, 'Sampling strategy', self.STRATEGIES, 0))
6464
self.addParameter(
65-
ParameterNumber(self.VALUE, 'Number or density of points', 0.0001, 9999999.0, 1.0))
65+
ParameterNumber(self.VALUE, 'Number or density of points',
66+
0.0001, 9999999.0, 1.0))
6667
self.addParameter(ParameterNumber(
6768
self.MIN_DISTANCE, 'Minimum distance', 0.0, 9999999, 0.0))
6869
self.addOutput(OutputVector(self.OUTPUT, 'Random points'))
@@ -107,7 +108,7 @@ def processAlgorithm(self, progress):
107108
pnt = QgsPoint(rx, ry)
108109
geom = QgsGeometry.fromPoint(pnt)
109110
if geom.within(fGeom) and \
110-
self.checkMinDistance(pnt, index, minDistance, points):
111+
vector.checkMinDistance(pnt, index, minDistance, points):
111112
f = QgsFeature(nPoints)
112113
f.initAttributes(1)
113114
f.setFields(fields)
@@ -129,18 +130,3 @@ def processAlgorithm(self, progress):
129130
progress.setPercentage(0)
130131

131132
del writer
132-
133-
def checkMinDistance(self, point, index, distance, points):
134-
if distance == 0:
135-
return True
136-
137-
neighbors = index.nearestNeighbor(point, 1)
138-
if len(neighbors) == 0:
139-
return True
140-
141-
if neighbors[0] in points:
142-
np = points[neighbors[0]]
143-
if np.sqrDist(point) < (distance * distance):
144-
return False
145-
146-
return True

python/plugins/processing/tools/vector.py

+19-1
Original file line numberDiff line numberDiff line change
@@ -323,4 +323,22 @@ def duplicateInMemory(layer, newName='', addToRegistry=False):
323323
else:
324324
raise RuntimeError('Layer invalid')
325325

326-
return memLayer
326+
return memLayer
327+
328+
def checkMinDistance(point, index, distance, points):
329+
"""Check if distance from given point to all other points is greater
330+
than given value.
331+
"""
332+
if distance == 0:
333+
return True
334+
335+
neighbors = index.nearestNeighbor(point, 1)
336+
if len(neighbors) == 0:
337+
return True
338+
339+
if neighbors[0] in points:
340+
np = points[neighbors[0]]
341+
if np.sqrDist(point) < (distance * distance):
342+
return False
343+
344+
return True

0 commit comments

Comments
 (0)