forked from MapComplete/MapComplete
		
	
		
			
				
	
	
		
			186 lines
		
	
	
		
			No EOL
		
	
	
		
			7.5 KiB
		
	
	
	
		
			TypeScript
		
	
	
	
	
	
			
		
		
	
	
			186 lines
		
	
	
		
			No EOL
		
	
	
		
			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
 | |
|         })
 | |
|     })
 | |
| }) |