Thank you for your help.

Hi,

2015-05-18 17:51 GMT+02:00 Benoît Laurent <blaur...@heurisis.eu <mailto:blaur...@heurisis.eu>>:

    Hello,

    I would like to generate a series of maps representing tracks with
    stops along them.

    For each track, I have got a group of two layers, one for the
    linear, one for the points that have associated information
    (basically name and time of the stops). First, is there a better
    way to achieve this ? For the moment, I have to handle two types
    of layer. It is the beginning of my problems.

    As the tracks overlap, I would like to generate a map for each
    track where only the current selected track appears. The others
    would be hidden.

    I had a try with Atlas generation. It perfectly works except that
    I can't hide the other tracks.

You can style your coverage layer so that only atlas current feature will appear. In categorized style, use an expression like $id=$atlasfeatureid. You'll get 0 (false) and 1 (true) when classing. Set the 0 features style so that they become invisible or transparent.
It is a little better : with your help, I can highlight the current linear layer. Actually, I aggregated all my linear layers to constitute the coverage layer. However, I can't hide the points layers.


    I also had a try with a Python script. I managed to iterate over
    the groups of layers but I can't refresh the map canvas during the
    Python script. So, it doesn't work.

A snippet of your code may help but I remember I had to face such a problem and it was because after *myatlas.beginRender()*, I forgot to set active the export of the atlas, sthg like *mycomposition.setAtlasMode(QgsComposition.ExportAtlas)*

Actually, I did not use the Atlas generator (maybe a mistake ?). I wanted to reproduce/modify its behavior. Here is a piece of code (remember that for each track, there is linear layer and a points layer) :

|         # Iterate over groups of pair of layers
        for  gin  range(0,nbGroups-1):

                # Display layers of the current group
                layer=  layers[2*g]
rectTrajet= layer.extent() legend.setLayerVisible(layer, True)
                layer=  layers[2*g+1]
                rectPtsArr=  layer.extent()
legend.setLayerVisible(layer, True)
                # extent area
                rectGlb=  QgsRectangle
                xMin=  min(rectTrajet.xMinimum(),  rectPtsArr.xMinimum())
                xMax=  max(rectTrajet.xMaximum(),  rectPtsArr.xMaximum())
                yMin=  min(rectTrajet.yMinimum(),  rectPtsArr.yMinimum())
                yMax=  max(rectTrajet.yMaximum(),  rectPtsArr.yMaximum())
                rectGlb=  QgsRectangle(xMin,  yMin,  xMax,  yMax)
                self.iface.mapCanvas().setExtent(rectGlb)

                self.iface.mapCanvas().zoomToSelected()
                self.iface.mapCanvas().updateScale()
                self.iface.mapCanvas().zoomByFactor(1.5)

                # Nothing works here !!
                self.iface.mapCanvas().updateOverview()
                self.iface.mapCanvas().refresh()
                layers[2*g].triggerRepaint()
                layers[2*g+1].triggerRepaint()


                # Map composer
                composerMap=  QgsComposerMap(c,x,y,w,h)
                composerMap.setPreviewMode(QgsComposerMap.Render)
                composerMap.updateBoundingRect()
                composerMap.renderModeUpdateCachedImage()
                composerMap.setFrameEnabled(True)
                c.addItem(composerMap)


                # Launch printing
                printer=  QtGui.QPrinter()
                printer.setOutputFormat(QtGui.QPrinter.PdfFormat)
                printer.setOutputFileName(nomFichier)
                printer.setPaperSize(QSizeF(c.paperWidth(),  c.paperHeight()),  
QtGui.QPrinter.Millimeter)
                printer.setFullPage(True)
                printer.setColorMode(QtGui.QPrinter.Color)
                printer.setResolution(c.printResolution())

                pdfPainter=  QPainter(printer)
                paperRectMM=  printer.pageRect(QtGui.QPrinter.Millimeter)
                paperRectPixel=  printer.pageRect(QtGui.QPrinter.DevicePixel)
                c.render(pdfPainter,  paperRectPixel,  paperRectMM)
                pdfPainter.end()

                # Remove map composer
                c.removeItem(composerMap)

                # Hide layers of the current group
                legend.setLayerVisible(layers[2*g],  False)
                legend.setLayerVisible(layers[2*g+1],  False)

 |




---
L'absence de virus dans ce courrier électronique a été vérifiée par le logiciel 
antivirus Avast.
http://www.avast.com
_______________________________________________
Qgis-user mailing list
Qgis-user@lists.osgeo.org
http://lists.osgeo.org/mailman/listinfo/qgis-user

Reply via email to