-
-
Notifications
You must be signed in to change notification settings - Fork 3k
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
[FEATURE] added GUI for gdaldem, to fix #3064
git-svn-id: http://svn.osgeo.org/qgis/trunk/qgis@15495 c8812cc2-4d05-0410-92ff-de0c093fc19c
- Loading branch information
brushtyler
committed
Mar 15, 2011
1 parent
72d0b13
commit d99e9ca
Showing
7 changed files
with
677 additions
and
26 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Original file line | Diff line number | Diff line change |
---|---|---|---|
@@ -1,23 +1,24 @@ | |||
<RCC> | <RCC> | ||
<qresource> | <qresource prefix="/" > | ||
<file>icons/contour.png</file> | <file>icons/contour.png</file> | ||
<file>icons/merge.png</file> | <file>icons/merge.png</file> | ||
<file>icons/polygonize.png</file> | <file>icons/polygonize.png</file> | ||
<file>icons/rasterize.png</file> | <file>icons/rasterize.png</file> | ||
<file>icons/sieve.png</file> | <file>icons/sieve.png</file> | ||
<file>icons/vrt.png</file> | <file>icons/vrt.png</file> | ||
<file>icons/warp.png</file> | <file>icons/warp.png</file> | ||
<file>icons/proximity.png</file> | <file>icons/proximity.png</file> | ||
<file>icons/nearblack.png</file> | <file>icons/nearblack.png</file> | ||
<file>icons/grid.png</file> | <file>icons/grid.png</file> | ||
<file>icons/translate.png</file> | <file>icons/translate.png</file> | ||
<file>icons/raster-info.png</file> | <file>icons/raster-info.png</file> | ||
<file>icons/projection-add.png</file> | <file>icons/projection-add.png</file> | ||
<file>icons/raster-overview.png</file> | <file>icons/raster-overview.png</file> | ||
<file>icons/raster-clip.png</file> | <file>icons/raster-clip.png</file> | ||
<file>icons/raster-paletted.png</file> | <file>icons/raster-paletted.png</file> | ||
<file>icons/raster-rgb.png</file> | <file>icons/raster-rgb.png</file> | ||
<file>icons/tileindex.png</file> | <file>icons/tileindex.png</file> | ||
<file>icons/about.png</file> | <file>icons/about.png</file> | ||
</qresource> | <file>icons/dem.png</file> | ||
</qresource> | |||
</RCC> | </RCC> |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Original file line | Diff line number | Diff line change |
---|---|---|---|
@@ -0,0 +1,144 @@ | |||
# -*- coding: utf-8 -*- | |||
from PyQt4.QtCore import * | |||
from PyQt4.QtGui import * | |||
from qgis.core import * | |||
from qgis.gui import * | |||
|
|||
from ui_widgetDEM 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.modes = ("hillshade", "slope", "aspect", "color-relief", "TRI", "TPI", "roughness") | |||
|
|||
self.setupUi(self) | |||
BasePluginWidget.__init__(self, self.iface, "gdaldem") | |||
|
|||
# set the default QSpinBoxes and QProgressBar value | |||
self.bandSpin.setValue(1) | |||
|
|||
self.hillshadeZFactorSpin.setValue(1) | |||
self.hillshadeScaleSpin.setValue(1) | |||
self.hillshadeAltitudeSpin.setValue(45.0) | |||
self.hillshadeAzimuthSpin.setValue(315.0) | |||
self.slopeScaleSpin.setValue(1) | |||
|
|||
self.outputFormat = Utils.fillRasterOutputFormat() | |||
|
|||
self.setParamsStatus( | |||
[ | |||
(self.inputLayerCombo, [SIGNAL("currentIndexChanged(int)"), SIGNAL("editTextChanged(const QString &)")] ), | |||
(self.outputFileEdit, SIGNAL("textChanged(const QString &)")), | |||
(self.computeEdgesCheck, SIGNAL("stateChanged(int)"), None, "1.8.0"), | |||
(self.bandSpin, SIGNAL("valueChanged(int)"), self.bandCheck), | |||
(self.creationOptionsTable, [SIGNAL("cellValueChanged(int, int)"), SIGNAL("rowRemoved()")], self.creationGroupBox), | |||
(self.modeCombo, SIGNAL("currentIndexChanged(int)")), | |||
([self.hillshadeZFactorSpin, self.hillshadeScaleSpin, self.hillshadeAltitudeSpin, self.hillshadeAzimuthSpin], SIGNAL("valueChanged(double)")), | |||
(self.slopeScaleSpin, SIGNAL("valueChanged(double)")), | |||
(self.slopePercentCheck, SIGNAL("stateChanged(int)")), | |||
([self.aspectTrigonometricCheck, self.aspectZeroForFlatCheck], SIGNAL("stateChanged(int)")), | |||
(self.colorConfigFileEdit, SIGNAL("textChanged(const QString &)")), | |||
([self.colorExactRadio, self.colorNearestRadio], SIGNAL("toggled(bool)"), self.colorMatchGroupBox), | |||
(self.colorAlphaCheck, SIGNAL("stateChanged(int)")) | |||
] | |||
) | |||
|
|||
self.connect(self.selectInputFileButton, SIGNAL("clicked()"), self.fillInputFileEdit) | |||
self.connect(self.selectOutputFileButton, SIGNAL("clicked()"), self.fillOutputFileEdit) | |||
self.connect(self.colorSelectConfigFileButton, SIGNAL("clicked()"), self.fillColorConfigFileEdit) | |||
self.connect(self.modeCombo, SIGNAL("currentIndexChanged(int)"), self.showModeParams) | |||
|
|||
def showModeParams(self, index): | |||
self.stackedWidget.setVisible( index < 4 ) | |||
|
|||
def onLayersChanged(self): | |||
self.fillInputLayerCombo() | |||
|
|||
def fillInputLayerCombo(self): | |||
self.inputLayerCombo.clear() | |||
( self.layers, names ) = Utils.LayerRegistry.instance().getRasterLayers() | |||
self.inputLayerCombo.addItems( names ) | |||
|
|||
def fillInputFileEdit(self): | |||
lastUsedFilter = Utils.FileFilter.lastUsedRasterFilter() | |||
inputFile = Utils.FileDialog.getOpenFileName(self, self.tr( "Select the file for DEM" ), Utils.FileFilter.allRastersFilter(), lastUsedFilter) | |||
if inputFile.isEmpty(): | |||
return | |||
Utils.FileFilter.setLastUsedRasterFilter(lastUsedFilter) | |||
|
|||
self.inputLayerCombo.setCurrentIndex(-1) | |||
self.inputLayerCombo.setEditText(inputFile) | |||
|
|||
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 ) | |||
self.outputFileEdit.setText(outputFile) | |||
|
|||
def fillColorConfigFileEdit(self): | |||
configFile = Utils.FileDialog.getOpenFileName(self, self.tr( "Select the color configuration file" ), "*") | |||
if configFile.isEmpty(): | |||
return | |||
|
|||
self.colorConfigFileEdit.setText(configFile) | |||
|
|||
def getArguments(self): | |||
mode = self.modes[ self.modeCombo.currentIndex() ] | |||
arguments = QStringList() | |||
arguments << mode | |||
arguments << self.getInputFileName() | |||
if mode == "color-relief": | |||
arguments << self.colorConfigFileEdit.text() | |||
arguments << self.outputFileEdit.text() | |||
if mode == "hillshade": | |||
arguments << "-z" << str(self.hillshadeZFactorSpin.value()) | |||
arguments << "-s" << str(self.hillshadeScaleSpin.value()) | |||
arguments << "-az" << str(self.hillshadeAzimuthSpin.value()) | |||
arguments << "-alt" << str(self.hillshadeAltitudeSpin.value()) | |||
elif mode == "slope": | |||
if self.slopePercentCheck.isChecked(): | |||
arguments << "-p" | |||
arguments << "-s" << str(self.slopeScaleSpin.value()) | |||
elif mode == "aspect": | |||
if self.aspectTrigonometricCheck.isChecked(): | |||
arguments << "-trigonometric" | |||
if self.aspectZeroForFlatCheck.isChecked(): | |||
arguments << "-zero_for_flat" | |||
elif mode == "color-relief": | |||
if self.colorAlphaCheck.isChecked(): | |||
arguments << "-alpha" | |||
if self.colorMatchGroupBox.isChecked(): | |||
if self.colorExactRadio.isChecked(): | |||
arguments << "-exact_color_entry" | |||
elif self.colorNearestRadio.isChecked(): | |||
arguments << "-nearest_color_entry" | |||
if self.computeEdgesCheck.isChecked(): | |||
arguments << "-compute_edges" | |||
if self.bandCheck.isChecked(): | |||
arguments << "-b" << str(self.bandSpin.value()) | |||
if not self.outputFileEdit.text().isEmpty(): | |||
arguments << "-of" << self.outputFormat | |||
if self.creationGroupBox.isChecked(): | |||
for opt in self.creationOptionsTable.options(): | |||
arguments << "-co" << opt | |||
return arguments | |||
|
|||
def getInputFileName(self): | |||
if self.inputLayerCombo.currentIndex() >= 0: | |||
return self.layers[self.inputLayerCombo.currentIndex()].source() | |||
return self.inputLayerCombo.currentText() | |||
|
|||
def getOutputFileName(self): | |||
return self.outputFileEdit.text() | |||
|
|||
def addLayerIntoCanvas(self, fileInfo): | |||
self.iface.addRasterLayer(fileInfo.filePath()) | |||
|
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Oops, something went wrong.