Example of using mapnik to display product or processing result


In [4]:
import mapnik

class Mapnik:
    @staticmethod
    def generate_thumb(infile, resolution, outfile="mapnik_tmp.png"):
        symb = mapnik.RasterSymbolizer()
        rule = mapnik.Rule()
        rule.symbols.append(symb)
        style = mapnik.Style()
        style.rules.append(rule)
        layer = mapnik.Layer("mapLayer")
        layer.datasource = mapnik.Gdal(file=infile)
        layer.styles.append("mapStyle")
        width, height = resolution
        mapnikmap = mapnik.Map(width, height)
        mapnikmap.append_style("mapStyle", style)
        mapnikmap.layers.append(layer)
        mapnikmap.zoom_all()
        mapnik.render_to_file(mapnikmap, outfile)

Select file to display


In [22]:
product='/eodata-demo/Landsat-5/TM/L1G/1984/04/06/LS05_RFUI_TM__GEO_1P_19840406T105359_19840406T105428_000524_0207_0018_654F'
file='/eodata-demo/Landsat-5/TM/L1G/1984/04/06/LS05_RFUI_TM__GEO_1P_19840406T105359_19840406T105428_000524_0207_0018_654F/LS05_RFUI_TM__GEO_1P_19840406T105359_19840406T105428_000524_0207_0018_654F.TIFF/LT52070181984097ESA00_B1.TIF'

Create smaller image to display on Leaflet

Use function: Mapnik.generate_thumb(infile,(resolutionx,resolutiony),outfile="mapnik_tmp.png")


In [9]:
Mapnik.generate_thumb(file,(800,600))

Show on Leaflet


In [23]:
layer=ImageLayer()
box=layer.getbb(product)
print box
layer.addImageLayer('mapnik_tmp.png', box, 'Layer_name')
layer.showLayer()


[[59.043800,-2.071110],[61.114800,-6.222750]]