forked from MapComplete/MapComplete
		
	
		
			
	
	
		
			186 lines
		
	
	
	
		
			7.5 KiB
		
	
	
	
		
			TypeScript
		
	
	
	
	
	
		
		
			
		
	
	
			186 lines
		
	
	
	
		
			7.5 KiB
		
	
	
	
		
			TypeScript
		
	
	
	
	
	
|  | import {describe} from 'mocha' | ||
|  | import {expect} from 'chai' | ||
|  | import * as turf from "@turf/turf"; | ||
|  | import {GeoOperations} from "../../Logic/GeoOperations"; | ||
|  | 
 | ||
|  | describe("GeoOperations", () => { | ||
|  |      | ||
|  |     describe("calculateOverlap", () => { | ||
|  |         it("should not give too much overlap (regression test)", () => { | ||
|  |             const polyGrb = { | ||
|  |                 "type": "Feature", | ||
|  |                 "properties": { | ||
|  |                     "osm_id": "25189153", | ||
|  |                     "size_grb_building": "217.14", | ||
|  |                     "addr:housenumber": "173", | ||
|  |                     "addr:street": "Kortrijksestraat", | ||
|  |                     "building": "house", | ||
|  |                     "source:geometry:entity": "Gbg", | ||
|  |                     "source:geometry:date": "2015/02/27", | ||
|  |                     "source:geometry:oidn": "1729460", | ||
|  |                     "source:geometry:uidn": "8713648", | ||
|  |                     "H_DTM_MIN": "17.28", | ||
|  |                     "H_DTM_GEM": "17.59", | ||
|  |                     "H_DSM_MAX": "29.04", | ||
|  |                     "H_DSM_P99": "28.63", | ||
|  |                     "HN_MAX": "11.45", | ||
|  |                     "HN_P99": "11.04", | ||
|  |                     "detection_method": "from existing OSM building source: house ,hits (3)", | ||
|  |                     "auto_building": "house", | ||
|  |                     "size_shared": "210.68", | ||
|  |                     "size_source_building": "212.63", | ||
|  |                     "id": "https://betadata.grbosm.site/grb?bbox=360935.6475626023,6592540.815539878,361088.52161917265,6592693.689596449/37", | ||
|  |                     "_lat": "50.83736194999996", | ||
|  |                     "_lon": "3.2432137000000116", | ||
|  |                     "_layer": "GRB", | ||
|  |                     "_length": "48.51529464293261", | ||
|  |                     "_length:km": "0.0", | ||
|  |                     "_now:date": "2021-12-05", | ||
|  |                     "_now:datetime": "2021-12-05 21:51:40", | ||
|  |                     "_loaded:date": "2021-12-05", | ||
|  |                     "_loaded:datetime": "2021-12-05 21:51:40" | ||
|  |                 }, | ||
|  |                 "geometry": { | ||
|  |                     "type": "Polygon", | ||
|  |                     "coordinates": [ | ||
|  |                         [ | ||
|  |                             [ | ||
|  |                                 3.2431059999999974, | ||
|  |                                 50.83730270000021 | ||
|  |                             ], | ||
|  |                             [ | ||
|  |                                 3.243174299999987, | ||
|  |                                 50.83728850000007 | ||
|  |                             ], | ||
|  |                             [ | ||
|  |                                 3.2432116000000173, | ||
|  |                                 50.83736910000003 | ||
|  |                             ], | ||
|  |                             [ | ||
|  |                                 3.2433214000000254, | ||
|  |                                 50.83740350000011 | ||
|  |                             ], | ||
|  |                             [ | ||
|  |                                 3.24329779999996, | ||
|  |                                 50.837435399999855 | ||
|  |                             ], | ||
|  |                             [ | ||
|  |                                 3.2431881000000504, | ||
|  |                                 50.83740090000025 | ||
|  |                             ], | ||
|  |                             [ | ||
|  |                                 3.243152699999997, | ||
|  |                                 50.83738980000017 | ||
|  |                             ], | ||
|  |                             [ | ||
|  |                                 3.2431059999999974, | ||
|  |                                 50.83730270000021 | ||
|  |                             ] | ||
|  |                         ] | ||
|  |                     ] | ||
|  |                 }, | ||
|  |                 "id": "https://betadata.grbosm.site/grb?bbox=360935.6475626023,6592540.815539878,361088.52161917265,6592693.689596449/37", | ||
|  |                 "_lon": 3.2432137000000116, | ||
|  |                 "_lat": 50.83736194999996, | ||
|  |                 "bbox": { | ||
|  |                     "maxLat": 50.837435399999855, | ||
|  |                     "maxLon": 3.2433214000000254, | ||
|  |                     "minLat": 50.83728850000007, | ||
|  |                     "minLon": 3.2431059999999974 | ||
|  |                 } | ||
|  |             } | ||
|  |             const polyHouse = { | ||
|  |                 "type": "Feature", | ||
|  |                 "id": "way/594963177", | ||
|  |                 "properties": { | ||
|  |                     "timestamp": "2021-12-05T04:04:55Z", | ||
|  |                     "version": 3, | ||
|  |                     "changeset": 114571409, | ||
|  |                     "user": "Pieter Vander Vennet", | ||
|  |                     "uid": 3818858, | ||
|  |                     "addr:housenumber": "171", | ||
|  |                     "addr:street": "Kortrijksestraat", | ||
|  |                     "building": "house", | ||
|  |                     "source:geometry:date": "2018-10-22", | ||
|  |                     "source:geometry:ref": "Gbg/5096537", | ||
|  |                     "_last_edit:contributor": "Pieter Vander Vennet", | ||
|  |                     "_last_edit:contributor:uid": 3818858, | ||
|  |                     "_last_edit:changeset": 114571409, | ||
|  |                     "_last_edit:timestamp": "2021-12-05T04:04:55Z", | ||
|  |                     "_version_number": 3, | ||
|  |                     "id": "way/594963177", | ||
|  |                     "_backend": "https://www.openstreetmap.org", | ||
|  |                     "_lat": "50.83736395", | ||
|  |                     "_lon": "3.2430937", | ||
|  |                     "_layer": "OSM-buildings", | ||
|  |                     "_length": "43.561938680928506", | ||
|  |                     "_length:km": "0.0", | ||
|  |                     "_now:date": "2021-12-05", | ||
|  |                     "_now:datetime": "2021-12-05 21:51:40", | ||
|  |                     "_loaded:date": "2021-12-05", | ||
|  |                     "_loaded:datetime": "2021-12-05 21:51:39", | ||
|  |                     "_surface": "93.32785810484549", | ||
|  |                     "_surface:ha": "0" | ||
|  |                 }, | ||
|  |                 "geometry": { | ||
|  |                     "type": "Polygon", | ||
|  |                     "coordinates": [ | ||
|  |                         [ | ||
|  |                             [ | ||
|  |                                 3.2429993, | ||
|  |                                 50.8373243 | ||
|  |                             ], | ||
|  |                             [ | ||
|  |                                 3.243106, | ||
|  |                                 50.8373027 | ||
|  |                             ], | ||
|  |                             [ | ||
|  |                                 3.2431527, | ||
|  |                                 50.8373898 | ||
|  |                             ], | ||
|  |                             [ | ||
|  |                                 3.2431881, | ||
|  |                                 50.8374009 | ||
|  |                             ], | ||
|  |                             [ | ||
|  |                                 3.2431691, | ||
|  |                                 50.8374252 | ||
|  |                             ], | ||
|  |                             [ | ||
|  |                                 3.2430936, | ||
|  |                                 50.837401 | ||
|  |                             ], | ||
|  |                             [ | ||
|  |                                 3.243046, | ||
|  |                                 50.8374112 | ||
|  |                             ], | ||
|  |                             [ | ||
|  |                                 3.2429993, | ||
|  |                                 50.8373243 | ||
|  |                             ] | ||
|  |                         ] | ||
|  |                     ] | ||
|  |                 }, | ||
|  |                 "_lon": 3.2430937, | ||
|  |                 "_lat": 50.83736395, | ||
|  |                 "bbox": { | ||
|  |                     "maxLat": 50.8374252, | ||
|  |                     "maxLon": 3.2431881, | ||
|  |                     "minLat": 50.8373027, | ||
|  |                     "minLon": 3.2429993 | ||
|  |                 } | ||
|  |             } | ||
|  | 
 | ||
|  |             const p0 = turf.polygon(polyGrb.geometry.coordinates) | ||
|  |             expect(p0).not.null | ||
|  |             const p1 = turf.polygon(polyHouse.geometry.coordinates) | ||
|  |             expect(p1).not.null | ||
|  | 
 | ||
|  | 
 | ||
|  |             const overlaps = GeoOperations.calculateOverlap(polyGrb, [polyHouse]) | ||
|  |             expect(overlaps).empty | ||
|  |             const overlapsRev = GeoOperations.calculateOverlap(polyHouse, [polyGrb]) | ||
|  |             expect(overlapsRev).empty | ||
|  |         }) | ||
|  |     }) | ||
|  | }) |