def hazard_class_style(layer, classification, display_null=False): """Set colors to the layer according to the hazard. :param layer: The layer to style. :type layer: QgsVectorLayer :param display_null: If we should display the null hazard zone. Default to False. :type display_null: bool :param classification: The hazard classification to use. :type classification: dict safe.definitions.hazard_classifications """ categories = [] # Conditional styling attribute_table_styles = [] for hazard_class, (color, label) in list(classification.items()): if hazard_class == not_exposed_class['key'] and not display_null: # We don't want to display the null value (not exposed). # We skip it. continue symbol = QgsSymbol.defaultSymbol(layer.geometryType()) symbol.setColor(color) if is_line_layer(layer): symbol.setWidth(line_width_exposure) category = QgsRendererCategory(hazard_class, symbol, label) categories.append(category) style = QgsConditionalStyle() style.setName(hazard_class) style.setRule("hazard_class='%s'" % hazard_class) style.setBackgroundColor(transparent) symbol = QgsSymbol.defaultSymbol(QgsWkbTypes.PointGeometry) symbol.setColor(color) symbol.setSize(3) style.setSymbol(symbol) attribute_table_styles.append(style) layer.conditionalStyles().setFieldStyles( 'hazard_class', attribute_table_styles) renderer = QgsCategorizedSymbolRenderer( hazard_class_field['field_name'], categories) layer.setRenderer(renderer)
def hazard_class_style(layer, classification, display_null=False): """Set colors to the layer according to the hazard. :param layer: The layer to style. :type layer: QgsVectorLayer :param display_null: If we should display the null hazard zone. Default to False. :type display_null: bool :param classification: The hazard classification to use. :type classification: dict safe.definitions.hazard_classifications """ categories = [] # Conditional styling attribute_table_styles = [] for hazard_class, (color, label) in list(classification.items()): if hazard_class == not_exposed_class['key'] and not display_null: # We don't want to display the null value (not exposed). # We skip it. continue symbol = QgsSymbol.defaultSymbol(layer.geometryType()) symbol.setColor(color) if is_line_layer(layer): symbol.setWidth(line_width_exposure) category = QgsRendererCategory(hazard_class, symbol, label) categories.append(category) style = QgsConditionalStyle() style.setName(hazard_class) style.setRule("hazard_class='%s'" % hazard_class) style.setBackgroundColor(transparent) symbol = QgsSymbol.defaultSymbol(QgsWkbTypes.PointGeometry) symbol.setColor(color) symbol.setSize(3) style.setSymbol(symbol) attribute_table_styles.append(style) layer.conditionalStyles().setFieldStyles('hazard_class', attribute_table_styles) renderer = QgsCategorizedSymbolRenderer(hazard_class_field['field_name'], categories) layer.setRenderer(renderer)
def geometry_type(layer): """Retrieve the geometry type: point, line, polygon or raster for a layer. :param layer: The layer. :type layer: QgsMapLayer :return: The definition key. :rtype: basestring """ if is_raster_layer(layer): return layer_geometry_raster['key'] elif is_point_layer(layer): return layer_geometry_point['key'] elif is_line_layer(layer): return layer_geometry_line['key'] elif is_polygon_layer(layer): return layer_geometry_polygon['key'] else: return None