Advertisement
Guest User

Untitled

a guest
May 27th, 2015
218
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.40 KB | None | 0 0
  1. # -*- coding: utf-8 -*-
  2.  
  3. # Import the PyQt and QGIS libraries
  4. from PyQt4.QtCore import *
  5. from PyQt4.QtGui import *
  6. from PyQt4.QtWebKit import *
  7. from qgis.core import *
  8.  
  9. class forcedScale():
  10.  
  11. # pre-defined scales
  12. predefinedScales = [
  13. 5000,
  14. 10000,
  15. 25000,
  16. 50000,
  17. 100000,
  18. 250000,
  19. 500000
  20. ]
  21.  
  22. # mapCanvas
  23. mc = None
  24.  
  25. # avoid loop
  26. replayed = False
  27.  
  28. def __init__( self, *predefinedScales ):
  29. '''
  30. Initialize class instance
  31. '''
  32. mc = iface.mapCanvas()
  33. self.mc = mc
  34. self.mc.scaleChanged.connect(self.setScale)
  35.  
  36. if predefinedScales:
  37. self.predefinedScales = predefinedScales
  38.  
  39. def setScale( self, scale ):
  40. if self.replayed:
  41. return
  42.  
  43. print "initial scale: %s" % scale
  44.  
  45. targetScale = min(
  46. self.predefinedScales,
  47. key=lambda x:abs(x-scale)
  48. )
  49. if targetScale == scale:
  50. return
  51.  
  52. self.replayed = True
  53. print "zoom to %s" % targetScale
  54. self.mc.zoomScale( targetScale )
  55. self.replayed = False
  56.  
  57. # You can instanciate this class this way
  58. # fs = forcedScale()
  59. # which will use the scales defined in the property predefinedScales of the class,
  60. # or you can provide a list of scales like this
  61. # fs = forcedScale( 25000, 50000, 100000 )
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement