Usage
Render a map from a stylesheet:
const fs = require('node:fs'); const mapnik = require('@mapnik/mapnik'); // register fonts and datasource plugins mapnik.register_default_fonts(); mapnik.register_default_input_plugins(); var map = new mapnik.Map(256, 256); map.load('./test/stylesheet.xml', function(err,map) { if (err) throw err; map.zoomAll(); var im = new mapnik.Image(256, 256); map.render(im, function(err,im) { if (err) throw err; im.encode('png', function(err,buffer) { if (err) throw err; fs.writeFile('map.png',buffer, function(err) { if (err) throw err; console.log('saved map image to map.png'); }); }); }); });
Convert a jpeg image to a png:
var mapnik = require('@mapnik/mapnik'); new mapnik.Image.open('input.jpg').save('output.png');
Convert a shapefile to GeoJSON:
const fs = require('node:fs'); const path = require('node:path'); const mapnik = require('@mapnik/mapnik'); mapnik.register_datasource(path.join(mapnik.settings.paths.input_plugins,'shape.input')); var ds = new mapnik.Datasource({type:'shape',file:'test/data/world_merc.shp'}); var featureset = ds.featureset() var geojson = { "type": "FeatureCollection", "features": [ ] } var feat = 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-x64linux-arm64(from v4.6.5)darwin-x64darwin-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-configprogram 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:
License
BSD, see LICENSE.txt