@osmix/core 0.2.0 → 0.3.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 +31 -0
- package/README.md +54 -7
- package/dist/contracts.d.ts +2 -1
- package/dist/contracts.d.ts.map +1 -1
- package/dist/entities.d.ts +21 -1
- package/dist/entities.d.ts.map +1 -1
- package/dist/entities.js +52 -3
- package/dist/entities.js.map +1 -1
- package/dist/ids.d.ts +18 -5
- package/dist/ids.d.ts.map +1 -1
- package/dist/ids.js +68 -18
- package/dist/ids.js.map +1 -1
- package/dist/index.d.ts +6 -3
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +6 -3
- package/dist/index.js.map +1 -1
- package/dist/indirect-kd-index.d.ts +28 -0
- package/dist/indirect-kd-index.d.ts.map +1 -0
- package/dist/indirect-kd-index.js +163 -0
- package/dist/indirect-kd-index.js.map +1 -0
- package/dist/limits.d.ts +30 -0
- package/dist/limits.d.ts.map +1 -0
- package/dist/limits.js +51 -0
- package/dist/limits.js.map +1 -0
- package/dist/nodes.d.ts +28 -13
- package/dist/nodes.d.ts.map +1 -1
- package/dist/nodes.js +181 -51
- package/dist/nodes.js.map +1 -1
- package/dist/osm.d.ts +59 -3
- package/dist/osm.d.ts.map +1 -1
- package/dist/osm.js +31 -2
- package/dist/osm.js.map +1 -1
- package/dist/relations.d.ts +10 -4
- package/dist/relations.d.ts.map +1 -1
- package/dist/relations.js +66 -28
- package/dist/relations.js.map +1 -1
- package/dist/renumber.d.ts +23 -0
- package/dist/renumber.d.ts.map +1 -0
- package/dist/renumber.js +64 -0
- package/dist/renumber.js.map +1 -0
- package/dist/stringtable.d.ts +2 -1
- package/dist/stringtable.d.ts.map +1 -1
- package/dist/stringtable.js +5 -1
- package/dist/stringtable.js.map +1 -1
- package/dist/tags.d.ts +44 -11
- package/dist/tags.d.ts.map +1 -1
- package/dist/tags.js +153 -27
- package/dist/tags.js.map +1 -1
- package/dist/typed-arrays.d.ts +63 -48
- package/dist/typed-arrays.d.ts.map +1 -1
- package/dist/typed-arrays.js +184 -107
- package/dist/typed-arrays.js.map +1 -1
- package/dist/ways.d.ts +50 -2
- package/dist/ways.d.ts.map +1 -1
- package/dist/ways.js +212 -35
- package/dist/ways.js.map +1 -1
- package/package.json +11 -12
- package/src/contracts.ts +2 -1
- package/src/entities.ts +67 -4
- package/src/ids.ts +72 -22
- package/src/index.ts +13 -7
- package/src/indirect-kd-index.ts +212 -0
- package/src/limits.ts +73 -0
- package/src/nodes.ts +228 -54
- package/src/osm.ts +90 -4
- package/src/relations.ts +80 -30
- package/src/renumber.ts +80 -0
- package/src/stringtable.ts +15 -1
- package/src/tags.ts +173 -31
- package/src/typed-arrays.ts +225 -113
- package/src/ways.ts +233 -38
- package/test/entity-index-errors.test.ts +41 -0
- package/test/ids.bench.ts +11 -7
- package/test/ids.test.ts +38 -0
- package/test/limits.test.ts +83 -0
- package/test/no-shared-array-buffer.test.ts +41 -0
- package/test/nodes-spatial-index.test.ts +261 -0
- package/test/osm-bbox.test.ts +30 -0
- package/test/relations.bench.ts +9 -4
- package/test/relations.test.ts +52 -29
- package/test/renumber.test.ts +54 -0
- package/test/spatial-index-rebuild.test.ts +33 -0
- package/test/storage-compaction.test.ts +269 -0
- package/test/tags-search.test.ts +13 -0
- package/test/typed-arrays.test.ts +178 -59
- package/src/types/geokdbush.d.ts +0 -32
- package/src/types/kdbush.d.ts +0 -47
package/dist/ways.js
CHANGED
|
@@ -1,27 +1,48 @@
|
|
|
1
1
|
import Flatbush from "flatbush";
|
|
2
2
|
import { around as geoAround } from "geoflatbush";
|
|
3
|
-
import { Entities } from "./entities.js";
|
|
3
|
+
import { Entities, isValidSpatialBbox } from "./entities.js";
|
|
4
4
|
import { Ids } from "./ids.js";
|
|
5
|
+
import { MAX_UINT32_OFFSET, MAX_WAY_REFS, assertCapacity } from "./limits.js";
|
|
5
6
|
import { Tags } from "./tags.js";
|
|
6
|
-
import { BufferConstructor,
|
|
7
|
+
import { BufferConstructor, ResizeableTypedArray as RTA } from "./typed-arrays.js";
|
|
8
|
+
/**
|
|
9
|
+
* Node-index sentinel stored for way refs whose node is not present in the dataset.
|
|
10
|
+
* Returned by {@link Ways.getRefIndexes} in place of a node index.
|
|
11
|
+
*/
|
|
12
|
+
export const MISSING_NODE_INDEX = 0xffffffff;
|
|
13
|
+
const HASH_REF_CHUNK_SIZE = 8192;
|
|
7
14
|
export class Ways extends Entities {
|
|
8
15
|
spatialIndex = new Flatbush(1);
|
|
9
16
|
// Track if spatial index was properly built (vs default empty)
|
|
10
17
|
spatialIndexBuilt = false;
|
|
11
18
|
refStart;
|
|
12
|
-
refCount; // Maximum
|
|
13
|
-
// Node IDs
|
|
19
|
+
refCount; // Maximum MAX_WAY_REFS (65,535) nodes per way
|
|
20
|
+
// Node indexes. Missing node IDs are preserved in sparse parallel arrays.
|
|
14
21
|
refs;
|
|
22
|
+
missingRefPositions;
|
|
23
|
+
missingRefIds;
|
|
24
|
+
// Temporary OSM node IDs used when nodes are not indexed during ingestion.
|
|
25
|
+
pendingRefIds;
|
|
15
26
|
// Bounding box of the way in geographic coordinates
|
|
16
27
|
bbox;
|
|
17
28
|
// Node reference index
|
|
18
29
|
nodes;
|
|
19
|
-
getNodeLonLat(
|
|
20
|
-
const coordinate = this.
|
|
21
|
-
if (!coordinate)
|
|
22
|
-
throw Error(`Node ${
|
|
30
|
+
getNodeLonLat(refPosition) {
|
|
31
|
+
const coordinate = this.tryGetNodeLonLat(refPosition);
|
|
32
|
+
if (!coordinate) {
|
|
33
|
+
throw Error(`Node ${this.getMissingRefId(refPosition)} not found for way geometry`);
|
|
34
|
+
}
|
|
23
35
|
return coordinate;
|
|
24
36
|
}
|
|
37
|
+
/** Resolve a reference position to coordinates, or null when the node is absent. */
|
|
38
|
+
tryGetNodeLonLat(refPosition) {
|
|
39
|
+
const nodeIndex = this.refs.at(refPosition);
|
|
40
|
+
if (nodeIndex !== MISSING_NODE_INDEX) {
|
|
41
|
+
return this.nodes.getNodeLonLat({ index: nodeIndex });
|
|
42
|
+
}
|
|
43
|
+
// A missing ref may still resolve if the node was added after finalization.
|
|
44
|
+
return this.nodes.getNodeLonLat({ id: this.getMissingRefId(refPosition) });
|
|
45
|
+
}
|
|
25
46
|
/**
|
|
26
47
|
* Create a new Ways index.
|
|
27
48
|
*/
|
|
@@ -30,7 +51,10 @@ export class Ways extends Entities {
|
|
|
30
51
|
super("way", new Ids(transferables), new Tags(stringTable, transferables));
|
|
31
52
|
this.refStart = RTA.from(Uint32Array, transferables.refStart);
|
|
32
53
|
this.refCount = RTA.from(Uint16Array, transferables.refCount);
|
|
33
|
-
this.refs = RTA.from(
|
|
54
|
+
this.refs = RTA.from(Uint32Array, transferables.refs);
|
|
55
|
+
this.missingRefPositions = RTA.from(Uint32Array, transferables.missingRefPositions);
|
|
56
|
+
this.missingRefIds = RTA.from(Float64Array, transferables.missingRefIds);
|
|
57
|
+
this.pendingRefIds = null;
|
|
34
58
|
this.bbox = RTA.from(Float64Array, transferables.bbox);
|
|
35
59
|
// Only load spatial index if provided (not stored in IndexedDB)
|
|
36
60
|
if (transferables.spatialIndex?.byteLength) {
|
|
@@ -43,7 +67,10 @@ export class Ways extends Entities {
|
|
|
43
67
|
super("way", new Ids(), new Tags(stringTable));
|
|
44
68
|
this.refStart = new RTA(Uint32Array);
|
|
45
69
|
this.refCount = new RTA(Uint16Array);
|
|
46
|
-
this.refs = new RTA(
|
|
70
|
+
this.refs = new RTA(Uint32Array);
|
|
71
|
+
this.missingRefPositions = new RTA(Uint32Array);
|
|
72
|
+
this.missingRefIds = new RTA(Float64Array);
|
|
73
|
+
this.pendingRefIds = new RTA(Float64Array);
|
|
47
74
|
this.bbox = new RTA(Float64Array);
|
|
48
75
|
}
|
|
49
76
|
this.nodes = nodes;
|
|
@@ -52,17 +79,17 @@ export class Ways extends Entities {
|
|
|
52
79
|
* Add a single way to the index.
|
|
53
80
|
*/
|
|
54
81
|
addWay(way) {
|
|
82
|
+
this.assertRefCapacity(way.id, way.refs.length);
|
|
55
83
|
const wayIndex = this.addEntity(way.id, way.tags ?? {});
|
|
56
|
-
this.refStart.push(this.
|
|
84
|
+
this.refStart.push(this.refLength);
|
|
57
85
|
this.refCount.push(way.refs.length);
|
|
58
|
-
|
|
59
|
-
this.refs.push(ref);
|
|
86
|
+
this.appendRefIds(way.refs);
|
|
60
87
|
return wayIndex;
|
|
61
88
|
}
|
|
62
89
|
/**
|
|
63
90
|
* Bulk add ways directly from a PBF PrimitiveBlock.
|
|
64
91
|
*/
|
|
65
|
-
addWays(ways, blockStringIndexMap, filter) {
|
|
92
|
+
addWays(ways, blockStringIndexMap, filter, nodeIdToIndex) {
|
|
66
93
|
let added = 0;
|
|
67
94
|
for (const way of ways) {
|
|
68
95
|
let prevRefId = 0;
|
|
@@ -91,31 +118,62 @@ export class Ways extends Entities {
|
|
|
91
118
|
: null;
|
|
92
119
|
if (filter && filteredWay === null)
|
|
93
120
|
continue;
|
|
121
|
+
const addedRefs = filteredWay?.refs ?? refs;
|
|
122
|
+
this.assertRefCapacity(way.id, addedRefs.length);
|
|
94
123
|
this.addEntity(way.id, tagKeys, tagValues);
|
|
95
|
-
this.refStart.push(this.
|
|
96
|
-
this.refCount.push(
|
|
97
|
-
this.
|
|
124
|
+
this.refStart.push(this.refLength);
|
|
125
|
+
this.refCount.push(addedRefs.length);
|
|
126
|
+
this.appendRefIds(addedRefs, nodeIdToIndex);
|
|
98
127
|
added++;
|
|
99
128
|
}
|
|
100
129
|
return added;
|
|
101
130
|
}
|
|
102
131
|
/**
|
|
103
132
|
* Compact the internal arrays to free up memory.
|
|
133
|
+
*
|
|
134
|
+
* Must run after the node ID index is built (`Osm.buildIndexes()` orders
|
|
135
|
+
* nodes before ways) so pending OSM node IDs resolve to compact `Uint32`
|
|
136
|
+
* node indexes. If the node index is not ready, every pending ref degrades
|
|
137
|
+
* to the larger missing-ref representation (sentinel + sorted ID lookup).
|
|
104
138
|
*/
|
|
105
139
|
buildEntityIndex() {
|
|
106
140
|
this.refStart.compact();
|
|
107
141
|
this.refCount.compact();
|
|
142
|
+
if (this.pendingRefIds && this.pendingRefIds.length > 0) {
|
|
143
|
+
if (this.refs.length > 0)
|
|
144
|
+
throw Error("Mixed pending and indexed way references.");
|
|
145
|
+
const refsBuffer = new BufferConstructor(this.pendingRefIds.length * Uint32Array.BYTES_PER_ELEMENT);
|
|
146
|
+
this.refs = RTA.from(Uint32Array, refsBuffer);
|
|
147
|
+
const canResolveNodes = this.nodes.ids.isReady();
|
|
148
|
+
if (!canResolveNodes) {
|
|
149
|
+
console.warn("Ways.buildEntityIndex ran before the node index was ready; all way references will use the missing-ref representation.");
|
|
150
|
+
}
|
|
151
|
+
for (let i = 0; i < this.pendingRefIds.length; i++) {
|
|
152
|
+
const refId = this.pendingRefIds.at(i);
|
|
153
|
+
const nodeIndex = canResolveNodes ? this.nodes.ids.getIndexFromId(refId) : -1;
|
|
154
|
+
this.setIndexedRef(i, refId, nodeIndex);
|
|
155
|
+
}
|
|
156
|
+
}
|
|
157
|
+
this.pendingRefIds = null;
|
|
108
158
|
this.refs.compact();
|
|
159
|
+
this.missingRefPositions.compact();
|
|
160
|
+
this.missingRefIds.compact();
|
|
109
161
|
}
|
|
110
162
|
/**
|
|
111
163
|
* Build the spatial index for ways.
|
|
112
164
|
* If bbox data already exists (e.g., loaded from storage), reuses it.
|
|
165
|
+
* Returns the existing index when it is already built.
|
|
113
166
|
*/
|
|
114
167
|
buildSpatialIndex() {
|
|
115
168
|
if (!this.nodes.isReady())
|
|
116
169
|
throw Error("Node index is not ready.");
|
|
117
|
-
if (this.
|
|
170
|
+
if (this.spatialIndexBuilt)
|
|
171
|
+
return this.spatialIndex;
|
|
172
|
+
if (this.size === 0) {
|
|
173
|
+
this.spatialIndex = new Flatbush(1, 128, Float64Array, BufferConstructor);
|
|
174
|
+
this.spatialIndexBuilt = true;
|
|
118
175
|
return this.spatialIndex;
|
|
176
|
+
}
|
|
119
177
|
this.spatialIndex = new Flatbush(this.size, 128, Float64Array, BufferConstructor);
|
|
120
178
|
// If bbox already has data (loaded from storage), use it directly
|
|
121
179
|
const hasBboxData = this.bbox.length >= this.size * 4;
|
|
@@ -132,7 +190,9 @@ export class Ways extends Entities {
|
|
|
132
190
|
maxY = this.bbox.at(i * 4 + 3);
|
|
133
191
|
}
|
|
134
192
|
else {
|
|
135
|
-
// Calculate bbox from node coordinates
|
|
193
|
+
// Calculate bbox from resolvable node coordinates. Missing refs are
|
|
194
|
+
// preserved losslessly in storage but contribute no geometry; a way
|
|
195
|
+
// with no resolvable refs keeps an inverted bbox that never matches.
|
|
136
196
|
minX = Number.POSITIVE_INFINITY;
|
|
137
197
|
minY = Number.POSITIVE_INFINITY;
|
|
138
198
|
maxX = Number.NEGATIVE_INFINITY;
|
|
@@ -140,8 +200,10 @@ export class Ways extends Entities {
|
|
|
140
200
|
const start = this.refStart.at(i);
|
|
141
201
|
const count = this.refCount.at(i);
|
|
142
202
|
for (let j = start; j < start + count; j++) {
|
|
143
|
-
const
|
|
144
|
-
|
|
203
|
+
const coordinate = this.tryGetNodeLonLat(j);
|
|
204
|
+
if (!coordinate)
|
|
205
|
+
continue;
|
|
206
|
+
const [lon, lat] = coordinate;
|
|
145
207
|
if (lon < minX)
|
|
146
208
|
minX = lon;
|
|
147
209
|
if (lon > maxX)
|
|
@@ -188,7 +250,22 @@ export class Ways extends Entities {
|
|
|
188
250
|
getRefIds(index) {
|
|
189
251
|
const start = this.refStart.at(index);
|
|
190
252
|
const count = this.refCount.at(index);
|
|
191
|
-
|
|
253
|
+
const refs = Array.from({ length: count });
|
|
254
|
+
for (let i = 0; i < count; i++)
|
|
255
|
+
refs[i] = this.getRefId(start + i);
|
|
256
|
+
return refs;
|
|
257
|
+
}
|
|
258
|
+
/**
|
|
259
|
+
* Get the node indexes referenced by a way without allocating.
|
|
260
|
+
*
|
|
261
|
+
* Returns a view into internal storage; do not mutate it or hold it across writes. Refs to
|
|
262
|
+
* nodes absent from the dataset are {@link MISSING_NODE_INDEX}. Requires `buildEntityIndex()`.
|
|
263
|
+
*/
|
|
264
|
+
getRefIndexes(index) {
|
|
265
|
+
if (this.pendingRefIds !== null)
|
|
266
|
+
throw Error("Way index is not built.");
|
|
267
|
+
const start = this.refStart.at(index);
|
|
268
|
+
return this.refs.array.subarray(start, start + this.refCount.at(index));
|
|
192
269
|
}
|
|
193
270
|
/**
|
|
194
271
|
* Get the bounding box of a way.
|
|
@@ -210,8 +287,7 @@ export class Ways extends Entities {
|
|
|
210
287
|
const start = this.refStart.at(index);
|
|
211
288
|
const line = new Float64Array(count * 2);
|
|
212
289
|
for (let i = 0; i < count; i++) {
|
|
213
|
-
const
|
|
214
|
-
const [lon, lat] = this.getNodeLonLat(ref);
|
|
290
|
+
const [lon, lat] = this.getNodeLonLat(start + i);
|
|
215
291
|
line[i * 2] = lon;
|
|
216
292
|
line[i * 2 + 1] = lat;
|
|
217
293
|
}
|
|
@@ -219,14 +295,31 @@ export class Ways extends Entities {
|
|
|
219
295
|
}
|
|
220
296
|
/**
|
|
221
297
|
* Get the coordinates of a way as an array of [lon, lat] pairs.
|
|
298
|
+
* Throws when a referenced node cannot be resolved; use
|
|
299
|
+
* `getResolvedCoordinates()` for tolerant consumers such as bbox building.
|
|
222
300
|
*/
|
|
223
301
|
getCoordinates(index) {
|
|
224
302
|
const count = this.refCount.at(index);
|
|
225
303
|
const start = this.refStart.at(index);
|
|
226
304
|
const coords = [];
|
|
227
305
|
for (let refIndex = start; refIndex < start + count; refIndex++) {
|
|
228
|
-
|
|
229
|
-
|
|
306
|
+
coords.push(this.getNodeLonLat(refIndex));
|
|
307
|
+
}
|
|
308
|
+
return coords;
|
|
309
|
+
}
|
|
310
|
+
/**
|
|
311
|
+
* Get the resolvable coordinates of a way, skipping missing node refs.
|
|
312
|
+
* Preferred over `getCoordinates()` when partial geometry is acceptable,
|
|
313
|
+
* e.g. computing bounding boxes over referentially incomplete extracts.
|
|
314
|
+
*/
|
|
315
|
+
getResolvedCoordinates(index) {
|
|
316
|
+
const count = this.refCount.at(index);
|
|
317
|
+
const start = this.refStart.at(index);
|
|
318
|
+
const coords = [];
|
|
319
|
+
for (let refIndex = start; refIndex < start + count; refIndex++) {
|
|
320
|
+
const coordinate = this.tryGetNodeLonLat(refIndex);
|
|
321
|
+
if (coordinate)
|
|
322
|
+
coords.push(coordinate);
|
|
230
323
|
}
|
|
231
324
|
return coords;
|
|
232
325
|
}
|
|
@@ -236,7 +329,14 @@ export class Ways extends Entities {
|
|
|
236
329
|
intersects(bbox, filterFn) {
|
|
237
330
|
if (this.size === 0)
|
|
238
331
|
return [];
|
|
239
|
-
|
|
332
|
+
// A way with no resolvable refs stores an inverted bbox. Flatbush's
|
|
333
|
+
// contained-node fast path skips per-leaf intersection tests, so filter
|
|
334
|
+
// inverted boxes out explicitly.
|
|
335
|
+
return this.spatialIndex.search(bbox[0], bbox[1], bbox[2], bbox[3], (index, x0, y0, x1, y1) => {
|
|
336
|
+
if (!isValidSpatialBbox(x0, y0, x1, y1))
|
|
337
|
+
return false;
|
|
338
|
+
return filterFn ? filterFn(index) : true;
|
|
339
|
+
});
|
|
240
340
|
}
|
|
241
341
|
/**
|
|
242
342
|
* Find way indexes near a point using great-circle distance.
|
|
@@ -250,7 +350,10 @@ export class Ways extends Entities {
|
|
|
250
350
|
if (this.size === 0)
|
|
251
351
|
return [];
|
|
252
352
|
// Use geoflatbush for proper geographic distance calculations
|
|
253
|
-
return geoAround(this.spatialIndex, lon, lat, maxResults, maxDistanceKm)
|
|
353
|
+
return geoAround(this.spatialIndex, lon, lat, maxResults, maxDistanceKm, (index) => {
|
|
354
|
+
const offset = index * 4;
|
|
355
|
+
return isValidSpatialBbox(this.bbox.at(offset), this.bbox.at(offset + 1), this.bbox.at(offset + 2), this.bbox.at(offset + 3));
|
|
356
|
+
});
|
|
254
357
|
}
|
|
255
358
|
/**
|
|
256
359
|
* Get ways within a bounding box.
|
|
@@ -294,6 +397,8 @@ export class Ways extends Entities {
|
|
|
294
397
|
refStart: this.refStart.array.buffer,
|
|
295
398
|
refCount: this.refCount.array.buffer,
|
|
296
399
|
refs: this.refs.array.buffer,
|
|
400
|
+
missingRefPositions: this.missingRefPositions.array.buffer,
|
|
401
|
+
missingRefIds: this.missingRefIds.array.buffer,
|
|
297
402
|
bbox: this.bbox.array.buffer,
|
|
298
403
|
};
|
|
299
404
|
// Only include spatial index if it was built
|
|
@@ -305,7 +410,7 @@ export class Ways extends Entities {
|
|
|
305
410
|
/**
|
|
306
411
|
* Get the approximate memory requirements for a given number of ways in bytes.
|
|
307
412
|
*/
|
|
308
|
-
static getBytesRequired(count) {
|
|
413
|
+
static getBytesRequired(count, refCount = 0, missingRefCount = 0, tagCount = 0) {
|
|
309
414
|
if (count === 0)
|
|
310
415
|
return 0;
|
|
311
416
|
// Approximate nodes per way
|
|
@@ -319,9 +424,11 @@ export class Ways extends Entities {
|
|
|
319
424
|
const boxesBytes = numNodes * 4 * Float64Array.BYTES_PER_ELEMENT;
|
|
320
425
|
const spatialIndexBytes = 8 + indexBytes + boxesBytes;
|
|
321
426
|
return (Ids.getBytesRequired(count) +
|
|
322
|
-
Tags.getBytesRequired(count) +
|
|
427
|
+
Tags.getBytesRequired(count, count, tagCount) +
|
|
323
428
|
count * Uint32Array.BYTES_PER_ELEMENT + // refStart
|
|
324
429
|
count * Uint16Array.BYTES_PER_ELEMENT + // refCount
|
|
430
|
+
refCount * Uint32Array.BYTES_PER_ELEMENT + // node indexes
|
|
431
|
+
missingRefCount * (Uint32Array.BYTES_PER_ELEMENT + Float64Array.BYTES_PER_ELEMENT) + // missing refs
|
|
325
432
|
count * 4 * Float64Array.BYTES_PER_ELEMENT + // bbox
|
|
326
433
|
spatialIndexBytes);
|
|
327
434
|
}
|
|
@@ -329,11 +436,81 @@ export class Ways extends Entities {
|
|
|
329
436
|
* Update a ContentHasher with way-specific data (node references).
|
|
330
437
|
*/
|
|
331
438
|
updateHash(hasher) {
|
|
332
|
-
|
|
333
|
-
|
|
334
|
-
|
|
335
|
-
|
|
336
|
-
.
|
|
439
|
+
super.updateHash(hasher).update(this.refCount.array);
|
|
440
|
+
const chunk = new Float64Array(Math.min(HASH_REF_CHUNK_SIZE, this.refs.length));
|
|
441
|
+
let chunkLength = 0;
|
|
442
|
+
for (let i = 0; i < this.refs.length; i++) {
|
|
443
|
+
chunk[chunkLength++] = this.getRefId(i);
|
|
444
|
+
if (chunkLength === chunk.length) {
|
|
445
|
+
hasher.update(chunk);
|
|
446
|
+
chunkLength = 0;
|
|
447
|
+
}
|
|
448
|
+
}
|
|
449
|
+
if (chunkLength > 0)
|
|
450
|
+
hasher.update(chunk.subarray(0, chunkLength));
|
|
451
|
+
return hasher;
|
|
452
|
+
}
|
|
453
|
+
/** Logical reference length during either pending-ID or indexed ingestion. */
|
|
454
|
+
/** Reject a way whose ref count would wrap `refCount` or the `refStart` offsets. */
|
|
455
|
+
assertRefCapacity(wayId, refCount) {
|
|
456
|
+
assertCapacity("way-refs", refCount, MAX_WAY_REFS, () => `Way ${wayId}`);
|
|
457
|
+
assertCapacity("total-way-refs", this.refLength + refCount, MAX_UINT32_OFFSET, () => `The dataset (at way ${wayId})`);
|
|
458
|
+
}
|
|
459
|
+
get refLength() {
|
|
460
|
+
return this.pendingRefIds?.length ?? this.refs.length;
|
|
461
|
+
}
|
|
462
|
+
/** Append OSM node IDs, optionally resolving them directly to node indexes. */
|
|
463
|
+
appendRefIds(refIds, nodeIdToIndex) {
|
|
464
|
+
if (nodeIdToIndex) {
|
|
465
|
+
if ((this.pendingRefIds?.length ?? 0) > 0) {
|
|
466
|
+
throw Error("Cannot mix unresolved and directly indexed way references.");
|
|
467
|
+
}
|
|
468
|
+
this.pendingRefIds = null;
|
|
469
|
+
for (const refId of refIds) {
|
|
470
|
+
this.setIndexedRef(this.refs.length, refId, nodeIdToIndex(refId));
|
|
471
|
+
}
|
|
472
|
+
return;
|
|
473
|
+
}
|
|
474
|
+
if (!this.pendingRefIds) {
|
|
475
|
+
throw Error("Directly indexed way references require a node ID resolver.");
|
|
476
|
+
}
|
|
477
|
+
this.pendingRefIds.pushMany(refIds);
|
|
478
|
+
}
|
|
479
|
+
/** Store one resolved or losslessly preserved missing reference. */
|
|
480
|
+
setIndexedRef(position, refId, nodeIndex) {
|
|
481
|
+
if (nodeIndex < 0) {
|
|
482
|
+
this.refs.set(position, MISSING_NODE_INDEX);
|
|
483
|
+
this.missingRefPositions.push(position);
|
|
484
|
+
this.missingRefIds.push(refId);
|
|
485
|
+
return;
|
|
486
|
+
}
|
|
487
|
+
if (!Number.isInteger(nodeIndex) || nodeIndex >= MISSING_NODE_INDEX) {
|
|
488
|
+
throw Error(`Invalid node index ${nodeIndex} for reference ${refId}`);
|
|
489
|
+
}
|
|
490
|
+
this.refs.set(position, nodeIndex);
|
|
491
|
+
}
|
|
492
|
+
/** Reconstruct the public OSM node ID for one internal reference position. */
|
|
493
|
+
getRefId(position) {
|
|
494
|
+
const nodeIndex = this.refs.at(position);
|
|
495
|
+
return nodeIndex === MISSING_NODE_INDEX
|
|
496
|
+
? this.getMissingRefId(position)
|
|
497
|
+
: this.nodes.ids.at(nodeIndex);
|
|
498
|
+
}
|
|
499
|
+
/** Find the OSM node ID for a sentinel reference position. */
|
|
500
|
+
getMissingRefId(position) {
|
|
501
|
+
let low = 0;
|
|
502
|
+
let high = this.missingRefPositions.length - 1;
|
|
503
|
+
while (low <= high) {
|
|
504
|
+
const middle = (low + high) >>> 1;
|
|
505
|
+
const candidate = this.missingRefPositions.at(middle);
|
|
506
|
+
if (candidate === position)
|
|
507
|
+
return this.missingRefIds.at(middle);
|
|
508
|
+
if (candidate < position)
|
|
509
|
+
low = middle + 1;
|
|
510
|
+
else
|
|
511
|
+
high = middle - 1;
|
|
512
|
+
}
|
|
513
|
+
throw Error(`Missing node ID not found for way reference position ${position}`);
|
|
337
514
|
}
|
|
338
515
|
}
|
|
339
516
|
//# sourceMappingURL=ways.js.map
|
package/dist/ways.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ways.js","sourceRoot":"","sources":["../src/ways.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"ways.js","sourceRoot":"","sources":["../src/ways.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"$schema": "https://json.schemastore.org/package.json",
|
|
3
3
|
"name": "@osmix/core",
|
|
4
|
-
"version": "0.
|
|
4
|
+
"version": "0.3.0",
|
|
5
5
|
"description": "An OSM PBF reader, writer, and merge tool written in TypeScript",
|
|
6
6
|
"license": "MIT",
|
|
7
7
|
"repository": {
|
|
@@ -25,23 +25,22 @@
|
|
|
25
25
|
}
|
|
26
26
|
},
|
|
27
27
|
"dependencies": {
|
|
28
|
+
"@osmix/geo": "0.1.1",
|
|
29
|
+
"@osmix/shared": "0.2.0",
|
|
30
|
+
"@osmix/types": "0.2.0",
|
|
28
31
|
"flatbush": "^4.6.2",
|
|
29
|
-
"geoflatbush": "^2.2.1"
|
|
30
|
-
"geokdbush": "^2.1.0",
|
|
31
|
-
"kdbush": "^4.1.0",
|
|
32
|
-
"@osmix/shared": "0.1.0",
|
|
33
|
-
"@osmix/geo": "0.1.0",
|
|
34
|
-
"@osmix/types": "0.1.0"
|
|
32
|
+
"geoflatbush": "^2.2.1"
|
|
35
33
|
},
|
|
36
34
|
"devDependencies": {
|
|
37
|
-
"
|
|
38
|
-
"
|
|
35
|
+
"@osmix/pbf": "0.0.10",
|
|
36
|
+
"typescript": "^7.0.2"
|
|
37
|
+
},
|
|
38
|
+
"engines": {
|
|
39
|
+
"node": ">=24"
|
|
39
40
|
},
|
|
40
41
|
"types": "./dist/index.d.ts",
|
|
41
42
|
"scripts": {
|
|
42
43
|
"build": "tsc -p tsconfig.build.json",
|
|
43
|
-
"bench": "vitest bench"
|
|
44
|
-
"test": "pnpm -w exec vitest run --project \"$npm_package_name\"",
|
|
45
|
-
"typecheck": "tsc --noEmit"
|
|
44
|
+
"bench": "vitest bench"
|
|
46
45
|
}
|
|
47
46
|
}
|
package/src/contracts.ts
CHANGED
package/src/entities.ts
CHANGED
|
@@ -12,7 +12,54 @@ import type { GeoBbox2D, OsmEntity, OsmEntityType, OsmTags } from "@osmix/types"
|
|
|
12
12
|
|
|
13
13
|
import type { IdOrIndex, Ids, IdsTransferables } from "./ids.ts";
|
|
14
14
|
import type { Tags, TagsTransferables } from "./tags.ts";
|
|
15
|
-
import
|
|
15
|
+
import {
|
|
16
|
+
TypedBufferAllocationError,
|
|
17
|
+
type BufferType,
|
|
18
|
+
type TypedBufferAllocationOperation,
|
|
19
|
+
type TypedBufferType,
|
|
20
|
+
} from "./typed-arrays.ts";
|
|
21
|
+
|
|
22
|
+
export type OsmEntityIndexComponent = "ids" | "tags" | "entity-data";
|
|
23
|
+
|
|
24
|
+
/** Whether bbox coordinates describe a non-inverted spatial item. */
|
|
25
|
+
export function isValidSpatialBbox(
|
|
26
|
+
minX: number,
|
|
27
|
+
minY: number,
|
|
28
|
+
maxX: number,
|
|
29
|
+
maxY: number,
|
|
30
|
+
): boolean {
|
|
31
|
+
return minX <= maxX && minY <= maxY;
|
|
32
|
+
}
|
|
33
|
+
|
|
34
|
+
/** Structured entity-finalization failure suitable for actionable load diagnostics. */
|
|
35
|
+
export class OsmEntityIndexBuildError extends Error {
|
|
36
|
+
readonly code = "OSM_ENTITY_INDEX_BUILD_FAILED";
|
|
37
|
+
readonly stage = "entity-index-finalization";
|
|
38
|
+
readonly entityType: OsmEntityType;
|
|
39
|
+
readonly component: OsmEntityIndexComponent;
|
|
40
|
+
readonly operation?: TypedBufferAllocationOperation;
|
|
41
|
+
readonly typedArray?: string;
|
|
42
|
+
readonly bufferType?: TypedBufferType;
|
|
43
|
+
readonly elementCount?: number;
|
|
44
|
+
readonly bytesPerElement?: number;
|
|
45
|
+
readonly requiredBytes?: number;
|
|
46
|
+
|
|
47
|
+
constructor(entityType: OsmEntityType, component: OsmEntityIndexComponent, cause: unknown) {
|
|
48
|
+
const detail = cause instanceof Error ? cause.message : String(cause);
|
|
49
|
+
super(`Failed to finalize ${entityType} ${component}: ${detail}`, { cause });
|
|
50
|
+
this.name = "OsmEntityIndexBuildError";
|
|
51
|
+
this.entityType = entityType;
|
|
52
|
+
this.component = component;
|
|
53
|
+
if (cause instanceof TypedBufferAllocationError) {
|
|
54
|
+
this.operation = cause.operation;
|
|
55
|
+
this.typedArray = cause.typedArray;
|
|
56
|
+
this.bufferType = cause.bufferType;
|
|
57
|
+
this.elementCount = cause.elementCount;
|
|
58
|
+
this.bytesPerElement = cause.bytesPerElement;
|
|
59
|
+
this.requiredBytes = cause.requiredBytes;
|
|
60
|
+
}
|
|
61
|
+
}
|
|
62
|
+
}
|
|
16
63
|
|
|
17
64
|
/**
|
|
18
65
|
* Serializable representation of an Entities collection for worker transfer.
|
|
@@ -88,13 +135,22 @@ export abstract class Entities<T extends OsmEntity> {
|
|
|
88
135
|
buildIndex() {
|
|
89
136
|
if (this.indexBuilt) return;
|
|
90
137
|
console.time(`${this.indexType}Index.buildIndex`);
|
|
91
|
-
this.ids.buildIndex();
|
|
92
|
-
this.tags.buildIndex();
|
|
93
|
-
this.buildEntityIndex();
|
|
138
|
+
this.buildIndexComponent("ids", () => this.ids.buildIndex());
|
|
139
|
+
this.buildIndexComponent("tags", () => this.tags.buildIndex());
|
|
140
|
+
this.buildIndexComponent("entity-data", () => this.buildEntityIndex());
|
|
94
141
|
this.indexBuilt = true;
|
|
95
142
|
console.timeEnd(`${this.indexType}Index.buildIndex`);
|
|
96
143
|
}
|
|
97
144
|
|
|
145
|
+
private buildIndexComponent(component: OsmEntityIndexComponent, build: () => void): void {
|
|
146
|
+
try {
|
|
147
|
+
build();
|
|
148
|
+
} catch (cause) {
|
|
149
|
+
if (cause instanceof OsmEntityIndexBuildError) throw cause;
|
|
150
|
+
throw new OsmEntityIndexBuildError(this.indexType, component, cause);
|
|
151
|
+
}
|
|
152
|
+
}
|
|
153
|
+
|
|
98
154
|
/**
|
|
99
155
|
* Get the bounding box of an entity.
|
|
100
156
|
* @param idOrIndex - Entity identifier (by ID or internal index).
|
|
@@ -185,6 +241,13 @@ export abstract class Entities<T extends OsmEntity> {
|
|
|
185
241
|
}
|
|
186
242
|
}
|
|
187
243
|
|
|
244
|
+
/** @internal Iterate entities in canonical OSM file order. */
|
|
245
|
+
*osmSorted(): Generator<T> {
|
|
246
|
+
for (const [id, index] of this.ids.osmSortedEntries()) {
|
|
247
|
+
yield this.getFullEntity(index, id, this.tags.getTags(index));
|
|
248
|
+
}
|
|
249
|
+
}
|
|
250
|
+
|
|
188
251
|
/**
|
|
189
252
|
* Search for entities with a specific tag key and optional value.
|
|
190
253
|
*/
|