我正在尝试将图像从 WMS 加载到 mapnik,但收到错误未处理的拒绝错误:image_reader:无法确定输入数据的类型
。精简后的代码是
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”)。我不知道还能尝试什么。
最佳答案
如果其他人遇到类似的情况,问题是 request
(或在本例中 request-promise
)假设响应正文应该是一个字符串并隐式地对其执行toString
。要解决这个问题,请求应该是
request(url, {
qs: { ... },
encoding: null,
}).then({ ... });
在此处查看更多详细信息:https://github.com/request/request#requestoptions-callback
关于javascript - Mapnik 无法确定图像类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37632722/