forked from MapComplete/MapComplete
		
	Add generateTileOverview-script
This commit is contained in:
		
							parent
							
								
									c8b0d8f914
								
							
						
					
					
						commit
						5648d5372a
					
				
					 1 changed files with 51 additions and 0 deletions
				
			
		
							
								
								
									
										51
									
								
								scripts/generateTileOverview.ts
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										51
									
								
								scripts/generateTileOverview.ts
									
										
									
									
									
										Normal file
									
								
							|  | @ -0,0 +1,51 @@ | |||
| /** | ||||
|  * Generates an overview for which tiles exist and which don't | ||||
|  */ | ||||
| import ScriptUtils from "./ScriptUtils"; | ||||
| import {Tiles} from "../Models/TileRange"; | ||||
| import {writeFileSync} from "fs"; | ||||
| 
 | ||||
| function main(args: string[]) { | ||||
| 
 | ||||
|     const directory = args[0] | ||||
|     let zoomLevel = args[1] | ||||
|     const files = ScriptUtils.readDirRecSync(directory, 1) | ||||
|         .filter(f => f.endsWith(".geojson")) | ||||
| 
 | ||||
|     const indices /* Map<string, number[]>*/ = {} | ||||
|     for (const path of files) { | ||||
| 
 | ||||
|         const match = path.match(".*_\([0-9]*\)_\([0-9]*\)_\([0-9]*\).geojson") | ||||
|         if (match === null) { | ||||
|             continue | ||||
|         } | ||||
|         const z = match[1] | ||||
|         if(zoomLevel === undefined){ | ||||
|             zoomLevel = z | ||||
|         }else if(zoomLevel !== z){ | ||||
|             throw "Mixed zoomlevels detected" | ||||
|         } | ||||
|          | ||||
|         const x = match[2] | ||||
|         const y = match[3] | ||||
|         if(!indices[x] !== undefined){ | ||||
|             indices[x] = [] | ||||
|         } | ||||
|         indices[x] .push(Number(y)) | ||||
|     } | ||||
|     indices["zoom"] = zoomLevel; | ||||
|     const match = files[0].match("\(.*\)_\([0-9]*\)_\([0-9]*\)_\([0-9]*\).geojson") | ||||
|     const path = match[1]+"_"+zoomLevel+"_overview.json" | ||||
|     writeFileSync( path, JSON.stringify(indices)) | ||||
|     console.log("Written overview for", files.length, " tiles at", path) | ||||
| } | ||||
| 
 | ||||
| let args = [...process.argv] | ||||
| args.splice(0, 2) | ||||
| args.forEach(file => { | ||||
|     try { | ||||
|         main(args) | ||||
|     } catch (e) { | ||||
|         console.error("Could not handle file ", file, " due to ", e) | ||||
|     } | ||||
| }) | ||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue