Пример #1
0
def _create_geometry_class(color_name, background_color_name=None,
                           fill_opacity=None):
    cls_obj = ms.classObj()
    outline_style_obj = ms.styleObj()

    try:
        color = ms.colorObj(*BASE_COLORS[color_name])
    except KeyError:
        raise  # TODO

    outline_style_obj.outlinecolor = color
    cls_obj.insertStyle(outline_style_obj)

    if fill_opacity is not None:
        fill_style_obj = ms.styleObj()
        fill_style_obj.color = ms.colorObj(
            color.red, color.green, color.blue, int(255 * fill_opacity)
        )
        cls_obj.insertStyle(fill_style_obj)

    if background_color_name:
        outline_style_obj.backgroundcolor = ms.colorObj(
            *BASE_COLORS[background_color_name]
        )

    cls_obj.group = color_name
    return cls_obj
        def _create_mask_polygon_layer(name):
            mask_layer = ms.layerObj()
            mask_layer.name = name
            mask_layer.type = ms.MS_LAYER_POLYGON

            mask_layer.setMetaData("eoxs_geometry_reversed", "true")

            cls = ms.classObj(mask_layer)
            style = ms.styleObj(cls)
            style.color.setRGB(0, 0, 0)
            return mask_layer
Пример #3
0
        def _create_mask_polygon_layer(name):
            mask_layer = ms.layerObj()
            mask_layer.name = name
            mask_layer.type = ms.MS_LAYER_POLYGON

            mask_layer.setMetaData("eoxs_geometry_reversed", "true")

            cls = ms.classObj(mask_layer)
            style = ms.styleObj(cls)
            style.color.setRGB(0, 0, 0)
            return mask_layer
Пример #4
0
 def apply_styles(self, layer, fill=False, default=None):
     """ Add style metadata. """
     for name, r, g, b in self.STYLES:
         cls = ms.classObj()
         style = ms.styleObj()
         style.outlinecolor = ms.colorObj(r, g, b)
         if fill:
             style.color = ms.colorObj(r, g, b)
         style.opacity = 50
         cls.insertStyle(style)
         cls.group = name
         layer.insertClass(cls)
     layer.classgroup = (default or self.DEFAULT_STYLE)
Пример #5
0
    def apply_styles(self, layer, fill=False):
        # add style info
        for name, r, g, b in self.STYLES:
            cls = ms.classObj()
            style = ms.styleObj()
            style.outlinecolor = ms.colorObj(r, g, b)
            if fill:
                style.color = ms.colorObj(r, g, b)
            cls.insertStyle(style)
            cls.group = name

            layer.insertClass(cls)

        layer.classgroup = self.DEFAULT_STYLE
Пример #6
0
    def apply_styles(self, layer, fill=False):
        # add style info
        for name, r, g, b in self.STYLES:
            cls = ms.classObj()
            style = ms.styleObj()
            style.outlinecolor = ms.colorObj(r, g, b)
            if fill:
                style.color = ms.colorObj(r, g, b)
            cls.insertStyle(style)
            cls.group = name

            layer.insertClass(cls)

        layer.classgroup = self.DEFAULT_STYLE
Пример #7
0
    def _polygon_masking_layer(cov, name, mask, group=None):
        layer = ms.layerObj()
        layer.name = name
        layer.type = ms.MS_LAYER_POLYGON
        #layer.setMetaData("eoxs_geometry_reversed", "true")

        if group:
            layer.setMetaData("wms_layer_group", group)

        cls = ms.classObj(layer)
        style = ms.styleObj(cls)
        style.color.setRGB(0, 0, 0)

        shape = ms.shapeObj.fromWKT(mask.wkt)
        shape.initValues(1)
        shape.setValue(0, cov.identifier)

        # add feature to the layer
        layer.addFeature(shape)

        return layer
Пример #8
0
def _create_raster_style(name, layer, minvalue=0, maxvalue=255,
                         nil_values=None):
    colors = COLOR_SCALES[name]

    nil_values = [float(nil_value) for nil_value in nil_values or []]

    if nil_values:
        offsite = ms.colorObj(*OFFSITE_COLORS.get(name, (0, 0, 0)))
        layer.offsite = offsite

        for nil_value in nil_values:
            cls = ms.classObj()
            cls.setExpression("([pixel] = %s)" % nil_value)
            cls.group = name

            style = ms.styleObj()
            style.color = offsite
            style.opacity = 0
            style.rangeitem = ""
            cls.insertStyle(style)
            layer.insertClass(cls)

    low_nil_values = [
        nil_value for nil_value in nil_values
        if nil_value <= minvalue
    ]
    high_nil_values = [
        nil_value for nil_value in nil_values
        if nil_value >= maxvalue
    ]

    # Create style for values below range, but make sure to not collide
    # with nil-values
    if low_nil_values:
        low_nil = max(low_nil_values)
        cls = ms.classObj()
        cls.setExpression(
            "([pixel] <= %s AND [pixel] > %s)" % (minvalue, low_nil)
        )
        cls.group = name
        style = ms.styleObj()
        style.color = ms.colorObj(*colors[0][1])
        cls.insertStyle(style)
        layer.insertClass(cls)
    else:
        cls = ms.classObj()
        cls.setExpression("([pixel] <= %s)" % (minvalue))
        cls.group = name
        style = ms.styleObj()
        style.color = ms.colorObj(*colors[0][1])
        cls.insertStyle(style)
        layer.insertClass(cls)

    interval = (maxvalue - minvalue)
    for prev_item, next_item in pairwise_iterative(colors):
        prev_perc, prev_color = prev_item
        next_perc, next_color = next_item

        cls = ms.classObj()
        cls.setExpression("([pixel] >= %s AND [pixel] < %s)" % (
            (minvalue + prev_perc * interval),
            (minvalue + next_perc * interval)
        ))
        cls.group = name

        style = ms.styleObj()
        style.mincolor = ms.colorObj(*prev_color)
        style.maxcolor = ms.colorObj(*next_color)
        style.minvalue = minvalue + prev_perc * interval
        style.maxvalue = minvalue + next_perc * interval
        style.rangeitem = ""
        cls.insertStyle(style)
        layer.insertClass(cls)

    # Create style for values above range, but make sure to not collide with
    # nil-values
    if high_nil_values:
        high_nil = min(high_nil_values)
        cls = ms.classObj()
        cls.setExpression(
            "([pixel] > %s AND [pixel] < %s)" % (maxvalue, high_nil)
        )
        cls.group = name
        style = ms.styleObj()
        style.color = ms.colorObj(*colors[0][1])
        cls.insertStyle(style)
        layer.insertClass(cls)
    else:
        cls = ms.classObj()
        cls.setExpression("([pixel] > %s)" % (maxvalue))
        cls.group = name
        style = ms.styleObj()
        style.color = ms.colorObj(*colors[-1][1])
        cls.insertStyle(style)
        layer.insertClass(cls)