Mapnik无法确定图像类型

时间:2016-06-04 16:48:56

标签: javascript node.js mapnik

我正在尝试将图像从WMS加载到mapnik中,但我收到错误Unhandled rejection Error: image_reader: can't determine type from input data。剥离的代码是

const request = require('request-promise');
const mapnik = require('mapnik');

request(`${wmsUrl}/GetMap`, {
  qs: {
    bbox: '-90,32,-89,33',
    format: 'image/png',
    height: 200,
    layers: '5',
    request: 'GetMap',
    'srs(crs)': 'EPSG:4326,
    styles: 'default',
    version: '1.1',
    width: 200,
  },
}).then(res => {
  const buffer = new Buffer(res);
  return mapnik.Image.fromBytesSync(buffer); // This is the error line
});

我手动运行请求并且它可以工作,我已经检查了缓冲区并且它看起来很好(即在开始时有'PNG')。我不知道还有什么可以尝试的。

1 个答案:

答案 0 :(得分:1)

如果其他人遇到类似的内容,问题是request(或者在这种情况下request-promise)假定响应正文应该是一个字符串并隐式执行toString在上面。要解决,请求应该是

request(url, {
  qs: { ... },
  encoding: null,
}).then({ ... });

在此处查看更多详情:https://github.com/request/request#requestoptions-callback