Skip to content

Commit c279ec2

Browse files
committedJan 18, 2013
use raster format and pyramid save widgets in gdaltools (translate, dem, pyramids)
1 parent 0c0f088 commit c279ec2

File tree

6 files changed

+545
-428
lines changed

6 files changed

+545
-428
lines changed
 

‎python/plugins/GdalTools/tools/doDEM.py

Lines changed: 15 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -60,15 +60,17 @@ def __init__(self, iface):
6060
self.configSelector.setFilename(colorConfigFile)
6161

6262
self.outputFormat = Utils.fillRasterOutputFormat()
63+
self.creationOptionsWidget.setFormat(self.outputFormat)
6364

6465
self.setParamsStatus(
6566
[
6667
(self.inSelector, SIGNAL("filenameChanged()")),
6768
(self.outSelector, SIGNAL("filenameChanged()")),
68-
(self.computeEdgesCheck, SIGNAL("stateChanged(int)"), None, "1.8.0"),
69+
(self.computeEdgesCheck, SIGNAL("stateChanged(int)"), None, 1800),
6970
(self.bandSpin, SIGNAL("valueChanged(int)"), self.bandCheck),
70-
(self.algorithmCheck, SIGNAL("stateChanged(int)"), None, "1.8.0"),
71-
(self.creationOptionsTable, [SIGNAL("cellValueChanged(int, int)"), SIGNAL("rowRemoved()")], self.creationGroupBox),
71+
(self.algorithmCheck, SIGNAL("stateChanged(int)"), None, 1800),
72+
(self.creationOptionsWidget, SIGNAL("optionsChanged()")),
73+
(self.creationOptionsGroupBox, SIGNAL("toggled(bool)")),
7274
(self.modeCombo, SIGNAL("currentIndexChanged(int)")),
7375
([self.hillshadeZFactorSpin, self.hillshadeScaleSpin, self.hillshadeAltitudeSpin, self.hillshadeAzimuthSpin], SIGNAL("valueChanged(double)")),
7476
(self.slopeScaleSpin, SIGNAL("valueChanged(double)")),
@@ -102,6 +104,7 @@ def fillInputFileEdit(self):
102104
Utils.FileFilter.setLastUsedRasterFilter(lastUsedFilter)
103105

104106
self.inSelector.setFilename(inputFile)
107+
self.getArguments()
105108

106109
def fillOutputFileEdit(self):
107110
lastUsedFilter = Utils.FileFilter.lastUsedRasterFilter()
@@ -112,6 +115,7 @@ def fillOutputFileEdit(self):
112115

113116
self.outputFormat = Utils.fillRasterOutputFormat( lastUsedFilter, outputFile )
114117
self.outSelector.setFilename(outputFile)
118+
self.creationOptionsWidget.setFormat(self.outputFormat)
115119

116120
def fillColorConfigFileEdit(self):
117121
configFile = Utils.FileDialog.getOpenFileName(self, self.tr( "Select the color configuration file" ))
@@ -158,9 +162,15 @@ def getArguments(self):
158162
arguments << "-b" << str(self.bandSpin.value())
159163
if not outputFn.isEmpty():
160164
arguments << "-of" << self.outputFormat
161-
if self.creationGroupBox.isChecked():
162-
for opt in self.creationOptionsTable.options():
165+
if self.creationOptionsGroupBox.isChecked():
166+
for opt in self.creationOptionsWidget.options():
163167
arguments << "-co" << opt
168+
# set creation options filename/layer for validation
169+
if self.inSelector.layer():
170+
self.creationOptionsWidget.setRasterLayer(self.inSelector.layer())
171+
else:
172+
self.creationOptionsWidget.setRasterFileName(self.getInputFileName())
173+
164174
return arguments
165175

166176
def getInputFileName(self):

‎python/plugins/GdalTools/tools/doOverview.py

Lines changed: 38 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -54,21 +54,24 @@ def __init__( self, iface ):
5454

5555
self.setParamsStatus(
5656
[
57-
(self.inSelector, SIGNAL("filenameChanged()")),
57+
( self.inSelector, SIGNAL("filenameChanged()")),
5858
( self.algorithmCombo, SIGNAL( "currentIndexChanged( int )" ), self.algorithmCheck ),
5959
( self.levelsEdit, SIGNAL( "textChanged( const QString & )" ) ),
60-
( self.roModeCheck, SIGNAL( "stateChanged( int )" ), None, "1.6.0" ),
60+
( self.roModeCheck, SIGNAL( "stateChanged( int )" ), None, 1600 ),
6161
( self.rrdCheck, SIGNAL( "stateChanged(int)" ) ),
6262
( self.jpegQualitySpin, SIGNAL( "valueChanged (int)" ) ),
6363
( self.jpegQualityContainer, None, self.tiffjpegCheck),
64-
( self.jpegQualityContainer, None, None, "1.7.0"),
65-
( self.cleanCheck, SIGNAL( "stateChanged(int)" ), None, "1.7.0" )
64+
( self.jpegQualityContainer, None, None, 1700),
65+
( self.cleanCheck, SIGNAL( "stateChanged(int)" ), None, 1700 ),
66+
( self.mPyramidOptionsWidget, SIGNAL( "overviewListChanged()" )),
67+
( self.mPyramidOptionsWidget, SIGNAL( "someValueChanged()" ))
6668
]
6769
)
6870

6971
self.connect( self.inSelector, SIGNAL( "selectClicked()" ), self.fillInputFile )
7072
self.connect( self.batchCheck, SIGNAL( "stateChanged( int )" ), self.switchToolMode )
7173

74+
self.init = False #workaround bug that pyramid options widgets are not initialized at first
7275

7376
# switch to batch or normal mode
7477
def switchToolMode( self ):
@@ -101,6 +104,8 @@ def fillInputFile( self ):
101104

102105
self.inSelector.setFilename( inputFile )
103106

107+
self.mPyramidOptionsWidget.setRasterLayer(None)
108+
104109
def fillInputDir( self ):
105110
inputDir = Utils.FileDialog.getExistingDirectory( self, self.tr( "Select the input directory with files" ))
106111
if inputDir.isEmpty():
@@ -110,27 +115,44 @@ def fillInputDir( self ):
110115

111116
def getArguments( self ):
112117
arguments = QStringList()
113-
if self.algorithmCheck.isChecked() and self.algorithmCombo.currentIndex() >= 0:
114-
arguments << "-r"
115-
arguments << self.resampling_method[self.algorithmCombo.currentIndex()]
116-
if self.roModeCheck.isChecked():
118+
119+
arguments << "-r"
120+
arguments << self.mPyramidOptionsWidget.resamplingMethod();
121+
122+
format = self.mPyramidOptionsWidget.pyramidsFormat()
123+
if format == QgsRasterDataProvider.PyramidsGTiff:
117124
arguments << "-ro"
118-
if self.rrdCheck.isChecked():
125+
elif format == QgsRasterDataProvider.PyramidsErdas:
119126
arguments << "--config" << "USE_RRD" << "YES"
120-
if self.tiffjpegCheck.isChecked():
121-
arguments << "--config" << "COMPRESS_OVERVIEW" << "JPEG" << "--config" << "PHOTOMETRIC_OVERVIEW" << "YCBCR" << "--config" << "INTERLEAVE_OVERVIEW" << "PIXEL"
122-
if self.jpegQualityContainer.isVisible():
123-
arguments << "--config" << "JPEG_QUALITY_OVERVIEW" << self.jpegQualitySpin.cleanText()
127+
128+
for option in self.mPyramidOptionsWidget.configOptions():
129+
(k,v) = option.split("=")
130+
arguments << "--config" << str(k) << str(v)
131+
124132
if self.cleanCheck.isChecked():
125133
arguments << "-clean"
134+
126135
if self.isBatchEnabled():
127136
return arguments
128137

129138
arguments << self.getInputFileName()
130-
if not self.levelsEdit.text().isEmpty():
131-
arguments << self.levelsEdit.text().split( " " )
139+
140+
if len(self.mPyramidOptionsWidget.overviewList()) == 0:
141+
arguments << "[levels]"
142+
for level in self.mPyramidOptionsWidget.overviewList():
143+
arguments << str(level)
144+
145+
# set creation options filename/layer for validation
146+
if self.init:
147+
if self.isBatchEnabled():
148+
self.mPyramidOptionsWidget.setRasterLayer(None)
149+
elif self.inSelector.layer():
150+
self.mPyramidOptionsWidget.setRasterLayer(self.inSelector.layer())
151+
else:
152+
self.mPyramidOptionsWidget.setRasterFileName(self.getInputFileName())
132153
else:
133-
arguments << "2" << "4" << "8" << "16" << "32"
154+
self.init = True
155+
134156
return arguments
135157

136158
def getInputFileName( self ):

‎python/plugins/GdalTools/tools/doTranslate.py

Lines changed: 12 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -67,10 +67,10 @@ def __init__(self, iface):
6767
(self.outSelector, SIGNAL("filenameChanged()")),
6868
(self.targetSRSEdit, SIGNAL("textChanged(const QString &)"), self.targetSRSCheck),
6969
(self.selectTargetSRSButton, None, self.targetSRSCheck),
70-
(self.creationOptionsTable, [SIGNAL("cellValueChanged(int, int)"), SIGNAL("rowRemoved()")], self.creationGroupBox),
70+
(self.creationOptionsWidget, SIGNAL("optionsChanged()")),
7171
(self.outsizeSpin, SIGNAL("valueChanged(const QString &)"), self.outsizeCheck),
7272
(self.nodataSpin, SIGNAL("valueChanged(int)"), self.nodataCheck),
73-
(self.expandCombo, SIGNAL("currentIndexChanged(int)"), self.expandCheck, "1.6.0"),
73+
(self.expandCombo, SIGNAL("currentIndexChanged(int)"), self.expandCheck, 1600),
7474
(self.sdsCheck, SIGNAL("stateChanged(int)")),
7575
(self.srcwinEdit, SIGNAL("textChanged(const QString &)"), self.srcwinCheck),
7676
(self.prjwinEdit, SIGNAL("textChanged(const QString &)"), self.prjwinCheck)
@@ -188,10 +188,9 @@ def getArguments(self):
188188
if self.targetSRSCheck.isChecked() and not self.targetSRSEdit.text().isEmpty():
189189
arguments << "-a_srs"
190190
arguments << self.targetSRSEdit.text()
191-
if self.creationGroupBox.isChecked():
192-
for opt in self.creationOptionsTable.options():
193-
arguments << "-co"
194-
arguments << opt
191+
if self.creationOptionsGroupBox.isChecked():
192+
for opt in self.creationOptionsWidget.options():
193+
arguments << "-co" << opt
195194
if self.outsizeCheck.isChecked() and self.outsizeSpin.value() != 100:
196195
arguments << "-outsize"
197196
arguments << self.outsizeSpin.text()
@@ -244,6 +243,13 @@ def getArguments(self):
244243
arguments << self.outputFormat
245244
arguments << self.getInputFileName()
246245
arguments << outputFn
246+
247+
# set creation options filename/layer for validation
248+
if self.inSelector.layer():
249+
self.creationOptionsWidget.setRasterLayer(self.inSelector.layer())
250+
else:
251+
self.creationOptionsWidget.setRasterFileName(self.getInputFileName())
252+
247253
return arguments
248254

249255
def getInputFileName(self):

‎python/plugins/GdalTools/tools/widgetDEM.ui

Lines changed: 285 additions & 252 deletions
Large diffs are not rendered by default.

‎python/plugins/GdalTools/tools/widgetOverview.ui

Lines changed: 181 additions & 144 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@
77
<x>0</x>
88
<y>0</y>
99
<width>376</width>
10-
<height>311</height>
10+
<height>342</height>
1111
</rect>
1212
</property>
1313
<property name="sizePolicy">
@@ -39,62 +39,6 @@
3939
</property>
4040
</widget>
4141
</item>
42-
<item row="1" column="0">
43-
<widget class="QCheckBox" name="algorithmCheck">
44-
<property name="text">
45-
<string>Resampling method</string>
46-
</property>
47-
</widget>
48-
</item>
49-
<item row="1" column="1">
50-
<widget class="QComboBox" name="algorithmCombo">
51-
<item>
52-
<property name="text">
53-
<string>nearest</string>
54-
</property>
55-
</item>
56-
<item>
57-
<property name="text">
58-
<string>average</string>
59-
</property>
60-
</item>
61-
<item>
62-
<property name="text">
63-
<string>gauss</string>
64-
</property>
65-
</item>
66-
<item>
67-
<property name="text">
68-
<string>cubic</string>
69-
</property>
70-
</item>
71-
<item>
72-
<property name="text">
73-
<string>average_mp</string>
74-
</property>
75-
</item>
76-
<item>
77-
<property name="text">
78-
<string>average_magphase</string>
79-
</property>
80-
</item>
81-
<item>
82-
<property name="text">
83-
<string>mode</string>
84-
</property>
85-
</item>
86-
</widget>
87-
</item>
88-
<item row="2" column="0">
89-
<widget class="QLabel" name="label_3">
90-
<property name="text">
91-
<string>Levels (space delimited)</string>
92-
</property>
93-
</widget>
94-
</item>
95-
<item row="2" column="1">
96-
<widget class="QLineEdit" name="levelsEdit"/>
97-
</item>
9842
<item row="0" column="1">
9943
<widget class="GdalToolsInOutSelector" name="inSelector" native="true"/>
10044
</item>
@@ -111,96 +55,183 @@
11155
</widget>
11256
</item>
11357
<item>
114-
<widget class="QCheckBox" name="roModeCheck">
115-
<property name="toolTip">
116-
<string>In order to generate external overview (for GeoTIFF especially).</string>
117-
</property>
118-
<property name="text">
119-
<string>Open in read-only mode</string>
120-
</property>
121-
</widget>
122-
</item>
123-
<item>
124-
<widget class="QCheckBox" name="tiffjpegCheck">
125-
<property name="toolTip">
126-
<string>Create external overviews in TIFF format, compressed using JPEG.</string>
127-
</property>
128-
<property name="text">
129-
<string>Overviews in TIFF format with JPEG compression</string>
130-
</property>
131-
</widget>
132-
</item>
133-
<item>
134-
<widget class="QFrame" name="jpegQualityContainer">
135-
<property name="enabled">
136-
<bool>true</bool>
137-
</property>
138-
<property name="sizePolicy">
139-
<sizepolicy hsizetype="Preferred" vsizetype="Fixed">
140-
<horstretch>0</horstretch>
141-
<verstretch>0</verstretch>
142-
</sizepolicy>
58+
<widget class="QTabWidget" name="tabWidget">
59+
<property name="currentIndex">
60+
<number>0</number>
14361
</property>
144-
<property name="minimumSize">
145-
<size>
146-
<width>0</width>
147-
<height>25</height>
148-
</size>
149-
</property>
150-
<layout class="QHBoxLayout" name="horizontalLayout_2">
151-
<property name="leftMargin">
152-
<number>24</number>
153-
</property>
154-
<property name="topMargin">
155-
<number>0</number>
156-
</property>
157-
<property name="bottomMargin">
158-
<number>0</number>
159-
</property>
160-
<item>
161-
<widget class="QLabel" name="jpegQualityLabel">
162-
<property name="toolTip">
163-
<string>For JPEG compressed external overviews,
164-
the JPEG quality can be set.</string>
165-
</property>
166-
<property name="text">
167-
<string>JPEG Quality (1-100)</string>
168-
</property>
169-
</widget>
170-
</item>
171-
<item>
172-
<widget class="QSpinBox" name="jpegQualitySpin">
173-
<property name="enabled">
174-
<bool>true</bool>
175-
</property>
176-
<property name="sizePolicy">
177-
<sizepolicy hsizetype="Expanding" vsizetype="Fixed">
178-
<horstretch>0</horstretch>
179-
<verstretch>0</verstretch>
180-
</sizepolicy>
181-
</property>
182-
<property name="toolTip">
183-
<string>For JPEG compressed external overviews,
184-
the JPEG quality can be set.</string>
185-
</property>
186-
<property name="maximum">
187-
<number>100</number>
188-
</property>
189-
</widget>
190-
</item>
191-
</layout>
192-
</widget>
193-
</item>
194-
<item>
195-
<widget class="QCheckBox" name="rrdCheck">
196-
<property name="toolTip">
197-
<string>Alternate overview format using Erdas Imagine format,
62+
<widget class="QWidget" name="tab">
63+
<attribute name="title">
64+
<string>old</string>
65+
</attribute>
66+
<layout class="QGridLayout" name="gridLayout_2">
67+
<item row="2" column="0">
68+
<widget class="QLabel" name="label_3">
69+
<property name="text">
70+
<string>Levels (space delimited)</string>
71+
</property>
72+
</widget>
73+
</item>
74+
<item row="5" column="0" colspan="2">
75+
<widget class="QCheckBox" name="rrdCheck">
76+
<property name="toolTip">
77+
<string>Alternate overview format using Erdas Imagine format,
19878
placing the overviews in an associated .aux file
19979
suitable for direct use with Imagine,ArcGIS, GDAL.</string>
200-
</property>
201-
<property name="text">
202-
<string>Use Imagine format (.aux file)</string>
203-
</property>
80+
</property>
81+
<property name="text">
82+
<string>Use Imagine format (.aux file)</string>
83+
</property>
84+
</widget>
85+
</item>
86+
<item row="3" column="0" colspan="2">
87+
<widget class="QFrame" name="jpegQualityContainer">
88+
<property name="enabled">
89+
<bool>true</bool>
90+
</property>
91+
<property name="sizePolicy">
92+
<sizepolicy hsizetype="Preferred" vsizetype="Fixed">
93+
<horstretch>0</horstretch>
94+
<verstretch>0</verstretch>
95+
</sizepolicy>
96+
</property>
97+
<property name="minimumSize">
98+
<size>
99+
<width>0</width>
100+
<height>25</height>
101+
</size>
102+
</property>
103+
<layout class="QHBoxLayout" name="horizontalLayout_2">
104+
<property name="leftMargin">
105+
<number>24</number>
106+
</property>
107+
<property name="topMargin">
108+
<number>0</number>
109+
</property>
110+
<property name="bottomMargin">
111+
<number>0</number>
112+
</property>
113+
<item>
114+
<widget class="QLabel" name="jpegQualityLabel">
115+
<property name="toolTip">
116+
<string>For JPEG compressed external overviews,
117+
the JPEG quality can be set.</string>
118+
</property>
119+
<property name="text">
120+
<string>JPEG Quality (1-100)</string>
121+
</property>
122+
</widget>
123+
</item>
124+
<item>
125+
<widget class="QSpinBox" name="jpegQualitySpin">
126+
<property name="enabled">
127+
<bool>true</bool>
128+
</property>
129+
<property name="sizePolicy">
130+
<sizepolicy hsizetype="Expanding" vsizetype="Fixed">
131+
<horstretch>0</horstretch>
132+
<verstretch>0</verstretch>
133+
</sizepolicy>
134+
</property>
135+
<property name="toolTip">
136+
<string>For JPEG compressed external overviews,
137+
the JPEG quality can be set.</string>
138+
</property>
139+
<property name="maximum">
140+
<number>100</number>
141+
</property>
142+
</widget>
143+
</item>
144+
</layout>
145+
</widget>
146+
</item>
147+
<item row="2" column="1">
148+
<widget class="QLineEdit" name="levelsEdit"/>
149+
</item>
150+
<item row="4" column="0" colspan="2">
151+
<widget class="QCheckBox" name="tiffjpegCheck">
152+
<property name="toolTip">
153+
<string>Create external overviews in TIFF format, compressed using JPEG.</string>
154+
</property>
155+
<property name="text">
156+
<string>Overviews in TIFF format with JPEG compression</string>
157+
</property>
158+
</widget>
159+
</item>
160+
<item row="1" column="0">
161+
<widget class="QCheckBox" name="roModeCheck">
162+
<property name="toolTip">
163+
<string>In order to generate external overview (for GeoTIFF especially).</string>
164+
</property>
165+
<property name="text">
166+
<string>Open in read-only mode</string>
167+
</property>
168+
</widget>
169+
</item>
170+
<item row="0" column="0">
171+
<widget class="QCheckBox" name="algorithmCheck">
172+
<property name="text">
173+
<string>Resampling method</string>
174+
</property>
175+
</widget>
176+
</item>
177+
<item row="0" column="1">
178+
<widget class="QComboBox" name="algorithmCombo">
179+
<item>
180+
<property name="text">
181+
<string>nearest</string>
182+
</property>
183+
</item>
184+
<item>
185+
<property name="text">
186+
<string>average</string>
187+
</property>
188+
</item>
189+
<item>
190+
<property name="text">
191+
<string>gauss</string>
192+
</property>
193+
</item>
194+
<item>
195+
<property name="text">
196+
<string>cubic</string>
197+
</property>
198+
</item>
199+
<item>
200+
<property name="text">
201+
<string>average_mp</string>
202+
</property>
203+
</item>
204+
<item>
205+
<property name="text">
206+
<string>average_magphase</string>
207+
</property>
208+
</item>
209+
<item>
210+
<property name="text">
211+
<string>mode</string>
212+
</property>
213+
</item>
214+
</widget>
215+
</item>
216+
</layout>
217+
</widget>
218+
<widget class="QWidget" name="tab_2">
219+
<attribute name="title">
220+
<string>new</string>
221+
</attribute>
222+
<layout class="QVBoxLayout" name="verticalLayout_2">
223+
<item>
224+
<widget class="QgsRasterPyramidsOptionsWidget" name="mPyramidOptionsWidget" native="true">
225+
<property name="sizePolicy">
226+
<sizepolicy hsizetype="Preferred" vsizetype="Preferred">
227+
<horstretch>0</horstretch>
228+
<verstretch>1</verstretch>
229+
</sizepolicy>
230+
</property>
231+
</widget>
232+
</item>
233+
</layout>
234+
</widget>
204235
</widget>
205236
</item>
206237
<item>
@@ -215,6 +246,12 @@ suitable for direct use with Imagine,ArcGIS, GDAL.</string>
215246
<header>inOutSelector</header>
216247
<container>1</container>
217248
</customwidget>
249+
<customwidget>
250+
<class>QgsRasterPyramidsOptionsWidget</class>
251+
<extends>QWidget</extends>
252+
<header>qgis.gui</header>
253+
<container>1</container>
254+
</customwidget>
218255
</customwidgets>
219256
<resources/>
220257
<connections/>

‎python/plugins/GdalTools/tools/widgetTranslate.ui

Lines changed: 14 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -250,7 +250,7 @@ The 'gray' value (from GDAL 1.7.0) enables to expand a dataset with a color tabl
250250
</layout>
251251
</item>
252252
<item>
253-
<widget class="QGroupBox" name="creationGroupBox">
253+
<widget class="QgsCollapsibleGroupBox" name="creationOptionsGroupBox">
254254
<property name="title">
255255
<string>&amp;Creation Options</string>
256256
</property>
@@ -261,11 +261,14 @@ The 'gray' value (from GDAL 1.7.0) enables to expand a dataset with a color tabl
261261
<bool>false</bool>
262262
</property>
263263
<layout class="QVBoxLayout" name="verticalLayout">
264+
<property name="leftMargin">
265+
<number>9</number>
266+
</property>
264267
<property name="bottomMargin">
265-
<number>0</number>
268+
<number>9</number>
266269
</property>
267270
<item>
268-
<widget class="GdalToolsOptionsTable" name="creationOptionsTable" native="true"/>
271+
<widget class="QgsRasterFormatSaveOptionsWidget" name="creationOptionsWidget" native="true"/>
269272
</item>
270273
</layout>
271274
</widget>
@@ -283,9 +286,15 @@ The 'gray' value (from GDAL 1.7.0) enables to expand a dataset with a color tabl
283286
<container>1</container>
284287
</customwidget>
285288
<customwidget>
286-
<class>GdalToolsOptionsTable</class>
289+
<class>QgsCollapsibleGroupBox</class>
290+
<extends>QGroupBox</extends>
291+
<header>qgis.gui</header>
292+
<container>1</container>
293+
</customwidget>
294+
<customwidget>
295+
<class>QgsRasterFormatSaveOptionsWidget</class>
287296
<extends>QWidget</extends>
288-
<header>optionsTable</header>
297+
<header>qgis.gui</header>
289298
<container>1</container>
290299
</customwidget>
291300
</customwidgets>

0 commit comments

Comments
 (0)
Please sign in to comment.