forked from MapComplete/MapComplete
		
	
		
			
	
	
		
			29 lines
		
	
	
	
		
			775 B
		
	
	
	
		
			TypeScript
		
	
	
	
	
	
		
		
			
		
	
	
			29 lines
		
	
	
	
		
			775 B
		
	
	
	
		
			TypeScript
		
	
	
	
	
	
| 
								 | 
							
								import fs from "fs"
							 | 
						||
| 
								 | 
							
								import { GeoOperations } from "../Logic/GeoOperations"
							 | 
						||
| 
								 | 
							
								import ScriptUtils from "./ScriptUtils"
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								/**
							 | 
						||
| 
								 | 
							
								 * Given one of more files, calculates a somewhat convex hull for them
							 | 
						||
| 
								 | 
							
								 * @param file
							 | 
						||
| 
								 | 
							
								 */
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								function makeConvex(file) {
							 | 
						||
| 
								 | 
							
								    ScriptUtils.erasableLog("Handling", file)
							 | 
						||
| 
								 | 
							
								    const geoJson = JSON.parse(fs.readFileSync(file, "UTF8"))
							 | 
						||
| 
								 | 
							
								    const convex = GeoOperations.convexHull(geoJson, { concavity: 2 })
							 | 
						||
| 
								 | 
							
								    if (convex.properties === undefined) {
							 | 
						||
| 
								 | 
							
								        convex.properties = {}
							 | 
						||
| 
								 | 
							
								    }
							 | 
						||
| 
								 | 
							
								    fs.writeFileSync(file + ".convex.geojson", JSON.stringify(convex))
							 | 
						||
| 
								 | 
							
								}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								let args = [...process.argv]
							 | 
						||
| 
								 | 
							
								args.splice(0, 2)
							 | 
						||
| 
								 | 
							
								args.forEach((file) => {
							 | 
						||
| 
								 | 
							
								    try {
							 | 
						||
| 
								 | 
							
								        makeConvex(file)
							 | 
						||
| 
								 | 
							
								    } catch (e) {
							 | 
						||
| 
								 | 
							
								        console.error("Could not handle file ", file, " due to ", e)
							 | 
						||
| 
								 | 
							
								    }
							 | 
						||
| 
								 | 
							
								})
							 |