Skip to content

Commit 9647ac8

Browse files
committed
add mask option to gdal_polygonize
1 parent 0ef7c7a commit 9647ac8

File tree

2 files changed

+71
-46
lines changed

2 files changed

+71
-46
lines changed

python/plugins/GdalTools/tools/doPolygonize.py

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -25,15 +25,18 @@ def __init__(self, iface):
2525
[
2626
(self.inSelector, SIGNAL("filenameChanged()")),
2727
(self.outSelector, SIGNAL("filenameChanged()")),
28+
(self.maskSelector, SIGNAL("filenameChanged()"), self.maskCheck),
2829
(self.fieldEdit, SIGNAL("textChanged(const QString &)"), self.fieldCheck)
2930
]
3031
)
3132

3233
self.connect(self.inSelector, SIGNAL("selectClicked()"), self.fillInputFileEdit)
3334
self.connect(self.outSelector, SIGNAL("selectClicked()"), self.fillOutputFileEdit)
35+
self.connect(self.maskSelector, SIGNAL("selectClicked()"), self.fillMaskFileEdit)
3436

3537
def onLayersChanged(self):
3638
self.inSelector.setLayers( Utils.LayerRegistry.instance().getRasterLayers() )
39+
self.maskSelector.setLayers( Utils.LayerRegistry.instance().getRasterLayers() )
3740

3841
def fillInputFileEdit(self):
3942
lastUsedFilter = Utils.FileFilter.lastUsedRasterFilter()
@@ -55,10 +58,23 @@ def fillOutputFileEdit(self):
5558
self.outSelector.setFilename(outputFile)
5659
self.lastEncoding = encoding
5760

61+
def fillMaskFileEdit(self):
62+
lastUsedFilter = Utils.FileFilter.lastUsedRasterFilter()
63+
maskFile = Utils.FileDialog.getOpenFileName(self, self.tr( "Select the input file for Polygonize" ), Utils.FileFilter.allRastersFilter(), lastUsedFilter )
64+
if maskFile.isEmpty():
65+
return
66+
Utils.FileFilter.setLastUsedRasterFilter(lastUsedFilter)
67+
68+
self.maskSelector.setFilename(maskFile)
69+
5870
def getArguments(self):
5971
arguments = QStringList()
6072
arguments << self.getInputFileName()
6173
outputFn = self.getOutputFileName()
74+
maskFn = self.getMaskFileName()
75+
if self.maskCheck.isChecked() and not maskFn.isEmpty():
76+
arguments << "-mask"
77+
arguments << maskFn
6278
if not outputFn.isEmpty():
6379
arguments << "-f"
6480
arguments << self.outputFormat
@@ -74,6 +90,9 @@ def getOutputFileName(self):
7490

7591
def getInputFileName(self):
7692
return self.inSelector.filename()
93+
94+
def getMaskFileName(self):
95+
return self.maskSelector.filename()
7796

7897
def addLayerIntoCanvas(self, fileInfo):
7998
vl = self.iface.addVectorLayer(fileInfo.filePath(), fileInfo.baseName(), "ogr")

python/plugins/GdalTools/tools/widgetPolygonize.ui

Lines changed: 52 additions & 46 deletions
Original file line numberDiff line numberDiff line change
@@ -6,8 +6,8 @@
66
<rect>
77
<x>0</x>
88
<y>0</y>
9-
<width>449</width>
10-
<height>94</height>
9+
<width>446</width>
10+
<height>121</height>
1111
</rect>
1212
</property>
1313
<property name="sizePolicy">
@@ -19,50 +19,56 @@
1919
<property name="windowTitle">
2020
<string>Polygonize (Raster to vector)</string>
2121
</property>
22-
<layout class="QVBoxLayout" name="verticalLayout">
23-
<item>
24-
<layout class="QGridLayout" name="gridLayout">
25-
<item row="0" column="0">
26-
<widget class="QLabel" name="label">
27-
<property name="text">
28-
<string>&amp;Input file (raster)</string>
29-
</property>
30-
<property name="buddy">
31-
<cstring>inSelector</cstring>
32-
</property>
33-
</widget>
34-
</item>
35-
<item row="1" column="0">
36-
<widget class="QLabel" name="label_2">
37-
<property name="text">
38-
<string>&amp;Output file for polygons (shapefile)</string>
39-
</property>
40-
<property name="buddy">
41-
<cstring>outSelector</cstring>
42-
</property>
43-
</widget>
44-
</item>
45-
<item row="2" column="0">
46-
<widget class="QCheckBox" name="fieldCheck">
47-
<property name="text">
48-
<string>&amp;Field name</string>
49-
</property>
50-
</widget>
51-
</item>
52-
<item row="2" column="1">
53-
<widget class="QLineEdit" name="fieldEdit">
54-
<property name="text">
55-
<string>DN</string>
56-
</property>
57-
</widget>
58-
</item>
59-
<item row="0" column="1">
60-
<widget class="GdalToolsInOutSelector" name="inSelector" native="true"/>
61-
</item>
62-
<item row="1" column="1">
63-
<widget class="GdalToolsInOutSelector" name="outSelector" native="true"/>
64-
</item>
65-
</layout>
22+
<layout class="QGridLayout" name="gridLayout">
23+
<item row="0" column="0">
24+
<widget class="QLabel" name="label">
25+
<property name="text">
26+
<string>&amp;Input file (raster)</string>
27+
</property>
28+
<property name="buddy">
29+
<cstring>inSelector</cstring>
30+
</property>
31+
</widget>
32+
</item>
33+
<item row="0" column="1">
34+
<widget class="GdalToolsInOutSelector" name="inSelector" native="true"/>
35+
</item>
36+
<item row="1" column="0">
37+
<widget class="QLabel" name="label_2">
38+
<property name="text">
39+
<string>&amp;Output file for polygons (shapefile)</string>
40+
</property>
41+
<property name="buddy">
42+
<cstring>outSelector</cstring>
43+
</property>
44+
</widget>
45+
</item>
46+
<item row="1" column="1">
47+
<widget class="GdalToolsInOutSelector" name="outSelector" native="true"/>
48+
</item>
49+
<item row="2" column="0">
50+
<widget class="QCheckBox" name="fieldCheck">
51+
<property name="text">
52+
<string>&amp;Field name</string>
53+
</property>
54+
</widget>
55+
</item>
56+
<item row="2" column="1">
57+
<widget class="QLineEdit" name="fieldEdit">
58+
<property name="text">
59+
<string>DN</string>
60+
</property>
61+
</widget>
62+
</item>
63+
<item row="3" column="0">
64+
<widget class="QCheckBox" name="maskCheck">
65+
<property name="text">
66+
<string>Use mask</string>
67+
</property>
68+
</widget>
69+
</item>
70+
<item row="3" column="1">
71+
<widget class="GdalToolsInOutSelector" name="maskSelector" native="true"/>
6672
</item>
6773
</layout>
6874
</widget>

0 commit comments

Comments
 (0)