diff --git a/scripts/importscripts/openbenches.ts b/scripts/importscripts/openbenches.ts index 4db2c6901..dbfca2d3a 100644 --- a/scripts/importscripts/openbenches.ts +++ b/scripts/importscripts/openbenches.ts @@ -241,13 +241,17 @@ class Openbenches extends Script { const mediaInscr = media.filter(m => m.media_type === "inscription") const mediaView = media.filter(m => m.media_type === "view") + const inscription = benchWithUser.inscription.replaceAll("\\r\\n", "\n") const properties = { lastModifiedTime: benchWithUser.added, "openbenches:id": id, - inscription: benchWithUser.inscription.replaceAll("\\r\\n", "\n"), + inscription: inscription.slice(0,255), amenity: "bench", lastModifiedBy: benchWithUser.name, } + if(inscription.length >= 255){ + properties["inscription:0"] = inscription.slice(255) + } let mediaMerged = Lists.dedup(mediaBench.concat(mediaInscr).map(m => mediaUrl(m))) for (let i = 0; i < mediaMerged.length; i++) { @@ -394,6 +398,8 @@ class Openbenches extends Script { console.log("No database file found at "+dbFile+", recreating the database") await this.buildDatabase("/home/pietervdvn/git/openbenches.org/database", dbFile) } + const alreadyLinked: Set = new Set(osmData.features.map(f => Number(f.properties["openbenches:id"]))) + this.db = await this.loadDb(dbFile) @@ -412,57 +418,46 @@ class Openbenches extends Script { tagsOnBenches.get(bench).push(tags.get(tg.tagID)) } - const alreadyLinked = new Set(osmData.features.map(f => f.properties["openbenches:id"])) - const r = await this.all("SELECT * FROM benches INNER JOIN users ON benches.userID = users.userID") + const openbenches = await this.all("SELECT * FROM benches INNER JOIN users ON benches.userID = users.userID") const features: Feature[] = [] - for (let i = 0; i < r.length; i++) { - const benchWithUser = r[i] + let skipped = 0 + for (let i = 0; i < openbenches.length; i++) { + if(alreadyLinked.has(i)){ + skipped++ + continue + } + const benchWithUser = openbenches[i] if (benchWithUser.present === 0 || benchWithUser.published === 0) { continue } const tags = tagsOnBenches.get(benchWithUser.benchID) if (i % 100 === 0) { - ScriptUtils.erasableLog(`Processing bench ${i}/${r.length} (${Math.round(100 * i / r.length)}%) `) + ScriptUtils.erasableLog(`Processing bench ${i}/${openbenches.length} (${Math.round(100 * i / openbenches.length)}%) `) } features.push(await this.createBenchInfo(benchWithUser, tags)) if (createTest && features.length > 1000) { break } } - +/* writeFileSync(`openbenches_export_josm_${createTest ? "_test" : ""}.geojson`, JSON.stringify({ type: "FeatureCollection", features, - }, null, " "), "utf-8") + }, null, " "), "utf-8")*/ const maproulette = features - .filter(f => { - const openbenchesId = f.properties["openbenches:id"] - return !alreadyLinked.has(openbenchesId) - }) .map(f => { const properties = {tags: JSON.stringify(f.properties)} properties["id"] = "openbenches/"+f.properties["openbenches:id"] return {...f, properties} }) + console.log("Skipped",skipped,"benches as already linked/imported") writeFileSync(`openbenches_export_maproulette${createTest ? "_test" : ""}.geojson`, JSON.stringify({ type: "FeatureCollection", features: maproulette, }, null, " "), "utf-8") - if(!createTest){ - writeFileSync(`openbenches_export_maproulette_first_100.geojson`, JSON.stringify({ - type: "FeatureCollection", features: maproulette.slice(0, 100), - }, null, " "), "utf-8") - } - const openBenches = JSON.parse(readFileSync("openbenches_export_josm_.geojson", "utf-8")) - for (const area in areas) { - const areaGeo = areas[area] - await this.conflate(osmData.features.filter( - f => GeoOperations.inside(GeoOperations.centerpointCoordinates(f), - areaGeo) - ), openBenches, "_"+area) - } - await this.conflate(osmData.features, openBenches, "_all") + + await this.conflate(osmData.features, { type: "FeatureCollection", features }, "_all") } }