mapcomplete/test/Logic/OSM/Actions/SplitAction.spec.ts

2824 lines
120 KiB
TypeScript

import { Utils } from "../../../../src/Utils"
import SplitAction from "../../../../src/Logic/Osm/Actions/SplitAction"
import { Changes } from "../../../../src/Logic/Osm/Changes"
import { describe, expect, it } from "vitest"
import { OsmConnection } from "../../../../src/Logic/Osm/OsmConnection"
import { ImmutableStore } from "../../../../src/Logic/UIEventSource"
describe("SplitAction", () => {
{
// Setup of download
Utils.injectJsonDownloadForTests(
"https://www.openstreetmap.org/api/0.6/way/941079939/full",
{
version: "0.6",
generator: "CGImap 0.8.5 (957273 spike-08.openstreetmap.org)",
copyright: "OpenStreetMap and contributors",
attribution: "http://www.openstreetmap.org/copyright",
license: "http://opendatacommons.org/licenses/odbl/1-0/",
elements: [
{
type: "node",
id: 6490126559,
lat: 51.2332219,
lon: 3.1429387,
timestamp: "2021-05-09T19:04:53Z",
version: 2,
changeset: 104407928,
user: "M!dgard",
uid: 763799,
tags: { highway: "street_lamp", power: "pole", support: "pole" },
},
{
type: "node",
id: 8715440363,
lat: 51.2324011,
lon: 3.1367377,
timestamp: "2021-05-09T19:04:53Z",
version: 1,
changeset: 104407928,
user: "M!dgard",
uid: 763799,
tags: { fixme: "continue" },
},
{
type: "node",
id: 8715440364,
lat: 51.232455,
lon: 3.1368759,
timestamp: "2021-05-09T19:04:53Z",
version: 1,
changeset: 104407928,
user: "M!dgard",
uid: 763799,
tags: { power: "pole" },
},
{
type: "node",
id: 8715440365,
lat: 51.2325883,
lon: 3.1373986,
timestamp: "2021-05-09T19:04:53Z",
version: 1,
changeset: 104407928,
user: "M!dgard",
uid: 763799,
tags: { power: "pole" },
},
{
type: "node",
id: 8715440366,
lat: 51.232688,
lon: 3.1379837,
timestamp: "2021-05-09T19:04:53Z",
version: 1,
changeset: 104407928,
user: "M!dgard",
uid: 763799,
tags: { power: "pole" },
},
{
type: "node",
id: 8715440367,
lat: 51.2327354,
lon: 3.1385649,
timestamp: "2021-05-09T19:04:53Z",
version: 1,
changeset: 104407928,
user: "M!dgard",
uid: 763799,
tags: { power: "pole" },
},
{
type: "node",
id: 8715440368,
lat: 51.2327042,
lon: 3.1392187,
timestamp: "2021-05-09T19:04:53Z",
version: 1,
changeset: 104407928,
user: "M!dgard",
uid: 763799,
tags: { highway: "street_lamp", power: "pole", support: "pole" },
},
{
type: "node",
id: 8715440369,
lat: 51.2323902,
lon: 3.139353,
timestamp: "2021-05-09T19:04:53Z",
version: 1,
changeset: 104407928,
user: "M!dgard",
uid: 763799,
tags: { power: "pole" },
},
{
type: "node",
id: 8715440370,
lat: 51.2321027,
lon: 3.139601,
timestamp: "2021-05-09T19:04:53Z",
version: 1,
changeset: 104407928,
user: "M!dgard",
uid: 763799,
tags: {
highway: "street_lamp",
power: "pole",
ref: "242",
support: "pole",
},
},
{
type: "node",
id: 8715440371,
lat: 51.2322614,
lon: 3.1401564,
timestamp: "2021-05-09T19:04:53Z",
version: 1,
changeset: 104407928,
user: "M!dgard",
uid: 763799,
tags: { power: "pole" },
},
{
type: "node",
id: 8715440372,
lat: 51.232378,
lon: 3.1407909,
timestamp: "2021-05-09T19:04:53Z",
version: 1,
changeset: 104407928,
user: "M!dgard",
uid: 763799,
tags: { power: "pole" },
},
{
type: "node",
id: 8715440373,
lat: 51.2325532,
lon: 3.1413659,
timestamp: "2021-05-09T19:04:53Z",
version: 1,
changeset: 104407928,
user: "M!dgard",
uid: 763799,
tags: { power: "pole" },
},
{
type: "node",
id: 8715440374,
lat: 51.2327611,
lon: 3.1418877,
timestamp: "2021-05-09T19:04:53Z",
version: 1,
changeset: 104407928,
user: "M!dgard",
uid: 763799,
tags: { power: "pole" },
},
{
type: "node",
id: 8715440375,
lat: 51.2330037,
lon: 3.142418,
timestamp: "2021-05-09T19:04:53Z",
version: 1,
changeset: 104407928,
user: "M!dgard",
uid: 763799,
tags: { power: "pole" },
},
{
type: "way",
id: 941079939,
timestamp: "2021-05-09T19:04:53Z",
version: 1,
changeset: 104407928,
user: "M!dgard",
uid: 763799,
nodes: [
6490126559, 8715440375, 8715440374, 8715440373, 8715440372, 8715440371,
8715440370, 8715440369, 8715440368, 8715440367, 8715440366, 8715440365,
8715440364, 8715440363,
],
tags: { power: "minor_line" },
},
],
}
)
Utils.injectJsonDownloadForTests(
"https://www.openstreetmap.org/api/0.6/way/941079939/relations",
{
version: "0.6",
generator: "CGImap 0.8.5 (2419440 spike-07.openstreetmap.org)",
copyright: "OpenStreetMap and contributors",
attribution: "http://www.openstreetmap.org/copyright",
license: "http://opendatacommons.org/licenses/odbl/1-0/",
elements: [],
}
)
Utils.injectJsonDownloadForTests(
"https://www.openstreetmap.org/api/0.6/way/295132739/full",
{
version: "0.6",
generator: "CGImap 0.8.5 (3138407 spike-07.openstreetmap.org)",
copyright: "OpenStreetMap and contributors",
attribution: "http://www.openstreetmap.org/copyright",
license: "http://opendatacommons.org/licenses/odbl/1-0/",
elements: [
{
type: "node",
id: 170497153,
lat: 51.1825167,
lon: 3.2487885,
timestamp: "2011-11-18T16:33:43Z",
version: 5,
changeset: 9865255,
user: "TripleBee",
uid: 497177,
},
{
type: "node",
id: 170497155,
lat: 51.1817632,
lon: 3.2472706,
timestamp: "2011-11-18T16:33:43Z",
version: 5,
changeset: 9865255,
user: "TripleBee",
uid: 497177,
},
{
type: "node",
id: 170497157,
lat: 51.1815203,
lon: 3.2465569,
timestamp: "2011-11-18T16:33:43Z",
version: 5,
changeset: 9865255,
user: "TripleBee",
uid: 497177,
},
{
type: "node",
id: 170497158,
lat: 51.1812261,
lon: 3.2454261,
timestamp: "2011-11-18T16:33:43Z",
version: 5,
changeset: 9865255,
user: "TripleBee",
uid: 497177,
},
{
type: "node",
id: 170497160,
lat: 51.1810957,
lon: 3.244303,
timestamp: "2011-11-18T16:33:43Z",
version: 5,
changeset: 9865255,
user: "TripleBee",
uid: 497177,
},
{
type: "node",
id: 1507524573,
lat: 51.1810778,
lon: 3.2437148,
timestamp: "2011-11-18T16:33:36Z",
version: 1,
changeset: 9865255,
user: "TripleBee",
uid: 497177,
},
{
type: "node",
id: 1507524582,
lat: 51.182113,
lon: 3.2481284,
timestamp: "2011-11-18T16:33:37Z",
version: 1,
changeset: 9865255,
user: "TripleBee",
uid: 497177,
},
{
type: "node",
id: 1507524610,
lat: 51.1811645,
lon: 3.2450828,
timestamp: "2011-11-18T16:33:38Z",
version: 1,
changeset: 9865255,
user: "TripleBee",
uid: 497177,
},
{
type: "node",
id: 1575932830,
lat: 51.1811153,
lon: 3.2431503,
timestamp: "2019-05-04T22:44:13Z",
version: 2,
changeset: 69891295,
user: "Pieter Vander Vennet",
uid: 3818858,
},
{
type: "node",
id: 3208166178,
lat: 51.1810837,
lon: 3.243909,
timestamp: "2014-11-27T20:23:10Z",
version: 1,
changeset: 27076816,
user: "JanFi",
uid: 672253,
},
{
type: "node",
id: 3208166179,
lat: 51.1812062,
lon: 3.2453151,
timestamp: "2014-11-27T20:23:10Z",
version: 1,
changeset: 27076816,
user: "JanFi",
uid: 672253,
},
{
type: "node",
id: 4524321710,
lat: 51.1820656,
lon: 3.2480253,
timestamp: "2017-12-09T18:56:37Z",
version: 2,
changeset: 54493928,
user: "CacherB",
uid: 1999108,
},
{
type: "node",
id: 5273988967,
lat: 51.182659,
lon: 3.249004,
timestamp: "2017-12-09T18:40:21Z",
version: 1,
changeset: 54493533,
user: "CacherB",
uid: 1999108,
},
{
type: "node",
id: 6448669326,
lat: 51.1811346,
lon: 3.242891,
timestamp: "2019-05-04T22:44:12Z",
version: 1,
changeset: 69891295,
user: "Pieter Vander Vennet",
uid: 3818858,
tags: { barrier: "bollard" },
},
{
type: "way",
id: 295132739,
timestamp: "2021-07-29T21:14:53Z",
version: 17,
changeset: 108847202,
user: "kaart_fietser",
uid: 11022240,
nodes: [
5273988967, 170497153, 1507524582, 4524321710, 170497155, 170497157,
170497158, 3208166179, 1507524610, 170497160, 3208166178, 1507524573,
1575932830, 6448669326,
],
tags: {
highway: "cycleway",
name: "Abdijenroute",
railway: "abandoned",
surface: "compacted",
},
},
],
}
)
Utils.injectJsonDownloadForTests(
"https://www.openstreetmap.org/api/0.6/way/295132739/relations",
// Mimick that there are no relations relation is missing
{
version: "0.6",
generator: "CGImap 0.8.5 (2935793 spike-07.openstreetmap.org)",
copyright: "OpenStreetMap and contributors",
attribution: "http://www.openstreetmap.org/copyright",
license: "http://opendatacommons.org/licenses/odbl/1-0/",
elements: [],
}
)
Utils.injectJsonDownloadForTests(
"https://www.openstreetmap.org/api/0.6/way/61435323/full",
{
version: "0.6",
generator: "CGImap 0.8.5 (53092 spike-08.openstreetmap.org)",
copyright: "OpenStreetMap and contributors",
attribution: "http://www.openstreetmap.org/copyright",
license: "http://opendatacommons.org/licenses/odbl/1-0/",
elements: [
{
type: "node",
id: 766990983,
lat: 51.2170219,
lon: 3.2022337,
timestamp: "2021-04-26T15:48:22Z",
version: 6,
changeset: 103647857,
user: "M!dgard",
uid: 763799,
},
{
type: "node",
id: 766990985,
lat: 51.2169574,
lon: 3.2017548,
timestamp: "2016-07-05T22:41:12Z",
version: 6,
changeset: 40511250,
user: "M!dgard",
uid: 763799,
},
{
type: "node",
id: 8669018379,
lat: 51.2169592,
lon: 3.2017683,
timestamp: "2021-04-26T15:48:22Z",
version: 1,
changeset: 103647857,
user: "M!dgard",
uid: 763799,
},
{
type: "way",
id: 61435323,
timestamp: "2021-08-21T12:24:13Z",
version: 7,
changeset: 110026637,
user: "Thibault Rommel",
uid: 5846458,
nodes: [766990983, 8669018379, 766990985],
tags: {
bicycle: "yes",
bridge: "yes",
cycleway: "shared_lane",
highway: "unclassified",
layer: "1",
maxspeed: "50",
name: "Houtkaai",
surface: "asphalt",
"zone:traffic": "BE-VLG:urban",
},
},
],
}
)
Utils.injectJsonDownloadForTests(
"https://www.openstreetmap.org/api/0.6/way/61435323/relations",
{
version: "0.6",
generator: "CGImap 0.8.5 (3622541 spike-06.openstreetmap.org)",
copyright: "OpenStreetMap and contributors",
attribution: "http://www.openstreetmap.org/copyright",
license: "http://opendatacommons.org/licenses/odbl/1-0/",
elements: [
{
type: "relation",
id: 1723870,
timestamp: "2021-09-18T06:29:31Z",
version: 183,
changeset: 111362343,
user: "emvee",
uid: 5211,
members: [
{ type: "way", ref: 261428947, role: "" },
{
type: "way",
ref: 162774622,
role: "",
},
{ type: "way", ref: 317060244, role: "" },
{
type: "way",
ref: 81155378,
role: "",
},
{ type: "way", ref: 99749583, role: "" },
{
type: "way",
ref: 131332113,
role: "",
},
{ type: "way", ref: 949518831, role: "" },
{
type: "way",
ref: 99749584,
role: "",
},
{ type: "way", ref: 129133519, role: "" },
{
type: "way",
ref: 73241312,
role: "",
},
{ type: "way", ref: 785514256, role: "" },
{
type: "way",
ref: 58509643,
role: "",
},
{ type: "way", ref: 73241332, role: "" },
{
type: "way",
ref: 58509653,
role: "",
},
{ type: "way", ref: 100044097, role: "" },
{
type: "way",
ref: 946999067,
role: "",
},
{ type: "way", ref: 73241327, role: "" },
{
type: "way",
ref: 58509617,
role: "",
},
{ type: "way", ref: 58509627, role: "" },
{
type: "way",
ref: 69990655,
role: "",
},
{ type: "way", ref: 73241311, role: "" },
{
type: "way",
ref: 123142336,
role: "",
},
{ type: "way", ref: 249671053, role: "" },
{
type: "way",
ref: 73241324,
role: "",
},
{ type: "way", ref: 66706953, role: "" },
{
type: "way",
ref: 112679357,
role: "",
},
{ type: "way", ref: 112679358, role: "" },
{
type: "way",
ref: 53105113,
role: "",
},
{ type: "way", ref: 66706952, role: "" },
{
type: "way",
ref: 64083661,
role: "",
},
{ type: "way", ref: 53105162, role: "" },
{
type: "way",
ref: 249671070,
role: "",
},
{ type: "way", ref: 249671064, role: "" },
{
type: "way",
ref: 101498587,
role: "",
},
{ type: "way", ref: 69001236, role: "" },
{
type: "way",
ref: 101498585,
role: "",
},
{ type: "way", ref: 70909444, role: "" },
{
type: "way",
ref: 73241314,
role: "",
},
{ type: "way", ref: 69001235, role: "" },
{
type: "way",
ref: 113150200,
role: "",
},
{ type: "way", ref: 137305843, role: "" },
{
type: "way",
ref: 936827687,
role: "",
},
{ type: "way", ref: 936827688, role: "" },
{
type: "way",
ref: 112952373,
role: "",
},
{ type: "way", ref: 930798379, role: "" },
{
type: "way",
ref: 930798378,
role: "",
},
{ type: "way", ref: 112951439, role: "" },
{
type: "way",
ref: 445541591,
role: "",
},
{ type: "way", ref: 103843896, role: "" },
{
type: "way",
ref: 23734118,
role: "",
},
{ type: "way", ref: 103840557, role: "" },
{
type: "way",
ref: 433852210,
role: "",
},
{ type: "way", ref: 313604670, role: "" },
{
type: "way",
ref: 103839402,
role: "",
},
{ type: "way", ref: 23736061, role: "" },
{
type: "way",
ref: 73241328,
role: "",
},
{ type: "way", ref: 295392689, role: "" },
{
type: "way",
ref: 297168171,
role: "",
},
{ type: "way", ref: 297168170, role: "" },
{
type: "way",
ref: 433852205,
role: "",
},
{ type: "way", ref: 295392695, role: "" },
{
type: "way",
ref: 663268954,
role: "",
},
{ type: "way", ref: 663267598, role: "" },
{
type: "way",
ref: 292478843,
role: "",
},
{ type: "way", ref: 981853853, role: "" },
{
type: "way",
ref: 663270140,
role: "",
},
{ type: "way", ref: 981853854, role: "" },
{
type: "way",
ref: 295392703,
role: "",
},
{ type: "way", ref: 663304916, role: "" },
{
type: "way",
ref: 297169116,
role: "",
},
{ type: "way", ref: 295400810, role: "" },
{
type: "way",
ref: 981853855,
role: "",
},
{ type: "way", ref: 663304806, role: "" },
{
type: "way",
ref: 516452870,
role: "",
},
{ type: "way", ref: 66459239, role: "" },
{
type: "way",
ref: 791430504,
role: "",
},
{ type: "way", ref: 178926037, role: "" },
{
type: "way",
ref: 864799431,
role: "",
},
{ type: "way", ref: 178926107, role: "" },
{
type: "way",
ref: 663320459,
role: "",
},
{ type: "way", ref: 62033993, role: "" },
{
type: "way",
ref: 62283023,
role: "",
},
{ type: "way", ref: 62283057, role: "" },
{
type: "way",
ref: 62283032,
role: "",
},
{ type: "way", ref: 490551085, role: "" },
{
type: "way",
ref: 435318979,
role: "",
},
{ type: "way", ref: 371750677, role: "" },
{
type: "way",
ref: 371750670,
role: "",
},
{ type: "way", ref: 371750673, role: "" },
{
type: "way",
ref: 371750675,
role: "",
},
{ type: "way", ref: 459885691, role: "" },
{
type: "way",
ref: 371750669,
role: "",
},
{ type: "way", ref: 371750668, role: "" },
{
type: "way",
ref: 371750667,
role: "",
},
{ type: "way", ref: 428848639, role: "" },
{
type: "way",
ref: 371750666,
role: "",
},
{ type: "way", ref: 371750665, role: "" },
{
type: "way",
ref: 825496473,
role: "",
},
{ type: "way", ref: 371750664, role: "" },
{
type: "way",
ref: 371750662,
role: "",
},
{ type: "way", ref: 371750663, role: "" },
{
type: "way",
ref: 371750660,
role: "",
},
{ type: "way", ref: 371750658, role: "" },
{
type: "way",
ref: 40507374,
role: "",
},
{ type: "way", ref: 165878356, role: "" },
{
type: "way",
ref: 165878355,
role: "",
},
{ type: "way", ref: 8494219, role: "" },
{
type: "way",
ref: 5023947,
role: "",
},
{ type: "way", ref: 5023939, role: "" },
{
type: "way",
ref: 26718843,
role: "",
},
{ type: "way", ref: 79437029, role: "" },
{
type: "way",
ref: 87522151,
role: "",
},
{ type: "way", ref: 26718848, role: "" },
{
type: "way",
ref: 233169831,
role: "",
},
{ type: "way", ref: 85934460, role: "" },
{
type: "way",
ref: 145892210,
role: "",
},
{ type: "way", ref: 79434764, role: "" },
{
type: "way",
ref: 127079185,
role: "",
},
{ type: "way", ref: 67794715, role: "" },
{
type: "way",
ref: 85934250,
role: "",
},
{ type: "way", ref: 421566302, role: "" },
{
type: "way",
ref: 123445537,
role: "",
},
{ type: "way", ref: 308077683, role: "" },
{
type: "way",
ref: 308077684,
role: "",
},
{ type: "way", ref: 972955357, role: "" },
{
type: "way",
ref: 308077682,
role: "",
},
{ type: "way", ref: 659880052, role: "" },
{
type: "way",
ref: 308077681,
role: "",
},
{ type: "way", ref: 66364130, role: "" },
{
type: "way",
ref: 51086959,
role: "",
},
{ type: "way", ref: 51086961, role: "" },
{
type: "way",
ref: 102154586,
role: "",
},
{ type: "way", ref: 102154589, role: "" },
{
type: "way",
ref: 703008376,
role: "",
},
{ type: "way", ref: 703008375, role: "" },
{
type: "way",
ref: 54435150,
role: "",
},
{ type: "way", ref: 115913100, role: "" },
{
type: "way",
ref: 79433785,
role: "",
},
{ type: "way", ref: 51204355, role: "" },
{
type: "way",
ref: 422395066,
role: "",
},
{ type: "way", ref: 116628138, role: "" },
{
type: "way",
ref: 690189323,
role: "",
},
{ type: "way", ref: 132068368, role: "" },
{
type: "way",
ref: 690220771,
role: "",
},
{ type: "way", ref: 690220772, role: "" },
{
type: "way",
ref: 690226744,
role: "",
},
{ type: "way", ref: 690226745, role: "" },
{
type: "way",
ref: 60253953,
role: "",
},
{ type: "way", ref: 690195774, role: "" },
{
type: "way",
ref: 688104939,
role: "",
},
{ type: "way", ref: 422395064, role: "forward" },
{
type: "way",
ref: 422309497,
role: "forward",
},
{ type: "way", ref: 25677204, role: "forward" },
{
type: "way",
ref: 51570941,
role: "",
},
{ type: "way", ref: 807329786, role: "" },
{
type: "way",
ref: 165500495,
role: "",
},
{ type: "way", ref: 689494106, role: "" },
{
type: "way",
ref: 131476435,
role: "",
},
{ type: "way", ref: 689493508, role: "" },
{
type: "way",
ref: 12126873,
role: "",
},
{ type: "way", ref: 32789519, role: "" },
{
type: "way",
ref: 27288122,
role: "",
},
{ type: "way", ref: 116717060, role: "" },
{
type: "way",
ref: 176380249,
role: "",
},
{ type: "way", ref: 116717052, role: "" },
{
type: "way",
ref: 176380250,
role: "",
},
{ type: "way", ref: 421998791, role: "" },
{
type: "way",
ref: 34562745,
role: "",
},
{ type: "way", ref: 130473931, role: "" },
{
type: "way",
ref: 136487196,
role: "",
},
{ type: "way", ref: 23792223, role: "" },
{
type: "way",
ref: 23775021,
role: "",
},
{ type: "way", ref: 560506339, role: "" },
{
type: "way",
ref: 337945886,
role: "",
},
{ type: "way", ref: 61435332, role: "" },
{
type: "way",
ref: 61435323,
role: "",
},
{ type: "way", ref: 509668834, role: "" },
{
type: "way",
ref: 130473917,
role: "",
},
{ type: "way", ref: 369929894, role: "" },
{
type: "way",
ref: 805247467,
role: "forward",
},
{ type: "way", ref: 840210016, role: "forward" },
{
type: "way",
ref: 539026983,
role: "forward",
},
{ type: "way", ref: 539037793, role: "forward" },
{
type: "way",
ref: 244428576,
role: "forward",
},
{ type: "way", ref: 243333119, role: "forward" },
{
type: "way",
ref: 243333108,
role: "forward",
},
{ type: "way", ref: 243333106, role: "forward" },
{
type: "way",
ref: 243333110,
role: "forward",
},
{ type: "way", ref: 230511503, role: "forward" },
{
type: "way",
ref: 510520445,
role: "forward",
},
{ type: "way", ref: 688103605, role: "forward" },
{
type: "way",
ref: 668577053,
role: "forward",
},
{ type: "way", ref: 4332489, role: "forward" },
{
type: "way",
ref: 668577051,
role: "forward",
},
{ type: "way", ref: 185476761, role: "forward" },
{
type: "way",
ref: 100774483,
role: "forward",
},
{ type: "way", ref: 668672434, role: "backward" },
{
type: "way",
ref: 488558133,
role: "backward",
},
{ type: "way", ref: 13943237, role: "forward" },
{
type: "way",
ref: 840241791,
role: "forward",
},
{ type: "way", ref: 805247468, role: "forward" },
{
type: "way",
ref: 539040946,
role: "forward",
},
{ type: "way", ref: 539026103, role: "forward" },
{
type: "way",
ref: 539037781,
role: "forward",
},
{ type: "way", ref: 28942112, role: "forward" },
{
type: "way",
ref: 699841535,
role: "forward",
},
{ type: "way", ref: 635374201, role: "forward" },
{
type: "way",
ref: 28942118,
role: "forward",
},
{ type: "way", ref: 185476755, role: "forward" },
{
type: "way",
ref: 78794903,
role: "forward",
},
{ type: "way", ref: 688103599, role: "forward" },
{
type: "way",
ref: 688103600,
role: "backward",
},
{ type: "way", ref: 32699077, role: "backward" },
{
type: "way",
ref: 249092420,
role: "backward",
},
{ type: "way", ref: 540048295, role: "" },
{
type: "way",
ref: 13942938,
role: "",
},
{ type: "way", ref: 827705395, role: "" },
{
type: "way",
ref: 72492953,
role: "",
},
{ type: "way", ref: 61435342, role: "" },
{
type: "way",
ref: 95106180,
role: "",
},
{ type: "way", ref: 182691326, role: "" },
{
type: "way",
ref: 180915274,
role: "",
},
{ type: "way", ref: 61435340, role: "" },
{
type: "way",
ref: 95506626,
role: "",
},
{ type: "way", ref: 183330864, role: "" },
{
type: "way",
ref: 318631002,
role: "",
},
{ type: "way", ref: 4332470, role: "" },
{
type: "way",
ref: 318631014,
role: "",
},
{ type: "way", ref: 337969633, role: "" },
{
type: "way",
ref: 668566903,
role: "",
},
{ type: "way", ref: 668566904, role: "" },
{
type: "way",
ref: 248228679,
role: "",
},
{ type: "way", ref: 419296358, role: "" },
{
type: "way",
ref: 601005356,
role: "",
},
{ type: "way", ref: 497802656, role: "" },
{
type: "way",
ref: 948484806,
role: "",
},
{ type: "way", ref: 756223825, role: "" },
{
type: "way",
ref: 23206884,
role: "",
},
{ type: "way", ref: 157436856, role: "" },
{
type: "way",
ref: 829398288,
role: "",
},
{ type: "way", ref: 829398289, role: "" },
{
type: "way",
ref: 674490354,
role: "",
},
{ type: "way", ref: 131704173, role: "" },
{
type: "way",
ref: 120976014,
role: "",
},
{ type: "way", ref: 38864144, role: "" },
{
type: "way",
ref: 38864143,
role: "",
},
{ type: "way", ref: 32147475, role: "" },
{
type: "way",
ref: 962256846,
role: "",
},
{ type: "way", ref: 32147479, role: "" },
{
type: "way",
ref: 32147481,
role: "",
},
{ type: "way", ref: 49486734, role: "" },
{
type: "way",
ref: 829394351,
role: "",
},
{ type: "way", ref: 829394349, role: "" },
{
type: "way",
ref: 235193261,
role: "",
},
{ type: "way", ref: 130495866, role: "" },
{
type: "way",
ref: 978366962,
role: "",
},
{ type: "way", ref: 39588752, role: "" },
{
type: "way",
ref: 436528651,
role: "",
},
{ type: "way", ref: 27370335, role: "" },
{
type: "way",
ref: 157558803,
role: "",
},
{ type: "way", ref: 39590466, role: "" },
{
type: "way",
ref: 157558804,
role: "",
},
{ type: "way", ref: 27370165, role: "" },
{ type: "way", ref: 970841665, role: "" },
],
tags: {
name: "Euroroute R1 - part Belgium",
"name:de": "Europaradweg R1 - Abschnitt Belgien",
"name:nl": "Euroroute R1 - deel België",
network: "icn",
ref: "R1",
route: "bicycle",
type: "route",
},
},
{
type: "relation",
id: 1757007,
timestamp: "2020-10-13T01:31:44Z",
version: 10,
changeset: 92380204,
user: "Diabolix",
uid: 2123963,
members: [
{ type: "way", ref: 509668834, role: "" },
{
type: "way",
ref: 61435323,
role: "",
},
{ type: "way", ref: 61435332, role: "" },
{
type: "way",
ref: 337945886,
role: "",
},
{ type: "way", ref: 560506339, role: "" },
{
type: "way",
ref: 23775021,
role: "",
},
{ type: "way", ref: 23792223, role: "" },
],
tags: {
network: "rcn",
"network:type": "node_network",
ref: "4-36",
route: "bicycle",
type: "route",
},
},
{
type: "relation",
id: 5150189,
timestamp: "2021-09-09T20:15:58Z",
version: 44,
changeset: 110993632,
user: "JosV",
uid: 170722,
members: [
{ type: "way", ref: 13943237, role: "" },
{
type: "way",
ref: 488558133,
role: "",
},
{ type: "way", ref: 369929894, role: "" },
{
type: "way",
ref: 130473917,
role: "",
},
{ type: "way", ref: 509668834, role: "" },
{
type: "way",
ref: 61435323,
role: "",
},
{ type: "way", ref: 61435332, role: "" },
{
type: "way",
ref: 337945886,
role: "",
},
{ type: "way", ref: 560506339, role: "" },
{
type: "way",
ref: 23775021,
role: "",
},
{ type: "way", ref: 23792223, role: "" },
{
type: "way",
ref: 136487196,
role: "",
},
{ type: "way", ref: 130473931, role: "" },
{
type: "way",
ref: 34562745,
role: "",
},
{ type: "way", ref: 421998791, role: "" },
{
type: "way",
ref: 126996864,
role: "",
},
{ type: "way", ref: 126996861, role: "" },
{
type: "way",
ref: 170989337,
role: "",
},
{ type: "way", ref: 72482534, role: "" },
{
type: "way",
ref: 58913500,
role: "",
},
{ type: "way", ref: 72482539, role: "" },
{
type: "way",
ref: 246969243,
role: "",
},
{ type: "way", ref: 153150902, role: "" },
{
type: "way",
ref: 116748588,
role: "",
},
{ type: "way", ref: 72482544, role: "" },
{
type: "way",
ref: 72482542,
role: "",
},
{ type: "way", ref: 337013552, role: "" },
{
type: "way",
ref: 132790401,
role: "",
},
{ type: "way", ref: 105166767, role: "" },
{
type: "way",
ref: 720356345,
role: "",
},
{ type: "way", ref: 197829999, role: "" },
{
type: "way",
ref: 105166552,
role: "",
},
{ type: "way", ref: 61979075, role: "" },
{
type: "way",
ref: 197830184,
role: "",
},
{ type: "way", ref: 61979070, role: "" },
{
type: "way",
ref: 948826013,
role: "",
},
{ type: "way", ref: 197830182, role: "" },
{
type: "way",
ref: 672535497,
role: "",
},
{ type: "way", ref: 672535498, role: "" },
{
type: "way",
ref: 948826015,
role: "",
},
{ type: "way", ref: 11378674, role: "" },
{
type: "way",
ref: 672535496,
role: "",
},
{ type: "way", ref: 70023921, role: "" },
{
type: "way",
ref: 948826017,
role: "",
},
{ type: "way", ref: 197830260, role: "" },
{
type: "way",
ref: 152210843,
role: "",
},
{ type: "way", ref: 33748055, role: "" },
{
type: "way",
ref: 344701437,
role: "",
},
{ type: "way", ref: 422150672, role: "" },
{
type: "way",
ref: 156228338,
role: "",
},
{ type: "way", ref: 422150674, role: "" },
{
type: "way",
ref: 223674432,
role: "",
},
{ type: "way", ref: 223674437, role: "" },
{
type: "way",
ref: 156228327,
role: "",
},
{ type: "way", ref: 223674372, role: "" },
{
type: "way",
ref: 592937889,
role: "",
},
{ type: "way", ref: 592937890, role: "" },
{
type: "way",
ref: 422099666,
role: "",
},
{ type: "way", ref: 422100304, role: "" },
{
type: "way",
ref: 948826022,
role: "",
},
{ type: "way", ref: 15092930, role: "" },
{
type: "way",
ref: 948826024,
role: "",
},
{ type: "way", ref: 105182226, role: "" },
{
type: "way",
ref: 133606215,
role: "",
},
{ type: "way", ref: 533395656, role: "" },
{
type: "way",
ref: 187115987,
role: "",
},
{ type: "way", ref: 105182230, role: "" },
{
type: "way",
ref: 105182232,
role: "",
},
{ type: "way", ref: 196011634, role: "" },
{
type: "way",
ref: 153273480,
role: "",
},
{ type: "way", ref: 153273481, role: "" },
{
type: "way",
ref: 881767783,
role: "",
},
{ type: "way", ref: 153273479, role: "" },
{
type: "way",
ref: 13462242,
role: "",
},
{ type: "way", ref: 498093425, role: "" },
{
type: "way",
ref: 70009137,
role: "",
},
{ type: "way", ref: 12086805, role: "" },
{
type: "way",
ref: 52523332,
role: "",
},
{ type: "way", ref: 70009138, role: "" },
{
type: "way",
ref: 592937884,
role: "",
},
{ type: "way", ref: 15071942, role: "" },
{
type: "way",
ref: 180798233,
role: "",
},
{ type: "way", ref: 70010670, role: "" },
{
type: "way",
ref: 15802818,
role: "",
},
{ type: "way", ref: 15802809, role: "" },
{
type: "way",
ref: 70011254,
role: "",
},
{ type: "way", ref: 671368756, role: "" },
{
type: "way",
ref: 840241791,
role: "",
},
{ type: "way", ref: 369929367, role: "" },
{
type: "way",
ref: 539038988,
role: "",
},
{ type: "way", ref: 80130513, role: "" },
{
type: "way",
ref: 540214122,
role: "",
},
{ type: "way", ref: 765795083, role: "" },
{
type: "way",
ref: 13943005,
role: "",
},
{ type: "way", ref: 72492950, role: "" },
{
type: "way",
ref: 183330864,
role: "",
},
{ type: "way", ref: 318631002, role: "" },
{
type: "way",
ref: 4332470,
role: "",
},
{ type: "way", ref: 318631014, role: "" },
{
type: "way",
ref: 337969633,
role: "",
},
{ type: "way", ref: 668566903, role: "" },
{
type: "way",
ref: 668566904,
role: "",
},
{ type: "way", ref: 248228679, role: "" },
{
type: "way",
ref: 419296358,
role: "",
},
{ type: "way", ref: 601005356, role: "" },
{
type: "way",
ref: 497802656,
role: "",
},
{ type: "way", ref: 948484806, role: "" },
{
type: "way",
ref: 100323579,
role: "",
},
{ type: "way", ref: 100708215, role: "" },
{
type: "way",
ref: 124559834,
role: "",
},
{ type: "way", ref: 124559835, role: "" },
{
type: "way",
ref: 239484694,
role: "",
},
{ type: "way", ref: 972646812, role: "" },
{
type: "way",
ref: 124559832,
role: "",
},
{ type: "way", ref: 361686157, role: "" },
{
type: "way",
ref: 361686155,
role: "",
},
{ type: "way", ref: 239484693, role: "" },
{
type: "way",
ref: 19861731,
role: "",
},
{ type: "way", ref: 967906429, role: "" },
{
type: "way",
ref: 126402539,
role: "",
},
{ type: "way", ref: 94427058, role: "" },
{
type: "way",
ref: 126402541,
role: "",
},
{ type: "way", ref: 313693839, role: "" },
{
type: "way",
ref: 313693838,
role: "",
},
{ type: "way", ref: 970740536, role: "" },
{
type: "way",
ref: 361719175,
role: "",
},
{ type: "way", ref: 663186012, role: "" },
{
type: "way",
ref: 744625794,
role: "",
},
{ type: "way", ref: 94569877, role: "" },
{
type: "way",
ref: 188973964,
role: "",
},
{ type: "way", ref: 948484822, role: "" },
{
type: "way",
ref: 28857260,
role: "",
},
{ type: "way", ref: 948484821, role: "" },
{
type: "way",
ref: 219185860,
role: "",
},
{ type: "way", ref: 948484818, role: "" },
{
type: "way",
ref: 219185861,
role: "",
},
{ type: "way", ref: 229885580, role: "" },
{
type: "way",
ref: 28857247,
role: "",
},
{ type: "way", ref: 128813937, role: "" },
{
type: "way",
ref: 32148201,
role: "",
},
{ type: "way", ref: 829398290, role: "" },
{
type: "way",
ref: 829398288,
role: "",
},
{ type: "way", ref: 157436856, role: "" },
{
type: "way",
ref: 23206887,
role: "",
},
{ type: "way", ref: 657081380, role: "" },
{
type: "way",
ref: 948484817,
role: "",
},
{ type: "way", ref: 657081379, role: "" },
{
type: "way",
ref: 657083379,
role: "",
},
{ type: "way", ref: 657083378, role: "" },
{
type: "way",
ref: 72492956,
role: "",
},
{ type: "way", ref: 183763716, role: "" },
{
type: "way",
ref: 497802654,
role: "",
},
{ type: "way", ref: 497802655, role: "" },
{
type: "way",
ref: 348402994,
role: "",
},
{ type: "way", ref: 497802653, role: "" },
{
type: "way",
ref: 948484813,
role: "",
},
{ type: "way", ref: 272353449, role: "forward" },
{
type: "way",
ref: 497802652,
role: "forward",
},
{ type: "way", ref: 948484811, role: "" },
{
type: "way",
ref: 948484810,
role: "",
},
{ type: "way", ref: 136564089, role: "" },
{
type: "way",
ref: 970740538,
role: "",
},
{ type: "way", ref: 970740539, role: "" },
{
type: "way",
ref: 433455263,
role: "",
},
{ type: "way", ref: 23206893, role: "" },
{
type: "way",
ref: 95506626,
role: "",
},
{ type: "way", ref: 61435340, role: "" },
{
type: "way",
ref: 180915274,
role: "",
},
{ type: "way", ref: 182691326, role: "" },
{
type: "way",
ref: 95106180,
role: "",
},
{ type: "way", ref: 61435342, role: "" },
{
type: "way",
ref: 72492953,
role: "",
},
{ type: "way", ref: 827705395, role: "" },
{
type: "way",
ref: 13942938,
role: "",
},
{ type: "way", ref: 540048295, role: "" },
{
type: "way",
ref: 249092420,
role: "",
},
{ type: "way", ref: 32699077, role: "" },
{
type: "way",
ref: 688103600,
role: "",
},
{ type: "way", ref: 654338684, role: "forward" },
{
type: "way",
ref: 11018710,
role: "forward",
},
{ type: "way", ref: 510825612, role: "forward" },
{
type: "way",
ref: 70011248,
role: "forward",
},
{ type: "way", ref: 654338685, role: "forward" },
{
type: "way",
ref: 14626290,
role: "",
},
{ type: "way", ref: 70011250, role: "" },
{
type: "way",
ref: 12295471,
role: "",
},
{ type: "way", ref: 397097504, role: "" },
{
type: "way",
ref: 12295484,
role: "",
},
{ type: "way", ref: 41990436, role: "" },
{
type: "way",
ref: 70011252,
role: "",
},
{ type: "way", ref: 61503690, role: "" },
{
type: "way",
ref: 182978284,
role: "",
},
{ type: "way", ref: 790820260, role: "forward" },
{
type: "way",
ref: 592937894,
role: "forward",
},
{ type: "way", ref: 926028042, role: "forward" },
{
type: "way",
ref: 592937902,
role: "forward",
},
{ type: "way", ref: 592937901, role: "forward" },
{
type: "way",
ref: 182978255,
role: "forward",
},
{ type: "way", ref: 592937903, role: "forward" },
{
type: "way",
ref: 12123659,
role: "forward",
},
{ type: "way", ref: 666877213, role: "forward" },
{
type: "way",
ref: 790820259,
role: "forward",
},
{ type: "way", ref: 510825618, role: "" },
{
type: "way",
ref: 13496412,
role: "",
},
{ type: "way", ref: 654338689, role: "" },
{
type: "way",
ref: 740935312,
role: "",
},
{ type: "way", ref: 52288671, role: "" },
{
type: "way",
ref: 52288667,
role: "",
},
{ type: "way", ref: 12123458, role: "" },
{
type: "way",
ref: 508681905,
role: "",
},
{ type: "way", ref: 15071314, role: "" },
{
type: "way",
ref: 61503700,
role: "",
},
{ type: "way", ref: 41989874, role: "" },
{
type: "way",
ref: 328002077,
role: "",
},
{ type: "way", ref: 396377151, role: "" },
{
type: "way",
ref: 396377150,
role: "",
},
{ type: "way", ref: 396377125, role: "" },
{
type: "way",
ref: 328985990,
role: "",
},
{ type: "way", ref: 328985992, role: "" },
{
type: "way",
ref: 328985993,
role: "",
},
{ type: "way", ref: 328985991, role: "" },
{
type: "way",
ref: 632506298,
role: "",
},
{ type: "way", ref: 101191104, role: "" },
{
type: "way",
ref: 499129522,
role: "",
},
{ type: "way", ref: 15071174, role: "" },
{
type: "way",
ref: 297023609,
role: "",
},
{ type: "way", ref: 297023610, role: "" },
{
type: "way",
ref: 297023608,
role: "",
},
{ type: "way", ref: 112695115, role: "" },
{
type: "way",
ref: 584024902,
role: "",
},
{ type: "way", ref: 243543197, role: "" },
{
type: "way",
ref: 101191119,
role: "forward",
},
{ type: "way", ref: 173530022, role: "forward" },
{
type: "way",
ref: 265137637,
role: "forward",
},
{ type: "way", ref: 160627684, role: "forward" },
{
type: "way",
ref: 657163351,
role: "forward",
},
{ type: "way", ref: 160627682, role: "forward" },
{
type: "way",
ref: 160632906,
role: "forward",
},
{ type: "way", ref: 176870850, role: "forward" },
{
type: "way",
ref: 173662701,
role: "forward",
},
{ type: "way", ref: 173662702, role: "" },
{
type: "way",
ref: 467606230,
role: "",
},
{ type: "way", ref: 126267167, role: "" },
{
type: "way",
ref: 301897426,
role: "",
},
{ type: "way", ref: 687866206, role: "" },
{
type: "way",
ref: 295132739,
role: "",
},
{ type: "way", ref: 690497698, role: "" },
{
type: "way",
ref: 627893684,
role: "",
},
{ type: "way", ref: 295132741, role: "" },
{
type: "way",
ref: 301903120,
role: "",
},
{ type: "way", ref: 672541156, role: "" },
{
type: "way",
ref: 126264330,
role: "",
},
{ type: "way", ref: 280440853, role: "" },
{
type: "way",
ref: 838499667,
role: "",
},
{ type: "way", ref: 838499663, role: "" },
{
type: "way",
ref: 690497623,
role: "",
},
{ type: "way", ref: 301902946, role: "" },
{
type: "way",
ref: 280460715,
role: "",
},
{ type: "way", ref: 972534369, role: "" },
{
type: "way",
ref: 588764361,
role: "",
},
{ type: "way", ref: 981365419, role: "" },
{
type: "way",
ref: 188979882,
role: "",
},
{ type: "way", ref: 578030518, role: "" },
{
type: "way",
ref: 124559857,
role: "",
},
{ type: "way", ref: 284568605, role: "" },
{
type: "way",
ref: 126405025,
role: "",
},
{ type: "way", ref: 188978777, role: "" },
{
type: "way",
ref: 272353445,
role: "forward",
},
{ type: "way", ref: 221443952, role: "forward" },
{
type: "way",
ref: 172708119,
role: "forward",
},
{ type: "way", ref: 173061662, role: "forward" },
{
type: "way",
ref: 441663456,
role: "forward",
},
{ type: "way", ref: 160627680, role: "forward" },
{
type: "way",
ref: 176870852,
role: "forward",
},
{ type: "way", ref: 39588762, role: "forward" },
{
type: "way",
ref: 172709466,
role: "forward",
},
{ type: "way", ref: 598459103, role: "forward" },
{
type: "way",
ref: 688054392,
role: "forward",
},
{ type: "way", ref: 155986859, role: "forward" },
],
tags: {
name: "Groene Gordel Brugge",
network: "lcn",
ref: "GGB",
route: "bicycle",
type: "route",
},
},
{
type: "relation",
id: 8369765,
timestamp: "2021-08-23T14:22:45Z",
version: 19,
changeset: 110120188,
user: "Pieter Vander Vennet",
uid: 3818858,
members: [
{ type: "way", ref: 539038988, role: "" },
{
type: "way",
ref: 369929367,
role: "",
},
{ type: "way", ref: 840241791, role: "" },
{
type: "way",
ref: 488558133,
role: "",
},
{ type: "way", ref: 369929894, role: "" },
{
type: "way",
ref: 130473917,
role: "",
},
{ type: "way", ref: 509668834, role: "" },
{
type: "way",
ref: 61435323,
role: "",
},
{ type: "way", ref: 61435332, role: "" },
{
type: "way",
ref: 337945886,
role: "",
},
{ type: "way", ref: 560506339, role: "" },
{
type: "way",
ref: 23775021,
role: "",
},
{ type: "way", ref: 23792223, role: "" },
{
type: "way",
ref: 136487196,
role: "",
},
{ type: "way", ref: 130473931, role: "" },
{
type: "way",
ref: 34562745,
role: "",
},
{ type: "way", ref: 421998791, role: "" },
{
type: "way",
ref: 176380250,
role: "",
},
{ type: "way", ref: 116717052, role: "" },
{
type: "way",
ref: 176380249,
role: "",
},
{ type: "way", ref: 116717060, role: "" },
{
type: "way",
ref: 27288122,
role: "",
},
{ type: "way", ref: 32789519, role: "" },
{
type: "way",
ref: 12126873,
role: "",
},
{ type: "way", ref: 689493508, role: "" },
{
type: "way",
ref: 131476435,
role: "",
},
{ type: "way", ref: 689494106, role: "" },
{
type: "way",
ref: 165500495,
role: "",
},
{ type: "way", ref: 807329786, role: "" },
{
type: "way",
ref: 51570941,
role: "",
},
{ type: "way", ref: 422309497, role: "" },
{
type: "way",
ref: 240869981,
role: "",
},
{ type: "way", ref: 240869873, role: "" },
{
type: "way",
ref: 240869980,
role: "",
},
{ type: "way", ref: 165503767, role: "" },
{
type: "way",
ref: 165503764,
role: "",
},
{ type: "way", ref: 421566315, role: "" },
{
type: "way",
ref: 165503768,
role: "",
},
{ type: "way", ref: 245236630, role: "" },
{
type: "way",
ref: 658500046,
role: "forward",
},
{ type: "way", ref: 646903393, role: "forward" },
{
type: "way",
ref: 245236632,
role: "forward",
},
{ type: "way", ref: 245236633, role: "forward" },
{
type: "way",
ref: 90485426,
role: "",
},
{ type: "way", ref: 596073878, role: "" },
{
type: "way",
ref: 10898401,
role: "backward",
},
{ type: "way", ref: 658500044, role: "forward" },
{
type: "way",
ref: 474253371,
role: "forward",
},
{ type: "way", ref: 474253369, role: "forward" },
{
type: "way",
ref: 474253376,
role: "forward",
},
{ type: "way", ref: 165845350, role: "backward" },
{
type: "way",
ref: 130697218,
role: "",
},
{ type: "way", ref: 61565721, role: "" },
{
type: "way",
ref: 497202210,
role: "",
},
{ type: "way", ref: 130697226, role: "" },
{
type: "way",
ref: 227617858,
role: "",
},
{ type: "way", ref: 227617857, role: "" },
{
type: "way",
ref: 681804956,
role: "",
},
{ type: "way", ref: 165881675, role: "" },
{
type: "way",
ref: 806146504,
role: "",
},
{ type: "way", ref: 806146505, role: "" },
{ type: "way", ref: 659762284, role: "" },
],
tags: {
alt_name: "Fietssnelweg F30 Brugge - Oostende",
"bicycle:type": "utility",
cycle_highway: "yes",
cycle_network: "BE-VLG:cycle_highway",
name: "F30 Fietssnelweg Brugge - Oostende",
network: "ncn",
operator: "Provincie West-Vlaanderen",
ref: "F30",
route: "bicycle",
state: "proposed",
type: "route",
website: "https://fietssnelwegen.be/f30",
wikidata: "Q107485732",
},
},
{
type: "relation",
id: 13060733,
timestamp: "2021-09-19T18:08:57Z",
version: 5,
changeset: 111419581,
user: "L'imaginaire",
uid: 654234,
members: [
{ type: "way", ref: 23792223, role: "" },
{
type: "way",
ref: 23775021,
role: "",
},
{ type: "way", ref: 560506339, role: "" },
{
type: "way",
ref: 337945886,
role: "",
},
{ type: "way", ref: 61435332, role: "" },
{
type: "way",
ref: 61435323,
role: "",
},
{ type: "way", ref: 509668834, role: "" },
{
type: "way",
ref: 839596136,
role: "",
},
{ type: "way", ref: 840488274, role: "" },
{
type: "way",
ref: 839596137,
role: "",
},
{ type: "way", ref: 146172188, role: "" },
{
type: "way",
ref: 749212030,
role: "",
},
{ type: "way", ref: 799479035, role: "" },
{
type: "way",
ref: 130473928,
role: "",
},
{ type: "way", ref: 61414103, role: "" },
{
type: "way",
ref: 539672618,
role: "",
},
{ type: "way", ref: 799479034, role: "" },
{
type: "way",
ref: 539672617,
role: "",
},
{ type: "way", ref: 539672616, role: "" },
{
type: "way",
ref: 539671786,
role: "",
},
{ type: "way", ref: 172317285, role: "" },
{
type: "way",
ref: 35328157,
role: "",
},
{ type: "way", ref: 249119335, role: "" },
{
type: "way",
ref: 584214875,
role: "",
},
{ type: "way", ref: 584217798, role: "" },
{
type: "way",
ref: 676801473,
role: "",
},
{ type: "way", ref: 456588356, role: "" },
{
type: "way",
ref: 456589109,
role: "",
},
{ type: "way", ref: 456588496, role: "" },
{
type: "way",
ref: 487199906,
role: "",
},
{ type: "way", ref: 299450868, role: "" },
{
type: "way",
ref: 165548222,
role: "",
},
{ type: "way", ref: 4329135, role: "" },
{
type: "way",
ref: 4329771,
role: "",
},
{ type: "way", ref: 155149803, role: "" },
{
type: "way",
ref: 305625031,
role: "",
},
{ type: "way", ref: 100842624, role: "" },
{
type: "way",
ref: 18102445,
role: "",
},
{ type: "way", ref: 541116658, role: "" },
{
type: "way",
ref: 591094005,
role: "",
},
{ type: "way", ref: 591094004, role: "" },
{
type: "way",
ref: 184684947,
role: "",
},
{ type: "way", ref: 34945088, role: "" },
{
type: "way",
ref: 235195315,
role: "",
},
{ type: "way", ref: 497849660, role: "" },
],
tags: {
colour: "#e40613",
cycle_network: "BE-VLG:icoonroutes",
description: "segment 2 van de Kunststedenroute",
fixme: "incomplete",
from: "Oostende",
name: "Kunststedenroute - 02 - Oostende - Brugge",
network: "ncn",
operator: "Toerisme Vlaanderen",
ref: "Kunst",
route: "bicycle",
to: "Brugge",
type: "route",
website: "https://www.vlaanderenmetdefiets.be/routes/kunststeden.html",
wikidata: "Q106529274",
wikipedia: "nl:LF Kunststedenroute",
},
},
],
}
)
Utils.injectJsonDownloadForTests(
"https://www.openstreetmap.org/api/0.6/way/61435332/full",
{
version: "0.6",
generator: "CGImap 0.8.5 (3819319 spike-06.openstreetmap.org)",
copyright: "OpenStreetMap and contributors",
attribution: "http://www.openstreetmap.org/copyright",
license: "http://opendatacommons.org/licenses/odbl/1-0/",
elements: [
{
type: "node",
id: 766990985,
lat: 51.2169574,
lon: 3.2017548,
timestamp: "2016-07-05T22:41:12Z",
version: 6,
changeset: 40511250,
user: "M!dgard",
uid: 763799,
},
{
type: "node",
id: 3450208876,
lat: 51.2169482,
lon: 3.2016802,
timestamp: "2016-07-05T22:41:11Z",
version: 2,
changeset: 40511250,
user: "M!dgard",
uid: 763799,
},
{
type: "way",
id: 61435332,
timestamp: "2021-08-21T12:24:13Z",
version: 8,
changeset: 110026637,
user: "Thibault Rommel",
uid: 5846458,
nodes: [766990985, 3450208876],
tags: {
bicycle: "yes",
cycleway: "shared_lane",
highway: "unclassified",
maxspeed: "50",
name: "Houtkaai",
surface: "asphalt",
"zone:traffic": "BE-VLG:urban",
},
},
],
}
)
Utils.injectJsonDownloadForTests(
"https://www.openstreetmap.org/api/0.6/way/509668834/full",
{
version: "0.6",
generator: "CGImap 0.8.5 (3735280 spike-06.openstreetmap.org)",
copyright: "OpenStreetMap and contributors",
attribution: "http://www.openstreetmap.org/copyright",
license: "http://opendatacommons.org/licenses/odbl/1-0/",
elements: [
{
type: "node",
id: 131917824,
lat: 51.2170327,
lon: 3.2023577,
timestamp: "2019-09-16T09:48:28Z",
version: 17,
changeset: 74521581,
user: "Peter Elderson",
uid: 7103674,
tags: {
"network:type": "node_network",
rcn_ref: "4",
rcn_region: "Brugse Ommeland",
},
},
{
type: "node",
id: 766990983,
lat: 51.2170219,
lon: 3.2022337,
timestamp: "2021-04-26T15:48:22Z",
version: 6,
changeset: 103647857,
user: "M!dgard",
uid: 763799,
},
{
type: "way",
id: 509668834,
timestamp: "2021-08-21T12:24:13Z",
version: 5,
changeset: 110026637,
user: "Thibault Rommel",
uid: 5846458,
nodes: [131917824, 766990983],
tags: {
bicycle: "yes",
cycleway: "shared_lane",
highway: "residential",
lit: "yes",
maxspeed: "30",
name: "Houtkaai",
sidewalk: "both",
surface: "paving_stones",
"zone:maxspeed": "BE:30",
"zone:traffic": "BE-VLG:urban",
},
},
],
}
)
}
it("split 295132739", async () => {
// Lets split road https://www.openstreetmap.org/way/295132739
const id = "way/295132739"
const splitPoint: [number, number] = [3.246733546257019, 51.181710380278176]
const splitter = new SplitAction(id, [splitPoint], {
theme: "test",
})
const changeDescription = await splitter.CreateChangeDescriptions(
new Changes({
dryRun: new ImmutableStore(true),
osmConnection: new OsmConnection(),
})
)
expect(changeDescription[0].type).toBe("node")
expect(changeDescription[0].id).toBe(-1)
expect(changeDescription[0].changes["lat"]).toBe(51.181710380278176)
expect(changeDescription[0].changes["lon"]).toBe(3.246733546257019)
expect(changeDescription[1].type).toBe("way")
expect(changeDescription[1].id).toBe(-2)
expect(changeDescription[1].changes["coordinates"].length).toBe(6)
expect(changeDescription[1].changes["coordinates"][5][0]).toBe(splitPoint[0])
expect(changeDescription[1].changes["coordinates"][5][1]).toBe(splitPoint[1])
expect(changeDescription[2].type).toBe("way")
expect(changeDescription[2].id).toBe(295132739)
expect(changeDescription[2].changes["coordinates"].length).toBe(10)
expect(changeDescription[2].changes["coordinates"][0][0]).toBe(splitPoint[0])
expect(changeDescription[2].changes["coordinates"][0][1]).toBe(splitPoint[1])
})
it("split 295132739 on already existing node", async () => {
// Lets split road near an already existing point https://www.openstreetmap.org/way/295132739
const id = "way/295132739"
const splitPoint: [number, number] = [3.2451081275939937, 51.18116898253599]
const splitter = new SplitAction(id, [splitPoint], {
theme: "test",
})
const changeDescription = await splitter.CreateChangeDescriptions(
new Changes({
dryRun: new ImmutableStore(true),
osmConnection: new OsmConnection(),
})
)
expect(changeDescription.length).toBe(2)
expect(changeDescription[0].type).toBe("way")
expect(changeDescription[1].type).toBe("way")
expect(
changeDescription[0].changes["nodes"][changeDescription[0].changes["nodes"].length - 1]
).toBe(changeDescription[1].changes["nodes"][0])
expect(changeDescription[1].changes["nodes"][0]).toBe(1507524610)
})
it("split 61435323 on already existing node", async () => {
const id = "way/61435323"
const splitPoint: [number, number] = [3.2021324336528774, 51.2170001600597]
const splitter = new SplitAction(id, [splitPoint], {
theme: "test",
})
const changeDescription = await splitter.CreateChangeDescriptions(
new Changes({
dryRun: new ImmutableStore(true),
osmConnection: new OsmConnection(),
})
)
// Should be a new node
expect(changeDescription[0].type).toBe("node")
expect(changeDescription[3].type).toBe("relation")
})
it("Split test line", async () => {
// Split points are lon,lat
const splitPointAroundP3: [number, number] = [3.1392198801040645, 51.232701022376745]
const splitAction = new SplitAction("way/941079939", [splitPointAroundP3], {
theme: "test",
})
const changes = await splitAction.Perform(
new Changes({
dryRun: new ImmutableStore(true),
osmConnection: new OsmConnection(),
})
)
console.log(changes)
// 8715440368 is the expected point of the split
/* Nodes are
6490126559 (part of ways 941079941 and 941079940)
8715440375
8715440374
8715440373
8715440372
8715440371
8715440370
8715440369
8715440368 <--- split here
8715440367
8715440366
8715440365
8715440364
8715440363
*/
expect(changes[0].changes["nodes"]).toEqual([
6490126559, 8715440375, 8715440374, 8715440373, 8715440372, 8715440371, 8715440370,
8715440369, 8715440368,
])
expect(changes[1].changes["nodes"]).toEqual([
8715440368, 8715440367, 8715440366, 8715440365, 8715440364, 8715440363,
])
})
it("Split minor powerline halfway", async () => {
const splitPointHalfway: [number, number] = [3.1392842531204224, 51.23255322710106]
const splitAction = new SplitAction(
"way/941079939",
[splitPointHalfway],
{ theme: "test" },
1
)
const changes = await splitAction.Perform(
new Changes({
dryRun: new ImmutableStore(true),
osmConnection: new OsmConnection(),
})
)
// THe first change is the creation of the new node
expect(changes[0].type).toEqual("node")
expect(changes[0].id).toEqual(-1)
expect(changes[1].changes["nodes"]).toEqual([
6490126559, 8715440375, 8715440374, 8715440373, 8715440372, 8715440371, 8715440370,
8715440369, -1,
])
expect(changes[2].changes["nodes"]).toEqual([
-1, 8715440368, 8715440367, 8715440366, 8715440365, 8715440364, 8715440363,
])
})
})