Skip to content

Commit a2d4347

Browse files
committed
[FEATURE] Eliminate tool for fTools, contributed by Bernhard Strobl
1 parent 6d5bbed commit a2d4347

File tree

7 files changed

+428
-54
lines changed

7 files changed

+428
-54
lines changed

python/plugins/fTools/fTools.py

+15-6
Original file line numberDiff line numberDiff line change
@@ -43,7 +43,7 @@
4343
import doIntersectLines, doSelectByLocation, doVectorSplit, doMeanCoords
4444
import doPointDistance, doPointsInPolygon, doRandom, doRandPoints, doRegPoints
4545
import doSpatialJoin, doSubsetSelect, doSumLines, doVectorGrid, doMergeShapes
46-
import doValidate, doSimplify, doDefineProj, doSpatialIndex
46+
import doValidate, doSimplify, doDefineProj, doSpatialIndex, doEliminate
4747

4848
class fToolsPlugin:
4949
def __init__(self,iface):
@@ -94,6 +94,7 @@ def updateThemeIcons(self, theme):
9494
self.clip.setIcon(QIcon(self.getThemeIcon("clip.png")))
9595
self.dissolve.setIcon(QIcon(self.getThemeIcon("dissolve.png")))
9696
self.erase.setIcon(QIcon(self.getThemeIcon("difference.png")))
97+
self.eliminate.setIcon(QIcon(self.getThemeIcon("eliminate.png")))
9798

9899
self.conversionMenu.setIcon(QIcon(self.getThemeIcon("geometry.png")))
99100
self.compGeo.setIcon(QIcon(self.getThemeIcon("export_geometry.png")))
@@ -134,7 +135,7 @@ def initGui(self):
134135
self.meanCoords = QAction(QCoreApplication.translate("fTools", "Mean coordinate(s)"),self.iface.mainWindow())
135136
self.intLines = QAction(QCoreApplication.translate("fTools", "Line intersections") ,self.iface.mainWindow())
136137
self.analysisMenu.addActions([self.distMatrix, self.sumLines, self.pointsPoly,
137-
self.listUnique, self.compStats, self.nearestNeigh, self.meanCoords, self.intLines])
138+
self.listUnique, self.compStats, self.nearestNeigh, self.meanCoords, self.intLines])
138139

139140
self.researchMenu = QMenu(QCoreApplication.translate("fTools", "&Research Tools"))
140141
self.randSel = QAction(QCoreApplication.translate("fTools", "Random selection"),self.iface.mainWindow())
@@ -145,7 +146,7 @@ def initGui(self):
145146
self.selectLocation = QAction(QCoreApplication.translate("fTools", "Select by location"), self.iface.mainWindow())
146147
self.layerExtent = QAction(QCoreApplication.translate("fTools", "Polygon from layer extent"), self.iface.mainWindow())
147148
self.researchMenu.addActions([self.randSel, self.randSub, self.randPoints,
148-
self.regPoints, self.vectGrid, self.selectLocation, self.layerExtent])
149+
self.regPoints, self.vectGrid, self.selectLocation, self.layerExtent])
149150

150151
self.geoMenu = QMenu(QCoreApplication.translate("fTools", "&Geoprocessing Tools"))
151152
self.minConvex = QAction(QCoreApplication.translate("fTools", "Convex hull(s)"),self.iface.mainWindow())
@@ -156,8 +157,10 @@ def initGui(self):
156157
self.clip = QAction(QCoreApplication.translate("fTools", "Clip"),self.iface.mainWindow())
157158
self.dissolve = QAction(QCoreApplication.translate("fTools", "Dissolve"),self.iface.mainWindow())
158159
self.erase = QAction(QCoreApplication.translate("fTools", "Difference"),self.iface.mainWindow())
160+
self.eliminate = QAction( QCoreApplication.translate( "fTools", "Eliminate sliver polygons" ),self.iface.mainWindow() )
159161
self.geoMenu.addActions([self.minConvex, self.dynaBuffer, self.intersect,
160-
self.union, self.symDifference, self.clip, self.erase, self.dissolve])
162+
self.union, self.symDifference, self.clip, self.erase, self.dissolve,
163+
self.eliminate])
161164

162165
self.conversionMenu = QMenu(QCoreApplication.translate("fTools", "G&eometry Tools"))
163166
self.compGeo = QAction(QCoreApplication.translate("fTools", "Export/Add geometry columns"),self.iface.mainWindow())
@@ -173,8 +176,8 @@ def initGui(self):
173176
self.polysToLines = QAction(QCoreApplication.translate("fTools", "Polygons to lines"),self.iface.mainWindow())
174177
self.linesToPolys = QAction(QCoreApplication.translate("fTools", "Lines to polygons"),self.iface.mainWindow())
175178
self.conversionMenu.addActions([self.checkGeom, self.compGeo, self.centroids, self.delaunay, self.voronoi,
176-
self.simplify, self.densify, self.multiToSingle, self.singleToMulti, self.polysToLines, self.linesToPolys,
177-
self.extNodes])
179+
self.simplify, self.densify, self.multiToSingle, self.singleToMulti, self.polysToLines, self.linesToPolys,
180+
self.extNodes])
178181

