mapnik icon indicating copy to clipboard operation
mapnik copied to clipboard

Error: Could not create datasource for type: 'postgis' (no datasource plugin directories have been successfully registered)

Open Rehan-05 opened this issue 2 years ago • 2 comments

I'm trying to rendering the data by using the mapnik in node js. But continuously facing errors.

` /set framework and dependencies var express = require('express'); var app = express(); var url = require('url');

//mapnik and dependecies var mapnik = require('mapnik'); var fs = require('fs');

var mapProjection = '+proj=merc +a=6378137 +b=6378137 +lat_ts=0.0 +lon_0=0.0 +x_0=0.0 +y_0=0 +k=1.0 +units=m +nadgrids=@null +wktext +no_defs'; var map = new mapnik.Map(512, 512, mapProjection);

//mapnik //mapnik.register_default_fonts(); //mapnik.register_default_input_plugins();

//mapnik pool var mapnikPool = require('mapnik-pool')(mapnik); var pool = mapnikPool.fromString(fs.readFileSync('./style.xml', 'utf8'), { 'size': 512, 'height': 512, 'width': 512, }, {});

//postgis var settings = require('./settings.js'); var postgis = new mapnik.Datasource(settings.postgis);

app.get('/render', function (req, res) { console.log('request' + "\n");

pool.acquire(function (err, map) {
    //console.log(map);

    var query = req.url.split('&');
    //console.log(query);

    var bbox = query[13].replace('BBOX=', '').split('%2C').map(function (item) {
        return parseFloat(item);
    });
    //get layer
    var layerName = query[5].replace('LAYERS=', '').split('%3A')[1];

    //set style, datasource
    var layer = new mapnik.Layer(layerName, mapProjection);
    layer.datasource = postgis;
    layer.styles = ['style_pg'];

    map.add_layer(layer);
    map.extent = bbox;
    //map.zoomAll(bbox);

    //console.log(map);

    var im = new mapnik.Image(512, 512);
    map.render(im, function (err, im) {
        if (err) throw err;
        im.encode('png', function (err, buffer) {
            if (err) throw err;
            fs.writeFile('./tiles/map' + Math.round(Math.random() * 10000) + '.png', buffer, function (err) {
                if (err) throw err;


                //send file must be here because async functions
                res.setHeader('Content-Length', buffer.length);
                res.setHeader('Content-Type', 'image/png');
                /*res.sendFile('map' + Math.round(Math.random() * 10000) + '.png', {
                    'root': '/var/www/fmp/etc/nodejs/'
                });*/
                res.send(buffer);
                //console.log('saved map image to map.png');
            });
        });
    });
    //});
});

});

app.listen(3003, () => { console.log('Server is running on port 3003'); }); `

Here is my settings.js

var path = require('path');

module.exports.styles = path.join(__dirname, 'styles');

module.exports.postgis = { 'dbname' : 'osm', 'table': 'morocco_roads', 'geometry_field' : 'geom', 'srid' : 3857, 'user' : 'osmrehan05', 'password': 'Pakistan12@', 'max_size' : 10, 'type' : 'postgis', 'port': '5432', 'host': 'localhost', 'extent' : '-20005048.4188,-9039211.13765,19907487.2779,17096598.5401' //set for epsg: 3857 };

Here is my package.json { "name": "my_mapnik_project", "version": "1.0.0", "description": "", "main": "rendernew2.js", "scripts": { "test": "echo "Error: no test specified" && exit 1", "start": "nodemon rendernew2.js", "dev": "nodemon rendernew2.js" }, "keywords": [], "author": "", "license": "ISC", "dependencies": { "express": "^4.18.2", "fs": "^0.0.1-security", "mapnik": "^4.5.9", "mapnik-pool": "^0.1.3", "pg": "^8.11.3", "url": "^0.11.3" }, "devDependencies": { "nodemon": "^3.0.1" } }

"Here is my style.xml

blue_style csv wkt,Name POLYGON((-180 -90,-180 90,180 90,180 -90,-180 -90)),Blue Rectangle

Rehan-05 avatar Sep 25 '23 05:09 Rehan-05

@artemp Can you please check it.

If i un-commit both these plugins //mapnik.register_default_fonts(); //mapnik.register_default_input_plugins();

then facing error

/root/my_mapnik_project/rendernew2.js:27 var postgis = new mapnik.Datasource(settings.postgis); ^

Error: Postgis Plugin: authentication method 10 not supported Connection string: 'host=localhost port=5432 dbname=osm user=osmrehan05 connect_timeout=4 fallback_application_name=mapnik'

Rehan-05 avatar Sep 25 '23 06:09 Rehan-05

Need urgent response. Thanks @noirbizarre @mathisloge

Rehan-05 avatar Sep 25 '23 06:09 Rehan-05