forked from MapComplete/MapComplete
Velopark: first decent, working version
This commit is contained in:
parent
890816d2dd
commit
5b6cd1d2ae
18 changed files with 7054 additions and 21769 deletions
|
@ -2,8 +2,8 @@ import Script from "../Script"
|
|||
import fs from "fs"
|
||||
import { Feature, FeatureCollection } from "geojson"
|
||||
import { GeoOperations } from "../../src/Logic/GeoOperations"
|
||||
import * as os from "os"
|
||||
// vite-node scripts/velopark/compare.ts -- scripts/velopark/velopark_all_2024-02-14T12\:18\:41.772Z.geojson ~/Projecten/OSM/Fietsberaad/2024-02-02\ Fietsenstallingen_OSM_met_velopark_ref.geojson
|
||||
|
||||
// vite-node scripts/velopark/compare.ts -- scripts/velopark/velopark_all.geojson osm_with_velopark_link_.geojson
|
||||
class Compare extends Script {
|
||||
compare(
|
||||
veloId: string,
|
||||
|
@ -30,6 +30,9 @@ class Compare extends Script {
|
|||
Object.keys(osmParking.properties).concat(Object.keys(veloParking.properties))
|
||||
)
|
||||
for (const key of allKeys) {
|
||||
if(["name","numberOfLevels"].indexOf(key) >= 0){
|
||||
continue // We don't care about these tags
|
||||
}
|
||||
if (osmParking.properties[key] === veloParking.properties[key]) {
|
||||
continue
|
||||
}
|
||||
|
@ -42,16 +45,22 @@ class Compare extends Script {
|
|||
diffs.push({
|
||||
key,
|
||||
osm: osmParking.properties[key],
|
||||
velopark: veloParking.properties[key],
|
||||
velopark: veloParking.properties[key]
|
||||
})
|
||||
}
|
||||
let osmid = osmParking.properties["@id"] ?? osmParking["id"] /*Not in the properties, that is how overpass returns it*/
|
||||
if (!osmid.startsWith("http")) {
|
||||
osmid = "https://openstreetmap.org/" + osmid
|
||||
}
|
||||
|
||||
return {
|
||||
ref: veloId,
|
||||
osmid: osmParking.properties["@id"],
|
||||
osmid,
|
||||
distance,
|
||||
diffs,
|
||||
diffs
|
||||
}
|
||||
}
|
||||
|
||||
async main(args: string[]): Promise<void> {
|
||||
let [velopark, osm, key] = args
|
||||
key ??= "ref:velopark"
|
||||
|
@ -60,7 +69,7 @@ class Compare extends Script {
|
|||
|
||||
const veloparkById: Record<string, Feature> = {}
|
||||
for (const parking of veloparkData.features) {
|
||||
veloparkById[parking.properties[key]] = parking
|
||||
veloparkById[parking.properties[key] ?? parking.properties.url] = parking
|
||||
}
|
||||
|
||||
const diffs = []
|
||||
|
@ -73,9 +82,12 @@ class Compare extends Script {
|
|||
}
|
||||
diffs.push(this.compare(veloId, parking, veloparking))
|
||||
}
|
||||
console.log("Found ", diffs.length, " items with differences between OSM and the provided data")
|
||||
|
||||
fs.writeFileSync("report_diff.json", JSON.stringify(diffs))
|
||||
fs.writeFileSync("report_diff.json", JSON.stringify(diffs, null, " "))
|
||||
console.log("Written report_diff.json")
|
||||
}
|
||||
|
||||
constructor() {
|
||||
super(
|
||||
"Compares a velopark geojson with OSM geojson. Usage: `compare velopark.geojson osm.geojson [key-to-compare-on]`. If key-to-compare-on is not given, `ref:velopark` will be used"
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue