Skip to content

Repository files navigation

node-mapnik

Bindings to Mapnik for node.

Usage

Render a map from a stylesheet:

constfs=require('node:fs');constmapnik=require('@mapnik/mapnik');// register fonts and datasource pluginsmapnik.register_default_fonts();mapnik.register_default_input_plugins();varmap=newmapnik.Map(256,256);map.load('./test/stylesheet.xml',function(err,map){if(err)throwerr;map.zoomAll();varim=newmapnik.Image(256,256);map.render(im,function(err,im){if(err)throwerr;im.encode('png',function(err,buffer){if(err)throwerr;fs.writeFile('map.png',buffer,function(err){if(err)throwerr;console.log('saved map image to map.png');});});});});

Convert a jpeg image to a png:

varmapnik=require('@mapnik/mapnik');newmapnik.Image.open('input.jpg').save('output.png');

Convert a shapefile to GeoJSON:

constfs=require('node:fs');constpath=require('node:path');constmapnik=require('@mapnik/mapnik');mapnik.register_datasource(path.join(mapnik.settings.paths.input_plugins,'shape.input'));vards=newmapnik.Datasource({type:'shape',file:'test/data/world_merc.shp'});varfeatureset=ds.featureset()vargeojson={"type": "FeatureCollection","features": []}varfeat=featureset.next();while(feat){geojson.features.push(JSON.parse(feat.toJSON()));feat=featureset.next();}fs.writeFileSync("output.geojson",JSON.stringify(geojson,null,2));

For more sample code see the tests and sample code.

Requirements

Starting from v4.6.0, node-mapnik module is published as "universal" binaries on GitHub NPM registry and npmjs using node-addon-api, node-gyp-build and prebuildify

Currently supported platforms are

  • linux-x64
  • linux-arm64 (from v4.6.5)
  • darwin-x64
  • darwin-arm64

Consult N-API documentation for more details: https://nodejs.org/dist/latest/docs/api/n-api.html#n_api_node_api_version_matrix

Installing

With npm

npm install @mapnik/mapnik

Note: If using GitHub NPM registry consult "Installing a package ". You will need to authenticate to GitHub Packages, see "Authenticating to GitHub Packages."

  • Check for config file .npmrc, create a new .npmrc file if one doesn't exist.
  • Edit the .npmrc file to include the following lines, replacing TOKEN with your personal access token.
@mapnik:registry=https://npm.pkg.github.com
//npm.pkg.github.com/:_authToken=XXXXXXXXXXXXXXXXXXXXXXXXX

Note: This will install the latest node-mapnik 4.6.x series, which is recommended.

Source Build [WIP]

On macOS and Linux:

  • Ensure mapnik-config program is available and on your ${PATH}.

  • npm install --build-from-source

  • To "prebuild" binaries npm run prebuildify

Note on SSE:

SSE support is enabled by default on x86_64.

Using node-mapnik from your node app

To require node-mapnik as a dependency of another package put in your package.json:

"dependencies" : { "@mapnik/mapnik":"*" } // replace * with a given semver version string

Tests

To run the tests do:

npm test

License

BSD, see LICENSE.txt

About

Bindings to mapnik for node.js

Resources

Contributing

Stars

545 stars

Watchers

25 watching

Forks

Releases

Packages

Used by

Contributors

Languages