@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/relations.d.ts
CHANGED
|
@@ -30,11 +30,13 @@ export declare class Relations extends Entities<OsmRelation> {
|
|
|
30
30
|
private bbox;
|
|
31
31
|
private nodes;
|
|
32
32
|
private ways;
|
|
33
|
-
private
|
|
33
|
+
private wayMemberCache;
|
|
34
34
|
/**
|
|
35
35
|
* Create a new Relations index.
|
|
36
36
|
*/
|
|
37
37
|
constructor(stringTable: StringTable, nodes: Nodes, ways: Ways, transferables?: RelationsTransferables);
|
|
38
|
+
/** Reject a relation whose member count would wrap `memberCount` or `memberStart`. */
|
|
39
|
+
private assertMemberCapacity;
|
|
38
40
|
/**
|
|
39
41
|
* Add a single relation to the index.
|
|
40
42
|
*/
|
|
@@ -51,6 +53,7 @@ export declare class Relations extends Entities<OsmRelation> {
|
|
|
51
53
|
* Build the spatial index for relations.
|
|
52
54
|
* Handles nested relations by resolving all descendant nodes and ways.
|
|
53
55
|
* If bbox data already exists (e.g., loaded from storage), reuses it.
|
|
56
|
+
* Returns the existing index when it is already built.
|
|
54
57
|
*/
|
|
55
58
|
buildSpatialIndex(): Flatbush;
|
|
56
59
|
/**
|
|
@@ -79,10 +82,13 @@ export declare class Relations extends Entities<OsmRelation> {
|
|
|
79
82
|
*/
|
|
80
83
|
includesMember(index: number, memberRef: number, memberType: OsmEntityType, memberRole?: string): boolean;
|
|
81
84
|
/**
|
|
82
|
-
*
|
|
85
|
+
* Check whether a way is a member of any relation, including through nested relations.
|
|
83
86
|
* Used to exclude these ways from individual rendering.
|
|
87
|
+
*
|
|
88
|
+
* Membership is computed once and cached as one bit per way index. Requires the way ID index.
|
|
84
89
|
*/
|
|
85
|
-
|
|
90
|
+
isWayMember(wayIndex: number): boolean;
|
|
91
|
+
private getWayMembers;
|
|
86
92
|
/**
|
|
87
93
|
* Get relation geometry based on its kind.
|
|
88
94
|
* Returns coordinates suitable for rendering based on relation type.
|
|
@@ -115,7 +121,7 @@ export declare class Relations extends Entities<OsmRelation> {
|
|
|
115
121
|
/**
|
|
116
122
|
* Get the approximate memory requirements for a given number of relations in bytes.
|
|
117
123
|
*/
|
|
118
|
-
static getBytesRequired(count: number): number;
|
|
124
|
+
static getBytesRequired(count: number, memberCount?: number, tagCount?: number): number;
|
|
119
125
|
/**
|
|
120
126
|
* Update a ContentHasher with relation-specific data (members).
|
|
121
127
|
*/
|
package/dist/relations.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"relations.d.ts","sourceRoot":"","sources":["../src/relations.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;
|
|
1
|
+
{"version":3,"file":"relations.d.ts","sourceRoot":"","sources":["../src/relations.ts"],"names":[],"mappings":"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"}
|
package/dist/relations.js
CHANGED
|
@@ -1,18 +1,20 @@
|
|
|
1
1
|
import { buildRelationRings } from "@osmix/geo/relation-multipolygon";
|
|
2
2
|
import { assertValue } from "@osmix/shared/assert";
|
|
3
|
+
import { BitSet } from "@osmix/shared/bit-set";
|
|
3
4
|
import { buildRelationLineStrings, collectRelationPoints, isAreaRelation, isLineRelation, isPointRelation, isSuperRelation, resolveRelationMembers, } from "@osmix/types/relation-kind";
|
|
4
5
|
import { bboxFromLonLats } from "@osmix/types/utils";
|
|
5
6
|
import Flatbush from "flatbush";
|
|
6
7
|
import { around as geoAround } from "geoflatbush";
|
|
7
|
-
import { Entities } from "./entities.js";
|
|
8
|
+
import { Entities, isValidSpatialBbox } from "./entities.js";
|
|
8
9
|
import { Ids } from "./ids.js";
|
|
10
|
+
import { MAX_RELATION_MEMBERS, MAX_UINT32_OFFSET, assertCapacity } from "./limits.js";
|
|
9
11
|
import { Tags } from "./tags.js";
|
|
10
12
|
import { BufferConstructor, IdArrayType, ResizeableTypedArray as RTA, } from "./typed-arrays.js";
|
|
11
13
|
const RELATION_MEMBER_TYPES = ["node", "way", "relation"];
|
|
12
14
|
export class Relations extends Entities {
|
|
13
15
|
stringTable;
|
|
14
16
|
memberStart;
|
|
15
|
-
memberCount; // Maximum 65,535
|
|
17
|
+
memberCount; // Maximum MAX_RELATION_MEMBERS (65,535) per relation
|
|
16
18
|
// Store the ID of the member because relations have other relations as members.
|
|
17
19
|
memberRefs;
|
|
18
20
|
memberTypes;
|
|
@@ -26,8 +28,9 @@ export class Relations extends Entities {
|
|
|
26
28
|
// Node and Way indexes
|
|
27
29
|
nodes;
|
|
28
30
|
ways;
|
|
29
|
-
// Lazily computed relation way membership. Invalidated whenever relations
|
|
30
|
-
|
|
31
|
+
// Lazily computed relation way membership keyed by way index. Invalidated whenever relations
|
|
32
|
+
// change, and rebuilt if the way count no longer matches.
|
|
33
|
+
wayMemberCache = null;
|
|
31
34
|
/**
|
|
32
35
|
* Create a new Relations index.
|
|
33
36
|
*/
|
|
@@ -60,11 +63,17 @@ export class Relations extends Entities {
|
|
|
60
63
|
this.ways = ways;
|
|
61
64
|
this.stringTable = stringTable;
|
|
62
65
|
}
|
|
66
|
+
/** Reject a relation whose member count would wrap `memberCount` or `memberStart`. */
|
|
67
|
+
assertMemberCapacity(relationId, memberCount) {
|
|
68
|
+
assertCapacity("relation-members", memberCount, MAX_RELATION_MEMBERS, () => `Relation ${relationId}`);
|
|
69
|
+
assertCapacity("total-relation-members", this.memberRefs.length + memberCount, MAX_UINT32_OFFSET, () => `The dataset (at relation ${relationId})`);
|
|
70
|
+
}
|
|
63
71
|
/**
|
|
64
72
|
* Add a single relation to the index.
|
|
65
73
|
*/
|
|
66
74
|
addRelation(relation) {
|
|
67
|
-
this.
|
|
75
|
+
this.wayMemberCache = null;
|
|
76
|
+
this.assertMemberCapacity(relation.id, relation.members.length);
|
|
68
77
|
const relationIndex = this.addEntity(relation.id, relation.tags ?? {});
|
|
69
78
|
this.memberStart.push(this.memberRefs.length);
|
|
70
79
|
this.memberCount.push(relation.members.length);
|
|
@@ -79,7 +88,7 @@ export class Relations extends Entities {
|
|
|
79
88
|
* Bulk add relations directly from a PBF PrimitiveBlock.
|
|
80
89
|
*/
|
|
81
90
|
addRelations(relations, blockStringIndexMap, filter) {
|
|
82
|
-
this.
|
|
91
|
+
this.wayMemberCache = null;
|
|
83
92
|
const blockToStringTable = (k) => {
|
|
84
93
|
const index = blockStringIndexMap[k];
|
|
85
94
|
if (index === undefined)
|
|
@@ -126,6 +135,7 @@ export class Relations extends Entities {
|
|
|
126
135
|
: null;
|
|
127
136
|
if (filter && filteredRelation === null)
|
|
128
137
|
continue;
|
|
138
|
+
this.assertMemberCapacity(relation.id, filteredRelation?.members.length ?? memberRefs.length);
|
|
129
139
|
added++;
|
|
130
140
|
this.addEntity(relation.id, tagKeys, tagValues);
|
|
131
141
|
this.memberStart.push(this.memberRefs.length);
|
|
@@ -150,14 +160,20 @@ export class Relations extends Entities {
|
|
|
150
160
|
* Build the spatial index for relations.
|
|
151
161
|
* Handles nested relations by resolving all descendant nodes and ways.
|
|
152
162
|
* If bbox data already exists (e.g., loaded from storage), reuses it.
|
|
163
|
+
* Returns the existing index when it is already built.
|
|
153
164
|
*/
|
|
154
165
|
buildSpatialIndex() {
|
|
155
166
|
if (!this.nodes.isReady())
|
|
156
167
|
throw Error("Node index is not ready.");
|
|
157
168
|
if (!this.ways.isReady())
|
|
158
169
|
throw Error("Way index is not ready.");
|
|
159
|
-
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;
|
|
160
175
|
return this.spatialIndex;
|
|
176
|
+
}
|
|
161
177
|
console.time("RelationIndex.buildSpatialIndex");
|
|
162
178
|
this.spatialIndex = new Flatbush(this.size, 128, Float64Array, BufferConstructor);
|
|
163
179
|
// If bbox already has data (loaded from storage), use it directly
|
|
@@ -223,12 +239,13 @@ export class Relations extends Entities {
|
|
|
223
239
|
if (ll)
|
|
224
240
|
lls.push(ll);
|
|
225
241
|
}
|
|
226
|
-
// Collect coordinates from resolved ways
|
|
242
|
+
// Collect coordinates from resolved ways. Member ways may reference nodes
|
|
243
|
+
// outside a referentially incomplete extract, so skip unresolvable refs.
|
|
227
244
|
for (const wayId of resolved.ways) {
|
|
228
245
|
const wayIndex = this.ways.ids.getIndexFromId(wayId);
|
|
229
246
|
if (wayIndex === -1)
|
|
230
247
|
continue;
|
|
231
|
-
const wayPositions = this.ways.
|
|
248
|
+
const wayPositions = this.ways.getResolvedCoordinates(wayIndex);
|
|
232
249
|
lls.push(...wayPositions);
|
|
233
250
|
}
|
|
234
251
|
return lls;
|
|
@@ -294,27 +311,35 @@ export class Relations extends Entities {
|
|
|
294
311
|
return false;
|
|
295
312
|
}
|
|
296
313
|
/**
|
|
297
|
-
*
|
|
314
|
+
* Check whether a way is a member of any relation, including through nested relations.
|
|
298
315
|
* Used to exclude these ways from individual rendering.
|
|
316
|
+
*
|
|
317
|
+
* Membership is computed once and cached as one bit per way index. Requires the way ID index.
|
|
299
318
|
*/
|
|
300
|
-
|
|
301
|
-
|
|
302
|
-
|
|
303
|
-
|
|
319
|
+
isWayMember(wayIndex) {
|
|
320
|
+
return this.getWayMembers().has(wayIndex);
|
|
321
|
+
}
|
|
322
|
+
getWayMembers() {
|
|
323
|
+
if (this.wayMemberCache !== null && this.wayMemberCache.size === this.ways.size) {
|
|
324
|
+
return this.wayMemberCache;
|
|
325
|
+
}
|
|
326
|
+
const members = new BitSet(this.ways.size);
|
|
327
|
+
const getRelation = (relId) => {
|
|
328
|
+
const relIndex = this.ids.getIndexFromId(relId);
|
|
329
|
+
if (relIndex === -1)
|
|
330
|
+
return null;
|
|
331
|
+
return this.getByIndex(relIndex);
|
|
332
|
+
};
|
|
304
333
|
for (let i = 0; i < this.size; i++) {
|
|
305
|
-
const
|
|
306
|
-
const resolved = resolveRelationMembers(relation, (relId) => {
|
|
307
|
-
const relIndex = this.ids.getIndexFromId(relId);
|
|
308
|
-
if (relIndex === -1)
|
|
309
|
-
return null;
|
|
310
|
-
return this.getByIndex(relIndex);
|
|
311
|
-
}, 10);
|
|
334
|
+
const resolved = resolveRelationMembers(this.getByIndex(i), getRelation, 10);
|
|
312
335
|
for (const wayId of resolved.ways) {
|
|
313
|
-
|
|
336
|
+
const wayIndex = this.ways.ids.getIndexFromId(wayId);
|
|
337
|
+
if (wayIndex !== -1)
|
|
338
|
+
members.add(wayIndex);
|
|
314
339
|
}
|
|
315
340
|
}
|
|
316
|
-
this.
|
|
317
|
-
return
|
|
341
|
+
this.wayMemberCache = members;
|
|
342
|
+
return members;
|
|
318
343
|
}
|
|
319
344
|
/**
|
|
320
345
|
* Get relation geometry based on its kind.
|
|
@@ -355,7 +380,14 @@ export class Relations extends Entities {
|
|
|
355
380
|
intersects(bbox, filterFn) {
|
|
356
381
|
if (this.size === 0)
|
|
357
382
|
return [];
|
|
358
|
-
|
|
383
|
+
// A relation with no resolvable member geometry stores an inverted bbox.
|
|
384
|
+
// Flatbush's contained-node fast path skips per-leaf intersection tests,
|
|
385
|
+
// so filter inverted boxes out explicitly.
|
|
386
|
+
return this.spatialIndex.search(bbox[0], bbox[1], bbox[2], bbox[3], (index, x0, y0, x1, y1) => {
|
|
387
|
+
if (!isValidSpatialBbox(x0, y0, x1, y1))
|
|
388
|
+
return false;
|
|
389
|
+
return filterFn ? filterFn(index) : true;
|
|
390
|
+
});
|
|
359
391
|
}
|
|
360
392
|
/**
|
|
361
393
|
* Find relation indexes near a point using great-circle distance.
|
|
@@ -369,7 +401,10 @@ export class Relations extends Entities {
|
|
|
369
401
|
if (this.size === 0)
|
|
370
402
|
return [];
|
|
371
403
|
// Use geoflatbush for proper geographic distance calculations
|
|
372
|
-
return geoAround(this.spatialIndex, lon, lat, maxResults, maxDistanceKm)
|
|
404
|
+
return geoAround(this.spatialIndex, lon, lat, maxResults, maxDistanceKm, (index) => {
|
|
405
|
+
const offset = index * 4;
|
|
406
|
+
return isValidSpatialBbox(this.bbox.at(offset), this.bbox.at(offset + 1), this.bbox.at(offset + 2), this.bbox.at(offset + 3));
|
|
407
|
+
});
|
|
373
408
|
}
|
|
374
409
|
/**
|
|
375
410
|
* Get transferable objects for passing to another thread.
|
|
@@ -394,7 +429,7 @@ export class Relations extends Entities {
|
|
|
394
429
|
/**
|
|
395
430
|
* Get the approximate memory requirements for a given number of relations in bytes.
|
|
396
431
|
*/
|
|
397
|
-
static getBytesRequired(count) {
|
|
432
|
+
static getBytesRequired(count, memberCount = 0, tagCount = 0) {
|
|
398
433
|
if (count === 0)
|
|
399
434
|
return 0;
|
|
400
435
|
// Approximate members per relation
|
|
@@ -408,9 +443,12 @@ export class Relations extends Entities {
|
|
|
408
443
|
const boxesBytes = numNodes * 4 * Float64Array.BYTES_PER_ELEMENT;
|
|
409
444
|
const spatialIndexBytes = 8 + indexBytes + boxesBytes;
|
|
410
445
|
return (Ids.getBytesRequired(count) +
|
|
411
|
-
Tags.getBytesRequired(count) +
|
|
446
|
+
Tags.getBytesRequired(count, count, tagCount) +
|
|
412
447
|
count * Uint32Array.BYTES_PER_ELEMENT + // memberStart
|
|
413
448
|
count * Uint16Array.BYTES_PER_ELEMENT + // memberCount
|
|
449
|
+
memberCount * Float64Array.BYTES_PER_ELEMENT + // memberRefs
|
|
450
|
+
memberCount * Uint8Array.BYTES_PER_ELEMENT + // memberTypes
|
|
451
|
+
memberCount * Uint32Array.BYTES_PER_ELEMENT + // memberRoles
|
|
414
452
|
count * 4 * Float64Array.BYTES_PER_ELEMENT + // bbox
|
|
415
453
|
spatialIndexBytes);
|
|
416
454
|
}
|
package/dist/relations.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"relations.js","sourceRoot":"","sources":["../src/relations.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"relations.js","sourceRoot":"","sources":["../src/relations.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import { Osm } from "./osm.ts";
|
|
2
|
+
/** Old ID → new ID for each renumbered entity, by type. JSON- and structured-clone-safe. */
|
|
3
|
+
export interface OsmIdMap {
|
|
4
|
+
nodes: Record<number, number>;
|
|
5
|
+
ways: Record<number, number>;
|
|
6
|
+
relations: Record<number, number>;
|
|
7
|
+
}
|
|
8
|
+
/**
|
|
9
|
+
* A copy of `osm` whose negative node, way and relation IDs are replaced by positive ones, for
|
|
10
|
+
* tools that reject negative IDs. In OSM files a negative ID conventionally marks a new, not yet
|
|
11
|
+
* uploaded entity, so only do this when the consumer needs it. Each type gets IDs after its own
|
|
12
|
+
* highest positive ID, in −1, −2, … order, so the result is deterministic. Way refs and relation
|
|
13
|
+
* members follow. `osm` is unchanged; the copy has its indexes built.
|
|
14
|
+
*/
|
|
15
|
+
export declare function renumberNegativeIds(osm: Osm, options?: {
|
|
16
|
+
id?: string;
|
|
17
|
+
}): {
|
|
18
|
+
osm: Osm;
|
|
19
|
+
idMap: OsmIdMap;
|
|
20
|
+
};
|
|
21
|
+
/** The ID map `renumberNegativeIds(osm)` would apply, without copying the data. */
|
|
22
|
+
export declare function negativeIdMap(osm: Osm): OsmIdMap;
|
|
23
|
+
//# sourceMappingURL=renumber.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"renumber.d.ts","sourceRoot":"","sources":["../src/renumber.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,GAAG,EAAE,MAAM,UAAU,CAAC;AAE/B,4FAA4F;AAC5F,MAAM,WAAW,QAAQ;IACvB,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC9B,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC7B,SAAS,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CACnC;AAeD;;;;;;GAMG;AACH,wBAAgB,mBAAmB,CAAC,GAAG,EAAE,GAAG,EAAE,OAAO,GAAE;IAAE,EAAE,CAAC,EAAE,MAAM,CAAA;CAAO;IA4BhE,GAAG;IAAc,KAAK;EAChC;AAcD,mFAAmF;AACnF,wBAAgB,aAAa,CAAC,GAAG,EAAE,GAAG,GAAG,QAAQ,CAMhD"}
|
package/dist/renumber.js
ADDED
|
@@ -0,0 +1,64 @@
|
|
|
1
|
+
import { Osm } from "./osm.js";
|
|
2
|
+
/** New positive IDs for one type's negative IDs, after its highest positive ID, in −1, −2, … order. */
|
|
3
|
+
function positiveIds(ids) {
|
|
4
|
+
let max = 0;
|
|
5
|
+
const negative = [];
|
|
6
|
+
for (let index = 0; index < ids.size; index++) {
|
|
7
|
+
const id = ids.at(index);
|
|
8
|
+
if (id < 0)
|
|
9
|
+
negative.push(id);
|
|
10
|
+
else
|
|
11
|
+
max = Math.max(max, id);
|
|
12
|
+
}
|
|
13
|
+
negative.sort((a, b) => b - a);
|
|
14
|
+
return new Map(negative.map((id, index) => [id, max + index + 1]));
|
|
15
|
+
}
|
|
16
|
+
/**
|
|
17
|
+
* A copy of `osm` whose negative node, way and relation IDs are replaced by positive ones, for
|
|
18
|
+
* tools that reject negative IDs. In OSM files a negative ID conventionally marks a new, not yet
|
|
19
|
+
* uploaded entity, so only do this when the consumer needs it. Each type gets IDs after its own
|
|
20
|
+
* highest positive ID, in −1, −2, … order, so the result is deterministic. Way refs and relation
|
|
21
|
+
* members follow. `osm` is unchanged; the copy has its indexes built.
|
|
22
|
+
*/
|
|
23
|
+
export function renumberNegativeIds(osm, options = {}) {
|
|
24
|
+
const nodeIds = positiveIds(osm.nodes.ids);
|
|
25
|
+
const wayIds = positiveIds(osm.ways.ids);
|
|
26
|
+
const relationIds = positiveIds(osm.relations.ids);
|
|
27
|
+
const mapped = { node: nodeIds, way: wayIds, relation: relationIds };
|
|
28
|
+
const renumbered = new Osm({ id: options.id ?? osm.id, header: osm.header });
|
|
29
|
+
for (const node of osm.nodes.sorted()) {
|
|
30
|
+
renumbered.nodes.addNode({ ...node, id: nodeIds.get(node.id) ?? node.id });
|
|
31
|
+
}
|
|
32
|
+
for (const way of osm.ways.sorted()) {
|
|
33
|
+
renumbered.ways.addWay({
|
|
34
|
+
...way,
|
|
35
|
+
id: wayIds.get(way.id) ?? way.id,
|
|
36
|
+
refs: way.refs.map((ref) => nodeIds.get(ref) ?? ref),
|
|
37
|
+
});
|
|
38
|
+
}
|
|
39
|
+
for (const relation of osm.relations.sorted()) {
|
|
40
|
+
renumbered.relations.addRelation({
|
|
41
|
+
...relation,
|
|
42
|
+
id: relationIds.get(relation.id) ?? relation.id,
|
|
43
|
+
members: relation.members.map((member) => ({
|
|
44
|
+
...member,
|
|
45
|
+
ref: mapped[member.type].get(member.ref) ?? member.ref,
|
|
46
|
+
})),
|
|
47
|
+
});
|
|
48
|
+
}
|
|
49
|
+
renumbered.buildIndexes();
|
|
50
|
+
renumbered.buildSpatialIndexes();
|
|
51
|
+
return { osm: renumbered, idMap: toIdMap(nodeIds, wayIds, relationIds) };
|
|
52
|
+
}
|
|
53
|
+
function toIdMap(nodes, ways, relations) {
|
|
54
|
+
return {
|
|
55
|
+
nodes: Object.fromEntries(nodes),
|
|
56
|
+
ways: Object.fromEntries(ways),
|
|
57
|
+
relations: Object.fromEntries(relations),
|
|
58
|
+
};
|
|
59
|
+
}
|
|
60
|
+
/** The ID map `renumberNegativeIds(osm)` would apply, without copying the data. */
|
|
61
|
+
export function negativeIdMap(osm) {
|
|
62
|
+
return toIdMap(positiveIds(osm.nodes.ids), positiveIds(osm.ways.ids), positiveIds(osm.relations.ids));
|
|
63
|
+
}
|
|
64
|
+
//# sourceMappingURL=renumber.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"renumber.js","sourceRoot":"","sources":["../src/renumber.ts"],"names":[],"mappings":"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"}
|
package/dist/stringtable.d.ts
CHANGED
|
@@ -23,7 +23,8 @@ export interface StringTableTransferables<T extends BufferType = BufferType> {
|
|
|
23
23
|
/**
|
|
24
24
|
* Append-only deduplicated string table.
|
|
25
25
|
*
|
|
26
|
-
* Limits:
|
|
26
|
+
* Limits: a string holds at most `MAX_STRING_BYTES` (65,535) UTF-8 bytes, and the table
|
|
27
|
+
* holds at most `MAX_UINT32_OFFSET` bytes in total. Larger input throws `OsmCapacityError`.
|
|
27
28
|
* Rebuilds reverse index lazily after transfer.
|
|
28
29
|
*/
|
|
29
30
|
export default class StringTable {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"stringtable.d.ts","sourceRoot":"","sources":["../src/stringtable.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAC;AACpD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,8BAA8B,CAAC;
|
|
1
|
+
{"version":3,"file":"stringtable.d.ts","sourceRoot":"","sources":["../src/stringtable.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAC;AACpD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,8BAA8B,CAAC;AAGlE,OAAO,EAAE,KAAK,UAAU,EAAE,oBAAoB,IAAI,GAAG,EAAE,MAAM,mBAAmB,CAAC;AAEjF;;GAEG;AACH,MAAM,WAAW,wBAAwB,CAAC,CAAC,SAAS,UAAU,GAAG,UAAU;IACzE,gCAAgC;IAChC,KAAK,EAAE,CAAC,CAAC;IACT,uCAAuC;IACvC,KAAK,EAAE,CAAC,CAAC;IACT,uCAAuC;IACvC,KAAK,EAAE,CAAC,CAAC;CACV;AAED;;;;;;GAMG;AACH,MAAM,CAAC,OAAO,OAAO,WAAW;IAC9B,gDAAgD;IAChD,OAAO,CAAC,GAAG,CAAqB;IAChC,gDAAgD;IAChD,OAAO,CAAC,GAAG,CAAqB;IAGhC,8CAA8C;IAC9C,KAAK,EAAE,GAAG,CAAC,UAAU,CAAC,CAAC;IACvB,qDAAqD;IACrD,KAAK,EAAE,GAAG,CAAC,WAAW,CAAC,CAAC;IACxB,sCAAsC;IACtC,KAAK,EAAE,GAAG,CAAC,WAAW,CAAC,CAAC;IAGxB,4DAA4D;IAC5D,OAAO,CAAC,aAAa,CAA6B;IAElD,qEAAqE;IACrE,OAAO,CAAC,iBAAiB,CAAS;IAGlC,gEAAgE;IAChE,OAAO,CAAC,aAAa,CAA6B;IAElD;;OAEG;IACH,YAAY,IAAI,CAAC,EAAE,wBAAwB,EAI1C;IAED;;OAEG;IACH,aAAa,IAAI,wBAAwB,CAMxC;IAED;;OAEG;IACH,GAAG,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAsBvB;IAED;;;OAGG;IACH,mBAAmB,CAAC,gBAAgB,EAAE,iBAAiB,4BAatD;IAED;;;OAGG;IACH,GAAG,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAUzB;IAED;;;OAGG;IACH,QAAQ,CAAC,KAAK,EAAE,MAAM,GAAG,UAAU,CAKlC;IAED,sCAAsC;IACtC,IAAI,MAAM,WAET;IAED;;;;;OAKG;IACH,UAAU,SAKT;IAED;;OAEG;IACH,mBAAmB,IAAI,iBAAiB,CAMvC;IAED;;;OAGG;IACH,OAAO,CAAC,kBAAkB;IAS1B;;OAEG;IACH,IAAI,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAKxB;IAED;;;OAGG;IACH,UAAU,CAAC,MAAM,EAAE,aAAa,GAAG,aAAa,CAE/C;CACF"}
|
package/dist/stringtable.js
CHANGED
|
@@ -6,11 +6,13 @@
|
|
|
6
6
|
*
|
|
7
7
|
* @module
|
|
8
8
|
*/
|
|
9
|
+
import { MAX_STRING_BYTES, MAX_UINT32_OFFSET, assertCapacity } from "./limits.js";
|
|
9
10
|
import { ResizeableTypedArray as RTA } from "./typed-arrays.js";
|
|
10
11
|
/**
|
|
11
12
|
* Append-only deduplicated string table.
|
|
12
13
|
*
|
|
13
|
-
* Limits:
|
|
14
|
+
* Limits: a string holds at most `MAX_STRING_BYTES` (65,535) UTF-8 bytes, and the table
|
|
15
|
+
* holds at most `MAX_UINT32_OFFSET` bytes in total. Larger input throws `OsmCapacityError`.
|
|
14
16
|
* Rebuilds reverse index lazily after transfer.
|
|
15
17
|
*/
|
|
16
18
|
export default class StringTable {
|
|
@@ -60,6 +62,8 @@ export default class StringTable {
|
|
|
60
62
|
return existingIndex;
|
|
61
63
|
const startIndex = this.start.length;
|
|
62
64
|
const encoded = this.enc.encode(str);
|
|
65
|
+
assertCapacity("string-bytes", encoded.length, MAX_STRING_BYTES, () => `String "${str.slice(0, 40)}…"`);
|
|
66
|
+
assertCapacity("total-string-bytes", this.bytes.length + encoded.length, MAX_UINT32_OFFSET, () => "The string table");
|
|
63
67
|
this.start.push(this.bytes.length);
|
|
64
68
|
this.bytes.pushMany(encoded);
|
|
65
69
|
this.count.push(encoded.length);
|
package/dist/stringtable.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"stringtable.js","sourceRoot":"","sources":["../src/stringtable.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAKH,OAAO,EAAmB,oBAAoB,IAAI,GAAG,EAAE,MAAM,mBAAmB,CAAC;AAcjF
|
|
1
|
+
{"version":3,"file":"stringtable.js","sourceRoot":"","sources":["../src/stringtable.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAKH,OAAO,EAAE,gBAAgB,EAAE,iBAAiB,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAClF,OAAO,EAAmB,oBAAoB,IAAI,GAAG,EAAE,MAAM,mBAAmB,CAAC;AAcjF;;;;;;GAMG;AACH,MAAM,CAAC,OAAO,OAAO,WAAW;IAC9B,gDAAgD;IACxC,GAAG,GAAG,IAAI,WAAW,EAAE,CAAC;IAChC,gDAAgD;IACxC,GAAG,GAAG,IAAI,WAAW,EAAE,CAAC,CAAC,QAAQ;IAEzC,8EAA8E;IAC9E,8CAA8C;IAC9C,KAAK,CAAkB;IACvB,qDAAqD;IACrD,KAAK,CAAmB;IACxB,sCAAsC;IACtC,KAAK,CAAmB;IAExB,8EAA8E;IAC9E,4DAA4D;IACpD,aAAa,GAAG,IAAI,GAAG,EAAkB,CAAC;IAElD,qEAAqE;IAC7D,iBAAiB,GAAG,KAAK,CAAC;IAElC,8EAA8E;IAC9E,gEAAgE;IACxD,aAAa,GAAG,IAAI,GAAG,EAAkB,CAAC;IAElD;;OAEG;IACH,YAAY,IAA+B;QACzC,IAAI,CAAC,KAAK,GAAG,IAAI,EAAE,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,UAAU,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,GAAG,CAAC,UAAU,CAAC,CAAC;QAClF,IAAI,CAAC,KAAK,GAAG,IAAI,EAAE,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,WAAW,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,GAAG,CAAC,WAAW,CAAC,CAAC;QACpF,IAAI,CAAC,KAAK,GAAG,IAAI,EAAE,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,WAAW,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,GAAG,CAAC,WAAW,CAAC,CAAC;IACtF,CAAC;IAED;;OAEG;IACH,aAAa;QACX,OAAO;YACL,KAAK,EAAE,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,MAAM;YAC9B,KAAK,EAAE,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,MAAM;YAC9B,KAAK,EAAE,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,MAAM;SAC/B,CAAC;IACJ,CAAC;IAED;;OAEG;IACH,GAAG,CAAC,GAAW;QACb,MAAM,aAAa,GAAG,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;QAClD,IAAI,aAAa,KAAK,SAAS;YAAE,OAAO,aAAa,CAAC;QACtD,MAAM,UAAU,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC;QACrC,MAAM,OAAO,GAAG,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;QACrC,cAAc,CACZ,cAAc,EACd,OAAO,CAAC,MAAM,EACd,gBAAgB,EAChB,GAAG,EAAE,CAAC,WAAW,GAAG,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,CACtC,CAAC;QACF,cAAc,CACZ,oBAAoB,EACpB,IAAI,CAAC,KAAK,CAAC,MAAM,GAAG,OAAO,CAAC,MAAM,EAClC,iBAAiB,EACjB,GAAG,EAAE,CAAC,kBAAkB,CACzB,CAAC;QACF,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;QACnC,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;QAC7B,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;QAChC,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,GAAG,EAAE,UAAU,CAAC,CAAC;QACxC,OAAO,UAAU,CAAC;IACpB,CAAC;IAED;;;OAGG;IACH,mBAAmB,CAAC,gBAAmC;QACrD,MAAM,KAAK,GAAG,IAAI,WAAW,CAAC,gBAAgB,CAAC,MAAM,CAAC,CAAC;QACvD,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,gBAAgB,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;YACjD,MAAM,WAAW,GAAG,gBAAgB,CAAC,CAAC,CAAC,CAAC;YACxC,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC;YACzC,MAAM,aAAa,GAAG,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;YAClD,IAAI,aAAa,KAAK,SAAS,EAAE,CAAC;gBAChC,KAAK,CAAC,CAAC,CAAC,GAAG,aAAa,CAAC;gBACzB,SAAS;YACX,CAAC;YACD,KAAK,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;QAC3B,CAAC;QACD,OAAO,KAAK,CAAC;IACf,CAAC;IAED;;;OAGG;IACH,GAAG,CAAC,KAAa;QACf,MAAM,MAAM,GAAG,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;QAC7C,IAAI,MAAM;YAAE,OAAO,MAAM,CAAC;QAC1B,MAAM,KAAK,GAAG,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;QACnC,MAAM,UAAU,GAAG,IAAI,WAAW,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC;QACrD,MAAM,SAAS,GAAG,IAAI,UAAU,CAAC,UAAU,CAAC,CAAC;QAC7C,SAAS,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;QACrB,MAAM,OAAO,GAAG,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;QAC3C,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;QACvC,OAAO,OAAO,CAAC;IACjB,CAAC;IAED;;;OAGG;IACH,QAAQ,CAAC,KAAa;QACpB,IAAI,KAAK,GAAG,CAAC,IAAI,KAAK,IAAI,IAAI,CAAC,MAAM;YAAE,MAAM,KAAK,CAAC,8BAA8B,KAAK,EAAE,CAAC,CAAC;QAC1F,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC;QACnC,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC;QACnC,OAAO,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,QAAQ,CAAC,KAAK,EAAE,KAAK,GAAG,KAAK,CAAC,CAAC;IACzD,CAAC;IAED,sCAAsC;IACtC,IAAI,MAAM;QACR,OAAO,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC;IAC3B,CAAC;IAED;;;;;OAKG;IACH,UAAU;QACR,IAAI,CAAC,KAAK,CAAC,OAAO,EAAE,CAAC;QACrB,IAAI,CAAC,KAAK,CAAC,OAAO,EAAE,CAAC;QACrB,IAAI,CAAC,KAAK,CAAC,OAAO,EAAE,CAAC;QACrB,IAAI,CAAC,iBAAiB,GAAG,IAAI,CAAC;IAChC,CAAC;IAED;;OAEG;IACH,mBAAmB;QACjB,MAAM,WAAW,GAAsB,EAAE,CAAC;QAC1C,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;YACrC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;QACrC,CAAC;QACD,OAAO,WAAW,CAAC;IACrB,CAAC;IAED;;;OAGG;IACK,kBAAkB;QACxB,IAAI,IAAI,CAAC,iBAAiB;YAAE,OAAO;QACnC,yDAAyD;QACzD,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;YACrC,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;QACzC,CAAC;QACD,IAAI,CAAC,iBAAiB,GAAG,IAAI,CAAC;IAChC,CAAC;IAED;;OAEG;IACH,IAAI,CAAC,GAAW;QACd,MAAM,QAAQ,GAAG,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;QAC7C,IAAI,QAAQ,KAAK,SAAS;YAAE,OAAO,QAAQ,CAAC;QAC5C,IAAI,CAAC,kBAAkB,EAAE,CAAC;QAC1B,OAAO,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC;IAC3C,CAAC;IAED;;;OAGG;IACH,UAAU,CAAC,MAAqB;QAC9B,OAAO,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;IAC3F,CAAC;CACF"}
|
package/dist/tags.d.ts
CHANGED
|
@@ -15,10 +15,14 @@ import { type BufferType } from "./typed-arrays.ts";
|
|
|
15
15
|
* Serializable state for worker transfer.
|
|
16
16
|
*/
|
|
17
17
|
export interface TagsTransferables<T extends BufferType = BufferType> {
|
|
18
|
-
/**
|
|
19
|
-
|
|
20
|
-
/**
|
|
21
|
-
|
|
18
|
+
/** Exact number of entities represented by this tag index. */
|
|
19
|
+
tagEntityCount: number;
|
|
20
|
+
/** One presence bit per entity. */
|
|
21
|
+
taggedEntityBits: T;
|
|
22
|
+
/** Tagged-entity prefix count at each 256-entity boundary. */
|
|
23
|
+
tagRankCheckpoints: T;
|
|
24
|
+
/** Tag offsets for tagged entities, including a final sentinel. */
|
|
25
|
+
tagOffsets: T;
|
|
22
26
|
/** Flattened tag key indices. */
|
|
23
27
|
tagKeys: T;
|
|
24
28
|
/** Flattened tag value indices. */
|
|
@@ -33,16 +37,19 @@ export interface TagsTransferables<T extends BufferType = BufferType> {
|
|
|
33
37
|
/**
|
|
34
38
|
* Bidirectional tag storage.
|
|
35
39
|
*
|
|
36
|
-
* Limits: Max 255 tags per entity.
|
|
37
40
|
* Note: String indices reference a shared `StringTable`.
|
|
38
41
|
*/
|
|
39
42
|
export declare class Tags {
|
|
40
43
|
/** Reference to the shared string table for key/value storage */
|
|
41
44
|
private stringTable;
|
|
42
|
-
/**
|
|
43
|
-
private
|
|
44
|
-
/**
|
|
45
|
-
private
|
|
45
|
+
/** Exact number of entities represented by this tag index. */
|
|
46
|
+
private entityCount;
|
|
47
|
+
/** One presence bit per entity. */
|
|
48
|
+
private taggedEntityBits;
|
|
49
|
+
/** Tagged-entity prefix count at each 256-entity boundary. */
|
|
50
|
+
private tagRankCheckpoints;
|
|
51
|
+
/** Tag offsets for tagged entities, including a final sentinel. */
|
|
52
|
+
private tagOffsets;
|
|
46
53
|
/** All tag key string indices, concatenated */
|
|
47
54
|
private tagKeys;
|
|
48
55
|
/** All tag value string indices, concatenated (parallel to tagKeys) */
|
|
@@ -61,6 +68,10 @@ export declare class Tags {
|
|
|
61
68
|
* Converted to flat arrays during buildIndex() and then cleared.
|
|
62
69
|
*/
|
|
63
70
|
private keyEntityIndexBuilder;
|
|
71
|
+
/** Tagged entity indexes collected during ingestion and released on finalization. */
|
|
72
|
+
private taggedEntityIndexBuilder;
|
|
73
|
+
/** Largest tagged entity index seen so far; enforces ascending ingestion order. */
|
|
74
|
+
private lastTaggedEntityIndex;
|
|
64
75
|
/** Whether buildIndex() has been called */
|
|
65
76
|
private indexBuilt;
|
|
66
77
|
/**
|
|
@@ -73,6 +84,12 @@ export declare class Tags {
|
|
|
73
84
|
addTags(index: number, tags?: OsmTags): [number[], number[]];
|
|
74
85
|
/**
|
|
75
86
|
* Add tags to an entity using key and value indexes.
|
|
87
|
+
*
|
|
88
|
+
* Tagged entities must be added in strictly ascending entity-index order and
|
|
89
|
+
* at most once per entity: the rank/popcount lookup orders tagged entities by
|
|
90
|
+
* index while `tagOffsets` records them in call order, so an out-of-order or
|
|
91
|
+
* repeated tagged index would silently misalign every later entity's tags.
|
|
92
|
+
* `Entities.addEntity` (append-only) satisfies this naturally.
|
|
76
93
|
*/
|
|
77
94
|
addTagKeysAndValues(index: number, keys: number[], values: number[]): void;
|
|
78
95
|
/**
|
|
@@ -90,6 +107,10 @@ export declare class Tags {
|
|
|
90
107
|
* Get the number of tags for an entity.
|
|
91
108
|
*/
|
|
92
109
|
cardinality(index: number): number;
|
|
110
|
+
/** Number of entities that have at least one tag. */
|
|
111
|
+
get taggedEntityCount(): number;
|
|
112
|
+
/** Iterate tagged entity indexes without allocating an intermediate array. */
|
|
113
|
+
taggedEntityIndexes(): Generator<number>;
|
|
93
114
|
/**
|
|
94
115
|
* Get the tags for an entity.
|
|
95
116
|
*/
|
|
@@ -116,9 +137,12 @@ export declare class Tags {
|
|
|
116
137
|
*/
|
|
117
138
|
transferables(): TagsTransferables;
|
|
118
139
|
/**
|
|
119
|
-
* Get the approximate memory requirements for a
|
|
140
|
+
* Get the approximate memory requirements for a tag index in bytes.
|
|
141
|
+
*
|
|
142
|
+
* @param tagCount - Total key/value pairs. Each costs 12 bytes: key, value and the
|
|
143
|
+
* reverse key → entity index. The small per-key index arrays are not counted.
|
|
120
144
|
*/
|
|
121
|
-
static getBytesRequired(
|
|
145
|
+
static getBytesRequired(entityCount: number, taggedEntityCount?: number, tagCount?: number): number;
|
|
122
146
|
/**
|
|
123
147
|
* Reconstruct a Tags index from transferable objects.
|
|
124
148
|
*/
|
|
@@ -128,5 +152,14 @@ export declare class Tags {
|
|
|
128
152
|
* Hashes tag keys and values for each entity.
|
|
129
153
|
*/
|
|
130
154
|
updateHash(hasher: ContentHasher): ContentHasher;
|
|
155
|
+
/**
|
|
156
|
+
* Return the compact tagged-entity ordinal, or -1 when the entity has no tags.
|
|
157
|
+
*
|
|
158
|
+
* The ordinal is the entity's rank among tagged entities: read the cached
|
|
159
|
+
* prefix count at the nearest 256-entity checkpoint, popcount the presence
|
|
160
|
+
* words between the checkpoint and the entity's word, then popcount the bits
|
|
161
|
+
* below the entity within its own word. The result indexes `tagOffsets`.
|
|
162
|
+
*/
|
|
163
|
+
private getTaggedEntityIndex;
|
|
131
164
|
}
|
|
132
165
|
//# sourceMappingURL=tags.d.ts.map
|