forked from MapComplete/MapComplete
		
	
		
			
	
	
		
			243 lines
		
	
	
	
		
			7.9 KiB
		
	
	
	
		
			TypeScript
		
	
	
	
	
	
		
		
			
		
	
	
			243 lines
		
	
	
	
		
			7.9 KiB
		
	
	
	
		
			TypeScript
		
	
	
	
	
	
| 
								 | 
							
								import {describe} from 'mocha'
							 | 
						||
| 
								 | 
							
								import {expect} from 'chai'
							 | 
						||
| 
								 | 
							
								import {ExtraFuncParams, ExtraFunctions} from "../../Logic/ExtraFunctions";
							 | 
						||
| 
								 | 
							
								import {OsmFeature} from "../../Models/OsmFeature";
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								describe("OverlapFunc", () => {
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    it("should give doors on the edge", () => {
							 | 
						||
| 
								 | 
							
								        const door: OsmFeature = {
							 | 
						||
| 
								 | 
							
								            "type": "Feature",
							 | 
						||
| 
								 | 
							
								            "id": "node/9909268725",
							 | 
						||
| 
								 | 
							
								            "properties": {
							 | 
						||
| 
								 | 
							
								                "automatic_door": "no",
							 | 
						||
| 
								 | 
							
								                "door": "hinged",
							 | 
						||
| 
								 | 
							
								                "indoor": "door",
							 | 
						||
| 
								 | 
							
								                "kerb:height": "0 cm",
							 | 
						||
| 
								 | 
							
								                "width": "1",
							 | 
						||
| 
								 | 
							
								                "id": "node/9909268725",
							 | 
						||
| 
								 | 
							
								            },
							 | 
						||
| 
								 | 
							
								            "geometry": {
							 | 
						||
| 
								 | 
							
								                "type": "Point",
							 | 
						||
| 
								 | 
							
								                "coordinates": [
							 | 
						||
| 
								 | 
							
								                    4.3494436,
							 | 
						||
| 
								 | 
							
								                    50.8657928
							 | 
						||
| 
								 | 
							
								                ]
							 | 
						||
| 
								 | 
							
								            },
							 | 
						||
| 
								 | 
							
								        }
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								        const hermanTeirlinck = {
							 | 
						||
| 
								 | 
							
								            "type": "Feature",
							 | 
						||
| 
								 | 
							
								            "id": "way/444059131",
							 | 
						||
| 
								 | 
							
								            "properties": {
							 | 
						||
| 
								 | 
							
								                "timestamp": "2022-07-27T15:15:01Z",
							 | 
						||
| 
								 | 
							
								                "version": 27,
							 | 
						||
| 
								 | 
							
								                "changeset": 124146283,
							 | 
						||
| 
								 | 
							
								                "user": "Pieter Vander Vennet",
							 | 
						||
| 
								 | 
							
								                "uid": 3818858,
							 | 
						||
| 
								 | 
							
								                "addr:city": "Bruxelles - Brussel",
							 | 
						||
| 
								 | 
							
								                "addr:housenumber": "88",
							 | 
						||
| 
								 | 
							
								                "addr:postcode": "1000",
							 | 
						||
| 
								 | 
							
								                "addr:street": "Avenue du Port - Havenlaan",
							 | 
						||
| 
								 | 
							
								                "building": "government",
							 | 
						||
| 
								 | 
							
								                "building:levels": "5",
							 | 
						||
| 
								 | 
							
								                "name": "Herman Teirlinckgebouw",
							 | 
						||
| 
								 | 
							
								                "operator": "Vlaamse overheid",
							 | 
						||
| 
								 | 
							
								                "wikidata": "Q47457146",
							 | 
						||
| 
								 | 
							
								                "wikipedia": "nl:Herman Teirlinckgebouw",
							 | 
						||
| 
								 | 
							
								                "id": "way/444059131",
							 | 
						||
| 
								 | 
							
								                "_backend": "https://www.openstreetmap.org",
							 | 
						||
| 
								 | 
							
								                "_lat": "50.86622355",
							 | 
						||
| 
								 | 
							
								                "_lon": "4.3501212",
							 | 
						||
| 
								 | 
							
								                "_layer": "walls_and_buildings",
							 | 
						||
| 
								 | 
							
								                "_length": "380.5933566256343",
							 | 
						||
| 
								 | 
							
								                "_length:km": "0.4",
							 | 
						||
| 
								 | 
							
								                "_now:date": "2022-07-29",
							 | 
						||
| 
								 | 
							
								                "_now:datetime": "2022-07-29 14:19:25",
							 | 
						||
| 
								 | 
							
								                "_loaded:date": "2022-07-29",
							 | 
						||
| 
								 | 
							
								                "_loaded:datetime": "2022-07-29 14:19:25",
							 | 
						||
| 
								 | 
							
								                "_last_edit:contributor": "Pieter Vander Vennet",
							 | 
						||
| 
								 | 
							
								                "_last_edit:contributor:uid": 3818858,
							 | 
						||
| 
								 | 
							
								                "_last_edit:changeset": 124146283,
							 | 
						||
| 
								 | 
							
								                "_last_edit:timestamp": "2022-07-27T15:15:01Z",
							 | 
						||
| 
								 | 
							
								                "_version_number": 27,
							 | 
						||
| 
								 | 
							
								                "_geometry:type": "Polygon",
							 | 
						||
| 
								 | 
							
								                "_surface": "7461.252251355437",
							 | 
						||
| 
								 | 
							
								                "_surface:ha": "0.7",
							 | 
						||
| 
								 | 
							
								                "_country": "be"
							 | 
						||
| 
								 | 
							
								            },
							 | 
						||
| 
								 | 
							
								            "geometry": {
							 | 
						||
| 
								 | 
							
								                "type": "Polygon",
							 | 
						||
| 
								 | 
							
								                "coordinates": [
							 | 
						||
| 
								 | 
							
								                    [
							 | 
						||
| 
								 | 
							
								                        [
							 | 
						||
| 
								 | 
							
								                            4.3493369,
							 | 
						||
| 
								 | 
							
								                            50.8658274
							 | 
						||
| 
								 | 
							
								                        ],
							 | 
						||
| 
								 | 
							
								                        [
							 | 
						||
| 
								 | 
							
								                            4.3493393,
							 | 
						||
| 
								 | 
							
								                            50.8658266
							 | 
						||
| 
								 | 
							
								                        ],
							 | 
						||
| 
								 | 
							
								                        [
							 | 
						||
| 
								 | 
							
								                            4.3494436,
							 | 
						||
| 
								 | 
							
								                            50.8657928
							 | 
						||
| 
								 | 
							
								                        ],
							 | 
						||
| 
								 | 
							
								                        [
							 | 
						||
| 
								 | 
							
								                            4.3495272,
							 | 
						||
| 
								 | 
							
								                            50.8657658
							 | 
						||
| 
								 | 
							
								                        ],
							 | 
						||
| 
								 | 
							
								                        [
							 | 
						||
| 
								 | 
							
								                            4.349623,
							 | 
						||
| 
								 | 
							
								                            50.8657348
							 | 
						||
| 
								 | 
							
								                        ],
							 | 
						||
| 
								 | 
							
								                        [
							 | 
						||
| 
								 | 
							
								                            4.3497442,
							 | 
						||
| 
								 | 
							
								                            50.8656956
							 | 
						||
| 
								 | 
							
								                        ],
							 | 
						||
| 
								 | 
							
								                        [
							 | 
						||
| 
								 | 
							
								                            4.3498441,
							 | 
						||
| 
								 | 
							
								                            50.8656632
							 | 
						||
| 
								 | 
							
								                        ],
							 | 
						||
| 
								 | 
							
								                        [
							 | 
						||
| 
								 | 
							
								                            4.3500768,
							 | 
						||
| 
								 | 
							
								                            50.8655878
							 | 
						||
| 
								 | 
							
								                        ],
							 | 
						||
| 
								 | 
							
								                        [
							 | 
						||
| 
								 | 
							
								                            4.3501619,
							 | 
						||
| 
								 | 
							
								                            50.8656934
							 | 
						||
| 
								 | 
							
								                        ],
							 | 
						||
| 
								 | 
							
								                        [
							 | 
						||
| 
								 | 
							
								                            4.3502113,
							 | 
						||
| 
								 | 
							
								                            50.8657551
							 | 
						||
| 
								 | 
							
								                        ],
							 | 
						||
| 
								 | 
							
								                        [
							 | 
						||
| 
								 | 
							
								                            4.3502729,
							 | 
						||
| 
								 | 
							
								                            50.8658321
							 | 
						||
| 
								 | 
							
								                        ],
							 | 
						||
| 
								 | 
							
								                        [
							 | 
						||
| 
								 | 
							
								                            4.3503063,
							 | 
						||
| 
								 | 
							
								                            50.8658737
							 | 
						||
| 
								 | 
							
								                        ],
							 | 
						||
| 
								 | 
							
								                        [
							 | 
						||
| 
								 | 
							
								                            4.3503397,
							 | 
						||
| 
								 | 
							
								                            50.8659153
							 | 
						||
| 
								 | 
							
								                        ],
							 | 
						||
| 
								 | 
							
								                        [
							 | 
						||
| 
								 | 
							
								                            4.3504159,
							 | 
						||
| 
								 | 
							
								                            50.8660101
							 | 
						||
| 
								 | 
							
								                        ],
							 | 
						||
| 
								 | 
							
								                        [
							 | 
						||
| 
								 | 
							
								                            4.3504177,
							 | 
						||
| 
								 | 
							
								                            50.8660123
							 | 
						||
| 
								 | 
							
								                        ],
							 | 
						||
| 
								 | 
							
								                        [
							 | 
						||
| 
								 | 
							
								                            4.3504354,
							 | 
						||
| 
								 | 
							
								                            50.8660345
							 | 
						||
| 
								 | 
							
								                        ],
							 | 
						||
| 
								 | 
							
								                        [
							 | 
						||
| 
								 | 
							
								                            4.3505348,
							 | 
						||
| 
								 | 
							
								                            50.8661584
							 | 
						||
| 
								 | 
							
								                        ],
							 | 
						||
| 
								 | 
							
								                        [
							 | 
						||
| 
								 | 
							
								                            4.3504935,
							 | 
						||
| 
								 | 
							
								                            50.866172
							 | 
						||
| 
								 | 
							
								                        ],
							 | 
						||
| 
								 | 
							
								                        [
							 | 
						||
| 
								 | 
							
								                            4.3506286,
							 | 
						||
| 
								 | 
							
								                            50.8663405
							 | 
						||
| 
								 | 
							
								                        ],
							 | 
						||
| 
								 | 
							
								                        [
							 | 
						||
| 
								 | 
							
								                            4.3506701,
							 | 
						||
| 
								 | 
							
								                            50.8663271
							 | 
						||
| 
								 | 
							
								                        ],
							 | 
						||
| 
								 | 
							
								                        [
							 | 
						||
| 
								 | 
							
								                            4.3508563,
							 | 
						||
| 
								 | 
							
								                            50.8665592
							 | 
						||
| 
								 | 
							
								                        ],
							 | 
						||
| 
								 | 
							
								                        [
							 | 
						||
| 
								 | 
							
								                            4.3509055,
							 | 
						||
| 
								 | 
							
								                            50.8666206
							 | 
						||
| 
								 | 
							
								                        ],
							 | 
						||
| 
								 | 
							
								                        [
							 | 
						||
| 
								 | 
							
								                            4.3506278,
							 | 
						||
| 
								 | 
							
								                            50.8667104
							 | 
						||
| 
								 | 
							
								                        ],
							 | 
						||
| 
								 | 
							
								                        [
							 | 
						||
| 
								 | 
							
								                            4.3504502,
							 | 
						||
| 
								 | 
							
								                            50.8667675
							 | 
						||
| 
								 | 
							
								                        ],
							 | 
						||
| 
								 | 
							
								                        [
							 | 
						||
| 
								 | 
							
								                            4.3503132,
							 | 
						||
| 
								 | 
							
								                            50.8668115
							 | 
						||
| 
								 | 
							
								                        ],
							 | 
						||
| 
								 | 
							
								                        [
							 | 
						||
| 
								 | 
							
								                            4.3502162,
							 | 
						||
| 
								 | 
							
								                            50.8668427
							 | 
						||
| 
								 | 
							
								                        ],
							 | 
						||
| 
								 | 
							
								                        [
							 | 
						||
| 
								 | 
							
								                            4.3501645,
							 | 
						||
| 
								 | 
							
								                            50.8668593
							 | 
						||
| 
								 | 
							
								                        ],
							 | 
						||
| 
								 | 
							
								                        [
							 | 
						||
| 
								 | 
							
								                            4.3499296,
							 | 
						||
| 
								 | 
							
								                            50.8665664
							 | 
						||
| 
								 | 
							
								                        ],
							 | 
						||
| 
								 | 
							
								                        [
							 | 
						||
| 
								 | 
							
								                            4.3498821,
							 | 
						||
| 
								 | 
							
								                            50.8665073
							 | 
						||
| 
								 | 
							
								                        ],
							 | 
						||
| 
								 | 
							
								                        [
							 | 
						||
| 
								 | 
							
								                            4.3498383,
							 | 
						||
| 
								 | 
							
								                            50.8664527
							 | 
						||
| 
								 | 
							
								                        ],
							 | 
						||
| 
								 | 
							
								                        [
							 | 
						||
| 
								 | 
							
								                            4.3498126,
							 | 
						||
| 
								 | 
							
								                            50.8664207
							 | 
						||
| 
								 | 
							
								                        ],
							 | 
						||
| 
								 | 
							
								                        [
							 | 
						||
| 
								 | 
							
								                            4.3497459,
							 | 
						||
| 
								 | 
							
								                            50.8663376
							 | 
						||
| 
								 | 
							
								                        ],
							 | 
						||
| 
								 | 
							
								                        [
							 | 
						||
| 
								 | 
							
								                            4.3497227,
							 | 
						||
| 
								 | 
							
								                            50.8663086
							 | 
						||
| 
								 | 
							
								                        ],
							 | 
						||
| 
								 | 
							
								                        [
							 | 
						||
| 
								 | 
							
								                            4.3496517,
							 | 
						||
| 
								 | 
							
								                            50.8662201
							 | 
						||
| 
								 | 
							
								                        ],
							 | 
						||
| 
								 | 
							
								                        [
							 | 
						||
| 
								 | 
							
								                            4.3495158,
							 | 
						||
| 
								 | 
							
								                            50.8660507
							 | 
						||
| 
								 | 
							
								                        ],
							 | 
						||
| 
								 | 
							
								                        [
							 | 
						||
| 
								 | 
							
								                            4.3493369,
							 | 
						||
| 
								 | 
							
								                            50.8658274
							 | 
						||
| 
								 | 
							
								                        ]
							 | 
						||
| 
								 | 
							
								                    ]
							 | 
						||
| 
								 | 
							
								                ]
							 | 
						||
| 
								 | 
							
								            },
							 | 
						||
| 
								 | 
							
								            "bbox": {
							 | 
						||
| 
								 | 
							
								                "maxLat": 50.8668593,
							 | 
						||
| 
								 | 
							
								                "maxLon": 4.3509055,
							 | 
						||
| 
								 | 
							
								                "minLat": 50.8655878,
							 | 
						||
| 
								 | 
							
								                "minLon": 4.3493369
							 | 
						||
| 
								 | 
							
								            }
							 | 
						||
| 
								 | 
							
								        }
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								        const params: ExtraFuncParams = {
							 | 
						||
| 
								 | 
							
								            getFeatureById: id => undefined,
							 | 
						||
| 
								 | 
							
								            getFeaturesWithin: () => [[door]],
							 | 
						||
| 
								 | 
							
								            memberships: undefined
							 | 
						||
| 
								 | 
							
								        }
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								        ExtraFunctions.FullPatchFeature(params, hermanTeirlinck)
							 | 
						||
| 
								 | 
							
								        const overlap = (<any>hermanTeirlinck).overlapWith("*")
							 | 
						||
| 
								 | 
							
								        console.log(JSON.stringify(overlap))
							 | 
						||
| 
								 | 
							
								        expect(overlap[0].feat == door).true
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    })
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								})
							 |