RasterSymbolizer

The RasterSymbolizer is used to render an image from any GDAL supported format using the gdal plugin or from GeoTiff?'s using the raster plugin.

  • Mapnik does not yet support on-the-fly reprojection of raster layers (like it does for vector layers)
    • Therefore it is necessary to first (externally) warp an image to the Spatial Reference System (srs) used in the map (e.g. using the gdalwarp command from the gdal-utilities).
  • As of Mapnik 0.6.0 the RasterSymbolizer supports transparency and composition modes.
    • See the original ticket for details: #259
    • See also Compositing for some of the effects.


http://pavlenko.f2s.com/tiles/srtm3/9/277/197.png http://artem.dev.openstreetmap.org/files/tiles/relief/7/63/42.pnghttp://artem.dev.openstreetmap.org/tiles/5/15/12.png http://1.tiles.ump.waw.pl/ump_tiles/12/2265/1395.png

Usage

parameter value description
opacity 0.0 - 1.0 1 is fully opaque while zero is fully transparent and .5 would be 50% transparent
mode grain_merge, grain_merge2, multiply, multiply2, divide, divide2, screen, hard_light Compositing/Merging effects with image below raster level (?). The formulas for combinding foreground (raster) and background are: grain_merge: bg + fg - 0.5, grain_merge2: bg + 2*fg - 1.0, multiply: fg * bg, multiply2: 2 * fg * bg, divide: bg / fg, divide2: 2*bg / fg, screen: (1-fg)*(1-bg), hardlight: see [http://docs.gimp.org/en/gimp-concepts-layer-modes.html#id2834930]
scaling fast, bilinear, bilinear8 fast: nearest neighbour, bilinear: bilinear interpolation for all 4 channels (RGBA), bilinear8 like bilinear, but only one channel assumed

There are two types of raster datasources: gdal or raster:

  • The gdal plugin is more convenient as it can read the file extents automatically and supports any GDAL-supported type of file
  • The raster driver only works with Tiled or Stripped GeoTIFF files and requires manually setting the file bounds, but can be faster.

XML Layers

RASTER

<Layer name="dem" status="on">
        <StyleName>raster</StyleName>
        <Datasource>
                <Parameter name="type">raster</Parameter>
                <Parameter name="file">/path/to/your/raster.tiff</Parameter>
                <Parameter name="lox">min_x</Parameter>
                <Parameter name="loy">min_y</Parameter>
                <Parameter name="hix">max_x</Parameter>
                <Parameter name="hiy">max_y</Parameter>
        </Datasource>
</Layer>

GDAL

<Layer name="dem" status="on">
        <StyleName>raster</StyleName>
        <Datasource>
                <Parameter name="type">gdal</Parameter>
                <Parameter name="file">/path/to/your/raster.tiff</Parameter>
                <Parameter name="format">tiff</Parameter>
        </Datasource>
</Layer>

XML Styles

Default (simply renders a copy of the raster)

<Style name="My Style">
    <Rule>
        <RasterSymbolizer/>
    </Rule>
</Style>

Using the new 0.6.0 release opacity / merging / scaling options:

<Style name="raster">
    <Rule>
        <RasterSymbolizer>
            <CssParameter name="opacity">0.5</CssParameter>
            <!--<CssParameter name="scaling">fast</CssParameter>-->
            <CssParameter name="scaling">bilinear</CssParameter>
            <!--<CssParameter name="scaling">bilinear8</CssParameter>-->

            <!--<CssParameter name="mode">grain_merge</CssParameter>-->
            <!--<CssParameter name="mode">grain_merge2</CssParameter>-->
            <!--<CssParameter name="mode">multiply</CssParameter>-->
            <CssParameter name="mode">multiply2</CssParameter>
            <!--<CssParameter name="mode">divide</CssParameter>-->
            <!--<CssParameter name="mode">divide2</CssParameter>-->
            <!--<CssParameter name="mode">screen</CssParameter>-->
            <!--<CssParameter name="mode">hard_light</CssParameter>-->
        </RasterSymbolizer>
    </Rule>
</Style>

Python Styles

s = Style()
r=Rule()
r.symbols.append(RasterSymbolizer())
s.rules.append(r)

C++

FIXME