blob: d33c42f26ae99a5aea9869cfd92b2829a4ba338a [file] [log] [blame]
/*
* Licensed to the Apache Software Foundation (ASF) under one
* or more contributor license agreements. See the NOTICE file
* distributed with this work for additional information
* regarding copyright ownership. The ASF licenses this file
* to you under the Apache License, Version 2.0 (the
* "License"); you may not use this file except in compliance
* with the License. You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing,
* software distributed under the License is distributed on an
* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
* KIND, either express or implied. See the License for the
* specific language governing permissions and limitations
* under the License.
*/
var echarts = require('../../dist/echarts');
// var v8 = require('v8');
// v8.setFlagsFromString('--max-old-space-size=4096');
var { createCanvas } = require('canvas');
var fs = require('fs');
var ProgressBar = require('progress');
echarts.setCanvasCreator(function () {
return createCanvas(100, 100);
});
var canvas = createCanvas();
canvas.width = 2048;
canvas.height = 1024;
var worldJson = JSON.parse(fs.readFileSync('.././data/map/json/world.json', 'utf-8'));
echarts.registerMap('world', worldJson);
var chart = echarts.init(canvas);
chart.setOption({
backgroundColor: '#000',
geo: {
map: 'world',
roam: true,
label: {
emphasis: {
show: false
}
},
silent: true,
itemStyle: {
normal: {
areaColor: '#323c48',
borderColor: '#111'
},
emphasis: {
areaColor: '#2a333d'
}
}
},
series: [{
name: '弱',
type: 'scatter',
progressive: 1e5,
coordinateSystem: 'geo',
symbolSize: 0.5,
blendMode: 'lighter',
large: true,
itemStyle: {
normal: {
color: 'rgb(20, 15, 2)'
}
},
postEffect: {
enable: true
},
silent: true,
dimensions: ['lng', 'lat'],
data: new Float32Array()
}]
});
// var CHUNK_COUNT = 277;
var CHUNK_COUNT = 229;
// https://blog.openstreetmap.org/2012/04/01/bulk-gps-point-data/
function fetchData(idx) {
if (idx >= CHUNK_COUNT) {
setTimeout(function () {
fs.writeFile('out.png', canvas.toBuffer());
chart.dispose();
});
return;
}
fs.readFile(`../../../echarts-gl/test/data/gps/gps_${idx}.bin`, function (err, buffer) {
var arr = new Uint8Array(buffer.length);
for (var i = 0; i < buffer.length; i++) {
arr[i] = buffer[i];
}
var rawData = new Int32Array(arr.buffer);
var data = new Float32Array(rawData.length);
for (var i = 0; i < rawData.length; i += 2) {
data[i] = rawData[i+1] / 1e7;
data[i+1] = rawData[i] / 1e7;
}
chart.appendData({
seriesIndex: 0,
data: data
});
fetchData(idx + 1);
progress.tick();
});
}
var progress = new ProgressBar('Generating [:bar] :percent :etas', {
complete: '=',
incomplete: ' ',
width: 50,
total: CHUNK_COUNT
});
fetchData(0);