Nodejs geojson2geobuf
阿里云国内75折 回扣 微信号:monov8 |
阿里云国际,腾讯云国际,低至75折。AWS 93折 免费开户实名账号 代冲值 优惠多多 微信号:monov8 飞机:@monov6 |
const http = require("http")
const geobuf = require("geobuf")
const Pbf = require("pbf")
const server = http.createServer(
(req0,res0)=>{
if(req0.url.includes('application/geobuf') || req0.url.includes('application%2Fgeobuf')){
let url = req0.url.replace('geobuf', 'json')
url = 'http://ip:port' + url;
http.get(url, (res)=>{
const { statusCode } = res;
const contentType = res.headers['content-type'];
let error;
// Any 2xx status code signals a successful response but
// here we're only checking for 200.
if (statusCode !== 200) {
error = new Error('Request Failed.\n' +
`Status Code: ${statusCode}`);
} else if (!/^application\/json/.test(contentType)) {
error = new Error('Invalid content-type.\n' +
`Expected application/json but received ${contentType}`);
}
if (error) {
console.error(error.message);
// Consume response data to free up memory
res.resume();
return;
}
res.setEncoding('utf8');
let rawData = '';
res.on('data', (chunk) => { rawData += chunk; });
res.on('end', () => {
try {
const parsedData = JSON.parse(rawData);
const buffer = geobuf.encode(parsedData, new Pbf());
res0.writeHead(200, {'Content-Type': 'application/geobuf',"Access-Control-Allow-Origin":"*"})
res0.end(buffer)
} catch (e) {
console.error(e.message);
}
});
}).on('error', (e) => {
console.error(`Got error: ${e.message}`);
});
}
}
)
server.listen(8001,()=>console.log("server is listening at 8001..."))