179182
self.dataManageMenu = QMenu(QCoreApplication.translate("fTools", "&Data Management Tools"))
180183
self.define = QAction(QCoreApplication.translate("fTools", "Define current projection"), self.iface.mainWindow())
@@ -183,6 +186,7 @@ def initGui(self):
183186
self.mergeShapes = QAction(QCoreApplication.translate("fTools", "Merge shapefiles to one"), self.iface.mainWindow())
184187
self.spatialIndex = QAction(QCoreApplication.translate("fTools", "Create spatial index"), self.iface.mainWindow())
185188
self.dataManageMenu.addActions([self.define, self.spatJoin, self.splitVect, self.mergeShapes, self.spatialIndex])
189+
186190
self.updateThemeIcons("theme")
187191

188192
self.tmpAct = QAction( self.iface.mainWindow() )
@@ -220,6 +224,7 @@ def initGui(self):
220224
QObject.connect(self.union, SIGNAL("triggered()"), self.dounion)
221225
QObject.connect(self.clip, SIGNAL("triggered()"), self.doclip)
222226
QObject.connect(self.dynaBuffer, SIGNAL("triggered()"), self.dodynaBuffer)
227+
QObject.connect(self.eliminate, SIGNAL("triggered()"), self.doEliminate)
223228

224229
QObject.connect(self.multiToSingle, SIGNAL("triggered()"), self.domultiToSingle)
225230
QObject.connect(self.singleToMulti, SIGNAL("triggered()"), self.dosingleToMulti)
@@ -416,3 +421,7 @@ def doSpatIndex(self):
416421
d = doSpatialIndex.Dialog(self.iface)
417422
d.show()
418423
d.exec_()
424+
425+
def doEliminate(self):
426+
d = doEliminate.Dialog(self.iface)
427+
d.exec_()
Original file line numberDiff line numberDiff line change
@@ -1,51 +1,5 @@
11
#TODO: Need to configure cmake to run pyrcc4 and pyuic4 as required when the resource
22
# file or the ui change
3-
SET(ICON_FILES
4-
analysis.png
5-
geometry.png
6-
sampling.png
7-
basic_statistics.png
8-
geoprocessing.png
9-
select_location.png
10-
buffer.png
11-
help.png
12-
simplify.png
13-
centroids.png
14-
intersections.png
15-
single_to_multi.png
16-
check_geometry.png
17-
intersect.png
18-
split_layer.png
19-
clip.png
20-
join_attributes.png
21-
sub_selection.png
22-
convex_hull.png
23-
join_location.png
24-
sum_lines.png
25-
define_projection.png
26-
management.png
27-
sum_points.png
28-
difference.png
29-
matrix.png
30-
sym_difference.png
31-
dissolve.png
32-
mean.png
33-
to_lines.png
34-
export_geometry.png
35-
multi_to_single.png
36-
union.png
37-
export_projection.png
38-
neighbour.png
39-
unique.png
40-
extract_nodes.png
41-
random_points.png
42-
vector_grid.png
43-
random_selection.png
44-
ftools_logo.png
45-
regular_points.png
46-
delaunay.png
47-
layer_extent.png
48-
merge_shapes.png
49-
)
3+
FILE(GLOB ICON_FILES *.png)
504

515
PLUGIN_INSTALL(fTools icons/default ${ICON_FILES})
Loading
735 Bytes
Loading

python/plugins/fTools/resources.qrc

+3-1
Original file line numberDiff line numberDiff line change
@@ -45,6 +45,7 @@
4545
<file>icons/default/neighbour.png</file>
4646
<file>icons/default/delaunay.png</file>
4747
<file>icons/default/layer_extent.png</file>
48+
<file>icons/default/eliminate.png</file>
4849
<file>icons/gis/single_to_multi.png</file>
4950
<file>icons/gis/simplify.png</file>
5051
<file>icons/gis/difference.png</file>
@@ -91,6 +92,7 @@
9192
<file>icons/gis/layer_extent.png</file>
9293
<file>icons/gis/voronoi.png</file>
9394
<file>icons/gis/merge_shapes.png</file>
94-
<file>icons/default/voronoi.png</file>
95+
<file>icons/gis/voronoi.png</file>
96+
<file>icons/gis/eliminate.png</file>
9597
</qresource>
9698
</RCC>

0 commit comments

Comments
 (0)