forked from MapComplete/MapComplete
		
	More work on splitting roads, WIP; refactoring tests
This commit is contained in:
		
							parent
							
								
									e374bb355c
								
							
						
					
					
						commit
						1f93923820
					
				
					 62 changed files with 1163 additions and 823 deletions
				
			
		|  | @ -185,14 +185,14 @@ export class GeoOperations { | |||
|     static lengthInMeters(feature: any) { | ||||
|         return turf.length(feature) * 1000 | ||||
|     } | ||||
|      | ||||
|     static buffer(feature: any, bufferSizeInMeter: number){ | ||||
|         return turf.buffer(feature, bufferSizeInMeter/1000, { | ||||
| 
 | ||||
|     static buffer(feature: any, bufferSizeInMeter: number) { | ||||
|         return turf.buffer(feature, bufferSizeInMeter / 1000, { | ||||
|             units: 'kilometers' | ||||
|         }) | ||||
|     } | ||||
|      | ||||
|     static bbox(feature: any){ | ||||
| 
 | ||||
|     static bbox(feature: any) { | ||||
|         const [lon, lat, lon0, lat0] = turf.bbox(feature) | ||||
|         return { | ||||
|             "type": "Feature", | ||||
|  | @ -226,6 +226,11 @@ export class GeoOperations { | |||
| 
 | ||||
|     /** | ||||
|      * Generates the closest point on a way from a given point | ||||
|      *  | ||||
|      *  The properties object will contain three values: | ||||
|      // - `index`: closest point was found on nth line part,
 | ||||
|      // - `dist`: distance between pt and the closest point (in kilometer),
 | ||||
|      // `location`: distance along the line between start and the closest point.
 | ||||
|      * @param way The road on which you want to find a point | ||||
|      * @param point Point defined as [lon, lat] | ||||
|      */ | ||||
|  | @ -379,7 +384,7 @@ export class BBox { | |||
|     readonly maxLon: number; | ||||
|     readonly minLat: number; | ||||
|     readonly minLon: number; | ||||
|     static global: BBox = new BBox([[-180,-90],[180,90]]); | ||||
|     static global: BBox = new BBox([[-180, -90], [180, 90]]); | ||||
| 
 | ||||
|     constructor(coordinates) { | ||||
|         this.maxLat = Number.MIN_VALUE; | ||||
|  | @ -447,7 +452,7 @@ export class BBox { | |||
|     } | ||||
| 
 | ||||
|     static fromTile(z: number, x: number, y: number) { | ||||
|       return new BBox( Utils.tile_bounds_lon_lat(z, x, y)) | ||||
|         return new BBox(Utils.tile_bounds_lon_lat(z, x, y)) | ||||
|     } | ||||
| 
 | ||||
|     getEast() { | ||||
|  | @ -465,4 +470,20 @@ export class BBox { | |||
|     getSouth() { | ||||
|         return this.minLat | ||||
|     } | ||||
| 
 | ||||
|     pad(factor: number) : BBox { | ||||
|         const latDiff = this.maxLat - this.minLat | ||||
|         const lat = (this.maxLat + this.minLat) / 2 | ||||
|         const lonDiff = this.maxLon - this.minLon | ||||
|         const lon = (this.maxLon + this.minLon) / 2 | ||||
|         return new BBox([[ | ||||
|             lon - lonDiff * factor, | ||||
|             lat - latDiff * factor | ||||
|         ], [lon + lonDiff * factor, | ||||
|             lat + latDiff * factor]]) | ||||
|     } | ||||
| 
 | ||||
|     toLeaflet() { | ||||
|        return [[this.minLat, this.minLon], [this.maxLat, this.maxLon]] | ||||
|     } | ||||
| } | ||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue