def grid_labeler(self, coord_base_x, coord_base_y, px, py, u, t, dx, dy, vAlign, hAlign, desc, fSize, fontType, expression_str, trLLUTM, trUTMLL, llcolor, utmcheck, scale): if utmcheck: pgrid = QgsPoint(coord_base_x + px * u, coord_base_y + py * t) pgrid.transform(trLLUTM) pgrid = QgsPoint(pgrid.x() + dx, pgrid.y() + dy) else: pgrid = QgsPoint(coord_base_x + px * u + dx, coord_base_y + py * t + dy) #Label Format Settings settings = QgsPalLayerSettings() settings.Placement = QgsPalLayerSettings.Free settings.isExpression = True textprop = QgsTextFormat() textprop.setColor(llcolor) textprop.setSizeUnit(1) textprop.setSize(fSize * scale * 1.324) textprop.setFont(QFont(fontType)) textprop.setLineHeight(1) settings.setFormat(textprop) settings.fieldName = expression_str #Label Name and Position datadefined = QgsPropertyCollection() datadefined.setProperty(9, pgrid.x()) datadefined.setProperty(10, pgrid.y()) if not (hAlign == ''): datadefined.setProperty(11, hAlign) if not (vAlign == ''): datadefined.setProperty(12, vAlign) datadefined.setProperty(20, 1) #Creating and Activating Labeling Rule settings.setDataDefinedProperties(datadefined) rule = QgsRuleBasedLabeling.Rule(settings) rule.setDescription(desc) rule.setActive(True) return rule
def createRules(self, label, expression): ''' Returns a QgsRuleBasedLabeling based on label and expression ''' settings = QgsPalLayerSettings() settings.fieldName = label settings.Placement = QgsPalLayerSettings.OverPoint settings.centroidInside = True settings.isExpression = True textFormat = QgsTextFormat() textFormat.setColor(QColor(0, 0, 0, 255)) textFormat.setSize(6) textBuffer = QgsTextBufferSettings() textBuffer.setColor(QColor(255, 255, 255, 255)) textBuffer.setSize(0.4) textBuffer.setEnabled(True) textFormat.setBuffer(textBuffer) settings.setFormat(textFormat) rule = QgsRuleBasedLabeling.Rule(settings) rule.setFilterExpression(expression) rule.setActive(True) return rule