Skip to content

Commit 17e1bd6

Browse files
committed
Merge pull request #2505 from radosuav/processing_extent
[Processing] Check layer projection when using it for subset extent
2 parents 0a21d91 + c58981f commit 17e1bd6

File tree

1 file changed

+15
-3
lines changed

1 file changed

+15
-3
lines changed

python/plugins/processing/gui/ExtentSelectionPanel.py

+15-3
Original file line numberDiff line numberDiff line change
@@ -30,13 +30,15 @@
3030
from PyQt4 import uic
3131
from PyQt4.QtGui import QMenu, QAction, QCursor, QInputDialog
3232

33+
from qgis.gui import QgsMessageBar
3334
from qgis.core import QgsRasterLayer, QgsVectorLayer
3435
from qgis.utils import iface
3536

3637
from processing.gui.RectangleMapTool import RectangleMapTool
3738
from processing.core.parameters import ParameterRaster
3839
from processing.core.parameters import ParameterVector
3940
from processing.core.parameters import ParameterMultipleInput
41+
from processing.core.ProcessingConfig import ProcessingConfig
4042
from processing.tools import dataobjects
4143

4244
pluginPath = os.path.split(os.path.dirname(__file__))[0]
@@ -150,12 +152,22 @@ def useLayerExtent(self):
150152
extents = [CANVAS_KEY]
151153
layers = dataobjects.getAllLayers()
152154
for layer in layers:
153-
extents.append(layer.name())
154-
extentsDict[layer.name()] = layer.extent()
155+
authid = layer.crs().authid()
156+
if ProcessingConfig.getSetting(ProcessingConfig.SHOW_CRS_DEF) \
157+
and authid is not None:
158+
layerName = u'{} [{}]'.format(layer.name(), authid)
159+
else:
160+
layerName = layer.name()
161+
extents.append(layerName)
162+
extentsDict[layerName] = {"extent": layer.extent(), "authid": authid}
155163
(item, ok) = QInputDialog.getItem(self, self.tr('Select extent'),
156164
self.tr('Use extent from'), extents, False)
157165
if ok:
158-
self.setValueFromRect(extentsDict[item])
166+
self.setValueFromRect(extentsDict[item]["extent"])
167+
if extentsDict[item]["authid"] != iface.mapCanvas().mapRenderer().destinationCrs().authid():
168+
iface.messageBar().pushMessage(self.tr("Warning"),
169+
self.tr("The projection of the chosen layer is not the same as canvas projection! The selected extent might not be what was intended."),
170+
QgsMessageBar.WARNING, 8)
159171

160172
def selectOnCanvas(self):
161173
canvas = iface.mapCanvas()

0 commit comments

Comments
 (0)