@wemap/routers 10.0.0-alpha.1 → 10.0.0-alpha.10
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/index.js +0 -1
- package/package.json +6 -6
- package/src/remote/idfm/IdfmRemoteRouter.js +2 -57
- package/src/wemap/WemapRouter.spec.js +3 -4
- package/src/wemap-meta/IOMap.js +4 -4
- package/src/wemap-meta/WemapMetaRouter.spec.js +1 -1
- package/assets/biocbon-bergere-rdc-network.osm +0 -163
- package/assets/bureaux-wemap-montpellier-network.osm +0 -174
- package/assets/gare-de-lest-network-pp-bounds.osm +0 -1615
- package/assets/gare-de-lyon-extract.osm +0 -174
- package/assets/network-conveying-backward.osm +0 -74
- package/assets/network-elevator.osm +0 -48
- package/assets/network-simple.osm +0 -27
- package/assets/network-with-modifiers.osm +0 -39
- package/assets/one-way.osm +0 -46
- package/src/wemap/WemapNetworkUtils.js +0 -198
- package/src/wemap/WemapNetworkUtils.spec.js +0 -109
package/index.js
CHANGED
|
@@ -12,7 +12,6 @@ export { default as ItineraryInfo } from './src/model/ItineraryInfo.js';
|
|
|
12
12
|
export { default as WemapRouter } from './src/wemap/WemapRouter.js';
|
|
13
13
|
export { default as WemapRouterOptions } from './src/wemap/WemapRouterOptions.js';
|
|
14
14
|
export * as WemapRouterUtils from './src/wemap/WemapRouterUtils.js';
|
|
15
|
-
export * as WemapNetworkUtils from './src/wemap/WemapNetworkUtils.js';
|
|
16
15
|
export { default as WemapMetaRouter } from './src/wemap-meta/WemapMetaRouter.js';
|
|
17
16
|
export { default as WemapMetaRouterOptions } from './src/wemap-meta/WemapMetaRouterOptions.js';
|
|
18
17
|
export { default as WemapMetaRouterIOMap } from './src/wemap-meta/IOMap.js';
|
package/package.json
CHANGED
|
@@ -11,7 +11,7 @@
|
|
|
11
11
|
"directory": "packages/routers"
|
|
12
12
|
},
|
|
13
13
|
"name": "@wemap/routers",
|
|
14
|
-
"version": "10.0.0-alpha.
|
|
14
|
+
"version": "10.0.0-alpha.10",
|
|
15
15
|
"bugs": {
|
|
16
16
|
"url": "https://github.com/wemap/wemap-modules-js/issues"
|
|
17
17
|
},
|
|
@@ -29,10 +29,10 @@
|
|
|
29
29
|
"@turf/boolean-point-in-polygon": "^6.5.0",
|
|
30
30
|
"@turf/convex": "^6.5.0",
|
|
31
31
|
"@turf/helpers": "^6.5.0",
|
|
32
|
-
"@wemap/geo": "^10.0.0-alpha.
|
|
33
|
-
"@wemap/logger": "^
|
|
34
|
-
"@wemap/maths": "^
|
|
35
|
-
"@wemap/osm": "^10.0.0-alpha.
|
|
32
|
+
"@wemap/geo": "^10.0.0-alpha.10",
|
|
33
|
+
"@wemap/logger": "^10.0.0-alpha.8",
|
|
34
|
+
"@wemap/maths": "^10.0.0-alpha.10",
|
|
35
|
+
"@wemap/osm": "^10.0.0-alpha.10"
|
|
36
36
|
},
|
|
37
|
-
"gitHead": "
|
|
37
|
+
"gitHead": "5970289ef2b1f06f9df382878f72bf48f57c4c00"
|
|
38
38
|
}
|
|
@@ -63,8 +63,7 @@ const TRANSPORT_IDS = [
|
|
|
63
63
|
'physical_mode:Tramway'
|
|
64
64
|
];
|
|
65
65
|
|
|
66
|
-
const
|
|
67
|
-
const clientSecret = '899f4bb9-f1d5-45d3-9f67-530827bb6734';
|
|
66
|
+
const apiKey = 'qWHj6ax6DMttG8DX6tH9CQARaiTgQ1Di';
|
|
68
67
|
|
|
69
68
|
/**
|
|
70
69
|
* Get last item of a given array
|
|
@@ -80,10 +79,6 @@ function last(array) {
|
|
|
80
79
|
*/
|
|
81
80
|
class IdfmRemoteRouter extends RemoteRouter {
|
|
82
81
|
|
|
83
|
-
isLogged = false;
|
|
84
|
-
token = null;
|
|
85
|
-
expiresAt = null;
|
|
86
|
-
|
|
87
82
|
/**
|
|
88
83
|
* @override
|
|
89
84
|
*/
|
|
@@ -97,15 +92,11 @@ class IdfmRemoteRouter extends RemoteRouter {
|
|
|
97
92
|
* @throws {RemoteRouterServerUnreachable}
|
|
98
93
|
*/
|
|
99
94
|
async getItineraries(endpointUrl, mode, waypoints) {
|
|
100
|
-
if (!this.canRequestService()) {
|
|
101
|
-
await this._connect();
|
|
102
|
-
}
|
|
103
|
-
|
|
104
95
|
const url = this.getURL(endpointUrl, mode, waypoints);
|
|
105
96
|
|
|
106
97
|
const res = await (fetch(url, {
|
|
107
98
|
method: 'GET',
|
|
108
|
-
headers: {
|
|
99
|
+
headers: { apiKey }
|
|
109
100
|
}).catch(() => {
|
|
110
101
|
throw new RemoteRouterServerUnreachable(this.rname, url);
|
|
111
102
|
}));
|
|
@@ -130,52 +121,6 @@ class IdfmRemoteRouter extends RemoteRouter {
|
|
|
130
121
|
return this.createRouterResponseFromJson(jsonResponse, waypoints[0], waypoints[1]);
|
|
131
122
|
}
|
|
132
123
|
|
|
133
|
-
/**
|
|
134
|
-
* @throws {IdfmRemoteRouterTokenError}
|
|
135
|
-
*/
|
|
136
|
-
async _connect() {
|
|
137
|
-
|
|
138
|
-
const details = {
|
|
139
|
-
'grant_type': 'client_credentials',
|
|
140
|
-
'scope': 'read-data',
|
|
141
|
-
'client_id': clientId,
|
|
142
|
-
'client_secret': clientSecret
|
|
143
|
-
};
|
|
144
|
-
|
|
145
|
-
const data = new URLSearchParams();
|
|
146
|
-
for (const property in details) {
|
|
147
|
-
if (details.hasOwnProperty(property)) {
|
|
148
|
-
const encodedKey = encodeURIComponent(property);
|
|
149
|
-
const encodedValue = encodeURIComponent(details[property]);
|
|
150
|
-
data.append(encodedKey, encodedValue);
|
|
151
|
-
}
|
|
152
|
-
}
|
|
153
|
-
|
|
154
|
-
const headers = new Headers({
|
|
155
|
-
'Content-Type': 'application/x-www-form-urlencoded;charset=UTF-8'
|
|
156
|
-
});
|
|
157
|
-
|
|
158
|
-
const res = await fetch('https://idfm.getwemap.com/api/oauth/token', {
|
|
159
|
-
method: 'POST',
|
|
160
|
-
body: data,
|
|
161
|
-
headers
|
|
162
|
-
});
|
|
163
|
-
if (res.status !== 200) {
|
|
164
|
-
throw new IdfmRemoteRouterTokenError();
|
|
165
|
-
}
|
|
166
|
-
const response = await res.json();
|
|
167
|
-
|
|
168
|
-
if (response.access_token) {
|
|
169
|
-
this.token = response.access_token;
|
|
170
|
-
this.isLogged = true;
|
|
171
|
-
this.expiresAt = new Date(new Date().getTime() + response.expires_in * 1000);
|
|
172
|
-
}
|
|
173
|
-
}
|
|
174
|
-
|
|
175
|
-
canRequestService() {
|
|
176
|
-
return this.token && this.expiresAt && this.expiresAt - new Date() > 0;
|
|
177
|
-
}
|
|
178
|
-
|
|
179
124
|
/**
|
|
180
125
|
* @param {string} endpointUrl
|
|
181
126
|
* @param {string} mode
|
|
@@ -6,13 +6,11 @@ import path from 'path';
|
|
|
6
6
|
import { fileURLToPath } from 'url';
|
|
7
7
|
|
|
8
8
|
import { Coordinates, GraphNode, Network, GraphItinerary } from '@wemap/geo';
|
|
9
|
-
import { OsmElement, OsmParser } from '@wemap/osm';
|
|
10
|
-
|
|
9
|
+
import { OsmElement, OsmParser, OsmNetworkUtils } from '@wemap/osm';
|
|
11
10
|
|
|
12
11
|
import WemapRouter from './WemapRouter.js';
|
|
13
12
|
import WemapRouterOptions from './WemapRouterOptions.js';
|
|
14
13
|
import WemapStepsGeneration from './WemapStepsGeneration.js';
|
|
15
|
-
import { createNetworkFromOsmModel, getNodeByName } from './WemapNetworkUtils.js';
|
|
16
14
|
|
|
17
15
|
import LevelChange from '../model/LevelChange.js';
|
|
18
16
|
|
|
@@ -20,6 +18,7 @@ const { expect } = chai;
|
|
|
20
18
|
chai.use(chaiAlmost(0.01));
|
|
21
19
|
const __dirname = path.dirname(fileURLToPath(import.meta.url));
|
|
22
20
|
|
|
21
|
+
const { createNetworkFromOsmModel, getNodeByName } = OsmNetworkUtils;
|
|
23
22
|
|
|
24
23
|
/**
|
|
25
24
|
* @param {GraphItinerary<OsmElement>} _itinerary
|
|
@@ -39,7 +38,7 @@ const itineraryEnd = new Coordinates(43.6092602, 3.8842669, null, 1);
|
|
|
39
38
|
* @returns {Network}
|
|
40
39
|
*/
|
|
41
40
|
const loadNetwork = fileName => {
|
|
42
|
-
const filePath = path.resolve(__dirname, '
|
|
41
|
+
const filePath = path.resolve(__dirname, '../../../osm/assets/' + fileName);
|
|
43
42
|
const osmXmlString = fs.readFileSync(filePath, 'utf8');
|
|
44
43
|
const osmModel = OsmParser.parseOsmXmlString(osmXmlString);
|
|
45
44
|
return createNetworkFromOsmModel(osmModel);
|
package/src/wemap-meta/IOMap.js
CHANGED
|
@@ -3,8 +3,8 @@ import convexHullFn from '@turf/convex';
|
|
|
3
3
|
import { polygon as turfPolygon } from '@turf/helpers';
|
|
4
4
|
|
|
5
5
|
import { Coordinates, GraphNode, GraphRouter, Network, NoRouteFoundError } from '@wemap/geo';
|
|
6
|
-
import { OsmParser } from '@wemap/osm';
|
|
7
|
-
import { Itinerary,
|
|
6
|
+
import { OsmParser, OsmNetworkUtils } from '@wemap/osm';
|
|
7
|
+
import { Itinerary, WemapRouterOptions, WemapRouterUtils } from '@wemap/routers';
|
|
8
8
|
|
|
9
9
|
import Constants from '../Constants.js';
|
|
10
10
|
|
|
@@ -64,7 +64,7 @@ class IOMap {
|
|
|
64
64
|
static fromOsmXml(osmXmlString, name = null) {
|
|
65
65
|
|
|
66
66
|
const osmModel = OsmParser.parseOsmXmlString(osmXmlString);
|
|
67
|
-
const network =
|
|
67
|
+
const network = OsmNetworkUtils.createNetworkFromOsmModel(osmModel);
|
|
68
68
|
|
|
69
69
|
const entryPoints = osmModel.nodes
|
|
70
70
|
.filter(({ tags }) => tags && tags['wemap:routing-io'])
|
|
@@ -103,7 +103,7 @@ class IOMap {
|
|
|
103
103
|
getOrderedEntryPointsSortedByDistance(start, end) {
|
|
104
104
|
const entryPointsCopy = [...this.entryPoints];
|
|
105
105
|
return entryPointsCopy.sort((ep1, ep2) =>
|
|
106
|
-
|
|
106
|
+
Number(ep1.coords.distanceTo(start)) + ep1.coords.distanceTo(end)
|
|
107
107
|
- ep2.coords.distanceTo(start) - ep2.coords.distanceTo(end)
|
|
108
108
|
);
|
|
109
109
|
}
|
|
@@ -31,7 +31,7 @@ function mockFetchWithJsonAsset(assetName) {
|
|
|
31
31
|
}
|
|
32
32
|
|
|
33
33
|
function createIOMapFromAsset(assetName) {
|
|
34
|
-
const filePath = path.resolve(__dirname, '
|
|
34
|
+
const filePath = path.resolve(__dirname, '../../../osm/assets/' + assetName);
|
|
35
35
|
const osmXmlString = fs.readFileSync(filePath, 'utf8');
|
|
36
36
|
const mapName = path.parse(assetName).name;
|
|
37
37
|
return IOMap.fromOsmXml(osmXmlString, mapName);
|
|
@@ -1,163 +0,0 @@
|
|
|
1
|
-
<?xml version='1.0' encoding='UTF-8'?>
|
|
2
|
-
<osm version='0.6' generator='JOSM'>
|
|
3
|
-
<node id='-460666' action='modify' visible='true' lat='48.87260236152' lon='2.34329666635' />
|
|
4
|
-
<node id='-460667' action='modify' visible='true' lat='48.87250549777' lon='2.34328663305' />
|
|
5
|
-
<node id='-460668' action='modify' visible='true' lat='48.87254375114' lon='2.34328204154' />
|
|
6
|
-
<node id='-460669' action='modify' visible='true' lat='48.87256254226' lon='2.34328272177' />
|
|
7
|
-
<node id='-460670' action='modify' visible='true' lat='48.87256546238' lon='2.3433422765' />
|
|
8
|
-
<node id='-460671' action='modify' visible='true' lat='48.87249229923' lon='2.34346145052' />
|
|
9
|
-
<node id='-460672' action='modify' visible='true' lat='48.87250820089' lon='2.34335069759' />
|
|
10
|
-
<node id='-460673' action='modify' visible='true' lat='48.87250633659' lon='2.34330651324' />
|
|
11
|
-
<node id='-460674' action='modify' visible='true' lat='48.87249106885' lon='2.34330823015' />
|
|
12
|
-
<node id='-460675' action='modify' visible='true' lat='48.87248804885' lon='2.34333390859' />
|
|
13
|
-
<node id='-460676' action='modify' visible='true' lat='48.87250347283' lon='2.34338322091' />
|
|
14
|
-
<node id='-460677' action='modify' visible='true' lat='48.87247865327' lon='2.3433874762' />
|
|
15
|
-
<node id='-460678' action='modify' visible='true' lat='48.87246936955' lon='2.34345396806' />
|
|
16
|
-
<node id='-460679' action='modify' visible='true' lat='48.8725047148' lon='2.34346519175' />
|
|
17
|
-
<node id='-460680' action='modify' visible='true' lat='48.87252014738' lon='2.34328487468' />
|
|
18
|
-
<node id='-460681' action='modify' visible='true' lat='48.87252306794' lon='2.34334851119' />
|
|
19
|
-
<node id='-460682' action='modify' visible='true' lat='48.87254679656' lon='2.34334502157' />
|
|
20
|
-
<node id='-460683' action='modify' visible='true' lat='48.87255583689' lon='2.34334369207' />
|
|
21
|
-
<node id='-460684' action='modify' visible='true' lat='48.87255247559' lon='2.34338781631' />
|
|
22
|
-
<node id='-460685' action='modify' visible='true' lat='48.872553574' lon='2.34337339741' />
|
|
23
|
-
<node id='-460686' action='modify' visible='true' lat='48.87258124098' lon='2.34333589031' />
|
|
24
|
-
<node id='-460687' action='modify' visible='true' lat='48.8725647793' lon='2.34345056694' />
|
|
25
|
-
<node id='-460688' action='modify' visible='true' lat='48.87256316665' lon='2.3432954559' />
|
|
26
|
-
<node id='-460689' action='modify' visible='true' lat='48.87259140004' lon='2.34329003417' />
|
|
27
|
-
<node id='-460690' action='modify' visible='true' lat='48.87257537018' lon='2.34337678796' />
|
|
28
|
-
<node id='-460691' action='modify' visible='true' lat='48.87259587423' lon='2.34338390486' />
|
|
29
|
-
<node id='-460692' action='modify' visible='true' lat='48.87258513645' lon='2.34345736901' />
|
|
30
|
-
<node id='-460693' action='modify' visible='true' lat='48.87249947934' lon='2.34334343153' />
|
|
31
|
-
<node id='-460694' action='modify' visible='true' lat='48.87249408198' lon='2.34338483096' />
|
|
32
|
-
<node id='-460695' action='modify' visible='true' lat='48.8725017692' lon='2.34336624663' />
|
|
33
|
-
<node id='-460696' action='modify' visible='true' lat='48.87258943336' lon='2.34352007038' />
|
|
34
|
-
<node id='-460697' action='modify' visible='true' lat='48.87245061393' lon='2.34347443088' />
|
|
35
|
-
<node id='-460698' action='modify' visible='true' lat='48.8726203618' lon='2.3433075471' />
|
|
36
|
-
<node id='-460699' action='modify' visible='true' lat='48.87247787613' lon='2.34327167268' />
|
|
37
|
-
<node id='-460700' action='modify' visible='true' lat='48.87259588375' lon='2.34325390292' />
|
|
38
|
-
<node id='-460702' action='modify' visible='true' lat='48.87262168252' lon='2.34327125172'>
|
|
39
|
-
<tag k='wemap:routing-io' v='yes' />
|
|
40
|
-
</node>
|
|
41
|
-
<way id='-460630' action='modify' visible='true'>
|
|
42
|
-
<nd ref='-460666' />
|
|
43
|
-
<nd ref='-460686' />
|
|
44
|
-
<nd ref='-460670' />
|
|
45
|
-
<nd ref='-460683' />
|
|
46
|
-
<nd ref='-460682' />
|
|
47
|
-
<nd ref='-460681' />
|
|
48
|
-
<nd ref='-460672' />
|
|
49
|
-
<nd ref='-460673' />
|
|
50
|
-
<nd ref='-460667' />
|
|
51
|
-
<nd ref='-460680' />
|
|
52
|
-
<nd ref='-460668' />
|
|
53
|
-
<nd ref='-460669' />
|
|
54
|
-
<nd ref='-460688' />
|
|
55
|
-
<nd ref='-460670' />
|
|
56
|
-
<tag k='highway' v='footway' />
|
|
57
|
-
</way>
|
|
58
|
-
<way id='-460631' action='modify' visible='true'>
|
|
59
|
-
<nd ref='-460671' />
|
|
60
|
-
<nd ref='-460676' />
|
|
61
|
-
<nd ref='-460672' />
|
|
62
|
-
<tag k='highway' v='footway' />
|
|
63
|
-
</way>
|
|
64
|
-
<way id='-460632' action='modify' visible='true'>
|
|
65
|
-
<nd ref='-460673' />
|
|
66
|
-
<nd ref='-460674' />
|
|
67
|
-
<nd ref='-460675' />
|
|
68
|
-
<nd ref='-460693' />
|
|
69
|
-
<nd ref='-460672' />
|
|
70
|
-
<tag k='highway' v='footway' />
|
|
71
|
-
</way>
|
|
72
|
-
<way id='-460633' action='modify' visible='true'>
|
|
73
|
-
<nd ref='-460676' />
|
|
74
|
-
<nd ref='-460694' />
|
|
75
|
-
<nd ref='-460677' />
|
|
76
|
-
<nd ref='-460678' />
|
|
77
|
-
<nd ref='-460671' />
|
|
78
|
-
<tag k='highway' v='footway' />
|
|
79
|
-
</way>
|
|
80
|
-
<way id='-460634' action='modify' visible='true'>
|
|
81
|
-
<nd ref='-460671' />
|
|
82
|
-
<nd ref='-460679' />
|
|
83
|
-
<tag k='highway' v='footway' />
|
|
84
|
-
</way>
|
|
85
|
-
<way id='-460635' action='modify' visible='true'>
|
|
86
|
-
<nd ref='-460680' />
|
|
87
|
-
<nd ref='-460681' />
|
|
88
|
-
<tag k='highway' v='footway' />
|
|
89
|
-
</way>
|
|
90
|
-
<way id='-460636' action='modify' visible='true'>
|
|
91
|
-
<nd ref='-460668' />
|
|
92
|
-
<nd ref='-460682' />
|
|
93
|
-
<tag k='highway' v='footway' />
|
|
94
|
-
</way>
|
|
95
|
-
<way id='-460637' action='modify' visible='true'>
|
|
96
|
-
<nd ref='-460683' />
|
|
97
|
-
<nd ref='-460685' />
|
|
98
|
-
<nd ref='-460684' />
|
|
99
|
-
<nd ref='-460685' />
|
|
100
|
-
<tag k='highway' v='footway' />
|
|
101
|
-
</way>
|
|
102
|
-
<way id='-460638' action='modify' visible='true'>
|
|
103
|
-
<nd ref='-460685' />
|
|
104
|
-
<nd ref='-460681' />
|
|
105
|
-
<tag k='highway' v='footway' />
|
|
106
|
-
</way>
|
|
107
|
-
<way id='-460639' action='modify' visible='true'>
|
|
108
|
-
<nd ref='-460685' />
|
|
109
|
-
<nd ref='-460682' />
|
|
110
|
-
<tag k='highway' v='footway' />
|
|
111
|
-
</way>
|
|
112
|
-
<way id='-460640' action='modify' visible='true'>
|
|
113
|
-
<nd ref='-460691' />
|
|
114
|
-
<nd ref='-460686' />
|
|
115
|
-
<nd ref='-460690' />
|
|
116
|
-
<nd ref='-460687' />
|
|
117
|
-
<tag k='highway' v='footway' />
|
|
118
|
-
</way>
|
|
119
|
-
<way id='-460641' action='modify' visible='true'>
|
|
120
|
-
<nd ref='-460688' />
|
|
121
|
-
<nd ref='-460689' />
|
|
122
|
-
<nd ref='-460666' />
|
|
123
|
-
<tag k='highway' v='footway' />
|
|
124
|
-
</way>
|
|
125
|
-
<way id='-460642' action='modify' visible='true'>
|
|
126
|
-
<nd ref='-460690' />
|
|
127
|
-
<nd ref='-460691' />
|
|
128
|
-
<nd ref='-460692' />
|
|
129
|
-
<tag k='highway' v='footway' />
|
|
130
|
-
</way>
|
|
131
|
-
<way id='-460643' action='modify' visible='true'>
|
|
132
|
-
<nd ref='-460666' />
|
|
133
|
-
<nd ref='-460691' />
|
|
134
|
-
<tag k='highway' v='footway' />
|
|
135
|
-
</way>
|
|
136
|
-
<way id='-460644' action='modify' visible='true'>
|
|
137
|
-
<nd ref='-460676' />
|
|
138
|
-
<nd ref='-460695' />
|
|
139
|
-
<nd ref='-460693' />
|
|
140
|
-
<nd ref='-460694' />
|
|
141
|
-
<tag k='highway' v='footway' />
|
|
142
|
-
</way>
|
|
143
|
-
<way id='-460645' action='modify' visible='true'>
|
|
144
|
-
<nd ref='-460672' />
|
|
145
|
-
<nd ref='-460695' />
|
|
146
|
-
<nd ref='-460694' />
|
|
147
|
-
<tag k='highway' v='footway' />
|
|
148
|
-
</way>
|
|
149
|
-
<way id='-460646' action='modify' visible='true'>
|
|
150
|
-
<nd ref='-460700' />
|
|
151
|
-
<nd ref='-460698' />
|
|
152
|
-
<nd ref='-460696' />
|
|
153
|
-
<nd ref='-460697' />
|
|
154
|
-
<nd ref='-460699' />
|
|
155
|
-
<nd ref='-460700' />
|
|
156
|
-
<tag k='wemap:routing-bounds' v='yes' />
|
|
157
|
-
</way>
|
|
158
|
-
<way id='-460648' action='modify' visible='true'>
|
|
159
|
-
<nd ref='-460666' />
|
|
160
|
-
<nd ref='-460702' />
|
|
161
|
-
<tag k='highway' v='footway' />
|
|
162
|
-
</way>
|
|
163
|
-
</osm>
|
|
@@ -1,174 +0,0 @@
|
|
|
1
|
-
<?xml version='1.0' encoding='UTF-8'?>
|
|
2
|
-
<osm version='0.6' generator='JOSM'>
|
|
3
|
-
<node id='-440460' action='modify' visible='true' lat='43.60927603206' lon='3.88424673798'>
|
|
4
|
-
<tag k='name' v='p7' />
|
|
5
|
-
</node>
|
|
6
|
-
<node id='-440462' action='modify' visible='true' lat='43.60913609818' lon='3.88411091795'>
|
|
7
|
-
<tag k='name' v='p3' />
|
|
8
|
-
</node>
|
|
9
|
-
<node id='-440464' action='modify' visible='true' lat='43.60929353543' lon='3.88425183223'>
|
|
10
|
-
<tag k='name' v='p8' />
|
|
11
|
-
</node>
|
|
12
|
-
<node id='-440466' action='modify' visible='true' lat='43.60930219142' lon='3.88427017086'>
|
|
13
|
-
<tag k='name' v='p9' />
|
|
14
|
-
</node>
|
|
15
|
-
<node id='-440468' action='modify' visible='true' lat='43.60911942685' lon='3.88422017773'>
|
|
16
|
-
<tag k='name' v='p4' />
|
|
17
|
-
</node>
|
|
18
|
-
<node id='-440470' action='modify' visible='true' lat='43.60935581261' lon='3.88428577699'>
|
|
19
|
-
<tag k='name' v='p22' />
|
|
20
|
-
</node>
|
|
21
|
-
<node id='-440472' action='modify' visible='true' lat='43.60919651074' lon='3.88412853633'>
|
|
22
|
-
<tag k='name' v='p1' />
|
|
23
|
-
</node>
|
|
24
|
-
<node id='-440474' action='modify' visible='true' lat='43.60931199709' lon='3.88413083832'>
|
|
25
|
-
<tag k='name' v='p25' />
|
|
26
|
-
</node>
|
|
27
|
-
<node id='-440476' action='modify' visible='true' lat='43.60917494597' lon='3.88421731753'>
|
|
28
|
-
<tag k='name' v='p6' />
|
|
29
|
-
</node>
|
|
30
|
-
<node id='-440478' action='modify' visible='true' lat='43.60918883875' lon='3.88412626772'>
|
|
31
|
-
<tag k='name' v='p2' />
|
|
32
|
-
</node>
|
|
33
|
-
<node id='-440480' action='modify' visible='true' lat='43.60936726345' lon='3.88427546746'>
|
|
34
|
-
<tag k='name' v='p23' />
|
|
35
|
-
</node>
|
|
36
|
-
<node id='-440482' action='modify' visible='true' lat='43.60917216742' lon='3.8842355275'>
|
|
37
|
-
<tag k='name' v='p5' />
|
|
38
|
-
</node>
|
|
39
|
-
<node id='-440484' action='modify' visible='true' lat='43.60931231268' lon='3.8842731166'>
|
|
40
|
-
<tag k='name' v='p10' />
|
|
41
|
-
</node>
|
|
42
|
-
<node id='-440486' action='modify' visible='true' lat='43.60932336323' lon='3.884200898'>
|
|
43
|
-
<tag k='name' v='p11' />
|
|
44
|
-
</node>
|
|
45
|
-
<node id='-440488' action='modify' visible='true' lat='43.6093629216' lon='3.884212726'>
|
|
46
|
-
<tag k='name' v='p12' />
|
|
47
|
-
</node>
|
|
48
|
-
<node id='-440490' action='modify' visible='true' lat='43.60935965678' lon='3.8842335535'>
|
|
49
|
-
<tag k='name' v='p13' />
|
|
50
|
-
</node>
|
|
51
|
-
<node id='-440492' action='modify' visible='true' lat='43.60932022256' lon='3.88422176261'>
|
|
52
|
-
<tag k='name' v='p14' />
|
|
53
|
-
</node>
|
|
54
|
-
<node id='-440494' action='modify' visible='true' lat='43.60931232238' lon='3.88427309743'>
|
|
55
|
-
<tag k='name' v='p15' />
|
|
56
|
-
</node>
|
|
57
|
-
<node id='-440496' action='modify' visible='true' lat='43.60936673756' lon='3.88428907078'>
|
|
58
|
-
<tag k='name' v='p24' />
|
|
59
|
-
</node>
|
|
60
|
-
<node id='-440498' action='modify' visible='true' lat='43.60926807571' lon='3.884260391'>
|
|
61
|
-
<tag k='name' v='p16' />
|
|
62
|
-
</node>
|
|
63
|
-
<node id='-441184' action='modify' visible='true' lat='43.60932786117' lon='3.88427765877'>
|
|
64
|
-
<tag k='name' v='p18' />
|
|
65
|
-
</node>
|
|
66
|
-
<node id='-441187' action='modify' visible='true' lat='43.60933232537' lon='3.88424831515'>
|
|
67
|
-
<tag k='highway' v='elevator' />
|
|
68
|
-
<tag k='level' v='0;2' />
|
|
69
|
-
<tag k='name' v='p19' />
|
|
70
|
-
</node>
|
|
71
|
-
<node id='-441210' action='modify' visible='true' lat='43.60932786111' lon='3.8842776591'>
|
|
72
|
-
<tag k='name' v='p17' />
|
|
73
|
-
</node>
|
|
74
|
-
<node id='-441270' action='modify' visible='true' lat='43.6093032' lon='3.8844388'>
|
|
75
|
-
<tag k='name' v='p21' />
|
|
76
|
-
</node>
|
|
77
|
-
<node id='-441273' action='modify' visible='true' lat='43.6095297' lon='3.8845039'>
|
|
78
|
-
<tag k='name' v='p22' />
|
|
79
|
-
</node>
|
|
80
|
-
<node id='-441286' action='modify' visible='true' lat='43.6095624' lon='3.8845134'>
|
|
81
|
-
<tag k='name' v='p23' />
|
|
82
|
-
</node>
|
|
83
|
-
<way id='-440499' action='modify' visible='true'>
|
|
84
|
-
<nd ref='-440476' />
|
|
85
|
-
<nd ref='-440460' />
|
|
86
|
-
<nd ref='-440464' />
|
|
87
|
-
<nd ref='-440474' />
|
|
88
|
-
<tag k='highway' v='footway' />
|
|
89
|
-
<tag k='level' v='2' />
|
|
90
|
-
<tag k='name' v='w2' />
|
|
91
|
-
</way>
|
|
92
|
-
<way id='-440500' action='modify' visible='true'>
|
|
93
|
-
<nd ref='-440464' />
|
|
94
|
-
<nd ref='-440466' />
|
|
95
|
-
<nd ref='-440484' />
|
|
96
|
-
<nd ref='-441184' />
|
|
97
|
-
<nd ref='-440470' />
|
|
98
|
-
<nd ref='-440480' />
|
|
99
|
-
<tag k='highway' v='footway' />
|
|
100
|
-
<tag k='level' v='2' />
|
|
101
|
-
<tag k='name' v='w3' />
|
|
102
|
-
</way>
|
|
103
|
-
<way id='-440501' action='modify' visible='true'>
|
|
104
|
-
<nd ref='-440472' />
|
|
105
|
-
<nd ref='-440478' />
|
|
106
|
-
<nd ref='-440462' />
|
|
107
|
-
<nd ref='-440468' />
|
|
108
|
-
<nd ref='-440482' />
|
|
109
|
-
<nd ref='-440476' />
|
|
110
|
-
<nd ref='-440478' />
|
|
111
|
-
<tag k='highway' v='footway' />
|
|
112
|
-
<tag k='level' v='2' />
|
|
113
|
-
<tag k='name' v='w1' />
|
|
114
|
-
</way>
|
|
115
|
-
<way id='-440502' action='modify' visible='true'>
|
|
116
|
-
<nd ref='-440486' />
|
|
117
|
-
<nd ref='-440488' />
|
|
118
|
-
<nd ref='-440490' />
|
|
119
|
-
<nd ref='-440492' />
|
|
120
|
-
<tag k='highway' v='steps' />
|
|
121
|
-
<tag k='level' v='1;2' />
|
|
122
|
-
<tag k='name' v='w6' />
|
|
123
|
-
</way>
|
|
124
|
-
<way id='-440503' action='modify' visible='true'>
|
|
125
|
-
<nd ref='-440484' />
|
|
126
|
-
<nd ref='-440486' />
|
|
127
|
-
<tag k='highway' v='footway' />
|
|
128
|
-
<tag k='level' v='2' />
|
|
129
|
-
<tag k='name' v='w5' />
|
|
130
|
-
</way>
|
|
131
|
-
<way id='-440504' action='modify' visible='true'>
|
|
132
|
-
<nd ref='-440492' />
|
|
133
|
-
<nd ref='-440494' />
|
|
134
|
-
<nd ref='-441210' />
|
|
135
|
-
<nd ref='-440496' />
|
|
136
|
-
<tag k='highway' v='footway' />
|
|
137
|
-
<tag k='level' v='1' />
|
|
138
|
-
<tag k='name' v='w7' />
|
|
139
|
-
</way>
|
|
140
|
-
<way id='-440505' action='modify' visible='true'>
|
|
141
|
-
<nd ref='-440494' />
|
|
142
|
-
<nd ref='-440498' />
|
|
143
|
-
<tag k='highway' v='footway' />
|
|
144
|
-
<tag k='level' v='1' />
|
|
145
|
-
<tag k='name' v='w9' />
|
|
146
|
-
</way>
|
|
147
|
-
<way id='-441188' action='modify' visible='true'>
|
|
148
|
-
<nd ref='-441184' />
|
|
149
|
-
<nd ref='-441187' />
|
|
150
|
-
<tag k='highway' v='footway' />
|
|
151
|
-
<tag k='level' v='2' />
|
|
152
|
-
<tag k='name' v='w4' />
|
|
153
|
-
</way>
|
|
154
|
-
<way id='-441214' action='modify' visible='true'>
|
|
155
|
-
<nd ref='-441210' />
|
|
156
|
-
<nd ref='-441187' />
|
|
157
|
-
<tag k='highway' v='footway' />
|
|
158
|
-
<tag k='level' v='1' />
|
|
159
|
-
<tag k='name' v='w8' />
|
|
160
|
-
</way>
|
|
161
|
-
<way id='-441263' action='modify' visible='true'>
|
|
162
|
-
<nd ref='-441187' />
|
|
163
|
-
<nd ref='-441270' />
|
|
164
|
-
<nd ref='-441273' />
|
|
165
|
-
<tag k='highway' v='footway' />
|
|
166
|
-
<tag k='level' v='0' />
|
|
167
|
-
<tag k='name' v='w10' />
|
|
168
|
-
</way>
|
|
169
|
-
<way id='-441268' action='modify' visible='true'>
|
|
170
|
-
<nd ref='-441273' />
|
|
171
|
-
<nd ref='-441286' />
|
|
172
|
-
<tag k='highway' v='footway' />
|
|
173
|
-
</way>
|
|
174
|
-
</osm>
|