forked from MapComplete/MapComplete
		
	
		
			
	
	
		
			93 lines
		
	
	
	
		
			2.5 KiB
		
	
	
	
		
			TypeScript
		
	
	
	
	
	
		
		
			
		
	
	
			93 lines
		
	
	
	
		
			2.5 KiB
		
	
	
	
		
			TypeScript
		
	
	
	
	
	
| 
								 | 
							
								import fs from "fs"
							 | 
						||
| 
								 | 
							
								import {OH} from "../../UI/OpeningHours/OpeningHours";
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								const cashpunten = JSON.parse(fs.readFileSync("/home/pietervdvn/Downloads/cash_punten.json", "utf8")).data
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								const features: any[] = []
							 | 
						||
| 
								 | 
							
								const weekdays = [
							 | 
						||
| 
								 | 
							
								    "MO",
							 | 
						||
| 
								 | 
							
								    "TU",
							 | 
						||
| 
								 | 
							
								    "WE",
							 | 
						||
| 
								 | 
							
								    "TH",
							 | 
						||
| 
								 | 
							
								    "FR",
							 | 
						||
| 
								 | 
							
								    "SA",
							 | 
						||
| 
								 | 
							
								    "SU"
							 | 
						||
| 
								 | 
							
								]
							 | 
						||
| 
								 | 
							
								for (const atm of cashpunten) {
							 | 
						||
| 
								 | 
							
								    const properties = {
							 | 
						||
| 
								 | 
							
								        "amenity": "atm",
							 | 
						||
| 
								 | 
							
								        "addr:street": atm.adr_street,
							 | 
						||
| 
								 | 
							
								        "addr:housenumber": atm.adr_street_number,
							 | 
						||
| 
								 | 
							
								        "phone": <string>atm.phone_number,
							 | 
						||
| 
								 | 
							
								        "operator": "Batopin",
							 | 
						||
| 
								 | 
							
								        network: "CASH",
							 | 
						||
| 
								 | 
							
								        fee: "no",
							 | 
						||
| 
								 | 
							
								        "speech_output": "yes",
							 | 
						||
| 
								 | 
							
								        "brand": "CASH",
							 | 
						||
| 
								 | 
							
								        website: "https://batopin.be",
							 | 
						||
| 
								 | 
							
								        "source": "https://batopin.be",
							 | 
						||
| 
								 | 
							
								        "brand:wikidata": "Q112875867",
							 | 
						||
| 
								 | 
							
								        "operator:wikidata": "Q97142699",
							 | 
						||
| 
								 | 
							
								        "currency:EUR": "yes"
							 | 
						||
| 
								 | 
							
								    }
							 | 
						||
| 
								 | 
							
								    features.push({
							 | 
						||
| 
								 | 
							
								        geometry: {type: "Point", coordinates: [atm.adr_longitude, atm.adr_latitude]},
							 | 
						||
| 
								 | 
							
								        properties: {
							 | 
						||
| 
								 | 
							
								            tags: properties
							 | 
						||
| 
								 | 
							
								        }
							 | 
						||
| 
								 | 
							
								    })
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    switch (atm.accessibility) {
							 | 
						||
| 
								 | 
							
								        case "Green":
							 | 
						||
| 
								 | 
							
								            properties["wheelchair"] = "yes";
							 | 
						||
| 
								 | 
							
								            break;
							 | 
						||
| 
								 | 
							
								        case "Orange":
							 | 
						||
| 
								 | 
							
								            properties["wheelchair"] = "limited";
							 | 
						||
| 
								 | 
							
								            break;
							 | 
						||
| 
								 | 
							
								        case "Red":
							 | 
						||
| 
								 | 
							
								            properties["wheelchair"] = "no";
							 | 
						||
| 
								 | 
							
								            break;
							 | 
						||
| 
								 | 
							
								        default:
							 | 
						||
| 
								 | 
							
								            break;
							 | 
						||
| 
								 | 
							
								    }
							 | 
						||
| 
								 | 
							
								    delete atm.accessibility
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    if (atm.deposit_cash) {
							 | 
						||
| 
								 | 
							
								        properties["cash_in"] = atm.deposit_cash === "1" ? "yes" : "no"
							 | 
						||
| 
								 | 
							
								        delete atm.deposit_cash
							 | 
						||
| 
								 | 
							
								    }
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    if (!weekdays.some(wd => atm.regular_hours[wd] !== "00:00-00:00")) {
							 | 
						||
| 
								 | 
							
								        properties["opening_hours"] = "24/7"
							 | 
						||
| 
								 | 
							
								        delete atm.regular_hours
							 | 
						||
| 
								 | 
							
								    } else {
							 | 
						||
| 
								 | 
							
								        const rules = weekdays.filter(wd => atm.regular_hours[wd] !== undefined).map(wd => wd[0] + wd.toLowerCase()[1] + " " + atm.regular_hours[wd]).join(";")
							 | 
						||
| 
								 | 
							
								        properties["opening_hours"] = OH.ToString(OH.MergeTimes(OH.Parse(rules)))
							 | 
						||
| 
								 | 
							
								        delete atm.regular_hours
							 | 
						||
| 
								 | 
							
								    }
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    delete atm.special_hours // Only one data point has this
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    delete atm.location_language
							 | 
						||
| 
								 | 
							
								    delete atm.location_name
							 | 
						||
| 
								 | 
							
								    delete atm.shop_code
							 | 
						||
| 
								 | 
							
								    delete atm.id
							 | 
						||
| 
								 | 
							
								    delete atm.adr_longitude
							 | 
						||
| 
								 | 
							
								    delete atm.adr_latitude
							 | 
						||
| 
								 | 
							
								    delete atm.adr_street_number
							 | 
						||
| 
								 | 
							
								    delete atm.adr_street
							 | 
						||
| 
								 | 
							
								    delete atm.adr_zipcode
							 | 
						||
| 
								 | 
							
								    delete atm.adr_city
							 | 
						||
| 
								 | 
							
								    delete atm.adr_country
							 | 
						||
| 
								 | 
							
								    delete atm.phone_number
							 | 
						||
| 
								 | 
							
								    if (Object.keys(atm).length == 0) {
							 | 
						||
| 
								 | 
							
								        continue
							 | 
						||
| 
								 | 
							
								    }
							 | 
						||
| 
								 | 
							
								    console.log(atm, properties)
							 | 
						||
| 
								 | 
							
								    break
							 | 
						||
| 
								 | 
							
								}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								fs.writeFileSync("atms.geojson", JSON.stringify({type: "FeatureCollection", features}))
							 |