Skip to content

Commit 57eb409

Browse files
committed
Squashed commit of the following:
commit 883cdbc3ead1a98c594d9f5584cd50a3fd161511 Author: Giuseppe Sucameli <brush.tyler@gmail.com> Date: Mon Nov 30 01:12:47 2015 +0100 [DbManager] fix indentation due to merge f15b6011f9 commit f15b6011f97797794ff4369645449b6803e15cd0 Merge: c4dcb7b 6d3df91 Author: Giuseppe Sucameli <brush.tyler@gmail.com> Date: Mon Nov 30 01:09:18 2015 +0100 Merge branch 'gdaltools_buildvrt_asrs' of https://github.com/giohappy/QGIS into giohappy-gdaltools_buildvrt_asrs Conflicts: python/plugins/GdalTools/tools/doBuildVRT.py commit 6d3df91 Author: giohappy <giohappy@gmail.com> Date: Wed Jun 4 12:48:58 2014 +0200 Added a_srs option to buildvrt command
1 parent c4dcb7b commit 57eb409

File tree

2 files changed

+110
-74
lines changed

2 files changed

+110
-74
lines changed

python/plugins/GdalTools/tools/doBuildVRT.py

Lines changed: 46 additions & 31 deletions
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,7 @@
2828

2929
from ui_widgetBuildVRT import Ui_GdalToolsWidget as Ui_Widget
3030
from widgetPluginBase import GdalToolsBasePluginWidget as BasePluginWidget
31+
from dialogSRS import GdalToolsSRSDialog as SRSDialog
3132
import GdalTools_utils as Utils
3233

3334

@@ -41,28 +42,33 @@ def __init__(self, iface):
4142
self.setupUi(self)
4243
BasePluginWidget.__init__(self, self.iface, "gdalbuildvrt")
4344

44-
self.inSelector.setType(self.inSelector.FILE)
45-
self.outSelector.setType(self.outSelector.FILE)
45+
self.inSelector.setType( self.inSelector.FILE )
46+
self.outSelector.setType( self.outSelector.FILE )
4647
self.recurseCheck.hide()
4748
self.visibleRasterLayers = []
4849

49-
self.setParamsStatus([
50-
(self.inSelector, SIGNAL("filenameChanged()")),
51-
(self.outSelector, SIGNAL("filenameChanged()")),
52-
(self.resolutionComboBox, SIGNAL("currentIndexChanged(int)"), self.resolutionCheck),
53-
(self.srcNoDataSpin, SIGNAL("valueChanged(int)"), self.srcNoDataCheck, 1700),
54-
(self.inputDirCheck, SIGNAL("stateChanged(int)")),
55-
(self.separateCheck, SIGNAL("stateChanged(int)"), None, 1700),
56-
(self.allowProjDiffCheck, SIGNAL("stateChanged(int)"), None, 1700),
57-
(self.recurseCheck, SIGNAL("stateChanged(int)"), self.inputDirCheck),
58-
(self.inputSelLayersCheck, SIGNAL("stateChanged(int)"))
59-
])
50+
self.setParamsStatus(
51+
[
52+
(self.inSelector, SIGNAL("filenameChanged()")),
53+
(self.outSelector, SIGNAL("filenameChanged()")),
54+
(self.resolutionComboBox, SIGNAL("currentIndexChanged(int)"), self.resolutionCheck),
55+
(self.srcNoDataSpin, SIGNAL("valueChanged(int)"), self.srcNoDataCheck, 1700),
56+
(self.inputDirCheck, SIGNAL("stateChanged(int)")),
57+
(self.separateCheck, SIGNAL("stateChanged(int)"), None, 1700),
58+
(self.targetSRSEdit, SIGNAL("textChanged(const QString &)"), self.targetSRSCheck),
59+
(self.allowProjDiffCheck, SIGNAL("stateChanged(int)"), None, 1700),
60+
(self.recurseCheck, SIGNAL("stateChanged(int)"), self.inputDirCheck),
61+
(self.inputSelLayersCheck, SIGNAL("stateChanged(int)"))
62+
]
63+
)
6064

