Example #1
0
    def setUp(self):
        myShpFile = os.path.join(TEST_DATA_DIR, 'rectangles.shp')
        layer = QgsVectorLayer(myShpFile, 'Points', 'ogr')
        QgsMapLayerRegistry.instance().addMapLayer(layer)

        # Create rulebased style
        sym1 = QgsFillSymbolV2.createSimple({'color': '#fdbf6f'})
        sym2 = QgsFillSymbolV2.createSimple({'color': '#71bd6c'})
        sym3 = QgsFillSymbolV2.createSimple({'color': '#1f78b4'})

        self.r1 = QgsRuleBasedRendererV2.Rule(sym1, 0, 0, '"id" = 1')
        self.r2 = QgsRuleBasedRendererV2.Rule(sym2, 0, 0, '"id" = 2')
        self.r3 = QgsRuleBasedRendererV2.Rule(sym3, 0, 0, 'ELSE')

        self.rootrule = QgsRuleBasedRendererV2.Rule(None)
        self.rootrule.appendChild(self.r1)
        self.rootrule.appendChild(self.r2)
        self.rootrule.appendChild(self.r3)

        self.renderer = QgsRuleBasedRendererV2(self.rootrule)
        layer.setRendererV2(self.renderer)
        self.mapsettings = CANVAS.mapSettings()
        self.mapsettings.setOutputSize(QSize(400, 400))
        self.mapsettings.setOutputDpi(96)
        self.mapsettings.setExtent(QgsRectangle(-163, 22, -70, 52))

        rendered_layers = [layer.id()]
        self.mapsettings.setLayers(rendered_layers)
Example #2
0
    def __getRuleBasedRenderer(self):
        """docstring for __getRuleBasedRenderer"""
        root_rule = QgsRuleBasedRendererV2.Rule(None)

        n = (len(self.expressions) - 1)
        i = 0
        for exp, msclass in zip(self.expressions[::-1],
                                self.mslayer["classes"][::-1]):
            Symbol = SymbolImport(msclass, self.qgslayer, self.geom_type, self.sizeunits, \
                self.mssymbols, self.symbolsetpath, self.fontset)
            symbol = Symbol.getSymbol()
            scalemindenom = self.__getScaledenom(msclass, 'minscaledenom',
                                                 'styles')
            scalemaxdenom = self.__getScaledenom(msclass, 'maxscaledenom',
                                                 'styles')
            label = msclass.get("name", exp[1])
            state = False if msclass.get("status",
                                         'on').lower() == 'off' else True

            filterexp = ''
            if exp[0] == Expression.TYPE_STRING and self.has_classitem:
                filterexp = "\"{}\" = '{}'".format(self.has_classitem, exp[1])
            elif exp[0] == Expression.TYPE_LIST or exp[
                    0] == Expression.TYPE_BETWEEN or exp[
                        0] == Expression.TYPE_LOGICAL:
                filterexp = exp[1]

            description = ''
            #Si no tiene expresion y si es la ultima regla setear a True, tener en cuenta que se puede declarar al reves
            #elserule = True if exp[0] == 'unknown' and exp[1] == '' and i == n else False
            elserule = False
            rule = QgsRuleBasedRendererV2.Rule(symbol, scalemindenom,
                                               scalemaxdenom, filterexp, label,
                                               description, elserule)
            rule.setActive(state)
            root_rule.appendChild(rule)
            i += 1

        return QgsRuleBasedRendererV2(root_rule)
Example #3
0
    {
        "color": "#000000",
        "color_border": "#000000",
        "width_border": "0.25",
        "style": "no",
    }
)
highlight_style = QgsFillSymbolV2().createSimple(
    {
        "color": "#000000",
        "color_border": "#ff0000",
        "width_border": "0.85",
        "style": "no",
    }
)
highlight_rule = QgsRuleBasedRendererV2.Rule(highlight_style)
highlight_rule.setFilterExpression("$id = @atlas_featureid")
highlight_renderer = QgsRuleBasedRendererV2(normal_style)
highlight_renderer.rootRule().appendChild(highlight_rule)
original_renderer = vector_layer.rendererV2()
vector_layer.setRendererV2(highlight_renderer)
vector_layer.triggerRepaint()

# Produce the reports
atlas.beginRender()
for i in range(atlas.numFeatures()):
    atlas.prepareForFeature(i)
    region_id = str(atlas.feature().attribute("aoi_id"))
    if region_id not in report_tables.keys():
        continue
    styled_df = report_tables[region_id].style.format("{:.2f}")