[QGIS Commit] r13021 - trunk/qgis/python/plugins/fTools/tools
svn_qgis at osgeo.org
svn_qgis at osgeo.org
Sun Mar 7 21:14:14 EST 2010
Author: cfarmer
Date: 2010-03-07 21:14:14 -0500 (Sun, 07 Mar 2010)
New Revision: 13021
Modified:
trunk/qgis/python/plugins/fTools/tools/doVectorGrid.py
Log:
Vector grid tool now uses project crs instead of None. Fixes #2494.
Modified: trunk/qgis/python/plugins/fTools/tools/doVectorGrid.py
===================================================================
--- trunk/qgis/python/plugins/fTools/tools/doVectorGrid.py 2010-03-08 02:08:14 UTC (rev 13020)
+++ trunk/qgis/python/plugins/fTools/tools/doVectorGrid.py 2010-03-08 02:14:14 UTC (rev 13021)
@@ -1,3 +1,4 @@
+# -*- coding: utf-8 -*-
#-----------------------------------------------------------
#
# Generate Vector Grid
@@ -36,162 +37,164 @@
from ui_frmVectorGrid import Ui_Dialog
class Dialog(QDialog, Ui_Dialog):
- def __init__(self, iface):
- QDialog.__init__(self)
- self.iface = iface
- self.setupUi(self)
- QObject.connect(self.toolOut, SIGNAL("clicked()"), self.outFile)
- QObject.connect(self.spnX, SIGNAL("valueChanged(double)"), self.offset)
- #QObject.connect(self.inShape, SIGNAL("currentIndexChanged(QString)"), self.updateInput)
- QObject.connect(self.btnUpdate, SIGNAL("clicked()"), self.updateLayer)
- QObject.connect(self.btnCanvas, SIGNAL("clicked()"), self.updateCanvas)
- self.setWindowTitle(self.tr("Vector grid"))
- self.xMin.setValidator(QDoubleValidator(self.xMin))
- self.xMax.setValidator(QDoubleValidator(self.xMax))
- self.yMin.setValidator(QDoubleValidator(self.yMin))
- self.yMax.setValidator(QDoubleValidator(self.yMax))
- layermap = QgsMapLayerRegistry.instance().mapLayers()
- for name, layer in layermap.iteritems():
- self.inShape.addItem( unicode( layer.name() ) )
+ def __init__(self, iface):
+ QDialog.__init__(self)
+ self.iface = iface
+ self.setupUi(self)
+ QObject.connect(self.toolOut, SIGNAL("clicked()"), self.outFile)
+ QObject.connect(self.spnX, SIGNAL("valueChanged(double)"), self.offset)
+ #QObject.connect(self.inShape, SIGNAL("currentIndexChanged(QString)"), self.updateInput)
+ QObject.connect(self.btnUpdate, SIGNAL("clicked()"), self.updateLayer)
+ QObject.connect(self.btnCanvas, SIGNAL("clicked()"), self.updateCanvas)
+ self.setWindowTitle(self.tr("Vector grid"))
+ self.xMin.setValidator(QDoubleValidator(self.xMin))
+ self.xMax.setValidator(QDoubleValidator(self.xMax))
+ self.yMin.setValidator(QDoubleValidator(self.yMin))
+ self.yMax.setValidator(QDoubleValidator(self.yMax))
+ layermap = QgsMapLayerRegistry.instance().mapLayers()
+ for name, layer in layermap.iteritems():
+ self.inShape.addItem( unicode( layer.name() ) )
- def offset(self, value):
- if self.chkLock.isChecked():
- self.spnY.setValue(value)
+ def offset(self, value):
+ if self.chkLock.isChecked():
+ self.spnY.setValue(value)
- def updateLayer( self ):
- mLayerName = self.inShape.currentText()
- if not mLayerName == "":
- mLayer = ftools_utils.getMapLayerByName( unicode( mLayerName ) )
- boundBox = mLayer.extent()
- self.updateExtents( boundBox )
-
- def updateCanvas( self ):
- canvas = self.iface.mapCanvas()
- boundBox = canvas.extent()
- self.updateExtents( boundBox )
-
- def updateExtents( self, boundBox ):
- self.xMin.setText( unicode( boundBox.xMinimum() ) )
- self.yMin.setText( unicode( boundBox.yMinimum() ) )
- self.xMax.setText( unicode( boundBox.xMaximum() ) )
- self.yMax.setText( unicode( boundBox.yMaximum() ) )
+ def updateLayer( self ):
+ mLayerName = self.inShape.currentText()
+ if not mLayerName == "":
+ mLayer = ftools_utils.getMapLayerByName( unicode( mLayerName ) )
+ boundBox = mLayer.extent()
+ self.updateExtents( boundBox )
+
+ def updateCanvas( self ):
+ canvas = self.iface.mapCanvas()
+ boundBox = canvas.extent()
+ self.updateExtents( boundBox )
+
+ def updateExtents( self, boundBox ):
+ self.xMin.setText( unicode( boundBox.xMinimum() ) )
+ self.yMin.setText( unicode( boundBox.yMinimum() ) )
+ self.xMax.setText( unicode( boundBox.xMaximum() ) )
+ self.yMax.setText( unicode( boundBox.yMaximum() ) )
- def accept(self):
- if self.xMin.text() == "" or self.xMax.text() == "" or self.yMin.text() == "" or self.yMax.text() == "":
- QMessageBox.information(self, self.tr("Vector grid"), self.tr("Please specify valid extent coordinates"))
- elif self.outShape.text() == "":
- QMessageBox.information(self, self.tr("Vector grid"), self.tr("Please specify output shapefile"))
- else:
- try:
- boundBox = QgsRectangle(
- float( self.xMin.text() ),
- float( self.yMin.text() ),
- float( self.xMax.text() ),
- float( self.yMax.text() ) )
- except:
- QMessageBox.information(self, self.tr("Vector grid"), self.tr("Invalid extent coordinates entered"))
- xSpace = self.spnX.value()
- ySpace = self.spnY.value()
- if self.rdoPolygons.isChecked(): polygon = True
- else: polygon = False
- self.outShape.clear()
- self.compute( boundBox, xSpace, ySpace, polygon )
- addToTOC = QMessageBox.question(self, self.tr("Generate Vector Grid"), self.tr("Created output shapefile:\n%1\n\nNote: Layer has no associated coordinate system, please use the Projection Management Tool to specify spatial reference system.\n\nWould you like to add the new layer to the TOC?").arg(unicode(self.shapefileName)), QMessageBox.Yes, QMessageBox.No, QMessageBox.NoButton)
- if addToTOC == QMessageBox.Yes:
- ftools_utils.addShapeToCanvas( self.shapefileName )
- self.progressBar.setValue( 0 )
+ def accept(self):
+ if self.xMin.text() == "" or self.xMax.text() == "" or self.yMin.text() == "" or self.yMax.text() == "":
+ QMessageBox.information(self, self.tr("Vector grid"), self.tr("Please specify valid extent coordinates"))
+ elif self.outShape.text() == "":
+ QMessageBox.information(self, self.tr("Vector grid"), self.tr("Please specify output shapefile"))
+ else:
+ try:
+ boundBox = QgsRectangle(
+ float( self.xMin.text() ),
+ float( self.yMin.text() ),
+ float( self.xMax.text() ),
+ float( self.yMax.text() ) )
+ except:
+ QMessageBox.information(self, self.tr("Vector grid"), self.tr("Invalid extent coordinates entered"))
+ xSpace = self.spnX.value()
+ ySpace = self.spnY.value()
+ if self.rdoPolygons.isChecked(): polygon = True
+ else: polygon = False
+ self.outShape.clear()
+ self.compute( boundBox, xSpace, ySpace, polygon )
+ addToTOC = QMessageBox.question(self, self.tr("Generate Vector Grid"), self.tr("Created output shapefile:\n%1\n\nWould you like to add the new layer to the TOC?").arg(unicode(self.shapefileName)), QMessageBox.Yes, QMessageBox.No, QMessageBox.NoButton)
+ if addToTOC == QMessageBox.Yes:
+ ftools_utils.addShapeToCanvas( self.shapefileName )
+ self.progressBar.setValue( 0 )
- def compute( self, bound, xOffset, yOffset, polygon ):
- if polygon:
- fields = {0:QgsField("ID", QVariant.Int), 1:QgsField("XMIN", QVariant.Double), 2:QgsField("XMAX", QVariant.Double),
- 3:QgsField("YMIN", QVariant.Double), 4:QgsField("YMAX", QVariant.Double)}
- check = QFile(self.shapefileName)
- if check.exists():
- if not QgsVectorFileWriter.deleteShapeFile(self.shapefileName):
- return
- writer = QgsVectorFileWriter(self.shapefileName, self.encoding, fields, QGis.WKBPolygon, None)
- #writer = QgsVectorFileWriter(outPath, "CP1250", fields, QGis.WKBPolygon, None)
- else:
- fields = {0:QgsField("ID", QVariant.Int), 1:QgsField("COORD", QVariant.Double)}
- check = QFile(self.shapefileName)
- if check.exists():
- if not QgsVectorFileWriter.deleteShapeFile(self.shapefileName):
- return
- writer = QgsVectorFileWriter(self.shapefileName, self.encoding, fields, QGis.WKBLineString, None)
- #writer = QgsVectorFileWriter(unicode(outPath), "CP1250", fields, QGis.WKBLineString, None)
- outFeat = QgsFeature()
- outGeom = QgsGeometry()
- idVar = 0
- self.progressBar.setRange( 0, 0 )
- if not polygon:
- y = bound.yMaximum()
- while y >= bound.yMinimum():
- pt1 = QgsPoint(bound.xMinimum(), y)
- pt2 = QgsPoint(bound.xMaximum(), y)
- line = [pt1, pt2]
- outFeat.setGeometry(outGeom.fromPolyline(line))
- outFeat.addAttribute(0, QVariant(idVar))
- outFeat.addAttribute(1, QVariant(y))
- writer.addFeature(outFeat)
- y = y - yOffset
- idVar = idVar + 1
- x = bound.xMinimum()
- while x <= bound.xMaximum():
- pt1 = QgsPoint(x, bound.yMaximum())
- pt2 = QgsPoint(x, bound.yMinimum())
- line = [pt1, pt2]
- outFeat.setGeometry(outGeom.fromPolyline(line))
- outFeat.addAttribute(0, QVariant(idVar))
- outFeat.addAttribute(1, QVariant(x))
- writer.addFeature(outFeat)
- x = x + xOffset
- idVar = idVar + 1
- else:
- y = bound.yMaximum()
- while y >= bound.yMinimum():
- x = bound.xMinimum()
- while x <= bound.xMaximum():
- pt1 = QgsPoint(x, y)
- pt2 = QgsPoint(x + xOffset, y)
- pt3 = QgsPoint(x + xOffset, y - yOffset)
- pt4 = QgsPoint(x, y - yOffset)
- pt5 = QgsPoint(x, y)
- polygon = [[pt1, pt2, pt3, pt4, pt5]]
- outFeat.setGeometry(outGeom.fromPolygon(polygon))
- outFeat.addAttribute(0, QVariant(idVar))
- outFeat.addAttribute(1, QVariant(x))
- outFeat.addAttribute(2, QVariant(x + xOffset))
- outFeat.addAttribute(3, QVariant(y - yOffset))
- outFeat.addAttribute(4, QVariant(y))
- writer.addFeature(outFeat)
- idVar = idVar + 1
- x = x + xOffset
- y = y - yOffset
- self.progressBar.setRange( 0, 100 )
- del writer
+ def compute( self, bound, xOffset, yOffset, polygon ):
+ crs = self.canvas.mapRenderer().destinationSrs()
+ if not crs.isValid(): crs = None
+ if polygon:
+ fields = {0:QgsField("ID", QVariant.Int), 1:QgsField("XMIN", QVariant.Double), 2:QgsField("XMAX", QVariant.Double),
+ 3:QgsField("YMIN", QVariant.Double), 4:QgsField("YMAX", QVariant.Double)}
+ check = QFile(self.shapefileName)
+ if check.exists():
+ if not QgsVectorFileWriter.deleteShapeFile(self.shapefileName):
+ return
+ writer = QgsVectorFileWriter(self.shapefileName, self.encoding, fields, QGis.WKBPolygon, crs)
+ #writer = QgsVectorFileWriter(outPath, "CP1250", fields, QGis.WKBPolygon, None)
+ else:
+ fields = {0:QgsField("ID", QVariant.Int), 1:QgsField("COORD", QVariant.Double)}
+ check = QFile(self.shapefileName)
+ if check.exists():
+ if not QgsVectorFileWriter.deleteShapeFile(self.shapefileName):
+ return
+ writer = QgsVectorFileWriter(self.shapefileName, self.encoding, fields, QGis.WKBLineString, crs)
+ #writer = QgsVectorFileWriter(unicode(outPath), "CP1250", fields, QGis.WKBLineString, None)
+ outFeat = QgsFeature()
+ outGeom = QgsGeometry()
+ idVar = 0
+ self.progressBar.setRange( 0, 0 )
+ if not polygon:
+ y = bound.yMaximum()
+ while y >= bound.yMinimum():
+ pt1 = QgsPoint(bound.xMinimum(), y)
+ pt2 = QgsPoint(bound.xMaximum(), y)
+ line = [pt1, pt2]
+ outFeat.setGeometry(outGeom.fromPolyline(line))
+ outFeat.addAttribute(0, QVariant(idVar))
+ outFeat.addAttribute(1, QVariant(y))
+ writer.addFeature(outFeat)
+ y = y - yOffset
+ idVar = idVar + 1
+ x = bound.xMinimum()
+ while x <= bound.xMaximum():
+ pt1 = QgsPoint(x, bound.yMaximum())
+ pt2 = QgsPoint(x, bound.yMinimum())
+ line = [pt1, pt2]
+ outFeat.setGeometry(outGeom.fromPolyline(line))
+ outFeat.addAttribute(0, QVariant(idVar))
+ outFeat.addAttribute(1, QVariant(x))
+ writer.addFeature(outFeat)
+ x = x + xOffset
+ idVar = idVar + 1
+ else:
+ y = bound.yMaximum()
+ while y >= bound.yMinimum():
+ x = bound.xMinimum()
+ while x <= bound.xMaximum():
+ pt1 = QgsPoint(x, y)
+ pt2 = QgsPoint(x + xOffset, y)
+ pt3 = QgsPoint(x + xOffset, y - yOffset)
+ pt4 = QgsPoint(x, y - yOffset)
+ pt5 = QgsPoint(x, y)
+ polygon = [[pt1, pt2, pt3, pt4, pt5]]
+ outFeat.setGeometry(outGeom.fromPolygon(polygon))
+ outFeat.addAttribute(0, QVariant(idVar))
+ outFeat.addAttribute(1, QVariant(x))
+ outFeat.addAttribute(2, QVariant(x + xOffset))
+ outFeat.addAttribute(3, QVariant(y - yOffset))
+ outFeat.addAttribute(4, QVariant(y))
+ writer.addFeature(outFeat)
+ idVar = idVar + 1
+ x = x + xOffset
+ y = y - yOffset
+ self.progressBar.setRange( 0, 100 )
+ del writer
- def outFile(self):
- self.outShape.clear()
- ( self.shapefileName, self.encoding ) = ftools_utils.saveDialog( self )
- if self.shapefileName is None or self.encoding is None:
- return
- self.outShape.setText( QString( self.shapefileName ) )
+ def outFile(self):
+ self.outShape.clear()
+ ( self.shapefileName, self.encoding ) = ftools_utils.saveDialog( self )
+ if self.shapefileName is None or self.encoding is None:
+ return
+ self.outShape.setText( QString( self.shapefileName ) )
- def getVectorLayerByName(self, myName):
- mc = self.iface.mapCanvas()
- nLayers = mc.layerCount()
- for l in range(nLayers):
- layer = mc.layer(l)
- if unicode(layer.name()) == unicode(myName):
- vlayer = QgsVectorLayer(unicode(layer.source()), unicode(myName), unicode(layer.dataProvider().name()))
- if vlayer.isValid():
- return vlayer
+ def getVectorLayerByName(self, myName):
+ mc = self.iface.mapCanvas()
+ nLayers = mc.layerCount()
+ for l in range(nLayers):
+ layer = mc.layer(l)
+ if unicode(layer.name()) == unicode(myName):
+ vlayer = QgsVectorLayer(unicode(layer.source()), unicode(myName), unicode(layer.dataProvider().name()))
+ if vlayer.isValid():
+ return vlayer
- def getMapLayerByName(self, myName):
- mc = self.iface.mapCanvas()
- nLayers = mc.layerCount()
- for l in range(nLayers):
- layer = mc.layer(l)
- if unicode(layer.name()) == unicode(myName):
- if layer.isValid():
- return layer
+ def getMapLayerByName(self, myName):
+ mc = self.iface.mapCanvas()
+ nLayers = mc.layerCount()
+ for l in range(nLayers):
+ layer = mc.layer(l)
+ if unicode(layer.name()) == unicode(myName):
+ if layer.isValid():
+ return layer
More information about the QGIS-commit
mailing list