2010-06-04 00:31:48 +00:00
# -*- coding: utf-8 -*-
from PyQt4 . QtCore import *
from PyQt4 . QtGui import *
from qgis . core import *
from qgis . gui import *
from ui_widgetClipper import Ui_GdalToolsWidget as Ui_Widget
from widgetPluginBase import GdalToolsBasePluginWidget as BasePluginWidget
import GdalTools_utils as Utils
class GdalToolsDialog ( QWidget , Ui_Widget , BasePluginWidget ) :
def __init__ ( self , iface ) :
QWidget . __init__ ( self )
self . iface = iface
self . canvas = self . iface . mapCanvas ( )
self . setupUi ( self )
2012-01-26 00:54:56 +01:00
BasePluginWidget . __init__ ( self , self . iface , " gdal_translate " )
2010-06-04 00:31:48 +00:00
2011-04-15 18:30:10 +00:00
self . outSelector . setType ( self . outSelector . FILE )
2010-12-27 16:55:17 +00:00
self . extentSelector . setCanvas ( self . canvas )
2010-06-04 00:31:48 +00:00
self . outputFormat = Utils . fillRasterOutputFormat ( )
self . setParamsStatus (
[
2011-04-15 18:30:10 +00:00
( self . inSelector , SIGNAL ( " filenameChanged() " ) ) ,
( self . outSelector , SIGNAL ( " filenameChanged() " ) ) ,
2011-04-15 17:58:00 +00:00
( self . noDataSpin , SIGNAL ( " valueChanged(int) " ) , self . noDataCheck , " 1.7.0 " ) ,
2011-04-15 18:30:10 +00:00
( self . maskSelector , SIGNAL ( " filenameChanged() " ) , self . maskModeRadio , " 1.6.0 " ) ,
2011-05-22 21:12:04 +03:00
( self . alphaBandCheck , SIGNAL ( " stateChanged( int ) " ) ) ,
2011-04-15 18:30:10 +00:00
( self . extentSelector , [ SIGNAL ( " selectionStarted() " ) , SIGNAL ( " newExtentDefined() " ) ] , self . extentModeRadio ) ,
2011-04-15 17:58:00 +00:00
( self . modeStackedWidget , SIGNAL ( " currentIndexChanged(int) " ) )
2010-06-04 00:31:48 +00:00
]
)
2011-04-15 18:30:10 +00:00
self . connect ( self . inSelector , SIGNAL ( " selectClicked() " ) , self . fillInputFileEdit )
self . connect ( self . outSelector , SIGNAL ( " selectClicked() " ) , self . fillOutputFileEdit )
self . connect ( self . maskSelector , SIGNAL ( " selectClicked() " ) , self . fillMaskFileEdit )
2010-12-27 16:55:17 +00:00
self . connect ( self . extentSelector , SIGNAL ( " newExtentDefined() " ) , self . checkRun )
self . connect ( self . extentSelector , SIGNAL ( " selectionStarted() " ) , self . checkRun )
2010-06-04 00:31:48 +00:00
2011-04-15 17:58:00 +00:00
self . connect ( self . extentModeRadio , SIGNAL ( " toggled(bool) " ) , self . switchClippingMode )
2010-06-04 00:31:48 +00:00
def show_ ( self ) :
2011-04-15 17:58:00 +00:00
self . switchClippingMode ( )
2010-06-04 00:31:48 +00:00
BasePluginWidget . show_ ( self )
def onClosing ( self ) :
2010-12-27 16:55:17 +00:00
self . extentSelector . stop ( )
2010-06-04 00:31:48 +00:00
BasePluginWidget . onClosing ( self )
2011-04-15 17:58:00 +00:00
def switchClippingMode ( self ) :
if self . extentModeRadio . isChecked ( ) :
index = 0
self . extentSelector . start ( )
else :
self . extentSelector . stop ( )
index = 1
self . modeStackedWidget . setCurrentIndex ( index )
self . checkRun ( )
2011-04-13 22:15:37 +00:00
def checkRun ( self ) :
2011-04-15 17:58:00 +00:00
if self . extentModeRadio . isChecked ( ) :
enabler = self . extentSelector . isCoordsValid ( )
else :
2011-04-15 18:30:10 +00:00
enabler = not self . maskSelector . filename ( ) . isEmpty ( )
2011-04-15 17:58:00 +00:00
self . base . enableRun ( enabler )
2010-06-04 00:31:48 +00:00
2011-04-13 22:15:37 +00:00
def onLayersChanged ( self ) :
2011-04-15 18:30:10 +00:00
self . inSelector . setLayers ( Utils . LayerRegistry . instance ( ) . getRasterLayers ( ) )
self . maskSelector . setLayers ( filter ( lambda x : x . geometryType ( ) == QGis . Polygon , Utils . LayerRegistry . instance ( ) . getVectorLayers ( ) ) )
self . checkRun ( )
2010-06-04 00:31:48 +00:00
2011-04-15 18:30:10 +00:00
def fillInputFileEdit ( self ) :
2011-04-13 22:15:37 +00:00
lastUsedFilter = Utils . FileFilter . lastUsedRasterFilter ( )
2011-04-15 18:30:10 +00:00
inputFile = Utils . FileDialog . getOpenFileName ( self , self . tr ( " Select the input file for Polygonize " ) , Utils . FileFilter . allRastersFilter ( ) , lastUsedFilter )
2011-04-13 22:15:37 +00:00
if inputFile . isEmpty ( ) :
return
2011-04-15 18:30:10 +00:00
Utils . FileFilter . setLastUsedRasterFilter ( lastUsedFilter )
2010-06-04 00:31:48 +00:00
2011-04-15 18:30:10 +00:00
self . inSelector . setFilename ( inputFile )
2010-06-04 00:31:48 +00:00
def fillOutputFileEdit ( self ) :
lastUsedFilter = Utils . FileFilter . lastUsedRasterFilter ( )
outputFile = Utils . FileDialog . getSaveFileName ( self , self . tr ( " Select the raster file to save the results to " ) , Utils . FileFilter . allRastersFilter ( ) , lastUsedFilter )
if outputFile . isEmpty ( ) :
return
Utils . FileFilter . setLastUsedRasterFilter ( lastUsedFilter )
self . outputFormat = Utils . fillRasterOutputFormat ( lastUsedFilter , outputFile )
2011-04-15 18:30:10 +00:00
self . outSelector . setFilename ( outputFile )
2011-04-15 17:58:00 +00:00
2011-04-15 18:30:10 +00:00
def fillMaskFileEdit ( self ) :
2011-04-15 17:58:00 +00:00
lastUsedFilter = Utils . FileFilter . lastUsedVectorFilter ( )
maskFile = Utils . FileDialog . getOpenFileName ( self , self . tr ( " Select the mask file " ) , Utils . FileFilter . allVectorsFilter ( ) , lastUsedFilter )
if maskFile . isEmpty ( ) :
return
Utils . FileFilter . setLastUsedVectorFilter ( lastUsedFilter )
2011-04-15 18:30:10 +00:00
self . maskSelector . setFilename ( maskFile )
2011-04-15 17:58:00 +00:00
self . checkRun ( )
2010-06-04 00:31:48 +00:00
def getArguments ( self ) :
2011-04-15 17:58:00 +00:00
if not self . extentModeRadio . isChecked ( ) :
return self . getArgsModeMask ( )
return self . getArgsModeExtent ( )
def getArgsModeExtent ( self ) :
self . base . setPluginCommand ( " gdal_translate " )
2010-06-04 00:31:48 +00:00
arguments = QStringList ( )
if self . noDataCheck . isChecked ( ) :
2011-04-13 22:15:37 +00:00
arguments << " -a_nodata "
2010-06-04 00:31:48 +00:00
arguments << str ( self . noDataSpin . value ( ) )
2011-04-15 17:58:00 +00:00
if self . extentModeRadio . isChecked ( ) and self . extentSelector . isCoordsValid ( ) :
2010-12-27 16:55:17 +00:00
rect = self . extentSelector . getExtent ( )
2010-06-04 00:31:48 +00:00
if rect != None :
2011-04-13 22:15:37 +00:00
arguments << " -projwin "
2010-06-04 00:31:48 +00:00
arguments << str ( rect . xMinimum ( ) )
arguments << str ( rect . yMaximum ( ) )
arguments << str ( rect . xMaximum ( ) )
arguments << str ( rect . yMinimum ( ) )
2011-04-13 22:15:37 +00:00
if not self . getOutputFileName ( ) . isEmpty ( ) :
2010-06-04 00:31:48 +00:00
arguments << " -of "
arguments << self . outputFormat
2011-04-13 22:15:37 +00:00
arguments << self . getInputFileName ( )
arguments << self . getOutputFileName ( )
2010-06-04 00:31:48 +00:00
return arguments
2011-04-15 17:58:00 +00:00
def getArgsModeMask ( self ) :
self . base . setPluginCommand ( " gdalwarp " )
arguments = QStringList ( )
if self . noDataCheck . isChecked ( ) :
arguments << " -dstnodata "
arguments << str ( self . noDataSpin . value ( ) )
if self . maskModeRadio . isChecked ( ) :
2011-04-15 18:30:10 +00:00
mask = self . maskSelector . filename ( )
2011-04-15 17:58:00 +00:00
if not mask . isEmpty ( ) :
arguments << " -q "
arguments << " -cutline "
arguments << mask
2011-05-26 11:58:18 +02:00
if Utils . GdalConfig . version ( ) > = " 1.8.0 " :
arguments << " -crop_to_cutline "
2011-05-22 21:12:04 +03:00
if self . alphaBandCheck . isChecked ( ) :
arguments << " -dstalpha "
2011-04-15 17:58:00 +00:00
outputFn = self . getOutputFileName ( )
if not outputFn . isEmpty ( ) :
arguments << " -of "
arguments << self . outputFormat
arguments << self . getInputFileName ( )
arguments << outputFn
return arguments
2010-06-04 00:31:48 +00:00
def getOutputFileName ( self ) :
2011-04-15 18:30:10 +00:00
return self . outSelector . filename ( )
2010-06-04 00:31:48 +00:00
2011-04-13 22:15:37 +00:00
def getInputFileName ( self ) :
2011-04-15 18:30:10 +00:00
return self . inSelector . filename ( )
2011-04-15 17:58:00 +00:00
2010-06-04 00:31:48 +00:00
def addLayerIntoCanvas ( self , fileInfo ) :
self . iface . addRasterLayer ( fileInfo . filePath ( ) )