@osmix/core 0.1.3 → 0.1.6
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/dist/entities.d.ts +1 -1
- package/dist/entities.d.ts.map +1 -1
- package/dist/ids.d.ts +1 -1
- package/dist/ids.d.ts.map +1 -1
- package/dist/ids.js +1 -2
- 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 -4
- package/dist/index.js.map +1 -1
- package/dist/nodes.d.ts +1 -1
- package/dist/nodes.d.ts.map +1 -1
- package/dist/nodes.js.map +1 -1
- package/dist/osm.d.ts.map +1 -1
- package/dist/osm.js +1 -1
- package/dist/osm.js.map +1 -1
- package/dist/relations.d.ts +1 -1
- package/dist/relations.d.ts.map +1 -1
- package/dist/relations.js +1 -1
- package/dist/relations.js.map +1 -1
- package/dist/stringtable.d.ts +1 -1
- package/dist/stringtable.d.ts.map +1 -1
- 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 +2 -2
- package/dist/ways.d.ts +1 -1
- package/dist/ways.d.ts.map +1 -1
- package/dist/ways.js +0 -7
- package/dist/ways.js.map +1 -1
- package/package.json +22 -20
- package/src/entities.ts +1 -1
- package/src/ids.ts +2 -3
- package/src/index.ts +1 -1
- package/src/nodes.ts +1 -1
- package/src/osm.ts +1 -1
- package/src/relations.ts +2 -1
- package/src/stringtable.ts +1 -1
- package/src/tags.ts +1 -1
- package/src/ways.ts +1 -8
- package/CHANGELOG.md +0 -97
- package/dist/src/entities.d.ts +0 -120
- package/dist/src/entities.d.ts.map +0 -1
- package/dist/src/entities.js +0 -159
- package/dist/src/entities.js.map +0 -1
- package/dist/src/ids.d.ts +0 -119
- package/dist/src/ids.d.ts.map +0 -1
- package/dist/src/ids.js +0 -243
- package/dist/src/ids.js.map +0 -1
- package/dist/src/index.d.ts +0 -32
- package/dist/src/index.d.ts.map +0 -1
- package/dist/src/index.js +0 -35
- package/dist/src/index.js.map +0 -1
- package/dist/src/nodes.d.ts +0 -106
- package/dist/src/nodes.d.ts.map +0 -1
- package/dist/src/nodes.js +0 -318
- package/dist/src/nodes.js.map +0 -1
- package/dist/src/osm.d.ts +0 -99
- package/dist/src/osm.d.ts.map +0 -1
- package/dist/src/osm.js +0 -165
- package/dist/src/osm.js.map +0 -1
- package/dist/src/relations.d.ts +0 -123
- package/dist/src/relations.d.ts.map +0 -1
- package/dist/src/relations.js +0 -424
- package/dist/src/relations.js.map +0 -1
- package/dist/src/stringtable.d.ts +0 -101
- package/dist/src/stringtable.d.ts.map +0 -1
- package/dist/src/stringtable.js +0 -180
- package/dist/src/stringtable.js.map +0 -1
- package/dist/src/tags.d.ts +0 -132
- package/dist/src/tags.d.ts.map +0 -1
- package/dist/src/tags.js +0 -239
- package/dist/src/tags.js.map +0 -1
- package/dist/src/typed-arrays.d.ts +0 -124
- package/dist/src/typed-arrays.d.ts.map +0 -1
- package/dist/src/typed-arrays.js +0 -198
- package/dist/src/typed-arrays.js.map +0 -1
- package/dist/src/utils.d.ts +0 -38
- package/dist/src/utils.d.ts.map +0 -1
- package/dist/src/utils.js +0 -87
- package/dist/src/utils.js.map +0 -1
- package/dist/src/ways.d.ts +0 -106
- package/dist/src/ways.d.ts.map +0 -1
- package/dist/src/ways.js +0 -346
- package/dist/src/ways.js.map +0 -1
- package/dist/test/memory.test.d.ts +0 -7
- package/dist/test/memory.test.d.ts.map +0 -1
- package/dist/test/memory.test.js +0 -29
- package/dist/test/memory.test.js.map +0 -1
- package/dist/test/mock-osm.d.ts +0 -13
- package/dist/test/mock-osm.d.ts.map +0 -1
- package/dist/test/mock-osm.js +0 -122
- package/dist/test/mock-osm.js.map +0 -1
- package/dist/test/tags-search.test.d.ts +0 -2
- package/dist/test/tags-search.test.d.ts.map +0 -1
- package/dist/test/tags-search.test.js +0 -56
- package/dist/test/tags-search.test.js.map +0 -1
- package/dist/test/typed-arrays.test.d.ts +0 -2
- package/dist/test/typed-arrays.test.d.ts.map +0 -1
- package/dist/test/typed-arrays.test.js +0 -102
- package/dist/test/typed-arrays.test.js.map +0 -1
- package/dist/utils.d.ts +0 -38
- package/dist/utils.d.ts.map +0 -1
- package/dist/utils.js +0 -87
- package/dist/utils.js.map +0 -1
- package/src/utils.ts +0 -95
- package/tsconfig.build.json +0 -5
- package/tsconfig.json +0 -9
package/dist/src/ways.js
DELETED
|
@@ -1,346 +0,0 @@
|
|
|
1
|
-
import Flatbush from "flatbush";
|
|
2
|
-
import { around as geoAround } from "geoflatbush";
|
|
3
|
-
import { Entities } from "./entities";
|
|
4
|
-
import { Ids } from "./ids";
|
|
5
|
-
import { Tags } from "./tags";
|
|
6
|
-
import { BufferConstructor, IdArrayType, ResizeableTypedArray as RTA, } from "./typed-arrays";
|
|
7
|
-
export class Ways extends Entities {
|
|
8
|
-
spatialIndex = new Flatbush(1);
|
|
9
|
-
// Track if spatial index was properly built (vs default empty)
|
|
10
|
-
spatialIndexBuilt = false;
|
|
11
|
-
refStart;
|
|
12
|
-
refCount; // Maximum 2,000 nodes per way
|
|
13
|
-
// Node IDs
|
|
14
|
-
refs;
|
|
15
|
-
// Bounding box of the way in geographic coordinates
|
|
16
|
-
bbox;
|
|
17
|
-
// Node reference index
|
|
18
|
-
nodes;
|
|
19
|
-
/**
|
|
20
|
-
* Create a new Ways index.
|
|
21
|
-
*/
|
|
22
|
-
constructor(stringTable, nodes, transferables) {
|
|
23
|
-
if (transferables) {
|
|
24
|
-
super("way", new Ids(transferables), new Tags(stringTable, transferables));
|
|
25
|
-
this.refStart = RTA.from(Uint32Array, transferables.refStart);
|
|
26
|
-
this.refCount = RTA.from(Uint16Array, transferables.refCount);
|
|
27
|
-
this.refs = RTA.from(IdArrayType, transferables.refs);
|
|
28
|
-
this.bbox = RTA.from(Float64Array, transferables.bbox);
|
|
29
|
-
// Only load spatial index if provided (not stored in IndexedDB)
|
|
30
|
-
if (transferables.spatialIndex?.byteLength) {
|
|
31
|
-
this.spatialIndex = Flatbush.from(transferables.spatialIndex);
|
|
32
|
-
this.spatialIndexBuilt = true;
|
|
33
|
-
}
|
|
34
|
-
this.indexBuilt = true;
|
|
35
|
-
}
|
|
36
|
-
else {
|
|
37
|
-
super("way", new Ids(), new Tags(stringTable));
|
|
38
|
-
this.refStart = new RTA(Uint32Array);
|
|
39
|
-
this.refCount = new RTA(Uint16Array);
|
|
40
|
-
this.refs = new RTA(IdArrayType);
|
|
41
|
-
this.bbox = new RTA(Float64Array);
|
|
42
|
-
}
|
|
43
|
-
this.nodes = nodes;
|
|
44
|
-
}
|
|
45
|
-
/**
|
|
46
|
-
* Add a single way to the index.
|
|
47
|
-
*/
|
|
48
|
-
addWay(way) {
|
|
49
|
-
const wayIndex = this.addEntity(way.id, way.tags ?? {});
|
|
50
|
-
this.refStart.push(this.refs.length);
|
|
51
|
-
this.refCount.push(way.refs.length);
|
|
52
|
-
for (const ref of way.refs)
|
|
53
|
-
this.refs.push(ref);
|
|
54
|
-
return wayIndex;
|
|
55
|
-
}
|
|
56
|
-
/**
|
|
57
|
-
* Bulk add ways directly from a PBF PrimitiveBlock.
|
|
58
|
-
*/
|
|
59
|
-
addWays(ways, blockStringIndexMap, filter) {
|
|
60
|
-
let added = 0;
|
|
61
|
-
for (const way of ways) {
|
|
62
|
-
let prevRefId = 0;
|
|
63
|
-
const refs = way.refs.map((refId) => {
|
|
64
|
-
prevRefId += refId;
|
|
65
|
-
return prevRefId;
|
|
66
|
-
});
|
|
67
|
-
const filteredWay = filter
|
|
68
|
-
? filter({
|
|
69
|
-
id: way.id,
|
|
70
|
-
refs,
|
|
71
|
-
tags: this.tags.getTagsFromIndices(way.keys, way.vals),
|
|
72
|
-
})
|
|
73
|
-
: null;
|
|
74
|
-
if (filter && filteredWay === null)
|
|
75
|
-
continue;
|
|
76
|
-
const tagKeys = way.keys.map((key) => {
|
|
77
|
-
const index = blockStringIndexMap[key];
|
|
78
|
-
if (index === undefined)
|
|
79
|
-
throw Error("Tag key not found");
|
|
80
|
-
return index;
|
|
81
|
-
});
|
|
82
|
-
const tagValues = way.vals.map((val) => {
|
|
83
|
-
const index = blockStringIndexMap[val];
|
|
84
|
-
if (index === undefined)
|
|
85
|
-
throw Error("Tag value not found");
|
|
86
|
-
return index;
|
|
87
|
-
});
|
|
88
|
-
this.addEntity(way.id, tagKeys, tagValues);
|
|
89
|
-
this.refStart.push(this.refs.length);
|
|
90
|
-
this.refCount.push(filteredWay?.refs.length ?? refs.length);
|
|
91
|
-
this.refs.pushMany(filteredWay?.refs ?? refs);
|
|
92
|
-
added++;
|
|
93
|
-
}
|
|
94
|
-
return added;
|
|
95
|
-
}
|
|
96
|
-
/**
|
|
97
|
-
* Compact the internal arrays to free up memory.
|
|
98
|
-
*/
|
|
99
|
-
buildEntityIndex() {
|
|
100
|
-
this.refStart.compact();
|
|
101
|
-
this.refCount.compact();
|
|
102
|
-
this.refs.compact();
|
|
103
|
-
}
|
|
104
|
-
/**
|
|
105
|
-
* Build the spatial index for ways.
|
|
106
|
-
* If bbox data already exists (e.g., loaded from storage), reuses it.
|
|
107
|
-
*/
|
|
108
|
-
buildSpatialIndex() {
|
|
109
|
-
if (!this.nodes.isReady())
|
|
110
|
-
throw Error("Node index is not ready.");
|
|
111
|
-
if (this.size === 0)
|
|
112
|
-
return this.spatialIndex;
|
|
113
|
-
console.time("WayIndex.buildSpatialIndex");
|
|
114
|
-
this.spatialIndex = new Flatbush(this.size, 128, Float64Array, BufferConstructor);
|
|
115
|
-
// If bbox already has data (loaded from storage), use it directly
|
|
116
|
-
const hasBboxData = this.bbox.length >= this.size * 4;
|
|
117
|
-
for (let i = 0; i < this.size; i++) {
|
|
118
|
-
let minX;
|
|
119
|
-
let minY;
|
|
120
|
-
let maxX;
|
|
121
|
-
let maxY;
|
|
122
|
-
if (hasBboxData) {
|
|
123
|
-
// Use stored bbox values
|
|
124
|
-
minX = this.bbox.at(i * 4);
|
|
125
|
-
minY = this.bbox.at(i * 4 + 1);
|
|
126
|
-
maxX = this.bbox.at(i * 4 + 2);
|
|
127
|
-
maxY = this.bbox.at(i * 4 + 3);
|
|
128
|
-
}
|
|
129
|
-
else {
|
|
130
|
-
// Calculate bbox from node coordinates
|
|
131
|
-
minX = Number.POSITIVE_INFINITY;
|
|
132
|
-
minY = Number.POSITIVE_INFINITY;
|
|
133
|
-
maxX = Number.NEGATIVE_INFINITY;
|
|
134
|
-
maxY = Number.NEGATIVE_INFINITY;
|
|
135
|
-
const start = this.refStart.at(i);
|
|
136
|
-
const count = this.refCount.at(i);
|
|
137
|
-
for (let j = start; j < start + count; j++) {
|
|
138
|
-
const refId = this.refs.at(j);
|
|
139
|
-
const [lon, lat] = this.nodes.getNodeLonLat({ id: refId });
|
|
140
|
-
if (lon < minX)
|
|
141
|
-
minX = lon;
|
|
142
|
-
if (lon > maxX)
|
|
143
|
-
maxX = lon;
|
|
144
|
-
if (lat < minY)
|
|
145
|
-
minY = lat;
|
|
146
|
-
if (lat > maxY)
|
|
147
|
-
maxY = lat;
|
|
148
|
-
}
|
|
149
|
-
this.bbox.push(minX);
|
|
150
|
-
this.bbox.push(minY);
|
|
151
|
-
this.bbox.push(maxX);
|
|
152
|
-
this.bbox.push(maxY);
|
|
153
|
-
}
|
|
154
|
-
this.spatialIndex.add(minX, minY, maxX, maxY);
|
|
155
|
-
}
|
|
156
|
-
// Compact bbox if we just calculated it
|
|
157
|
-
if (!hasBboxData) {
|
|
158
|
-
this.bbox.compact();
|
|
159
|
-
}
|
|
160
|
-
this.spatialIndex.finish();
|
|
161
|
-
this.spatialIndexBuilt = true;
|
|
162
|
-
console.timeEnd("WayIndex.buildSpatialIndex");
|
|
163
|
-
return this.spatialIndex;
|
|
164
|
-
}
|
|
165
|
-
/**
|
|
166
|
-
* Check if the spatial index has been built.
|
|
167
|
-
*/
|
|
168
|
-
hasSpatialIndex() {
|
|
169
|
-
return this.spatialIndexBuilt;
|
|
170
|
-
}
|
|
171
|
-
/**
|
|
172
|
-
* Get the full way entity.
|
|
173
|
-
*/
|
|
174
|
-
getFullEntity(index, id, tags) {
|
|
175
|
-
return {
|
|
176
|
-
id,
|
|
177
|
-
refs: [...this.getRefIds(index)],
|
|
178
|
-
tags,
|
|
179
|
-
};
|
|
180
|
-
}
|
|
181
|
-
/**
|
|
182
|
-
* Get the node IDs referenced by a way.
|
|
183
|
-
*/
|
|
184
|
-
getRefIds(index) {
|
|
185
|
-
const start = this.refStart.at(index);
|
|
186
|
-
const count = this.refCount.at(index);
|
|
187
|
-
return Array.from(this.refs.slice(start, start + count));
|
|
188
|
-
}
|
|
189
|
-
/**
|
|
190
|
-
* Get the bounding box of a way.
|
|
191
|
-
*/
|
|
192
|
-
getEntityBbox(idOrIndex) {
|
|
193
|
-
const index = "index" in idOrIndex ? idOrIndex.index : this.ids.idOrIndex(idOrIndex)[0];
|
|
194
|
-
return [
|
|
195
|
-
this.bbox.at(index * 4),
|
|
196
|
-
this.bbox.at(index * 4 + 1),
|
|
197
|
-
this.bbox.at(index * 4 + 2),
|
|
198
|
-
this.bbox.at(index * 4 + 3),
|
|
199
|
-
];
|
|
200
|
-
}
|
|
201
|
-
/**
|
|
202
|
-
* Get the coordinates of a way as a flat array.
|
|
203
|
-
*/
|
|
204
|
-
getLine(index) {
|
|
205
|
-
const count = this.refCount.at(index);
|
|
206
|
-
const start = this.refStart.at(index);
|
|
207
|
-
const line = new Float64Array(count * 2);
|
|
208
|
-
for (let i = 0; i < count; i++) {
|
|
209
|
-
const ref = this.refs.at(start + i);
|
|
210
|
-
const [lon, lat] = this.nodes.getNodeLonLat({ id: ref });
|
|
211
|
-
line[i * 2] = lon;
|
|
212
|
-
line[i * 2 + 1] = lat;
|
|
213
|
-
}
|
|
214
|
-
return line;
|
|
215
|
-
}
|
|
216
|
-
/**
|
|
217
|
-
* Get the coordinates of a way as an array of [lon, lat] pairs.
|
|
218
|
-
*/
|
|
219
|
-
getCoordinates(index) {
|
|
220
|
-
const count = this.refCount.at(index);
|
|
221
|
-
const start = this.refStart.at(index);
|
|
222
|
-
const coords = [];
|
|
223
|
-
for (let refIndex = start; refIndex < start + count; refIndex++) {
|
|
224
|
-
const ref = this.refs.at(refIndex);
|
|
225
|
-
const coord = this.nodes.getNodeLonLat({ id: ref });
|
|
226
|
-
if (coord === undefined ||
|
|
227
|
-
coord[0] === undefined ||
|
|
228
|
-
coord[1] === undefined) {
|
|
229
|
-
console.error("node index has ref", this.nodes.ids.has(ref));
|
|
230
|
-
throw Error(`Invalid coordinate for way id ${this.ids.at(index)}, index ${index}, node ref ${ref}, ref index ${refIndex}`);
|
|
231
|
-
}
|
|
232
|
-
coords.push(coord);
|
|
233
|
-
}
|
|
234
|
-
return coords;
|
|
235
|
-
}
|
|
236
|
-
/**
|
|
237
|
-
* Find way indexes that intersect a bounding box.
|
|
238
|
-
*/
|
|
239
|
-
intersects(bbox, filterFn) {
|
|
240
|
-
if (this.size === 0)
|
|
241
|
-
return [];
|
|
242
|
-
return this.spatialIndex.search(bbox[0], bbox[1], bbox[2], bbox[3], filterFn);
|
|
243
|
-
}
|
|
244
|
-
/**
|
|
245
|
-
* Find way indexes near a point using great-circle distance.
|
|
246
|
-
* @param lon - Longitude in degrees.
|
|
247
|
-
* @param lat - Latitude in degrees.
|
|
248
|
-
* @param maxResults - Maximum number of results to return.
|
|
249
|
-
* @param maxDistanceKm - Maximum distance in kilometers.
|
|
250
|
-
* @returns Array of way indexes sorted by distance.
|
|
251
|
-
*/
|
|
252
|
-
neighbors(lon, lat, maxResults, maxDistanceKm) {
|
|
253
|
-
if (this.size === 0)
|
|
254
|
-
return [];
|
|
255
|
-
// Use geoflatbush for proper geographic distance calculations
|
|
256
|
-
return geoAround(this.spatialIndex, lon, lat, maxResults, maxDistanceKm);
|
|
257
|
-
}
|
|
258
|
-
/**
|
|
259
|
-
* Get ways within a bounding box.
|
|
260
|
-
*/
|
|
261
|
-
withinBbox(bbox, include) {
|
|
262
|
-
console.time("Ways.withinBbox");
|
|
263
|
-
const wayCandidates = this.intersects(bbox, include);
|
|
264
|
-
const ids = new Float64Array(wayCandidates.length);
|
|
265
|
-
const wayPositions = [];
|
|
266
|
-
const wayStartIndices = new Uint32Array(wayCandidates.length + 1);
|
|
267
|
-
wayStartIndices[0] = 0;
|
|
268
|
-
console.time("Ways.withinBbox.loop");
|
|
269
|
-
let size = 0;
|
|
270
|
-
wayCandidates.forEach((wayIndex, i) => {
|
|
271
|
-
ids[i] = this.ids.at(wayIndex);
|
|
272
|
-
const way = this.getLine(wayIndex);
|
|
273
|
-
size += way.length;
|
|
274
|
-
wayPositions.push(way);
|
|
275
|
-
const prevIndex = wayStartIndices[i];
|
|
276
|
-
if (prevIndex === undefined)
|
|
277
|
-
throw Error("Previous index is undefined");
|
|
278
|
-
wayStartIndices[i + 1] = prevIndex + way.length / 2;
|
|
279
|
-
});
|
|
280
|
-
console.timeEnd("Ways.withinBbox.loop");
|
|
281
|
-
const wayPositionsArray = new Float64Array(size);
|
|
282
|
-
let pIndex = 0;
|
|
283
|
-
for (const way of wayPositions) {
|
|
284
|
-
wayPositionsArray.set(way, pIndex);
|
|
285
|
-
pIndex += way.length;
|
|
286
|
-
}
|
|
287
|
-
console.timeEnd("Ways.withinBbox");
|
|
288
|
-
return {
|
|
289
|
-
ids,
|
|
290
|
-
positions: wayPositionsArray,
|
|
291
|
-
startIndices: wayStartIndices,
|
|
292
|
-
};
|
|
293
|
-
}
|
|
294
|
-
/**
|
|
295
|
-
* Get transferable objects for passing to another thread.
|
|
296
|
-
* Only includes spatialIndex if it has been built.
|
|
297
|
-
*/
|
|
298
|
-
transferables() {
|
|
299
|
-
const base = {
|
|
300
|
-
...super.transferables(),
|
|
301
|
-
refStart: this.refStart.array.buffer,
|
|
302
|
-
refCount: this.refCount.array.buffer,
|
|
303
|
-
refs: this.refs.array.buffer,
|
|
304
|
-
bbox: this.bbox.array.buffer,
|
|
305
|
-
};
|
|
306
|
-
// Only include spatial index if it was built
|
|
307
|
-
if (this.spatialIndexBuilt) {
|
|
308
|
-
return { ...base, spatialIndex: this.spatialIndex.data };
|
|
309
|
-
}
|
|
310
|
-
return base;
|
|
311
|
-
}
|
|
312
|
-
/**
|
|
313
|
-
* Get the approximate memory requirements for a given number of ways in bytes.
|
|
314
|
-
*/
|
|
315
|
-
static getBytesRequired(count) {
|
|
316
|
-
if (count === 0)
|
|
317
|
-
return 0;
|
|
318
|
-
// Approximate nodes per way
|
|
319
|
-
let numNodes = count;
|
|
320
|
-
let n = count;
|
|
321
|
-
while (n !== 1) {
|
|
322
|
-
n = Math.ceil(n / 128);
|
|
323
|
-
numNodes += n;
|
|
324
|
-
}
|
|
325
|
-
const indexBytes = (numNodes < 16384 ? 2 : 4) * numNodes;
|
|
326
|
-
const boxesBytes = numNodes * 4 * Float64Array.BYTES_PER_ELEMENT;
|
|
327
|
-
const spatialIndexBytes = 8 + indexBytes + boxesBytes;
|
|
328
|
-
return (Ids.getBytesRequired(count) +
|
|
329
|
-
Tags.getBytesRequired(count) +
|
|
330
|
-
count * Uint32Array.BYTES_PER_ELEMENT + // refStart
|
|
331
|
-
count * Uint16Array.BYTES_PER_ELEMENT + // refCount
|
|
332
|
-
count * 4 * Float64Array.BYTES_PER_ELEMENT + // bbox
|
|
333
|
-
spatialIndexBytes);
|
|
334
|
-
}
|
|
335
|
-
/**
|
|
336
|
-
* Update a ContentHasher with way-specific data (node references).
|
|
337
|
-
*/
|
|
338
|
-
updateHash(hasher) {
|
|
339
|
-
return super
|
|
340
|
-
.updateHash(hasher)
|
|
341
|
-
.update(this.refStart.array)
|
|
342
|
-
.update(this.refCount.array)
|
|
343
|
-
.update(this.refs.array);
|
|
344
|
-
}
|
|
345
|
-
}
|
|
346
|
-
//# sourceMappingURL=ways.js.map
|
package/dist/src/ways.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"ways.js","sourceRoot":"","sources":["../../src/ways.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"memory.test.d.ts","sourceRoot":"","sources":["../../test/memory.test.ts"],"names":[],"mappings":"AAGA,wBAAgB,4BAA4B,CAC3C,SAAS,EAAE,MAAM,EACjB,QAAQ,EAAE,MAAM,EAChB,aAAa,EAAE,MAAM;;;;;EAYrB"}
|
package/dist/test/memory.test.js
DELETED
|
@@ -1,29 +0,0 @@
|
|
|
1
|
-
import { describe, expect, it } from "bun:test";
|
|
2
|
-
import { Nodes, Relations, Ways } from "../src";
|
|
3
|
-
export function getOsmCoreMemoryRequirements(nodeCount, wayCount, relationCount) {
|
|
4
|
-
const nodesBytes = Nodes.getBytesRequired(nodeCount);
|
|
5
|
-
const waysBytes = Ways.getBytesRequired(wayCount);
|
|
6
|
-
const relationsBytes = Relations.getBytesRequired(relationCount);
|
|
7
|
-
return {
|
|
8
|
-
nodes: nodesBytes,
|
|
9
|
-
ways: waysBytes,
|
|
10
|
-
relations: relationsBytes,
|
|
11
|
-
total: nodesBytes + waysBytes + relationsBytes,
|
|
12
|
-
};
|
|
13
|
-
}
|
|
14
|
-
describe("Memory Requirements", () => {
|
|
15
|
-
it("computes memory requirements for small datasets", () => {
|
|
16
|
-
const breakdown = getOsmCoreMemoryRequirements(10, 2, 1);
|
|
17
|
-
expect(breakdown.nodes).toBeGreaterThan(0);
|
|
18
|
-
expect(breakdown.ways).toBeGreaterThan(0);
|
|
19
|
-
expect(breakdown.relations).toBeGreaterThan(0);
|
|
20
|
-
expect(breakdown.total).toBe(breakdown.nodes + breakdown.ways + breakdown.relations);
|
|
21
|
-
});
|
|
22
|
-
it("computes memory requirements for large datasets", () => {
|
|
23
|
-
const breakdown = getOsmCoreMemoryRequirements(70000, 20000, 0);
|
|
24
|
-
expect(breakdown.nodes).toBeGreaterThan(0);
|
|
25
|
-
expect(breakdown.ways).toBeGreaterThan(0);
|
|
26
|
-
expect(breakdown.total).toBe(breakdown.nodes + breakdown.ways);
|
|
27
|
-
});
|
|
28
|
-
});
|
|
29
|
-
//# sourceMappingURL=memory.test.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"memory.test.js","sourceRoot":"","sources":["../../test/memory.test.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,UAAU,CAAA;AAC/C,OAAO,EAAE,KAAK,EAAE,SAAS,EAAE,IAAI,EAAE,MAAM,QAAQ,CAAA;AAE/C,MAAM,UAAU,4BAA4B,CAC3C,SAAiB,EACjB,QAAgB,EAChB,aAAqB;IAErB,MAAM,UAAU,GAAG,KAAK,CAAC,gBAAgB,CAAC,SAAS,CAAC,CAAA;IACpD,MAAM,SAAS,GAAG,IAAI,CAAC,gBAAgB,CAAC,QAAQ,CAAC,CAAA;IACjD,MAAM,cAAc,GAAG,SAAS,CAAC,gBAAgB,CAAC,aAAa,CAAC,CAAA;IAEhE,OAAO;QACN,KAAK,EAAE,UAAU;QACjB,IAAI,EAAE,SAAS;QACf,SAAS,EAAE,cAAc;QACzB,KAAK,EAAE,UAAU,GAAG,SAAS,GAAG,cAAc;KAC9C,CAAA;AACF,CAAC;AAED,QAAQ,CAAC,qBAAqB,EAAE,GAAG,EAAE;IACpC,EAAE,CAAC,iDAAiD,EAAE,GAAG,EAAE;QAC1D,MAAM,SAAS,GAAG,4BAA4B,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,CAAA;QACxD,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,CAAA;QAC1C,MAAM,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,CAAA;QACzC,MAAM,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,CAAA;QAC9C,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,IAAI,CAC3B,SAAS,CAAC,KAAK,GAAG,SAAS,CAAC,IAAI,GAAG,SAAS,CAAC,SAAS,CACtD,CAAA;IACF,CAAC,CAAC,CAAA;IAEF,EAAE,CAAC,iDAAiD,EAAE,GAAG,EAAE;QAC1D,MAAM,SAAS,GAAG,4BAA4B,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,CAAA;QAC/D,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,CAAA;QAC1C,MAAM,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,CAAA;QACzC,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,KAAK,GAAG,SAAS,CAAC,IAAI,CAAC,CAAA;IAC/D,CAAC,CAAC,CAAA;AACH,CAAC,CAAC,CAAA"}
|
package/dist/test/mock-osm.d.ts
DELETED
|
@@ -1,13 +0,0 @@
|
|
|
1
|
-
import { Osm } from "../src/osm";
|
|
2
|
-
/**
|
|
3
|
-
* Create a base OSM with one way and two nodes.
|
|
4
|
-
*/
|
|
5
|
-
export declare function createBaseOsm(): Osm;
|
|
6
|
-
/**
|
|
7
|
-
* Create a patch OSM with:
|
|
8
|
-
* - The same way as the base OSM, with new tags
|
|
9
|
-
* - A way that has an overlapping node with the first way, but does not share a node and so starts disconnected
|
|
10
|
-
* - A way that crosses over the first way, but does not share a node and so starts disconnected
|
|
11
|
-
*/
|
|
12
|
-
export declare function createPatchOsm(): Osm;
|
|
13
|
-
//# sourceMappingURL=mock-osm.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"mock-osm.d.ts","sourceRoot":"","sources":["../../test/mock-osm.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,GAAG,EAAE,MAAM,YAAY,CAAA;AAmChC;;GAEG;AACH,wBAAgB,aAAa,IAAI,GAAG,CAOnC;AAED;;;;;GAKG;AACH,wBAAgB,cAAc,IAAI,GAAG,CAqFpC"}
|
package/dist/test/mock-osm.js
DELETED
|
@@ -1,122 +0,0 @@
|
|
|
1
|
-
import { Osm } from "../src/osm";
|
|
2
|
-
const YAKIM_LAT = 46.60207;
|
|
3
|
-
const YAKIM_LON = -120.505898;
|
|
4
|
-
const ONE_KM_LON = 0.0131; // approximately
|
|
5
|
-
const ONE_KM_LAT = 0.009;
|
|
6
|
-
const node0 = {
|
|
7
|
-
id: 0,
|
|
8
|
-
lat: YAKIM_LAT,
|
|
9
|
-
lon: YAKIM_LON,
|
|
10
|
-
};
|
|
11
|
-
const node1 = {
|
|
12
|
-
id: 1,
|
|
13
|
-
lat: YAKIM_LAT,
|
|
14
|
-
lon: YAKIM_LON - ONE_KM_LON, // approximately 1km west
|
|
15
|
-
};
|
|
16
|
-
function addBaseNodes(osm) {
|
|
17
|
-
osm.nodes.addNode(node0);
|
|
18
|
-
osm.nodes.addNode(node1);
|
|
19
|
-
}
|
|
20
|
-
function addBaseWays(osm) {
|
|
21
|
-
osm.ways.addWay({
|
|
22
|
-
id: 1,
|
|
23
|
-
refs: [0, 1],
|
|
24
|
-
tags: {
|
|
25
|
-
highway: "primary",
|
|
26
|
-
},
|
|
27
|
-
});
|
|
28
|
-
}
|
|
29
|
-
/**
|
|
30
|
-
* Create a base OSM with one way and two nodes.
|
|
31
|
-
*/
|
|
32
|
-
export function createBaseOsm() {
|
|
33
|
-
const base = new Osm();
|
|
34
|
-
addBaseNodes(base);
|
|
35
|
-
base.nodes.buildIndex();
|
|
36
|
-
addBaseWays(base);
|
|
37
|
-
base.buildIndexes();
|
|
38
|
-
return base;
|
|
39
|
-
}
|
|
40
|
-
/**
|
|
41
|
-
* Create a patch OSM with:
|
|
42
|
-
* - The same way as the base OSM, with new tags
|
|
43
|
-
* - A way that has an overlapping node with the first way, but does not share a node and so starts disconnected
|
|
44
|
-
* - A way that crosses over the first way, but does not share a node and so starts disconnected
|
|
45
|
-
*/
|
|
46
|
-
export function createPatchOsm() {
|
|
47
|
-
const osm = new Osm();
|
|
48
|
-
addBaseNodes(osm);
|
|
49
|
-
// Add way the connects with base way node 0 (will replace it)
|
|
50
|
-
osm.nodes.addNode({
|
|
51
|
-
...node0,
|
|
52
|
-
id: 2,
|
|
53
|
-
tags: {
|
|
54
|
-
crossing: "yes",
|
|
55
|
-
},
|
|
56
|
-
});
|
|
57
|
-
osm.nodes.addNode({
|
|
58
|
-
...node1,
|
|
59
|
-
id: 3,
|
|
60
|
-
lon: YAKIM_LON + ONE_KM_LON, // ends 1km east of the center point
|
|
61
|
-
});
|
|
62
|
-
// Add nodes for disconnected way
|
|
63
|
-
osm.nodes.addNode({
|
|
64
|
-
id: 4,
|
|
65
|
-
lat: YAKIM_LAT - ONE_KM_LAT, // 1km south
|
|
66
|
-
lon: YAKIM_LON + ONE_KM_LON / 4, // 250m east
|
|
67
|
-
});
|
|
68
|
-
osm.nodes.addNode({
|
|
69
|
-
id: 5,
|
|
70
|
-
lat: YAKIM_LAT + ONE_KM_LAT, // 1km north
|
|
71
|
-
lon: YAKIM_LON + ONE_KM_LON / 4, // 250m east
|
|
72
|
-
});
|
|
73
|
-
// Add nodes for crossing way
|
|
74
|
-
osm.nodes.addNode({
|
|
75
|
-
id: 6,
|
|
76
|
-
lat: YAKIM_LAT - ONE_KM_LAT, // 1km south
|
|
77
|
-
lon: YAKIM_LON + ONE_KM_LON / 2, // 500m east
|
|
78
|
-
});
|
|
79
|
-
osm.nodes.addNode({
|
|
80
|
-
id: 7,
|
|
81
|
-
lat: YAKIM_LAT + ONE_KM_LAT, // 1km north
|
|
82
|
-
lon: YAKIM_LON + ONE_KM_LON / 2, // 500m east
|
|
83
|
-
});
|
|
84
|
-
osm.nodes.buildIndex();
|
|
85
|
-
// Add same base way with new tags
|
|
86
|
-
osm.ways.addWay({
|
|
87
|
-
id: 1,
|
|
88
|
-
refs: [0, 1],
|
|
89
|
-
tags: {
|
|
90
|
-
highway: "primary",
|
|
91
|
-
version: "2",
|
|
92
|
-
},
|
|
93
|
-
});
|
|
94
|
-
// Add way that overlaps with base way node 1. Node should be de-duplicated.
|
|
95
|
-
osm.ways.addWay({
|
|
96
|
-
id: 2,
|
|
97
|
-
refs: [2, 3],
|
|
98
|
-
tags: {
|
|
99
|
-
highway: "secondary",
|
|
100
|
-
},
|
|
101
|
-
});
|
|
102
|
-
// Add way that crosses way 2, and should generate 1 intersection.
|
|
103
|
-
osm.ways.addWay({
|
|
104
|
-
id: 3,
|
|
105
|
-
refs: [4, 5],
|
|
106
|
-
tags: {
|
|
107
|
-
highway: "primary",
|
|
108
|
-
},
|
|
109
|
-
});
|
|
110
|
-
// Add a way that crosses way 2, but has a tag indicating it is an underpass and should be left alone
|
|
111
|
-
osm.ways.addWay({
|
|
112
|
-
id: 4,
|
|
113
|
-
refs: [6, 7],
|
|
114
|
-
tags: {
|
|
115
|
-
highway: "underpass",
|
|
116
|
-
tunnel: "yes",
|
|
117
|
-
},
|
|
118
|
-
});
|
|
119
|
-
osm.buildIndexes();
|
|
120
|
-
return osm;
|
|
121
|
-
}
|
|
122
|
-
//# sourceMappingURL=mock-osm.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"mock-osm.js","sourceRoot":"","sources":["../../test/mock-osm.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"tags-search.test.d.ts","sourceRoot":"","sources":["../../test/tags-search.test.ts"],"names":[],"mappings":""}
|
|
@@ -1,56 +0,0 @@
|
|
|
1
|
-
import { describe, expect, it } from "bun:test";
|
|
2
|
-
import { Nodes } from "../src/nodes";
|
|
3
|
-
import StringTable from "../src/stringtable";
|
|
4
|
-
import { Ways } from "../src/ways";
|
|
5
|
-
describe("Tags.search on Nodes", () => {
|
|
6
|
-
it("finds by key and key+value", () => {
|
|
7
|
-
const st = new StringTable();
|
|
8
|
-
const nodes = new Nodes(st);
|
|
9
|
-
const node1 = { id: 1, lon: -1, lat: 1, tags: { curb: "yes" } };
|
|
10
|
-
const node2 = { id: 2, lon: -2, lat: 2, tags: { curb: "no" } };
|
|
11
|
-
const node3 = { id: 3, lon: -3, lat: 3 };
|
|
12
|
-
nodes.addNode(node1);
|
|
13
|
-
nodes.addNode(node2);
|
|
14
|
-
nodes.addNode(node3);
|
|
15
|
-
nodes.buildIndex();
|
|
16
|
-
const allCurb = nodes.search("curb");
|
|
17
|
-
expect(allCurb).toEqual([node1, node2]);
|
|
18
|
-
const curbYes = nodes.search("curb", "yes");
|
|
19
|
-
expect(curbYes).toEqual([node1]);
|
|
20
|
-
const curbNo = nodes.search("curb", "no");
|
|
21
|
-
expect(curbNo).toEqual([node2]);
|
|
22
|
-
const none = nodes.search("highway");
|
|
23
|
-
expect(none).toEqual([]);
|
|
24
|
-
});
|
|
25
|
-
});
|
|
26
|
-
describe("Tags.search on Ways", () => {
|
|
27
|
-
it("finds by key and key+value", () => {
|
|
28
|
-
const st = new StringTable();
|
|
29
|
-
const nodes = new Nodes(st);
|
|
30
|
-
const ways = new Ways(st, nodes);
|
|
31
|
-
const way1 = {
|
|
32
|
-
id: 10,
|
|
33
|
-
refs: [1, 2],
|
|
34
|
-
tags: { highway: "residential" },
|
|
35
|
-
};
|
|
36
|
-
const way2 = { id: 11, refs: [2, 3], tags: { area: "yes" } };
|
|
37
|
-
const way3 = {
|
|
38
|
-
id: 12,
|
|
39
|
-
refs: [3, 4],
|
|
40
|
-
tags: { highway: "primary", area: "no" },
|
|
41
|
-
};
|
|
42
|
-
ways.addWay(way1);
|
|
43
|
-
ways.addWay(way2);
|
|
44
|
-
ways.addWay(way3);
|
|
45
|
-
ways.buildIndex();
|
|
46
|
-
const allHighway = ways.search("highway");
|
|
47
|
-
expect(allHighway).toEqual([way1, way3]);
|
|
48
|
-
const areaYes = ways.search("area", "yes");
|
|
49
|
-
expect(areaYes).toEqual([way2]);
|
|
50
|
-
const areaAll = ways.search("area");
|
|
51
|
-
expect(areaAll).toEqual([way2, way3]);
|
|
52
|
-
const areaNo = ways.search("area", "no");
|
|
53
|
-
expect(areaNo).toEqual([way3]);
|
|
54
|
-
});
|
|
55
|
-
});
|
|
56
|
-
//# sourceMappingURL=tags-search.test.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"tags-search.test.js","sourceRoot":"","sources":["../../test/tags-search.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"typed-arrays.test.d.ts","sourceRoot":"","sources":["../../test/typed-arrays.test.ts"],"names":[],"mappings":""}
|