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})) |