text-to-map
Version:
Text To Map usiluje o lepší, strojově zpracovatelné využití částí vyhlášek s výčtem ulic a dalších lokací. Jde o rozšiřitelnou sadu konceptů a nástrojů, které zajistí hladký převod výčtu ulic a jejich rozsahů v lidsky srozumitelném jazyce do strojově zpra
74 lines • 11.4 kB
JavaScript
import { readFileSync, writeFileSync } from "fs";
import { parseOrdinanceToAddressPoints, } from "../street-markdown/smd";
import { municipalitiesToPolygons } from "../street-markdown/polygons";
import { disconnectKnex } from "../db/db";
import { SchoolType } from "../db/types";
async function main() {
// take first node argument as a file name
if (process.argv.length < 4) {
console.error("Missing file name argument");
process.exit(1);
}
if (process.argv[2] !== "zs" && process.argv[2] !== "ms") {
console.error("Invalid school type argument, must be one of 'zs' or 'ms'");
process.exit(1);
}
const schoolType = process.argv[2] === "zs" ? SchoolType.Elementary : SchoolType.Kindergarten;
const fileName = process.argv[3];
const fileContent = readFileSync(fileName);
const lines = fileContent.toString().split("\n");
let errorCount = 0;
const errorLines = [];
let warningCount = 0;
const reportErrors = ({ lineNumber, line, errors, }) => {
errors.forEach((error) => console.error(error.message));
console.error(`Invalid street definition on line ${lineNumber}: ${line}`);
errorCount++;
errorLines.push(`line ${lineNumber}: ${line}`);
};
const reportWarnings = ({ lineNumber, errors: warnings, }) => {
warnings.forEach((error) => {
console.error(`Line ${lineNumber}: ${error.message}`);
});
warningCount++;
};
console.time("parseOrdinanceToAddressPoints");
// const { municipality } = await getNewMunicipalityByFounderId(2016); // ostrava something
const municipalities = await parseOrdinanceToAddressPoints({
lines,
schoolType,
initialState: {
// currentMunicipality: municipality,
},
onError: reportErrors,
onWarning: reportWarnings,
includeUnmappedAddressPoints: true,
});
console.timeEnd("parseOrdinanceToAddressPoints");
console.log(`Parsed ${lines.length} lines, ${errorCount} errors, ${warningCount} warnings.`);
// if (errorCount > 0) {
// console.log("Errors:");
// errorLines.forEach((line) => console.log(line));
// }
if (process.argv.length >= 5) {
const outputFileName = process.argv[4];
const output = JSON.stringify(municipalities);
console.log(`Writing output to ${outputFileName}`);
writeFileSync(outputFileName, output);
}
else {
console.log(JSON.stringify(municipalities));
}
if (process.argv.length >= 6) {
console.time("municipalityToPolygons");
const polygons = await municipalitiesToPolygons(municipalities);
console.timeEnd("municipalityToPolygons");
const outputFileName = process.argv[5];
const output = JSON.stringify(polygons);
console.log(`Writing polygons to ${outputFileName}`);
writeFileSync(outputFileName, output);
}
await disconnectKnex();
}
main();
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGFyc2Utb3JkaW5hbmNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2Jpbi9wYXJzZS1vcmRpbmFuY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFlBQVksRUFBRSxhQUFhLEVBQUUsTUFBTSxJQUFJLENBQUM7QUFDakQsT0FBTyxFQUVMLDZCQUE2QixHQUM5QixNQUFNLHdCQUF3QixDQUFDO0FBRWhDLE9BQU8sRUFBRSx3QkFBd0IsRUFBRSxNQUFNLDZCQUE2QixDQUFDO0FBQ3ZFLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxVQUFVLENBQUM7QUFDMUMsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGFBQWEsQ0FBQztBQUV6QyxLQUFLLFVBQVUsSUFBSTtJQUNqQiwwQ0FBMEM7SUFDMUMsSUFBSSxPQUFPLENBQUMsSUFBSSxDQUFDLE1BQU0sR0FBRyxDQUFDLEVBQUU7UUFDM0IsT0FBTyxDQUFDLEtBQUssQ0FBQyw0QkFBNEIsQ0FBQyxDQUFDO1FBQzVDLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUM7S0FDakI7SUFFRCxJQUFJLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEtBQUssSUFBSSxJQUFJLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEtBQUssSUFBSSxFQUFFO1FBQ3hELE9BQU8sQ0FBQyxLQUFLLENBQUMsMkRBQTJELENBQUMsQ0FBQztRQUMzRSxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDO0tBQ2pCO0lBQ0QsTUFBTSxVQUFVLEdBQ2QsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsS0FBSyxJQUFJLENBQUMsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxZQUFZLENBQUM7SUFDN0UsTUFBTSxRQUFRLEdBQUcsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUNq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QVMsQ0FBQyxRQUFRLENBQUMsQ0FBQztRQUN4QyxPQUFPLENBQUMsR0FBRyxDQUFDLHVCQUF1QixjQUFjLEVBQUUsQ0FBQyxDQUFDO1FBQ3JELGFBQWEsQ0FBQyxjQUFjLEVBQUUsTUFBTSxDQUFDLENBQUM7S0FDdkM7SUFDRCxNQUFNLGNBQWMsRUFBRSxDQUFDO0FBQ3pCLENBQUM7QUFFRCxJQUFJLEVBQUUsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IHJlYWRGaWxlU3luYywgd3JpdGVGaWxlU3luYyB9IGZyb20gXCJmc1wiO1xyXG5pbXBvcnQge1xyXG4gIGdldE5ld011bmljaXBhbGl0eUJ5Rm91bmRlcklkLFxyXG4gIHBhcnNlT3JkaW5hbmNlVG9BZGRyZXNzUG9pbnRzLFxyXG59IGZyb20gXCIuLi9zdHJlZXQtbWFya2Rvd24vc21kXCI7XHJcbmltcG9ydCB7IEVycm9yQ2FsbGJhY2tQYXJhbXMgfSBmcm9tIFwiLi4vc3RyZWV0LW1hcmtkb3duL3R5cGVzXCI7XHJcbmltcG9ydCB7IG11bmljaXBhbGl0aWVzVG9Qb2x5Z29ucyB9IGZyb20gXCIuLi9zdHJlZXQtbWFya2Rvd24vcG9seWdvbnNcIjtcclxuaW1wb3J0IHsgZGlzY29ubmVjdEtuZXggfSBmcm9tIFwiLi4vZGIvZGJcIjtcclxuaW1wb3J0IHsgU2Nob29sVHlwZSB9IGZyb20gXCIuLi9kYi90eXBlc1wiO1xyXG5cclxuYXN5bmMgZnVuY3Rpb24gbWFpbigpIHtcclxuICAvLyB0YWtlIGZpcnN0IG5vZGUgYXJndW1lbnQgYXMgYSBmaWxlIG5hbWVcclxuICBpZiAocHJvY2Vzcy5hcmd2Lmxlbmd0aCA8IDQpIHtcclxuICAgIGNvbnNvbGUuZXJyb3IoXCJNaXNzaW5nIGZpbGUgbmFtZSBhcmd1bWVudFwiKTtcclxuICAgIHByb2Nlc3MuZXhpdCgxKTtcclxuICB9XHJcblxyXG4gIGlmIChwcm9jZXNzLmFyZ3ZbMl0gIT09IFwienNcIiAmJiBwcm9jZXNzLmFyZ3ZbMl0gIT09IFwibXNcIikge1xyXG4gICAgY29uc29sZS5lcnJvcihcIkludmFsaWQgc2Nob29sIHR5cGUgYXJndW1lbnQsIG11c3QgYmUgb25lIG9mICd6cycgb3IgJ21zJ1wiKTtcclxuICAgIHByb2Nlc3MuZXhpdCgxKTtcclxuICB9XHJcbiAgY29uc3Qgc2Nob29sVHlwZSA9XHJcbiAgICBwcm9jZXNzLmFyZ3ZbMl0gPT09IFwienNcIiA/IFNjaG9vbFR5cGUuRWxlbWVudGFyeSA6IFNjaG9vbFR5cGUuS2luZGVyZ2FydGVuO1xyXG4gIGNvbnN0IGZpbGVOYW1lID0gcHJvY2Vzcy5hcmd2WzNdO1xyXG4gIGNvbnN0IGZpbGVDb250ZW50ID0gcmVhZEZpbGVTeW5jKGZpbGVOYW1lKTtcclxuICBjb25zdCBsaW5lcyA9IGZpbGVDb250ZW50LnRvU3RyaW5nKCkuc3BsaXQoXCJcXG5cIik7XHJcblxyXG4gIGxldCBlcnJvckNvdW50ID0gMDtcclxuICBjb25zdCBlcnJvckxpbmVzOiBzdHJpbmdbXSA9IFtdO1xyXG4gIGxldCB3YXJuaW5nQ291bnQgPSAwO1xyXG5cclxuICBjb25zdCByZXBvcnRFcnJvcnMgPSAoe1xyXG4gICAgbGluZU51bWJlcixcclxuICAgIGxpbmUsXHJcbiAgICBlcnJvcnMsXHJcbiAgfTogRXJyb3JDYWxsYmFja1BhcmFtcyk6IHZvaWQgPT4ge1xyXG4gICAgZXJyb3JzLmZvckVhY2goKGVycm9yKSA9PiBjb25zb2xlLmVycm9yKGVycm9yLm1lc3NhZ2UpKTtcclxuICAgIGNvbnNvbGUuZXJyb3IoYEludmFsaWQgc3RyZWV0IGRlZmluaXRpb24gb24gbGluZSAke2xpbmVOdW1iZXJ9OiAke2xpbmV9YCk7XHJcbiAgICBlcnJvckNvdW50Kys7XHJcbiAgICBlcnJvckxpbmVzLnB1c2goYGxpbmUgJHtsaW5lTnVtYmVyfTogJHtsaW5lfWApO1xyXG4gIH07XHJcblxyXG4gIGNvbnN0IHJlcG9ydFdhcm5pbmdzID0gKHtcclxuICAgIGxpbmVOdW1iZXIsXHJcbiAgICBlcnJvcnM6IHdhcm5pbmdzLFxyXG4gIH06IEVycm9yQ2FsbGJhY2tQYXJhbXMpOiB2b2lkID0+IHtcclxuICAgIHdhcm5pbmdzLmZvckVhY2goKGVycm9yKSA9PiB7XHJcbiAgICAgIGNvbnNvbGUuZXJyb3IoYExpbmUgJHtsaW5lTnVtYmVyfTogJHtlcnJvci5tZXNzYWdlfWApO1xyXG4gICAgfSk7XHJcbiAgICB3YXJuaW5nQ291bnQrKztcclxuICB9O1xyXG5cclxuICBjb25zb2xlLnRpbWUoXCJwYXJzZU9yZGluYW5jZVRvQWRkcmVzc1BvaW50c1wiKTtcclxuXHJcbiAgLy8gY29uc3QgeyBtdW5pY2lwYWxpdHkgfSA9IGF3YWl0IGdldE5ld011bmljaXBhbGl0eUJ5Rm91bmRlcklkKDIwMTYpOyAvLyBvc3RyYXZhIHNvbWV0aGluZ1xyXG5cclxuICBjb25zdCBtdW5pY2lwYWxpdGllcyA9IGF3YWl0IHBhcnNlT3JkaW5hbmNlVG9BZGRyZXNzUG9pbnRzKHtcclxuICAgIGxpbmVzLFxyXG4gICAgc2Nob29sVHlwZSxcclxuICAgIGluaXRpYWxTdGF0ZToge1xyXG4gICAgICAvLyBjdXJyZW50TXVuaWNpcGFsaXR5OiBtdW5pY2lwYWxpdHksXHJcbiAgICB9LFxyXG4gICAgb25FcnJvcjogcmVwb3J0RXJyb3JzLFxyXG4gICAgb25XYXJuaW5nOiByZXBvcnRXYXJuaW5ncyxcclxuICAgIGluY2x1ZGVVbm1hcHBlZEFkZHJlc3NQb2ludHM6IHRydWUsXHJcbiAgfSk7XHJcbiAgY29uc29sZS50aW1lRW5kKFwicGFyc2VPcmRpbmFuY2VUb0FkZHJlc3NQb2ludHNcIik7XHJcblxyXG4gIGNvbnNvbGUubG9nKFxyXG4gICAgYFBhcnNlZCAke2xpbmVzLmxlbmd0aH0gbGluZXMsICR7ZXJyb3JDb3VudH0gZXJyb3JzLCAke3dhcm5pbmdDb3VudH0gd2FybmluZ3MuYFxyXG4gICk7XHJcbiAgLy8gaWYgKGVycm9yQ291bnQgPiAwKSB7XHJcbiAgLy8gICBjb25zb2xlLmxvZyhcIkVycm9yczpcIik7XHJcbiAgLy8gICBlcnJvckxpbmVzLmZvckVhY2goKGxpbmUpID0+IGNvbnNvbGUubG9nKGxpbmUpKTtcclxuICAvLyB9XHJcblxyXG4gIGlmIChwcm9jZXNzLmFyZ3YubGVuZ3RoID49IDUpIHtcclxuICAgIGNvbnN0IG91dHB1dEZpbGVOYW1lID0gcHJvY2Vzcy5hcmd2WzRdO1xyXG4gICAgY29uc3Qgb3V0cHV0ID0gSlNPTi5zdHJpbmdpZnkobXVuaWNpcGFsaXRpZXMpO1xyXG4gICAgY29uc29sZS5sb2coYFdyaXRpbmcgb3V0cHV0IHRvICR7b3V0cHV0RmlsZU5hbWV9YCk7XHJcbiAgICB3cml0ZUZpbGVTeW5jKG91dHB1dEZpbGVOYW1lLCBvdXRwdXQpO1xyXG4gIH0gZWxzZSB7XHJcbiAgICBjb25zb2xlLmxvZyhKU09OLnN0cmluZ2lmeShtdW5pY2lwYWxpdGllcykpO1xyXG4gIH1cclxuXHJcbiAgaWYgKHByb2Nlc3MuYXJndi5sZW5ndGggPj0gNikge1xyXG4gICAgY29uc29sZS50aW1lKFwibXVuaWNpcGFsaXR5VG9Qb2x5Z29uc1wiKTtcclxuICAgIGNvbnN0IHBvbHlnb25zID0gYXdhaXQgbXVuaWNpcGFsaXRpZXNUb1BvbHlnb25zKG11bmljaXBhbGl0aWVzKTtcclxuICAgIGNvbnNvbGUudGltZUVuZChcIm11bmljaXBhbGl0eVRvUG9seWdvbnNcIik7XHJcblxyXG4gICAgY29uc3Qgb3V0cHV0RmlsZU5hbWUgPSBwcm9jZXNzLmFyZ3ZbNV07XHJcbiAgICBjb25zdCBvdXRwdXQgPSBKU09OLnN0cmluZ2lmeShwb2x5Z29ucyk7XHJcbiAgICBjb25zb2xlLmxvZyhgV3JpdGluZyBwb2x5Z29ucyB0byAke291dHB1dEZpbGVOYW1lfWApO1xyXG4gICAgd3JpdGVGaWxlU3luYyhvdXRwdXRGaWxlTmFtZSwgb3V0cHV0KTtcclxuICB9XHJcbiAgYXdhaXQgZGlzY29ubmVjdEtuZXgoKTtcclxufVxyXG5cclxubWFpbigpO1xyXG4iXX0=