11
11
12
12
import os .path
13
13
14
- class GdalToolsBatchProjectionWidget (BaseBatchWidget ):
15
- def __init__ (self , iface , commandName , helpFileBaseName = None ):
16
- BaseBatchWidget .__init__ (self , iface , commandName , helpFileBaseName )
17
14
18
- layerMap = QgsMapLayerRegistry .instance ().mapLayers ()
19
- self .layerList = []
20
- for name , layer in layerMap .iteritems ():
21
- if layer .type () == QgsMapLayer .RasterLayer :
22
- self .layerList .append ( unicode ( layer .name () ) )
23
-
24
- def batchRun (self ):
25
- self .base .enableRun ( False )
26
- self .base .setCursor ( Qt .WaitCursor )
27
-
28
- inDir = self .getInputFileName ()
29
- outDir = self .getOutputFileName ()
30
-
31
- filter = Utils .getRasterExtensions ()
32
- self .inFiles = []
33
- self .outFiles = []
34
-
35
- if self .recurseCheck .isChecked ():
36
- workDir = QDir ( inDir )
37
- workDir .setFilter ( QDir .Files | QDir .NoSymLinks | QDir .NoDotAndDotDot )
38
- workDir .setNameFilters ( filter )
39
- workFiles = workDir .entryList ()
40
- for f in workFiles :
41
- self .inFiles .append ( QString ( inDir + "/" + f ) )
42
- for myRoot , myDirs , myFiles in os .walk ( str ( inDir ) ):
43
- for dir in myDirs :
44
- workDir = QDir ( myRoot + "/" + dir )
45
- workDir .setFilter ( QDir .Files | QDir .NoSymLinks | QDir .NoDotAndDotDot )
46
- workDir .setNameFilters ( filter )
47
- workFiles = workDir .entryList ()
48
- for f in workFiles :
49
- self .inFiles .append ( QString ( myRoot + "/" + dir + "/" + f ) )
50
- for f in self .inFiles :
51
- if outDir != None :
52
- outFile = QString ( f ).insert ( f .indexOf ( "." ), "_1" ).replace ( QRegExp ( "\.[a-zA-Z]{3,4}$" ), ".tif" )
53
- self .outFiles .append ( outFile )
54
- else :
55
- workDir = QDir ( inDir )
56
- workDir .setFilter ( QDir .Files | QDir .NoSymLinks | QDir .NoDotAndDotDot )
57
- workDir .setNameFilters ( filter )
58
- files = workDir .entryList ()
59
- for f in files :
60
- self .inFiles .append ( inDir + "/" + f )
61
- if outDir != None :
62
- outFile = QString ( f ).insert ( f .indexOf ( "." ), "_1" ).replace ( QRegExp ( "\.[a-zA-Z]{3,4}$" ), ".tif" )
63
- self .outFiles .append ( outDir + "/" + outFile )
64
-
65
- #files = QStringList()
66
- #for myRoot, myDirs, myFiles in os.walk( str( inDir ) ):
67
- # for dir in myDirs:
68
- # print "DIR", dir
69
- # workDir = QDir( myRoot + "/" + dir )
70
- # workDir.setFilter( QDir.Files | QDir.NoSymLinks | QDir.NoDotAndDotDot )
71
- # workDir.setNameFilters( filter )
72
- # workFiles = workDir.entryList()
73
- # print "ENTRY", workFiles.join( " " )
74
- # for f in workFiles:
75
- # files.append( QString( myRoot + "/" + dir + "/" + f ) )
76
-
77
- #print "FILES", files.join( "\n" )
78
-
79
- #filter = Utils.getRasterExtensions()
80
- #workDir = QDir( inDir )
81
- #workDir.setFilter( QDir.Files | QDir.NoSymLinks | QDir.NoDotAndDotDot )
82
- #workDir.setNameFilters( filter )
83
- #files = workDir.entryList()
84
-
85
- #self.inFiles = []
86
- #self.outFiles = []
87
-
88
- #for f in files:
89
- # self.inFiles.append( inDir + "/" + f )
90
- # if outDir != None:
91
- # outFile = QString( f ).insert( f.indexOf( "." ), "_1" ).replace( QRegExp( "\.[a-zA-Z]{3,4}$" ), ".tif" )
92
- # self.outFiles.append( outDir + "/" + outFile )
93
-
94
- self .errors = QStringList ()
95
- self .batchIndex = 0
96
- self .batchTotal = len ( self .inFiles )
97
- self .setProgressRange ( self .batchTotal )
98
-
99
- self .runItem ( self .batchIndex , self .batchTotal )
100
-
101
- def runItem (self , index , total ):
102
- if index >= total :
103
- self .outFiles = self .inFiles
104
-
105
- BaseBatchWidget .runItem (self , index , total )
106
-
107
- def onFinished (self , exitCode , status ):
108
- if not self .isBatchEnabled ():
109
- BaseBatchWidget .onFinished (self , exitCode , status )
110
- return
111
-
112
- oldFile = QFile ( self .inFiles [self .batchIndex ] )
113
- newFile = QFile ( self .outFiles [self .batchIndex ] )
114
- if oldFile .remove ():
115
- newFile .rename (self .inFiles [self .batchIndex ])
116
-
117
- BaseBatchWidget .onFinished (self , exitCode , status )
118
-
119
-
120
- class GdalToolsDialog ( QWidget , Ui_Widget , GdalToolsBatchProjectionWidget ):
15
+ class GdalToolsDialog ( QWidget , Ui_Widget , BaseBatchWidget ):
121
16
122
17
def __init__ ( self , iface ):
123
18
QWidget .__init__ ( self )
124
19
self .iface = iface
125
20
126
21
self .setupUi ( self )
127
- GdalToolsBatchProjectionWidget .__init__ ( self , self .iface , "gdalwarp" )
22
+ BaseBatchWidget .__init__ ( self , self .iface , "gdalwarp" )
128
23
129
24
# set the default QSpinBoxes and QProgressBar value
130
25
self .progressBar .setValue (0 )
131
26
132
27
self .progressBar .hide ()
133
28
self .recurseCheck .hide ()
134
- # store temporary file name
135
- self .tempFile = QString ()
136
29
137
30
self .setParamsStatus (
138
31
[
@@ -155,15 +48,15 @@ def switchToolMode( self ):
155
48
156
49
if self .batchCheck .isChecked ():
157
50
self .inFileLabel = self .label .text ()
158
- self .label .setText ( QCoreApplication .translate ( "GdalTools" , "&Input directory: " ) )
51
+ self .label .setText ( QCoreApplication .translate ( "GdalTools" , "&Input directory" ) )
159
52
160
53
self .progressBar .show ()
161
54
self .recurseCheck .show ()
162
55
163
56
QObject .disconnect ( self .selectInputFileButton , SIGNAL ( "clicked()" ), self .fillInputFileEdit )
164
57
QObject .connect ( self .selectInputFileButton , SIGNAL ( "clicked()" ), self .fillInputDir )
165
58
166
- QObject .disconnect ( self .base .buttonBox .button ( QDialogButtonBox .Ok ), SIGNAL ( "clicked()" ), self .checkLayer )
59
+ # QObject.disconnect( self.base.buttonBox.button( QDialogButtonBox.Ok ), SIGNAL( "clicked()" ), self.checkLayer )
167
60
else :
168
61
self .label .setText ( self .inFileLabel )
169
62
@@ -173,7 +66,7 @@ def switchToolMode( self ):
173
66
QObject .connect ( self .selectInputFileButton , SIGNAL ( "clicked()" ), self .fillInputFileEdit )
174
67
QObject .disconnect ( self .selectInputFileButton , SIGNAL ( "clicked()" ), self .fillInputDir )
175
68
176
- QObject .connect ( self .base .buttonBox .button ( QDialogButtonBox .Ok ), SIGNAL ( "clicked()" ), self .checkLayer )
69
+ # QObject.connect( self.base.buttonBox.button( QDialogButtonBox.Ok ), SIGNAL( "clicked()" ), self.checkLayer )
177
70
178
71
def enableRecurse ( self ):
179
72
if self .recurseCheck .isChecked ():
@@ -186,29 +79,20 @@ def enableRecurse( self ):
186
79
187
80
def fillInputFileEdit ( self ):
188
81
lastUsedFilter = Utils .FileFilter .lastUsedRasterFilter ()
189
- file = Utils .FileDialog .getOpenFileName ( self , self .tr ( "Select the file to analyse" ), Utils .FileFilter .allRastersFilter (), lastUsedFilter )
190
- if file .isEmpty ():
82
+ inputFile = Utils .FileDialog .getOpenFileName ( self , self .tr ( "Select the file to analyse" ), Utils .FileFilter .allRastersFilter (), lastUsedFilter )
83
+ if inputFile .isEmpty ():
191
84
return
192
-
193
- outFile = QString ( file ).insert ( file .indexOf ( "." ), "_1" ).replace ( QRegExp ( "\.[a-zA-Z]{3,4}$" ), ".tif" )
194
- self .tempFile = outFile
195
- #self.outputFormat = Utils.fillOutputFormat( lastUsedFilter, file )
196
85
Utils .FileFilter .setLastUsedRasterFilter ( lastUsedFilter )
197
- self .inputFileEdit .setText ( file )
86
+ #self.outputFormat = Utils.fillOutputFormat( lastUsedFilter, file )
87
+ self .inputFileEdit .setText ( inputFile )
198
88
199
89
def fillInputDir ( self ):
200
90
inputDir = Utils .FileDialog .getExistingDirectory ( self , self .tr ( "Select the input directory with files to Assign projection" ))
201
91
if inputDir .isEmpty ():
202
92
return
203
93
204
- self .inputPath = inputDir
205
94
self .inputFileEdit .setText ( inputDir )
206
95
207
- filter = Utils .getRasterExtensions ()
208
- workDir = QDir ( inputDir )
209
- workDir .setFilter ( QDir .Files | QDir .NoSymLinks | QDir .NoDotAndDotDot )
210
- workDir .setNameFilters ( filter )
211
-
212
96
def fillDesiredSRSEdit ( self ):
213
97
dialog = SRSDialog ( "Select desired SRS" )
214
98
if dialog .exec_ ():
@@ -225,6 +109,7 @@ def getArguments( self ):
225
109
if self .batchCheck .isChecked ():
226
110
return arguments
227
111
arguments << self .inputFileEdit .text ()
112
+ self .tempFile = self .inputFileEdit .text ().replace ( QRegExp ( "\.[a-zA-Z]{2,4}$" ), ".tif" ).append ( ".tmp" )
228
113
arguments << self .tempFile
229
114
return arguments
230
115
@@ -234,25 +119,34 @@ def getInputFileName(self):
234
119
def getOutputFileName ( self ):
235
120
return self .inputFileEdit .text ()
236
121
122
+ def getBatchOutputFileName (self , fn ):
123
+ # get GeoTiff
124
+ fn = QString ( fn ).replace ( QRegExp ( "\.[a-zA-Z]{2,4}$" ), ".tif" )
125
+ return BaseBatchWidget .getBatchOutputFileName ( self , fn )
126
+
237
127
def addLayerIntoCanvas (self , fileInfo ):
238
128
self .iface .addRasterLayer (fileInfo .filePath ())
239
129
240
130
def checkLayer ( self ):
241
- layerMap = QgsMapLayerRegistry .instance ().mapLayers ()
242
131
layerList = []
132
+
133
+ layerMap = QgsMapLayerRegistry .instance ().mapLayers ()
243
134
for name , layer in layerMap .iteritems ():
244
135
if layer .type () == QgsMapLayer .RasterLayer :
245
- layerList .append ( unicode ( layer .name () ) )
246
- fileName = QString ( os .path .split ( str ( self .inputFileEdit .text () ) )[ 1 ] )
247
- fileName = fileName .left ( fileName .indexOf ( "." ) )
248
- if fileName in layerList :
136
+ layerList .append ( unicode ( layer .source () ) )
137
+
138
+ if unicode ( self .inputFileEdit .text () ) in layerList :
249
139
QMessageBox .warning ( self , self .tr ( "Assign projection" ), self .tr ( "This raster already found in map canvas" ) )
250
140
return
141
+
251
142
self .onRun ()
252
143
253
144
def isBatchEnabled (self ):
254
145
return self .batchCheck .isChecked ()
255
146
147
+ def isRecursiveScanEnabled (self ):
148
+ return self .recurseCheck .isChecked ()
149
+
256
150
def setProgressRange (self , maximum ):
257
151
self .progressBar .setRange (0 , maximum )
258
152
@@ -268,65 +162,3 @@ def finished( self ):
268
162
if oldFile .remove ():
269
163
newFile .rename ( self .inputFileEdit .text () )
270
164
271
- # def batchRun( self ):
272
- # self.base.buttonBox.button( QDialogButtonBox.Ok ).setEnabled( False )
273
- # self.base.setCursor( Qt.WaitCursor )
274
- #
275
- # filter = Utils.getRasterExtensions()
276
- # inDir = self.inputFileEdit.text()
277
- # outDir = inDir
278
- # workDir = QDir( inDir )
279
- # workDir.setFilter( QDir.Files | QDir.NoSymLinks | QDir.NoDotAndDotDot )
280
- # workDir.setNameFilters( filter )
281
- # files = workDir.entryList()
282
- #
283
- # inFiles = []
284
- # self.outFiles = []
285
- # for f in files:
286
- # inFiles.append( inDir + "/" + f )
287
- # outFile = QString( f ).insert( f.indexOf( "." ), "_1" ).replace( QRegExp( "\.[a-zA-Z]{3,4}$" ), ".tif" )
288
- # #outFile = f.replace( QRegExp( "\.[a-zA-Z0-9]{2,4}" ), ".tif" )
289
- # self.outFiles.append( outDir + "/" + outFile )
290
- #
291
- # args = QStringList()
292
- # for i in range( self.base.arguments.count() ):
293
- # args.append( self.base.arguments[ i ] )
294
- #
295
- # self.errors = QStringList()
296
- # count = 1
297
- # total = len( inFiles )
298
- # for i, item in enumerate( inFiles ):
299
- # #print "PROCESS", i
300
- # #self.lblProgress.setText( self.tr( "Processed: %1 from %2" ).arg( count ).arg( total ) )
301
- # #QCoreApplication.processEvents()
302
- # count = count + 1
303
- #
304
- # itemArgs = QStringList()
305
- # itemArgs << args
306
- # itemArgs << item
307
- # itemArgs << self.outFiles[ i ]
308
- #
309
- # self.base.process.start( self.base.command, itemArgs, QIODevice.ReadOnly )
310
- # if self.base.process.waitForFinished():
311
- # msg = QString( self.base.process.readAllStandardError() )
312
- # if not msg.isEmpty():
313
- # self.errors.append( item )
314
- # self.base.process.close()
315
- #
316
- # oldFile = QFile( item )
317
- # newFile = QFile( self.outFiles[ i ] )
318
- # if oldFile.remove():
319
- # newFile.rename( item )
320
- #
321
- # #self.lblProgress.setText( self.tr( "Finished" ) )
322
- # self.batchFinished()
323
- #
324
- # def batchFinished( self ):
325
- # self.base.buttonBox.button( QDialogButtonBox.Ok ).setEnabled( True )
326
- # self.base.setCursor( Qt.ArrowCursor )
327
- #
328
- # if not self.errors.isEmpty():
329
- # message = QErrorMessage( self )
330
- # msg = QString( "Processing of the following files ended with error:\n\n" ).append( self.errors.join( "\n" ) )
331
- # message.showMessage( msg )
332
-
0 commit comments