Exemple #1
0
    def convert_label_engine_layer_properties(
            properties: LabelEngineLayerProperties, layer_geometry_type,
            context) -> QgsPalLayerSettings:
        """
        Converts LabelEngineLayerProperties to QGIS equivalent
        """
        label_settings = QgsPalLayerSettings()
        label_settings.drawLabels = properties.label_features

        LabelConverter.convert_label_text_symbol(properties.text_symbol,
                                                 label_settings, context)

        label_settings.fieldName = ExpressionConverter.convert(
            properties.expression, properties.expression_parser,
            properties.advanced_expression, context)
        label_settings.isExpression = True

        LabelConverter.convert_overposter(properties.overposter,
                                          layer_geometry_type, label_settings,
                                          context)

        label_settings.scaleVisibility = properties.scale_range_max or properties.scale_range_min
        # layer.zoom_max = "don't show when zoomed out beyond"
        zoom_max = properties.scale_range_max
        # layer.zoom_min = "don't show when zoomed in beyond"
        zoom_min = properties.scale_range_min
        if zoom_max and zoom_min and zoom_min > zoom_max:
            # inconsistent scale range -- zoom_max should be bigger number than zoom_min
            zoom_min, zoom_max = zoom_max, zoom_min

        # qgis maximum scale = don't show when zoomed in beyond, i.e. ArcGIS zoom_min
        label_settings.maximumScale = zoom_min
        # qgis minimum scale = don't show when zoomed out beyond, i.e. ArcGIS zoom_max
        label_settings.minimumScale = zoom_max

        return label_settings