Esempio n. 1
0
def render_layers(layer_paths):
    """

    :param layer_paths: A list of layer paths.
    :return: Buffer containing output. Note caller is responsible for closing
        the buffer with buffer.close()
    :rtype: QBuffer
    """
    layers = []
    extent = None


    crs = QgsCoordinateReferenceSystem()
    crs.createFromSrid(3857)

    for layer_path in layer_paths:
        map_layer = QgsVectorLayer(layer_path, None, 'ogr')
        QgsMapLayerRegistry.instance().addMapLayer(map_layer)
        transform = QgsCoordinateTransform(map_layer.crs(), crs)
        print map_layer.extent().toString()
        layer_extent = transform.transform(map_layer.extent())
        if extent is None:
            extent = layer_extent
        else:
            extent.combineExtentWith(layer_extent)
        print extent.toString()
        # set layer set
        layers.append(map_layer.id())  # add ID of every layer

    map_settings = QgsMapSettings()

    map_settings.setDestinationCrs(crs)
    map_settings.setCrsTransformEnabled(True)
    map_settings.setExtent(extent)
    map_settings.setOutputSize(QSize(1000, 1000))

    map_settings.setLayers(layers)

    # job = QgsMapRendererParallelJob(settings)
    job = QgsMapRendererSequentialJob(map_settings)
    job.start()
    job.waitForFinished()
    image = job.renderedImage()
    # Save teh image to a buffer
    map_buffer = QBuffer()
    map_buffer.open(QIODevice.ReadWrite)
    image.save(map_buffer, "PNG")
    image.save('/tmp/test.png', 'png')

    # clean up
    QgsMapLayerRegistry.instance().removeAllMapLayers()

    return map_buffer
Esempio n. 2
0
 def saveTIFF(box, name, path):
     options = QgsMapSettings()
     layers = QgsProject.instance().mapLayers().values()
     options.setLayers(layers)
     options.setBackgroundColor(QColor(255, 255, 255))
     options.setOutputSize(QSize(5000, 5000))
     options.setExtent(box)
     render = QgsMapRendererSequentialJob(options)
     render.start()
     render.waitForFinished()
     img = render.renderedImage()
     img.save(os.path.join(path, name + ".tif"), "tif")
Esempio n. 3
0
    def export_frames(self, width=1920, height=1080):

        first_frame = self.dockwidget.horizontalSlider_frames.minimum()
        last_frame = self.dockwidget.horizontalSlider_frames.maximum()
        #print(u'Rendering frames: %s-%s' % (first_frame, last_frame))

        frame_width = self.dockwidget.spinBox_frame_width.value()
        frame_height = self.dockwidget.spinBox_frame_height.value()

        settings = QgsMapSettings()
        settings.setDestinationCrs(
            QgsCoordinateReferenceSystem(
                self.iface.mapCanvas().mapSettings().destinationCrs()))
        settings.setOutputSize(QSize(frame_width, frame_height))
        settings.setLayers(self.iface.mapCanvas().layers())
        settings.setExtent(self.data_zoom_extent)

        job = QgsMapRendererSequentialJob(settings)

        progress = QProgressBar()
        progress.setMaximum(last_frame)
        progress.setAlignment(Qt.AlignLeft | Qt.AlignVCenter)
        progressMessageBar = self.iface.messageBar().createMessage(
            u'Rendering frames')
        progressMessageBar.layout().addWidget(progress)
        self.iface.messageBar().pushWidget(progressMessageBar,
                                           Qgis.Info,
                                           duration=2)

        self.clear_output_dir()

        for frame_id in range(first_frame, last_frame + 1):

            self.dockwidget.horizontalSlider_frames.setValue(frame_id)

            self.update_slider()

            job.start()
            job.waitForFinished()
            img = job.renderedImage()
            try:
                frame_code = self.frame_time.toString('yyyyMMdd_hhmm')
            except:
                frame_code = frame_id
            base_name = u'frame_{0}.png'.format(frame_code)
            filename = os.path.join(self.output_dir, base_name)
            self.log(filename)
            img.save(filename)
            progress.setValue(frame_id)
    def savePng(self, box, name, path, size=1024):
        options = QgsMapSettings()
        # layers = QgsProject.instance().mapLayers().values()
        layers = [iface.activeLayer()]
        options.setDestinationCrs(
            QgsCoordinateReferenceSystem(self.export_epsg))
        options.setLayers(layers)
        options.setBackgroundColor(QColor(255, 255, 255))
        options.setOutputSize(QSize(size, size))
        options.setExtent(box)
        # options.setFlag(options.Antialiasing, True)

        render = QgsMapRendererSequentialJob(options)

        render.start()
        render.waitForFinished()
        img = render.renderedImage()
        img.save(path + "/" + name + ".png", "png")
        def sampling(pLayer, rLayer):

            nameFile = "mapsampel_"  #nazwa rastra wynikowego
            type = "png"  #format pliku rastra wynikowego
            where_ = folderoutput  #ścieżka do folderu w którym mają się zapisać rastry
            player = pLayer  #warstwa wektorowa - punkty
            rlayer = rLayer  #warstwa rastrowa - input

            registry = QgsProject.instance()
            #Zablokowane / zakomentowane wyświetlanie warstw
            '''
            registry.addMapLayer(rlayer)
            registry.addMapLayer(player)
            '''
            registry.mapLayers().keys()

            #rozmiar obszaru
            xs = rlayer.rasterUnitsPerPixelX() * size / 2
            ys = rlayer.rasterUnitsPerPixelY() * size / 2

            options = QgsMapSettings()
            options.setLayers([rlayer])
            options.setOutputSize(QSize(xs, ys))

            points = player.getFeatures()
            for i, point in enumerate(points):
                pt = point.geometry().asPoint()
                ext = QgsRectangle(pt[0] - xs, pt[1] - ys, pt[0] + xs,
                                   pt[1] + ys)
                options.setExtent(ext)  #3
                render = QgsMapRendererSequentialJob(options)
                render.start()
                render.waitForFinished()
                name = "{}\{}_{}.{}".format(where_, nameFile, str(i), type)
                img = render.renderedImage()
                img.save(name, type)