@osmix/core 0.1.10 → 0.2.0
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/CHANGELOG.md +25 -0
- package/LICENSE +21 -0
- package/README.md +86 -69
- package/dist/contracts.d.ts +26 -0
- package/dist/contracts.d.ts.map +1 -0
- package/dist/contracts.js +1 -0
- package/dist/contracts.js.map +1 -0
- package/dist/entities.d.ts +1 -1
- package/dist/entities.d.ts.map +1 -1
- package/dist/entities.js +2 -7
- package/dist/entities.js.map +1 -1
- package/dist/ids.d.ts +2 -0
- package/dist/ids.d.ts.map +1 -1
- package/dist/ids.js +23 -15
- package/dist/ids.js.map +1 -1
- package/dist/index.d.ts +1 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +0 -1
- package/dist/index.js.map +1 -1
- package/dist/mocks.d.ts.map +1 -1
- package/dist/mocks.js.map +1 -1
- package/dist/nodes.d.ts +9 -3
- package/dist/nodes.d.ts.map +1 -1
- package/dist/nodes.js +6 -13
- package/dist/nodes.js.map +1 -1
- package/dist/osm.d.ts +1 -1
- package/dist/osm.d.ts.map +1 -1
- package/dist/osm.js +1 -4
- package/dist/osm.js.map +1 -1
- package/dist/relations.d.ts +3 -2
- package/dist/relations.d.ts.map +1 -1
- package/dist/relations.js +15 -9
- package/dist/relations.js.map +1 -1
- package/dist/stringtable.d.ts.map +1 -1
- package/dist/stringtable.js +4 -13
- package/dist/stringtable.js.map +1 -1
- package/dist/tags.d.ts +1 -1
- package/dist/tags.d.ts.map +1 -1
- package/dist/tags.js.map +1 -1
- package/dist/typed-arrays.d.ts.map +1 -1
- package/dist/typed-arrays.js.map +1 -1
- package/dist/ways.d.ts +2 -1
- package/dist/ways.d.ts.map +1 -1
- package/dist/ways.js +18 -18
- package/dist/ways.js.map +1 -1
- package/package.json +46 -31
- package/src/contracts.ts +28 -0
- package/src/entities.ts +179 -194
- package/src/ids.ts +228 -235
- package/src/index.ts +12 -9
- package/src/mocks.ts +114 -113
- package/src/nodes.ts +364 -397
- package/src/osm.ts +196 -207
- package/src/relations.ts +530 -558
- package/src/stringtable.ts +174 -183
- package/src/tags.ts +263 -271
- package/src/typed-arrays.ts +184 -194
- package/src/types/geoflatbush.d.ts +28 -33
- package/src/types/geokdbush.d.ts +28 -33
- package/src/types/kdbush.d.ts +34 -34
- package/src/ways.ts +381 -405
- package/test/ids.bench.ts +29 -0
- package/test/ids.test.ts +84 -0
- package/test/memory.test.ts +29 -30
- package/test/relations.bench.ts +27 -0
- package/test/relations.test.ts +101 -0
- package/test/tags-search.test.ts +76 -56
- package/test/typed-arrays.test.ts +100 -99
- package/tsconfig.build.json +6 -6
- package/tsconfig.json +7 -7
package/src/mocks.ts
CHANGED
|
@@ -1,49 +1,50 @@
|
|
|
1
|
-
import type { OsmNode } from "@osmix/
|
|
2
|
-
import { Osm } from "./osm.ts"
|
|
1
|
+
import type { OsmNode } from "@osmix/types";
|
|
3
2
|
|
|
4
|
-
|
|
5
|
-
const YAKIM_LON = -120.505898
|
|
3
|
+
import { Osm } from "./osm.ts";
|
|
6
4
|
|
|
7
|
-
const
|
|
8
|
-
const
|
|
5
|
+
const YAKIM_LAT = 46.60207;
|
|
6
|
+
const YAKIM_LON = -120.505898;
|
|
7
|
+
|
|
8
|
+
const ONE_KM_LON = 0.0131; // approximately
|
|
9
|
+
const ONE_KM_LAT = 0.009;
|
|
9
10
|
|
|
10
11
|
const node0: OsmNode = {
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
}
|
|
12
|
+
id: 0,
|
|
13
|
+
lat: YAKIM_LAT,
|
|
14
|
+
lon: YAKIM_LON,
|
|
15
|
+
};
|
|
15
16
|
|
|
16
17
|
const node1: OsmNode = {
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
}
|
|
18
|
+
id: 1,
|
|
19
|
+
lat: YAKIM_LAT,
|
|
20
|
+
lon: YAKIM_LON - ONE_KM_LON, // approximately 1km west
|
|
21
|
+
};
|
|
21
22
|
|
|
22
23
|
function addBaseNodes(osm: Osm) {
|
|
23
|
-
|
|
24
|
-
|
|
24
|
+
osm.nodes.addNode(node0);
|
|
25
|
+
osm.nodes.addNode(node1);
|
|
25
26
|
}
|
|
26
27
|
|
|
27
28
|
function addBaseWays(osm: Osm) {
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
29
|
+
osm.ways.addWay({
|
|
30
|
+
id: 1,
|
|
31
|
+
refs: [0, 1],
|
|
32
|
+
tags: {
|
|
33
|
+
highway: "primary",
|
|
34
|
+
},
|
|
35
|
+
});
|
|
35
36
|
}
|
|
36
37
|
|
|
37
38
|
/**
|
|
38
39
|
* Create a base OSM with one way and two nodes.
|
|
39
40
|
*/
|
|
40
41
|
export function createMockBaseOsm(): Osm {
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
42
|
+
const base = new Osm();
|
|
43
|
+
addBaseNodes(base);
|
|
44
|
+
base.nodes.buildIndex();
|
|
45
|
+
addBaseWays(base);
|
|
46
|
+
base.buildIndexes();
|
|
47
|
+
return base;
|
|
47
48
|
}
|
|
48
49
|
|
|
49
50
|
/**
|
|
@@ -53,88 +54,88 @@ export function createMockBaseOsm(): Osm {
|
|
|
53
54
|
* - A way that crosses over the first way, but does not share a node and so starts disconnected
|
|
54
55
|
*/
|
|
55
56
|
export function createMockPatchOsm(): Osm {
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
57
|
+
const osm = new Osm();
|
|
58
|
+
|
|
59
|
+
addBaseNodes(osm);
|
|
60
|
+
|
|
61
|
+
// Add way the connects with base way node 0 (will replace it)
|
|
62
|
+
osm.nodes.addNode({
|
|
63
|
+
...node0,
|
|
64
|
+
id: 2,
|
|
65
|
+
tags: {
|
|
66
|
+
crossing: "yes",
|
|
67
|
+
},
|
|
68
|
+
});
|
|
69
|
+
osm.nodes.addNode({
|
|
70
|
+
...node1,
|
|
71
|
+
id: 3,
|
|
72
|
+
lon: YAKIM_LON + ONE_KM_LON, // ends 1km east of the center point
|
|
73
|
+
});
|
|
74
|
+
|
|
75
|
+
// Add nodes for disconnected way
|
|
76
|
+
osm.nodes.addNode({
|
|
77
|
+
id: 4,
|
|
78
|
+
lat: YAKIM_LAT - ONE_KM_LAT, // 1km south
|
|
79
|
+
lon: YAKIM_LON + ONE_KM_LON / 4, // 250m east
|
|
80
|
+
});
|
|
81
|
+
osm.nodes.addNode({
|
|
82
|
+
id: 5,
|
|
83
|
+
lat: YAKIM_LAT + ONE_KM_LAT, // 1km north
|
|
84
|
+
lon: YAKIM_LON + ONE_KM_LON / 4, // 250m east
|
|
85
|
+
});
|
|
86
|
+
|
|
87
|
+
// Add nodes for crossing way
|
|
88
|
+
osm.nodes.addNode({
|
|
89
|
+
id: 6,
|
|
90
|
+
lat: YAKIM_LAT - ONE_KM_LAT, // 1km south
|
|
91
|
+
lon: YAKIM_LON + ONE_KM_LON / 2, // 500m east
|
|
92
|
+
});
|
|
93
|
+
osm.nodes.addNode({
|
|
94
|
+
id: 7,
|
|
95
|
+
lat: YAKIM_LAT + ONE_KM_LAT, // 1km north
|
|
96
|
+
lon: YAKIM_LON + ONE_KM_LON / 2, // 500m east
|
|
97
|
+
});
|
|
98
|
+
|
|
99
|
+
osm.nodes.buildIndex();
|
|
100
|
+
|
|
101
|
+
// Add same base way with new tags
|
|
102
|
+
osm.ways.addWay({
|
|
103
|
+
id: 1,
|
|
104
|
+
refs: [0, 1],
|
|
105
|
+
tags: {
|
|
106
|
+
highway: "primary",
|
|
107
|
+
version: "2",
|
|
108
|
+
},
|
|
109
|
+
});
|
|
110
|
+
|
|
111
|
+
// Add way that overlaps with base way node 1. Node should be de-duplicated.
|
|
112
|
+
osm.ways.addWay({
|
|
113
|
+
id: 2,
|
|
114
|
+
refs: [2, 3],
|
|
115
|
+
tags: {
|
|
116
|
+
highway: "secondary",
|
|
117
|
+
},
|
|
118
|
+
});
|
|
119
|
+
|
|
120
|
+
// Add way that crosses way 2, and should generate 1 intersection.
|
|
121
|
+
osm.ways.addWay({
|
|
122
|
+
id: 3,
|
|
123
|
+
refs: [4, 5],
|
|
124
|
+
tags: {
|
|
125
|
+
highway: "primary",
|
|
126
|
+
},
|
|
127
|
+
});
|
|
128
|
+
|
|
129
|
+
// Add a way that crosses way 2, but has a tag indicating it is an underpass and should be left alone
|
|
130
|
+
osm.ways.addWay({
|
|
131
|
+
id: 4,
|
|
132
|
+
refs: [6, 7],
|
|
133
|
+
tags: {
|
|
134
|
+
highway: "underpass",
|
|
135
|
+
tunnel: "yes",
|
|
136
|
+
},
|
|
137
|
+
});
|
|
138
|
+
|
|
139
|
+
osm.buildIndexes();
|
|
140
|
+
return osm;
|
|
140
141
|
}
|