На хакатоне потребовалось генерировать огромное количество случайных точек на карте. Для этого написал следующий скрипт использующий библиотеку proj4:
Листинг скрипта
const proj4 = require('proj4');
const fs = require('fs');
var source = proj4.Proj('EPSG:4326');
var dest = proj4.Proj('EPSG:3785');
// transforming point coordinates
var p1 = proj4.toPoint([55.907002, 37.369767]); // top left Moscow
var d1 = proj4.transform(source, dest, p1);
var p2 = proj4.toPoint([55.563752, 37.865525]); // bottom right Moscow
var d2 = proj4.transform(source, dest, p2);
var outArray = [];
const step = 500; // meters
for (let i = Number(d2.x); i <= d1.x; i += step) {
for (let j = Number(d1.y); j <= d2.y; j += step) {
const weight = Number(Math.random().toFixed(2));
const outObj = {};
// Less points
if (Math.random() > .2) {
continue;
}
outObj.weight = weight;
outObj.geo = proj4.transform(dest, source, [i, j]);
outArray.push(outObj);
}
}
fs.writeFile("./test.json", JSON.stringify(outArray), (err) => {
if (err) {
return console.log(err);
}
console.log("The file was saved!");
});