243 lines
No EOL
7.9 KiB
TypeScript
243 lines
No EOL
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
|
|
|
|
})
|
|
|
|
}) |