UNPKG

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
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=