def testInterpolateByZoom(self): conversion_context = QgsMapBoxGlStyleConversionContext() prop, default_val = QgsMapBoxGlStyleConverter.parseInterpolateByZoom({'base': 1, 'stops': [[0, 11], [150, 15], [250, 22]] }, conversion_context) self.assertEqual(prop.expressionString(), 'CASE WHEN @vector_tile_zoom > 0 AND @vector_tile_zoom <= 150 THEN scale_linear(@vector_tile_zoom,0,150,11,15) WHEN @vector_tile_zoom > 150 AND @vector_tile_zoom <= 250 THEN scale_linear(@vector_tile_zoom,150,250,15,22) WHEN @vector_tile_zoom > 250 THEN 22 END') self.assertEqual(default_val, 11.0) prop, default_val = QgsMapBoxGlStyleConverter.parseInterpolateByZoom({'base': 1, 'stops': [[0, 11], [150, 15]] }, conversion_context) self.assertEqual(prop.expressionString(), 'scale_linear(@vector_tile_zoom,0,150,11,15)') self.assertEqual(default_val, 11.0) prop, default_val = QgsMapBoxGlStyleConverter.parseInterpolateByZoom({'base': 2, 'stops': [[0, 11], [150, 15]] }, conversion_context) self.assertEqual(prop.expressionString(), 'scale_exp(@vector_tile_zoom,0,150,11,15,2)') self.assertEqual(default_val, 11.0) prop, default_val = QgsMapBoxGlStyleConverter.parseInterpolateByZoom({'base': 2, 'stops': [[0, 11], [150, 15]] }, conversion_context, multiplier=5) self.assertEqual(prop.expressionString(), 'scale_exp(@vector_tile_zoom,0,150,11,15,2) * 5') self.assertEqual(default_val, 55.0)
def testInterpolateByZoom(self): conversion_context = QgsMapBoxGlStyleConversionContext() prop, default_val = QgsMapBoxGlStyleConverter.parseInterpolateByZoom( { 'base': 1, 'stops': [[0, 11], [150, 15], [250, 22]] }, conversion_context) self.assertEqual( prop.expressionString(), 'CASE WHEN @zoom_level > 0 AND @zoom_level <= 150 THEN scale_linear(@zoom_level, 0, 150, 11, 15) WHEN @zoom_level > 150 AND @zoom_level <= 250 THEN scale_linear(@zoom_level, 150, 250, 15, 22) END' ) self.assertEqual(default_val, 11.0) prop, default_val = QgsMapBoxGlStyleConverter.parseInterpolateByZoom( { 'base': 1, 'stops': [[0, 11], [150, 15]] }, conversion_context) self.assertEqual(prop.expressionString(), 'scale_linear(@zoom_level, 0, 150, 11, 15)') self.assertEqual(default_val, 11.0) prop, default_val = QgsMapBoxGlStyleConverter.parseInterpolateByZoom( { 'base': 2, 'stops': [[0, 11], [150, 15]] }, conversion_context) self.assertEqual(prop.expressionString(), '11 + 4 * (2^(@zoom_level-0)-1)/(2^(150-0)-1)') self.assertEqual(default_val, 11.0) prop, default_val = QgsMapBoxGlStyleConverter.parseInterpolateByZoom( { 'base': 2, 'stops': [[0, 11], [150, 15]] }, conversion_context, multiplier=5) self.assertEqual(prop.expressionString(), '(11 + 4 * (2^(@zoom_level-0)-1)/(2^(150-0)-1)) * 5') self.assertEqual(default_val, 55.0)