How to use the mapnik.Image function in mapnik

To help you get started, we’ve selected a few mapnik examples, based on popular ways it is used in public projects.

Secure your code as it's written. Use Snyk Code to scan source code in minutes - no build needed - and fix issues immediately.

github mapnik / node-mapnik / test / render-composite.js View on Github external
it('should render semi transparent green image', function(done) {
        var mask = new mapnik.Image(256,256);
        var semi_green = new mapnik.Color('rgba(0,255,0,.5)');
        mask.background = semi_green;
        mask.premultiply();
        var sources = [ {'name':'hello','image':mask } ]
        var map = new mapnik.Map(256,256);
        map.add_layer(new mapnik.Layer('hello'));
        mapnik.render(0,0,0,map,new mapnik.Image(256,256),sources,{},function(err,im) {
            if (err) throw err;
            assert.ok(im instanceof mapnik.Image);
            assert.equal(im.width(),256);
            assert.equal(im.height(),256);
            assert.equal(im.painted(),false); // true?
            var view = im.view(0,0,256,256);
            assert.equal(view.isSolid(),true);
            assert.equal(view.getPixel(0,0).toString(),semi_green);
            done();
github AmericanRedCross / GeoForce / Chubbs / endpoints / mapnik / index.js View on Github external
}, function (err, map) {

                    console.log(map.toXML());
                    // Debug settings

                    if (err)
                        throw err;
                    map.add_layer(layer);

                    map.extent = bboxArray;
                    var im = new mapnik.Image(map.width, map.height);
                    map.render(im, callback);
                });
            } catch (err) {
github koopjs / koop-core / lib / Tiles.js View on Github external
mapnik.pools[ mapKey ].acquire(function(err, map) {
          // pooled map extents
          //map = new mapnik.Map(256, 256);
          //map.loadSync( stylesheet );
          map.extent = mercator.bbox(params.x, params.y, params.z, false, '900913');

          if ( params.format == 'png' ){
    
            var image = new mapnik.Image(size, size);
    
            map.render( image, {}, function( err, im ) {
              if (err) {
                callback( err, null );
                mapnik.pools[ mapKey ].release( map );  
              } else {
                im.encode( 'png', function( err, buffer ) {
                  fs.writeFile( file, buffer, function( err ) {
                    mapnik.pools[ mapKey ].release( map );  
                    callback( null, file );
                  });
                });
              }
            });
  
          } else if ( params.format == 'pbf' ){
github mapbox / node-blend / blendnik.js View on Github external
// Used to composite tiles of a static API image as individual tiles
    // before the entire canvas is composited. This compensates for the lack
    // of offset handling in mapnik.VectorTile.render().
    if (layer.group) {
        var group = [layer];
        while (layers.length && layer.group === layers[0].group) {
            group.push(layers.shift());
        }
        // Clear out values which are now applied at the group level.
        for (var i = 0; i < group.length; i++) {
            delete group[i].group;
            delete group[i].x;
            delete group[i].y;
        }

        compose(new mapnik.Image(256, 256), group, function(err, grouped) {
            if (err) return callback(err);
            canvas.composite(grouped, opts, function(err, canvas) {
                if (err) return callback(err);
                compose(canvas, layers, callback);
            });
        });
    } else if (layer.buffer instanceof mapnik.VectorTile) {
        var vtile = layer.buffer;
        vtile.render(vtile.map, canvas, vtile.opts, function(err, composed) {
            if (err) return callback(err);
            composed.premultiply(function(err) {
                if (err) return callback(err);
                compose(canvas, layers, callback);
            });
        });
    } else {
github mapbox / node-blend / blendnik.js View on Github external
}
    }
    // make shallow copy
    layers = layers.slice(0);
    // node-blend internally creates first canvas based on
    // first image's size if width/height are not supplied
    // this is a suboptimal way of emulating that for now
    if (!options.width || !options.height) {
        if (layers[0] instanceof Buffer && !layers[0].buffer) {
            layers[0].buffer = layers[0];
        }
        var im = new mapnik.Image.fromBytesSync(layers[0].buffer);
        options.width = im.width();
        options.height = im.height();
    }
    var canvas = new mapnik.Image(options.width, options.height);
    compose(canvas, layers, function(err, canvas) {
        if (err) return callback(err);
        canvas.demultiply(function(err) {
            if (err) return callback(err);
            var format = '';
            if (!options.format) {
                options.format = 'png';
            }
            switch (options.format) {
            case 'jpg':
                format = 'jpeg' + (options.quality || '80');
                break;
            case 'jpeg':
                format = 'jpeg' + (options.quality || '80');
                break;
            case 'png':
github koopjs / koop-core / lib / Tiles.js View on Github external
if ( format == 'png' ){
              map = new mapnik.Map(256, 256);
              map.loadSync(__dirname + '/../templates/renderers/style.xml');

              layer = new mapnik.Layer('tile');
              layer.srs = '+init=epsg:4326';
              layer.datasource = new mapnik.Datasource( { type: 'geojson', file: jsonFile } );

              // add styles
              if (geojson && geojson.features && geojson.features.length){ 
                layer.styles = [geojson.features[0].geometry.type.toLowerCase()];
              }
              map.add_layer(layer);

              var image = new mapnik.Image(256, 256);
              map.extent = mercator.bbox(x, y, z, false, '900913');

              map.render( image, {}, function( err, im ) {
                if (err) {
                  callback( err, null );
                } else {
                  im.encode( 'png', function( err, buffer ) {
                    fs.writeFile( file, buffer, function( err ) {
                      callback( null, file );
                    });
                  });
                }
              });
              
            } else if (format == 'vector.pbf' || format == 'pbf') {
github inaturalist / elasticmaps / lib / map_generator.js View on Github external
fields.push( "cellCount" );
    }
    fields = fields.concat( ["latitude", "longitude"] );

    const options = { };
    options.layer = "tile";
    options.fields = fields;
    options.headers = { "Content-Type": "application/json" };
    const im = new mapnik.Grid( tileSize / 2, tileSize / 2, { key: "id" } );
    map.render( im, options, ( err, img ) => {
      if ( err ) { return callback( err, req, res ); }
      req.tileData = img.encodeSync( );
      return callback( null, req, res );
    } );
  } else {
    const im = new mapnik.Image( tileSize, tileSize );
    map.render( im, { scale: 2 }, ( err, img ) => {
      if ( err ) { return callback( err, req, res ); }
      req.tileData = img.encodeSync( );
      return callback( null, req, res );
    } );
  }
};
/* eslint-enable no-param-reassign */
github artemp / vector-tile-server / server.js View on Github external
return error(res,err.message)
                      }
                      fs.writeFile(filepath,output,function(err) {
                            if (err) {
                                console.log(err);
                                return error(res,err.message)
                            }
                            return res.end(output);
                      });
                });
            } else {
                return res.end(output);
            }
        });
    } else {
        var im = new mapnik.Image(map.width,map.height);
        map.render(im,function(err,im) {
            process.nextTick(function() {
                map_pool.release(map);
            });
            if (err) {
                console.log(err);
                return error(res,err.message)
            }
            im.encode(params.format,function(err,buffer) {
                if (err) {
                    console.log(err);
                    return error(res,err.message)
                }
                res.writeHead(200, {'Content-Type': 'image/png'});
                if (!chunked) {
                    res.writeHead(200,{'Content-length': buffer.length});
github mapbox / spritezero / lib / generate.js View on Github external
var mapnik = require('mapnik');
var assert = require('assert');
var xtend = require('xtend');
var ShelfPack = require('@mapbox/shelf-pack');
var queue = require('queue-async');
var emptyPNG = new mapnik.Image(1, 1).encodeSync('png');

module.exports.generateLayout = generateLayout;
module.exports.generateLayoutUnique = generateLayoutUnique;
module.exports.generateImage = generateImage;


function heightAscThanNameComparator(a, b) {
    return (b.height - a.height) || ((a.id === b.id) ? 0 : (a.id < b.id ? -1 : 1));
}


/**
 * Pack a list of images with width and height into a sprite layout.
 * options object with the following keys:
 *
 * @param   {Object}                [options]