6165
self.connect(self.inSelector, SIGNAL("selectClicked()"), self.fillInputFilesEdit)
6266
self.connect(self.outSelector, SIGNAL("selectClicked()"), self.fillOutputFileEdit)
63-
self.connect(self.inputDirCheck, SIGNAL("stateChanged( int )"), self.switchToolMode)
64-
self.connect(self.inputSelLayersCheck, SIGNAL("stateChanged( int )"), self.switchLayerMode)
65-
self.connect(self.iface.mapCanvas(), SIGNAL("stateChanged( int )"), self.switchLayerMode)
67+
self.connect( self.inputDirCheck, SIGNAL( "stateChanged( int )" ), self.switchToolMode )
68+
self.connect( self.inputSelLayersCheck, SIGNAL( "stateChanged( int )" ), self.switchLayerMode )
69+
self.connect( self.iface.mapCanvas(), SIGNAL( "stateChanged( int )" ), self.switchLayerMode )
70+
self.connect(self.selectTargetSRSButton, SIGNAL("clicked()"), self.fillTargetSRSEdit)
71+
6672

6773
def initialize(self):
6874
# connect to mapCanvas.layerChanged() signal
@@ -75,57 +81,63 @@ def onClosing(self):
7581
self.disconnect(self.iface.mapCanvas(), SIGNAL("layersChanged()"), self.onVisibleLayersChanged)
7682
BasePluginWidget.onClosing(self)
7783

84+
7885
def onVisibleLayersChanged(self):
7986
# refresh list of visible raster layers
8087
self.visibleRasterLayers = []
8188
for layer in self.iface.mapCanvas().layers():
82-
if Utils.LayerRegistry.isRaster(layer):
83-
self.visibleRasterLayers.append(layer.source())
89+
if Utils.LayerRegistry.isRaster( layer ):
90+
self.visibleRasterLayers.append( layer.source() )
8491

8592
# refresh the text in the command viewer
8693
self.someValueChanged()
8794

8895
def switchToolMode(self):
89-
self.recurseCheck.setVisible(self.inputDirCheck.isChecked())
96+
self.recurseCheck.setVisible( self.inputDirCheck.isChecked() )
9097
self.inSelector.clear()
9198

9299
if self.inputDirCheck.isChecked():
93100
self.inFileLabel = self.label.text()
94-
self.label.setText(QCoreApplication.translate("GdalTools", "&Input directory"))
101+
self.label.setText( QCoreApplication.translate( "GdalTools", "&Input directory" ) )
95102

96103
QObject.disconnect(self.inSelector, SIGNAL("selectClicked()"), self.fillInputFilesEdit)
97104
QObject.connect(self.inSelector, SIGNAL("selectClicked()"), self.fillInputDir)
98105
else:
99-
self.label.setText(self.inFileLabel)
106+
self.label.setText( self.inFileLabel )
100107

101108
QObject.connect(self.inSelector, SIGNAL("selectClicked()"), self.fillInputFilesEdit)
102109
QObject.disconnect(self.inSelector, SIGNAL("selectClicked()"), self.fillInputDir)
103110

104111
def switchLayerMode(self):
105112
enableInputFiles = not self.inputSelLayersCheck.isChecked()
106-
self.inputDirCheck.setEnabled(enableInputFiles)
107-
self.inSelector.setEnabled(enableInputFiles)
108-
self.recurseCheck.setEnabled(enableInputFiles)
113+
self.inputDirCheck.setEnabled( enableInputFiles )
114+
self.inSelector.setEnabled( enableInputFiles )
115+
self.recurseCheck.setEnabled( enableInputFiles )
109116

