@kartotherian/geojson-mapnikify v2.1.1
geojson-mapnikify
Transform GeoJSON objects into Mapnik XML stylesheets with embedded GeoJSON data and simplestyle-spec-derived styles.
install
As a dependency:
npm install --save @kartotherian/geojson-mapnikifyAs a binary:
npm install -g @kartotherian/geojson-mapnikifyapi
Assumptions:
- GeoJSON is valid, and in EPSG:4326
- Styles, if any, are expressed in simplestyle-spec
- Mapnik 3.x is the rendering engine
binary
If you install -g, you can use geojson-mapnikify as a binary that takes
a single GeoJSON file as an argument and writes a Mapnik XML stylesheet
to stdout.
$ geojson-mapnikify test/data/point-retina.geojson > stylesheet.xml
$ geojson-mapnikify test/data/point-retina.geojson retina > stylesheet-retina.xmlmapnikify(geojson, retina, callback)
Transform GeoJSON into Mapnik XML.
geojsonis a GeoJSON object.retinais true or false for whether the style should be optimized for 2x rendering.callbackcalled with(err, xml)where xml is a string
url markers
If your GeoJSON object has one or more features with a marker-url property, mapnikify() will write the images found at the url into a file in a temporary directory and use that path in the Mapnik XML. This uses the request library to handle the http file fetching.
By default the request will attempt to fetch binary data from the specified url. If the url is http and not https , Mapnikify will use agentkeepalive to speed up requesting multiple images. There is also a default timeout of 5 seconds.
You can customize the defaults passed to request() . Simply set a custom wrapper defined with request.defaults . See request's documentation on defaults for more information. For a quick example, this will set a longer timeout:
var mapnikify = require('mapnikify');
var myRequest = require('request').defaults({
timeout: 10000,
followRedirect: false
});
mapnikify.setRequestClient(myRequest);
mapnikify(geojson, retina, callback);
mapnikify.setRequestClient(null); // return to mapnikify defaults