Guest User

Untitled

a guest
Feb 23rd, 2018
86
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 4.28 KB | None | 0 0
  1. # Get layers in the legend and append, must be a cleaner way to do this?
  2. layers = self.iface.legendInterface().layers()
  3. layerStringList = []
  4. for layer in layers:
  5. layerID = layer.id()
  6. layerStringList.append(layerID)
  7.  
  8. # Add layer to map render
  9. myMapRenderer = QgsMapRenderer()
  10. myMapRenderer.setLayerSet(layerStringList)
  11. myMapRenderer.setProjectionsEnabled(False)
  12.  
  13. # Load template
  14. myComposition = QgsComposition(myMapRenderer)
  15. myFile = os.path.join(os.path.dirname(__file__), 'MMR_Template.qpt')
  16. myTemplateFile = file(myFile, 'rt')
  17. myTemplateContent = myTemplateFile.read()
  18. myTemplateFile.close()
  19. myDocument = QDomDocument()
  20. myDocument.setContent(myTemplateContent)
  21. myComposition.loadFromTemplate(myDocument)
  22.  
  23. # Save image
  24. myImagePath = os.path.join(os.path.dirname(__file__), 'come_on.png')
  25. myImage = myComposition.printPageAsRaster(0)
  26. myImage.save(myImagePath)
  27.  
  28. <Atlas hideCoverage="false" featureFilter="reference = '61922'" coverageLayer="desktop_search20130615160118593" fixedScale="true" composerMap="0" singleFile="false" filenamePattern=""reference"" enabled="true" filterFeatures="true" sortFeatures="true" sortKey="0" sortAscending="true" margin="1"/>
  29.  
  30. def sort_toc(self):
  31.  
  32. # Turn on/off layers as required by search type
  33. legend = self.iface.legendInterface()
  34. layers = legend.layers()
  35. wanted_layers = metal_wanted
  36. global turn_on, turn_off, atlas_desktop
  37. turn_off = []
  38. turn_on = []
  39. all_layers = []
  40. for layer in layers:
  41. layername = layer.name()
  42. all_layers.append(layername)
  43. layerid = layer.id()
  44. if layername == "desktop_search":
  45. atlas_desktop = layer
  46. if layername in wanted_layers and legend.isLayerVisible(layer) is False:
  47. turn_off.append(layer)
  48. legend.setLayerVisible(layer, True)
  49. if layername not in wanted_layers and legend.isLayerVisible(layer) is True:
  50. turn_on.append(layer)
  51. legend.setLayerVisible(layer, False)
  52. else:
  53. pass
  54.  
  55. # Checks for required layers missing from map file
  56. for layer in wanted_layers:
  57. missing = []
  58. if layer not in all_layers:
  59. missing.append(layer)
  60. else:
  61. pass
  62. if not missing:
  63. pass
  64. else:
  65. QMessageBox.warning(self.iface.mainWindow(), "Missing layers", "Required layers are missing from your map file. Details: %s" % (str(missing)))
  66. return atlas_desktop
  67.  
  68. def quick_export(self, ref, stype, scale):
  69.  
  70. # Add all layers in map canvas to render
  71. myMapRenderer = self.iface.mapCanvas().mapRenderer()
  72.  
  73. # Load template from file
  74. myComposition = QgsComposition(myMapRenderer)
  75. myFile = os.path.join(os.path.dirname(__file__), 'MMR_Template.qpt')
  76. myTemplateFile = file(myFile, 'rt')
  77. myTemplateContent = myTemplateFile.read()
  78. myTemplateFile.close()
  79. myDocument = QDomDocument()
  80. myDocument.setContent(myTemplateContent)
  81. myComposition.loadFromTemplate(myDocument)
  82.  
  83. # Get map composition and define scale
  84. myAtlasMap = myComposition.getComposerMapById(0)
  85. myAtlasMap.setNewScale(int(scale))
  86.  
  87. # Setup Atlas
  88. myAtlas = QgsAtlasComposition(myComposition)
  89. myAtlas.setCoverageLayer(atlas_desktop) # Atlas run from desktop_search
  90. myAtlas.setComposerMap(myAtlasMap)
  91. myAtlas.setFixedScale(True)
  92. myAtlas.fixedScale()
  93. myAtlas.setHideCoverage(False)
  94. myAtlas.setFilterFeatures(True)
  95. myAtlas.setFeatureFilter("reference = '%s'" % (str(ref)))
  96. myAtlas.setFilterFeatures(True)
  97.  
  98. # Generate atlas
  99. myAtlas.beginRender()
  100. for i in range(0, myAtlas.numFeatures()):
  101. myAtlas.prepareForFeature( i )
  102. jobs = r"\MSUKSERVERBusinessMan DocsJobs"
  103. job_fol = os.path.join(jobs, str(ref))
  104. output_jpeg = os.path.join(job_fol, ref + "_BMS_plan.jpg")
  105. myImage = myComposition.printPageAsRaster(0)
  106. myImage.save(output_jpeg)
  107. myAtlas.endRender()
  108.  
  109. def return_toc(self):
  110.  
  111. # Revert layers back to pre-script state (on/off)
  112. legend = self.iface.legendInterface()
  113. for wanted in turn_on:
  114. legend.setLayerVisible(wanted, True)
  115. for unwanted in turn_off:
  116. legend.setLayerVisible(unwanted, False)
  117.  
  118. registry = QgsMapLayerRegistry.instance()
  119. layers = registry.mapLayers().values()
Add Comment
Please, Sign In to add comment