110117
def fillInputFilesEdit(self):
111118
lastUsedFilter = Utils.FileFilter.lastUsedRasterFilter()
112-
files = Utils.FileDialog.getOpenFileNames(self, self.tr("Select the files for VRT"), Utils.FileFilter.allRastersFilter(), lastUsedFilter)
119+
files = Utils.FileDialog.getOpenFileNames(self, self.tr( "Select the files for VRT" ), Utils.FileFilter.allRastersFilter(), lastUsedFilter)
113120
if files == '':
114121
return
115122
Utils.FileFilter.setLastUsedRasterFilter(lastUsedFilter)
116123
self.inSelector.setFilename(",".join(files))
117124

118125
def fillOutputFileEdit(self):
119-
outputFile = Utils.FileDialog.getSaveFileName(self, self.tr("Select where to save the VRT"), self.tr("VRT (*.vrt)"))
126+
outputFile = Utils.FileDialog.getSaveFileName(self, self.tr( "Select where to save the VRT" ), self.tr( "VRT (*.vrt)" ))
120127
if outputFile == '':
121128
return
122129
self.outSelector.setFilename(outputFile)
123130

124-
def fillInputDir(self):
125-
inputDir = Utils.FileDialog.getExistingDirectory(self, self.tr("Select the input directory with files for VRT"))
131+
def fillInputDir( self ):
132+
inputDir = Utils.FileDialog.getExistingDirectory( self, self.tr( "Select the input directory with files for VRT" ))
126133
if inputDir == '':
127134
return
128-
self.inSelector.setFilename(inputDir)
135+
self.inSelector.setFilename( inputDir )
136+
137+
def fillTargetSRSEdit(self):
138+
dialog = SRSDialog( "Select the target SRS", self )
139+
if dialog.exec_():
140+
self.targetSRSEdit.setText(dialog.getProjection())
129141

130142
def getArguments(self):
131143
arguments = []
@@ -136,14 +148,17 @@ def getArguments(self):
136148
arguments.append("-separate")
137149
if self.srcNoDataCheck.isChecked():
138150
arguments.append("-srcnodata")
139-
arguments.append(unicode(self.srcNoDataSpin.value()))
151+
arguments.append(str(self.srcNoDataSpin.value()))
152+
if self.targetSRSCheck.isChecked() and self.targetSRSEdit.text():
153+
arguments.append("-a_srs")
154+
arguments.append(self.targetSRSEdit.text())
140155
if self.allowProjDiffCheck.isChecked():
141156
arguments.append("-allow_projection_difference")
142157
arguments.append(self.getOutputFileName())
143158
if self.inputSelLayersCheck.isChecked():
144159
arguments.extend(self.visibleRasterLayers)
145160
elif self.inputDirCheck.isChecked():
146-
arguments.extend(Utils.getRasterFiles(self.getInputFileName(), self.recurseCheck.isChecked()))
161+
arguments.extend(Utils.getRasterFiles( self.getInputFileName(), self.recurseCheck.isChecked() ))
147162
else:
148163
arguments.extend(self.getInputFileName())
149164
return arguments

python/plugins/GdalTools/tools/widgetBuildVRT.ui

Lines changed: 64 additions & 43 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@
77
<x>0</x>
88
<y>0</y>
99
<width>348</width>
10-
<height>266</height>
10+
<height>304</height>
1111
</rect>
1212
</property>
1313
<property name="sizePolicy">
@@ -32,10 +32,30 @@
3232
</property>
3333
</widget>
3434
</item>
35-
<item row="1" column="0" colspan="2">
36-
<widget class="QCheckBox" name="inputDirCheck">
35+
<item row="4" column="1">
36+
<widget class="GdalToolsInOutSelector" name="outSelector" native="true"/>
37+
</item>
38+
<item row="6" column="1">
39+
<widget class="QSpinBox" name="srcNoDataSpin">
40+
<property name="minimum">
41+
<number>-100000</number>
42+
</property>
43+
<property name="maximum">
44+
<number>65000</number>
45+
</property>
46+
</widget>
47+
</item>
48+
<item row="7" column="0">
49+
<widget class="QCheckBox" name="targetSRSCheck">
3750
<property name="text">
38-
<string>Choose input directory instead of files</string>
51+
<string>Target SRS</string>
52+
</property>
53+
</widget>
54+
</item>
55+
<item row="6" column="0">
56+
<widget class="QCheckBox" name="srcNoDataCheck">
57+
<property name="text">
58+
<string>&amp;Source No Data</string>
3959
</property>
4060
</widget>
4161
</item>
@@ -49,13 +69,6 @@
4969
</property>
5070
</widget>
5171
</item>
52-
<item row="3" column="1">
53-
<widget class="QCheckBox" name="recurseCheck">
54-
<property name="text">
55-
<string>Recurse subdirectories</string>
56-
</property>
57-
</widget>
58-
</item>
5972
<item row="4" column="0">
6073
<widget class="QLabel" name="label_2">
6174
<property name="text">
@@ -66,6 +79,30 @@
6679
</property>
6780
</widget>
6881
</item>
82+
<item row="1" column="0" colspan="2">
83+
<widget class="QCheckBox" name="inputDirCheck">
84+
<property name="text">
85+
<string>Choose input directory instead of files</string>
86+
</property>
87+
</widget>
88+
</item>
89+
<item row="8" column="0">
90+
<widget class="QCheckBox" name="separateCheck">
91+
<property name="text">
92+
<string>Se&amp;parate</string>
93+
</property>
94+
</widget>
95+
</item>
96+
<item row="10" column="0" colspan="2">
97+
<widget class="QCheckBox" name="allowProjDiffCheck">
98+
<property name="text">
99+
<string>Allow projection difference</string>
100+
</property>
101+
</widget>
102+
</item>
103+
<item row="2" column="1">
104+
<widget class="GdalToolsInOutSelector" name="inSelector" native="true"/>
105+
</item>
69106
<item row="5" column="0">
70107
<widget class="QCheckBox" name="resolutionCheck">
71108
<property name="text">
@@ -101,42 +138,26 @@
101138
</item>
102139
</widget>
103140
</item>
104-
<item row="6" column="0">
105-
<widget class="QCheckBox" name="srcNoDataCheck">
106-
<property name="text">
107-
<string>&amp;Source No Data</string>
108-
</property>
109-
</widget>
110-
</item>
111-
<item row="6" column="1">
112-
<widget class="QSpinBox" name="srcNoDataSpin">
113-
<property name="minimum">
114-
<number>-100000</number>
115-
</property>
116-
<property name="maximum">
117-
<number>65000</number>
118-
</property>
119-
</widget>
120-
</item>
121-
<item row="7" column="0">
122-
<widget class="QCheckBox" name="separateCheck">
141+
<item row="3" column="1">
142+
<widget class="QCheckBox" name="recurseCheck">
123143
<property name="text">
124-
<string>Se&amp;parate</string>
144+
<string>Recurse subdirectories</string>
125145
</property>
126146
</widget>
127147
</item>
128-
<item row="2" column="1">
129-
<widget class="GdalToolsInOutSelector" name="inSelector" native="true"/>
130-
</item>
131-
<item row="4" column="1">
132-
<widget class="GdalToolsInOutSelector" name="outSelector" native="true"/>
133-
</item>
134-
<item row="8" column="0" colspan="2">
135-
<widget class="QCheckBox" name="allowProjDiffCheck">
136-
<property name="text">
137-
<string>Allow projection difference</string>
138-
</property>
139-
</widget>
148+
<item row="7" column="1">
149+
<layout class="QHBoxLayout" name="horizontalLayout_2">
150+
<item>
151+
<widget class="QLineEdit" name="targetSRSEdit"/>
152+
</item>
153+
<item>
154+
<widget class="QPushButton" name="selectTargetSRSButton">
155+
<property name="text">
156+
<string>Select</string>
157+
</property>
158+
</widget>
159+
</item>
160+
</layout>
140161
</item>
141162
</layout>
142163
</item>

0 commit comments

Comments
 (0)