@osmix/core 0.0.2 → 0.0.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.
Files changed (165) hide show
  1. package/CHANGELOG.md +42 -0
  2. package/README.md +118 -107
  3. package/dist/core/src/entities.d.ts +114 -0
  4. package/dist/core/src/entities.d.ts.map +1 -0
  5. package/dist/core/src/entities.js +152 -0
  6. package/dist/core/src/entities.js.map +1 -0
  7. package/dist/core/src/ids.d.ts +113 -0
  8. package/dist/core/src/ids.d.ts.map +1 -0
  9. package/dist/{src → core/src}/ids.js +96 -31
  10. package/dist/core/src/ids.js.map +1 -0
  11. package/dist/core/src/index.d.ts +32 -0
  12. package/dist/core/src/index.d.ts.map +1 -0
  13. package/dist/core/src/index.js +35 -0
  14. package/dist/core/src/index.js.map +1 -0
  15. package/dist/core/src/nodes.d.ts +101 -0
  16. package/dist/core/src/nodes.d.ts.map +1 -0
  17. package/dist/core/src/nodes.js +309 -0
  18. package/dist/core/src/nodes.js.map +1 -0
  19. package/dist/core/src/osm.d.ts +74 -0
  20. package/dist/core/src/osm.d.ts.map +1 -0
  21. package/dist/core/src/osm.js +120 -0
  22. package/dist/core/src/osm.js.map +1 -0
  23. package/dist/core/src/relations.d.ts +118 -0
  24. package/dist/core/src/relations.d.ts.map +1 -0
  25. package/dist/core/src/relations.js +412 -0
  26. package/dist/core/src/relations.js.map +1 -0
  27. package/dist/core/src/stringtable.d.ts +95 -0
  28. package/dist/core/src/stringtable.d.ts.map +1 -0
  29. package/dist/core/src/stringtable.js +170 -0
  30. package/dist/core/src/stringtable.js.map +1 -0
  31. package/dist/core/src/tags.d.ts +126 -0
  32. package/dist/core/src/tags.d.ts.map +1 -0
  33. package/dist/core/src/tags.js +228 -0
  34. package/dist/core/src/tags.js.map +1 -0
  35. package/dist/core/src/typed-arrays.d.ts +124 -0
  36. package/dist/core/src/typed-arrays.d.ts.map +1 -0
  37. package/dist/{src → core/src}/typed-arrays.js +88 -9
  38. package/dist/core/src/typed-arrays.js.map +1 -0
  39. package/dist/core/src/utils.d.ts +11 -0
  40. package/dist/core/src/utils.d.ts.map +1 -0
  41. package/dist/{src → core/src}/utils.js +8 -10
  42. package/dist/core/src/utils.js.map +1 -0
  43. package/dist/core/src/ways.d.ts +101 -0
  44. package/dist/core/src/ways.d.ts.map +1 -0
  45. package/dist/core/src/ways.js +336 -0
  46. package/dist/core/src/ways.js.map +1 -0
  47. package/dist/core/test/memory.test.d.ts +7 -0
  48. package/dist/core/test/memory.test.d.ts.map +1 -0
  49. package/dist/core/test/memory.test.js +29 -0
  50. package/dist/core/test/memory.test.js.map +1 -0
  51. package/dist/{test → core/test}/mock-osm.d.ts +3 -3
  52. package/dist/core/test/mock-osm.d.ts.map +1 -0
  53. package/dist/{test → core/test}/mock-osm.js +3 -3
  54. package/dist/core/test/mock-osm.js.map +1 -0
  55. package/dist/core/test/tags-search.test.d.ts +2 -0
  56. package/dist/core/test/tags-search.test.d.ts.map +1 -0
  57. package/dist/core/test/tags-search.test.js +56 -0
  58. package/dist/core/test/tags-search.test.js.map +1 -0
  59. package/dist/core/test/typed-arrays.test.d.ts.map +1 -0
  60. package/dist/{test → core/test}/typed-arrays.test.js +19 -17
  61. package/dist/core/test/typed-arrays.test.js.map +1 -0
  62. package/dist/osmix/src/extract.d.ts +43 -0
  63. package/dist/osmix/src/extract.d.ts.map +1 -0
  64. package/dist/osmix/src/extract.js +156 -0
  65. package/dist/osmix/src/extract.js.map +1 -0
  66. package/dist/osmix/src/pbf.d.ts +55 -0
  67. package/dist/osmix/src/pbf.d.ts.map +1 -0
  68. package/dist/osmix/src/pbf.js +187 -0
  69. package/dist/osmix/src/pbf.js.map +1 -0
  70. package/dist/osmix/src/utils.d.ts +36 -0
  71. package/dist/osmix/src/utils.d.ts.map +1 -0
  72. package/dist/osmix/src/utils.js +108 -0
  73. package/dist/osmix/src/utils.js.map +1 -0
  74. package/dist/osmix/test/extract.bench.d.ts.map +1 -0
  75. package/dist/{test → osmix/test}/extract.bench.js +8 -5
  76. package/dist/osmix/test/extract.bench.js.map +1 -0
  77. package/dist/osmix/test/extract.test.d.ts.map +1 -0
  78. package/dist/osmix/test/extract.test.js +392 -0
  79. package/dist/osmix/test/extract.test.js.map +1 -0
  80. package/package.json +10 -12
  81. package/src/entities.ts +138 -22
  82. package/src/ids.ts +117 -45
  83. package/src/index.ts +34 -5
  84. package/src/nodes.ts +237 -58
  85. package/src/osm.ts +174 -0
  86. package/src/relations.ts +383 -54
  87. package/src/stringtable.ts +111 -36
  88. package/src/tags.ts +207 -46
  89. package/src/typed-arrays.ts +97 -10
  90. package/src/types/geoflatbush.d.ts +37 -0
  91. package/src/types/geokdbush.d.ts +37 -0
  92. package/src/types/kdbush.d.ts +24 -6
  93. package/src/utils.ts +9 -14
  94. package/src/ways.ts +248 -84
  95. package/test/memory.test.ts +38 -0
  96. package/test/mock-osm.ts +8 -8
  97. package/test/tags-search.test.ts +60 -0
  98. package/test/typed-arrays.test.ts +5 -6
  99. package/tsconfig.json +7 -1
  100. package/dist/src/entities.d.ts +0 -26
  101. package/dist/src/entities.d.ts.map +0 -1
  102. package/dist/src/entities.js +0 -69
  103. package/dist/src/entities.js.map +0 -1
  104. package/dist/src/ids.d.ts +0 -50
  105. package/dist/src/ids.d.ts.map +0 -1
  106. package/dist/src/ids.js.map +0 -1
  107. package/dist/src/index.d.ts +0 -6
  108. package/dist/src/index.d.ts.map +0 -1
  109. package/dist/src/index.js +0 -7
  110. package/dist/src/index.js.map +0 -1
  111. package/dist/src/nodes.d.ts +0 -36
  112. package/dist/src/nodes.d.ts.map +0 -1
  113. package/dist/src/nodes.js +0 -171
  114. package/dist/src/nodes.js.map +0 -1
  115. package/dist/src/osmix.d.ts +0 -88
  116. package/dist/src/osmix.d.ts.map +0 -1
  117. package/dist/src/osmix.js +0 -438
  118. package/dist/src/osmix.js.map +0 -1
  119. package/dist/src/relations.d.ts +0 -31
  120. package/dist/src/relations.d.ts.map +0 -1
  121. package/dist/src/relations.js +0 -161
  122. package/dist/src/relations.js.map +0 -1
  123. package/dist/src/stringtable.d.ts +0 -37
  124. package/dist/src/stringtable.d.ts.map +0 -1
  125. package/dist/src/stringtable.js +0 -101
  126. package/dist/src/stringtable.js.map +0 -1
  127. package/dist/src/tags.d.ts +0 -33
  128. package/dist/src/tags.d.ts.map +0 -1
  129. package/dist/src/tags.js +0 -92
  130. package/dist/src/tags.js.map +0 -1
  131. package/dist/src/typed-arrays.d.ts +0 -50
  132. package/dist/src/typed-arrays.d.ts.map +0 -1
  133. package/dist/src/typed-arrays.js.map +0 -1
  134. package/dist/src/utils.d.ts +0 -4
  135. package/dist/src/utils.d.ts.map +0 -1
  136. package/dist/src/utils.js.map +0 -1
  137. package/dist/src/ways.d.ts +0 -42
  138. package/dist/src/ways.d.ts.map +0 -1
  139. package/dist/src/ways.js +0 -186
  140. package/dist/src/ways.js.map +0 -1
  141. package/dist/test/extract.bench.d.ts.map +0 -1
  142. package/dist/test/extract.bench.js.map +0 -1
  143. package/dist/test/extract.test.d.ts.map +0 -1
  144. package/dist/test/extract.test.js +0 -127
  145. package/dist/test/extract.test.js.map +0 -1
  146. package/dist/test/mock-osm.d.ts.map +0 -1
  147. package/dist/test/mock-osm.js.map +0 -1
  148. package/dist/test/read.test.d.ts +0 -2
  149. package/dist/test/read.test.d.ts.map +0 -1
  150. package/dist/test/read.test.js +0 -17
  151. package/dist/test/read.test.js.map +0 -1
  152. package/dist/test/typed-arrays.test.d.ts.map +0 -1
  153. package/dist/test/typed-arrays.test.js.map +0 -1
  154. package/dist/test/write.test.d.ts +0 -2
  155. package/dist/test/write.test.d.ts.map +0 -1
  156. package/dist/test/write.test.js +0 -55
  157. package/dist/test/write.test.js.map +0 -1
  158. package/src/osmix.ts +0 -556
  159. package/test/extract.bench.ts +0 -29
  160. package/test/extract.test.ts +0 -161
  161. package/test/read.test.ts +0 -22
  162. package/test/write.test.ts +0 -69
  163. /package/dist/{test → core/test}/typed-arrays.test.d.ts +0 -0
  164. /package/dist/{test → osmix/test}/extract.bench.d.ts +0 -0
  165. /package/dist/{test → osmix/test}/extract.test.d.ts +0 -0
package/dist/src/osmix.js DELETED
@@ -1,438 +0,0 @@
1
- import { isNode, isRelation, isWay, nodeToFeature, OsmJsonToBlocksTransformStream, relationToFeature, wayToFeature, } from "@osmix/json";
2
- import { OsmBlocksToPbfBytesTransformStream, readOsmPbf, } from "@osmix/pbf";
3
- import { Nodes } from "./nodes";
4
- import { Relations } from "./relations";
5
- import StringTable, {} from "./stringtable";
6
- import { IdArrayType } from "./typed-arrays";
7
- import { bboxFromLonLats, throttle } from "./utils";
8
- import { Ways } from "./ways";
9
- /**
10
- * OSM Entity Index.
11
- */
12
- export class Osmix {
13
- // Filename or ID of this OSM Entity index.
14
- id = "unknown";
15
- header = {
16
- required_features: [],
17
- optional_features: [],
18
- };
19
- blocksGenerator = null;
20
- // Shared string lookup table for all nodes, ways, and relations
21
- stringTable;
22
- nodes;
23
- ways;
24
- relations;
25
- log = (message, type) => type === "error" ? console.error(message) : console.log(message);
26
- #indexBuilt = false;
27
- #startTime = performance.now();
28
- buildTimeMs = 0;
29
- static from({ id, header, stringTable, nodes, ways, relations, parsingTimeMs, }) {
30
- const osm = new Osmix({ id, header });
31
- osm.stringTable = StringTable.from(stringTable);
32
- osm.nodes = Nodes.from(osm.stringTable, nodes);
33
- osm.ways = Ways.from(osm.stringTable, ways);
34
- osm.relations = Relations.from(osm.stringTable, relations);
35
- osm.buildTimeMs = parsingTimeMs;
36
- osm.#indexBuilt = true;
37
- return osm;
38
- }
39
- /**
40
- * Easiest way to get started with Osmix. Reads a PBF file into an Osmix index. Logs progress to the console.
41
- */
42
- static async fromPbf(data, options = {}) {
43
- const osm = new Osmix(options);
44
- await osm.readPbf(data, options);
45
- // By default, build all spatial indexes.
46
- if (!Array.isArray(options.buildSpatialIndexes)) {
47
- osm.buildSpatialIndexes();
48
- }
49
- else if (options.buildSpatialIndexes.includes("node")) {
50
- osm.nodes.buildSpatialIndex();
51
- }
52
- else if (options.buildSpatialIndexes.includes("way")) {
53
- osm.ways.buildSpatialIndex(osm.nodes);
54
- }
55
- return osm;
56
- }
57
- constructor(options = {}) {
58
- if (options.header)
59
- this.header = options.header;
60
- if (options.id)
61
- this.id = options.id;
62
- if (options.logger)
63
- this.log = options.logger;
64
- this.stringTable = new StringTable();
65
- this.nodes = new Nodes(this.stringTable);
66
- this.ways = new Ways(this.stringTable);
67
- this.relations = new Relations(this.stringTable);
68
- }
69
- setLogger(listener) {
70
- this.log = listener;
71
- }
72
- createThrottledLog(interval) {
73
- return throttle(this.log, interval);
74
- }
75
- buildIndexes() {
76
- if (!this.nodes.isReady)
77
- this.nodes.buildIndex();
78
- if (!this.ways.isReady)
79
- this.ways.buildIndex();
80
- if (!this.relations.isReady)
81
- this.relations.buildIndex();
82
- this.stringTable.buildIndex();
83
- this.#indexBuilt = true;
84
- this.buildTimeMs = performance.now() - this.#startTime;
85
- }
86
- isReady() {
87
- return this.#indexBuilt;
88
- }
89
- transferables() {
90
- return {
91
- id: this.id,
92
- header: this.header,
93
- stringTable: this.stringTable.transferables(),
94
- nodes: this.nodes.transferables(),
95
- ways: this.ways.transferables(),
96
- relations: this.relations.transferables(),
97
- parsingTimeMs: this.buildTimeMs,
98
- };
99
- }
100
- async readPbf(data, options = {}) {
101
- if (this.#indexBuilt)
102
- throw Error("Osmix built. Create new instance.");
103
- const { extractBbox } = options;
104
- const { header, blocks } = await readOsmPbf(data);
105
- this.header = header;
106
- if (extractBbox) {
107
- this.header.bbox = {
108
- left: extractBbox[0],
109
- bottom: extractBbox[1],
110
- right: extractBbox[2],
111
- top: extractBbox[3],
112
- };
113
- }
114
- const logEverySecond = this.createThrottledLog(1_000);
115
- for await (const block of blocks) {
116
- const blockStringIndexMap = this.stringTable.createBlockIndexMap(block);
117
- for (const group of block.primitivegroup) {
118
- const { nodes, ways, relations, dense } = group;
119
- if (nodes && nodes.length > 0) {
120
- throw Error("Nodes must be dense!");
121
- }
122
- if (dense) {
123
- this.nodes.addDenseNodes(dense, block, blockStringIndexMap, extractBbox
124
- ? (node) => {
125
- return (node.lon >= extractBbox[0] &&
126
- node.lon <= extractBbox[2] &&
127
- node.lat >= extractBbox[1] &&
128
- node.lat <= extractBbox[3]);
129
- }
130
- : undefined);
131
- logEverySecond(`${this.nodes.size.toLocaleString()} nodes added`);
132
- }
133
- if (ways.length > 0) {
134
- // Nodes are finished, build their index.
135
- if (!this.nodes.isReady)
136
- this.nodes.buildIndex();
137
- this.ways.addWays(ways, blockStringIndexMap, extractBbox
138
- ? (way) => {
139
- const refs = way.refs.filter((ref) => this.nodes.ids.has(ref));
140
- if (refs.length === 0)
141
- return null;
142
- return {
143
- ...way,
144
- refs,
145
- };
146
- }
147
- : undefined);
148
- logEverySecond(`${this.ways.size.toLocaleString()} ways added`);
149
- }
150
- if (relations.length > 0) {
151
- if (!this.ways.isReady)
152
- this.ways.buildIndex();
153
- this.relations.addRelations(relations, blockStringIndexMap, extractBbox
154
- ? (relation) => {
155
- const members = relation.members.filter((member) => {
156
- if (member.type === "node")
157
- return this.nodes.ids.has(member.ref);
158
- if (member.type === "way")
159
- return this.ways.ids.has(member.ref);
160
- return false;
161
- });
162
- if (members.length === 0)
163
- return null;
164
- return {
165
- ...relation,
166
- members,
167
- };
168
- }
169
- : undefined);
170
- logEverySecond(`${this.relations.size.toLocaleString()} relations added`);
171
- }
172
- }
173
- }
174
- this.log(`${this.nodes.size.toLocaleString()} nodes, ${this.ways.size.toLocaleString()} ways, and ${this.relations.size.toLocaleString()} relations added.`);
175
- this.log("Building remaining id and tag indexes...");
176
- this.buildIndexes();
177
- }
178
- buildSpatialIndexes() {
179
- this.nodes.buildSpatialIndex();
180
- this.ways.buildSpatialIndex(this.nodes);
181
- }
182
- extract(bbox) {
183
- if (!this.#indexBuilt)
184
- this.buildIndexes();
185
- const [minLon, minLat, maxLon, maxLat] = bbox;
186
- const extracted = new Osmix({
187
- id: this.id,
188
- header: {
189
- ...this.header,
190
- bbox: {
191
- left: minLon,
192
- bottom: minLat,
193
- right: maxLon,
194
- top: maxLat,
195
- },
196
- },
197
- });
198
- this.log("Selecting nodes within bounding box...");
199
- this.buildSpatialIndexes();
200
- for (const node of this.nodes.sorted()) {
201
- if (node.lon >= minLon &&
202
- node.lon <= maxLon &&
203
- node.lat >= minLat &&
204
- node.lat <= maxLat) {
205
- extracted.nodes.addNode(node);
206
- }
207
- }
208
- extracted.nodes.buildIndex();
209
- this.log("Selecting ways within bounding box...");
210
- for (const way of this.ways.sorted()) {
211
- const refs = way.refs.filter((ref) => extracted.nodes.ids.has(ref));
212
- if (refs.length > 0) {
213
- extracted.ways.addWay({
214
- ...way,
215
- refs,
216
- });
217
- }
218
- }
219
- extracted.ways.buildIndex();
220
- this.log("Selecting relations within bounding box...");
221
- for (const relation of this.relations.sorted()) {
222
- const members = relation.members.filter((m) => {
223
- if (m.type === "node")
224
- return extracted.nodes.ids.has(m.ref);
225
- if (m.type === "way")
226
- return extracted.ways.ids.has(m.ref);
227
- return false;
228
- });
229
- if (members.length > 0) {
230
- extracted.relations.addRelation({
231
- ...relation,
232
- members,
233
- });
234
- }
235
- }
236
- extracted.buildIndexes();
237
- return extracted;
238
- }
239
- get(type, id) {
240
- if (type === "node")
241
- return this.nodes.get({ id });
242
- if (type === "way")
243
- return this.ways.get({ id });
244
- if (type === "relation")
245
- return this.relations.get({ id });
246
- }
247
- getById(eid) {
248
- const [type, sid] = eid.split("/");
249
- const id = Number(sid);
250
- switch (type) {
251
- case "node":
252
- return this.nodes.getById(id);
253
- case "way":
254
- return this.ways.getById(id);
255
- case "relation":
256
- return this.relations.getById(id);
257
- default: {
258
- return null;
259
- }
260
- }
261
- }
262
- getNodesInBbox(bbox, allNodes = false) {
263
- if (!this.#indexBuilt)
264
- throw new Error("Osm not finished");
265
- console.time("Osm.getNodesInBbox");
266
- const nodeCandidates = this.nodes.withinBbox(bbox);
267
- const nodePositions = new Float64Array(nodeCandidates.length * 2);
268
- const ids = new IdArrayType(nodeCandidates.length);
269
- let skipped = 0;
270
- nodeCandidates.forEach((nodeIndex, i) => {
271
- // Skip nodes with no tags, likely just a way node
272
- if (!allNodes && this.nodes.tags.cardinality(nodeIndex) === 0) {
273
- skipped++;
274
- return;
275
- }
276
- const [lon, lat] = this.nodes.getNodeLonLat({ index: nodeIndex });
277
- ids[i - skipped] = this.nodes.ids.at(nodeIndex);
278
- nodePositions[(i - skipped) * 2] = lon;
279
- nodePositions[(i - skipped) * 2 + 1] = lat;
280
- });
281
- console.timeEnd("Osm.getNodesInBbox");
282
- return {
283
- ids: ids.subarray(0, nodeCandidates.length - skipped),
284
- positions: nodePositions.slice(0, (nodeCandidates.length - skipped) * 2),
285
- };
286
- }
287
- getWaysInBbox(bbox) {
288
- console.time("Osm.getWaysInBbox");
289
- const wayCandidates = this.ways.intersects(bbox);
290
- const ids = new IdArrayType(wayCandidates.length);
291
- const wayPositions = [];
292
- const wayStartIndices = new Uint32Array(wayCandidates.length + 1);
293
- wayStartIndices[0] = 0;
294
- console.time("Osm.getWaysInBbox.loop");
295
- let size = 0;
296
- wayCandidates.forEach((wayIndex, i) => {
297
- ids[i] = this.ways.ids.at(wayIndex);
298
- const way = this.ways.getLine(wayIndex, this.nodes);
299
- size += way.length;
300
- wayPositions.push(way);
301
- const prevIndex = wayStartIndices[i];
302
- if (prevIndex === undefined)
303
- throw Error("Previous index is undefined");
304
- wayStartIndices[i + 1] = prevIndex + way.length / 2;
305
- });
306
- console.timeEnd("Osm.getWaysInBbox.loop");
307
- const wayPositionsArray = new Float64Array(size);
308
- let pIndex = 0;
309
- for (const way of wayPositions) {
310
- wayPositionsArray.set(way, pIndex);
311
- pIndex += way.length;
312
- }
313
- console.timeEnd("Osm.getWaysInBbox");
314
- return {
315
- ids,
316
- positions: wayPositionsArray,
317
- startIndices: wayStartIndices,
318
- };
319
- }
320
- getEntityGeoJson(entity) {
321
- if (isNode(entity)) {
322
- return nodeToFeature(entity);
323
- }
324
- if (isWay(entity)) {
325
- return wayToFeature(entity, (ref) => this.nodes.getNodeLonLat({ id: ref }));
326
- }
327
- if (isRelation(entity)) {
328
- return relationToFeature(entity, (ref) => this.nodes.getNodeLonLat({ id: ref }));
329
- }
330
- throw new Error("Unknown entity type");
331
- }
332
- getEntityBbox(entity) {
333
- if (isNode(entity)) {
334
- const [lon, lat] = this.nodes.getNodeLonLat({ id: entity.id });
335
- return [lon, lat, lon, lat];
336
- }
337
- if (isWay(entity)) {
338
- return this.ways.getBbox({ id: entity.id });
339
- }
340
- if (isRelation(entity)) {
341
- const relation = this.relations.getById(entity.id);
342
- if (!relation)
343
- throw Error("Relation not found");
344
- const lls = [];
345
- for (const member of relation.members) {
346
- if (member.type === "node") {
347
- const ll = this.nodes.getNodeLonLat({ id: member.ref });
348
- lls.push(ll);
349
- }
350
- else if (member.type === "way") {
351
- const wayIndex = this.ways.ids.getIndexFromId(member.ref);
352
- if (wayIndex === -1)
353
- throw Error("Way not found");
354
- const wayPositions = this.ways.getCoordinates(wayIndex, this.nodes);
355
- lls.push(...wayPositions);
356
- }
357
- }
358
- return bboxFromLonLats(lls);
359
- }
360
- throw Error("Unknown entity type");
361
- }
362
- /**
363
- * Get the bounding box of all entities in the OSM index.
364
- */
365
- bbox() {
366
- return this.nodes.bbox;
367
- }
368
- /**
369
- * Create a generator that yields all entities in the OSM index, sorted by type and id.
370
- */
371
- *allEntitiesSorted() {
372
- for (const node of this.nodes.sorted()) {
373
- yield node;
374
- }
375
- for (const way of this.ways.sorted()) {
376
- yield way;
377
- }
378
- for (const relation of this.relations.sorted()) {
379
- yield relation;
380
- }
381
- }
382
- /**
383
- * Convert the OSM index to a `ReadableStream<OsmPbfHeaderBlock | OsmEntity>`.
384
- */
385
- toEntityStream() {
386
- let headerEnqueued = false;
387
- const entityGenerator = this.allEntitiesSorted();
388
- return new ReadableStream({
389
- pull: async (controller) => {
390
- if (!headerEnqueued) {
391
- controller.enqueue({
392
- ...this.header,
393
- writingprogram: "@osmix/core",
394
- osmosis_replication_timestamp: Date.now(),
395
- });
396
- headerEnqueued = true;
397
- }
398
- const block = entityGenerator.next();
399
- if (block.done) {
400
- controller.close();
401
- }
402
- else {
403
- controller.enqueue(block.value);
404
- }
405
- },
406
- });
407
- }
408
- /**
409
- * Convert the OSM index to a `ReadableStream<Uint8Array>` of PBF bytes.
410
- */
411
- toPbfStream() {
412
- return this.toEntityStream()
413
- .pipeThrough(new OsmJsonToBlocksTransformStream())
414
- .pipeThrough(new OsmBlocksToPbfBytesTransformStream());
415
- }
416
- /**
417
- * Convert the OSM index to an in memory PBF ArrayBuffer.
418
- */
419
- async toPbfBuffer() {
420
- const chunks = [];
421
- let byteLength = 0;
422
- const writable = new WritableStream({
423
- write(chunk) {
424
- chunks.push(chunk);
425
- byteLength += chunk.byteLength;
426
- },
427
- });
428
- await this.toPbfStream().pipeTo(writable);
429
- const combined = new Uint8Array(byteLength);
430
- let offset = 0;
431
- for (const chunk of chunks) {
432
- combined.set(chunk, offset);
433
- offset += chunk.byteLength;
434
- }
435
- return combined.buffer;
436
- }
437
- }
438
- //# sourceMappingURL=osmix.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"osmix.js","sourceRoot":"","sources":["../../src/osmix.ts"],"names":[],"mappings":"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"}
@@ -1,31 +0,0 @@
1
- import type { OsmEntityType, OsmRelation, OsmRelationMember, OsmTags } from "@osmix/json";
2
- import type { OsmPbfRelation } from "@osmix/pbf";
3
- import { Entities, type EntitiesTransferables } from "./entities";
4
- import { Ids } from "./ids";
5
- import type StringTable from "./stringtable";
6
- import { Tags } from "./tags";
7
- import { type BufferType, ResizeableTypedArray } from "./typed-arrays";
8
- export interface RelationsTransferables extends EntitiesTransferables {
9
- memberStart: BufferType;
10
- memberCount: BufferType;
11
- memberRefs: BufferType;
12
- memberTypes: BufferType;
13
- memberRoles: BufferType;
14
- }
15
- export declare class Relations extends Entities<OsmRelation> {
16
- memberStart: ResizeableTypedArray<Uint32Array>;
17
- memberCount: ResizeableTypedArray<Uint16Array>;
18
- memberRefs: ResizeableTypedArray<Float64Array>;
19
- memberTypes: ResizeableTypedArray<Uint8Array>;
20
- memberRoles: ResizeableTypedArray<Uint32Array>;
21
- static from(stringTable: StringTable, rit: RelationsTransferables): Relations;
22
- constructor(stringTable: StringTable, idIndex?: Ids, tagIndex?: Tags);
23
- transferables(): RelationsTransferables;
24
- addRelation(relation: OsmRelation): void;
25
- addRelations(relations: OsmPbfRelation[], blockStringIndexMap: Map<number, number>, filter?: (relation: OsmRelation) => OsmRelation | null): number;
26
- buildEntityIndex(): void;
27
- getFullEntity(index: number, id: number, tags?: OsmTags): OsmRelation;
28
- getMembersByIndex(index: number, relationMemberTypes?: OsmEntityType[]): OsmRelationMember[];
29
- includesMember(index: number, memberRef: number, memberType: OsmEntityType, memberRole?: string): boolean;
30
- }
31
- //# sourceMappingURL=relations.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"relations.d.ts","sourceRoot":"","sources":["../../src/relations.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACX,aAAa,EACb,WAAW,EACX,iBAAiB,EACjB,OAAO,EACP,MAAM,aAAa,CAAA;AACpB,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,YAAY,CAAA;AAEhD,OAAO,EAAE,QAAQ,EAAE,KAAK,qBAAqB,EAAE,MAAM,YAAY,CAAA;AACjE,OAAO,EAAE,GAAG,EAAE,MAAM,OAAO,CAAA;AAC3B,OAAO,KAAK,WAAW,MAAM,eAAe,CAAA;AAC5C,OAAO,EAAE,IAAI,EAAE,MAAM,QAAQ,CAAA;AAC7B,OAAO,EACN,KAAK,UAAU,EAEf,oBAAoB,EACpB,MAAM,gBAAgB,CAAA;AAIvB,MAAM,WAAW,sBAAuB,SAAQ,qBAAqB;IACpE,WAAW,EAAE,UAAU,CAAA;IACvB,WAAW,EAAE,UAAU,CAAA;IACvB,UAAU,EAAE,UAAU,CAAA;IACtB,WAAW,EAAE,UAAU,CAAA;IACvB,WAAW,EAAE,UAAU,CAAA;CACvB;AAED,qBAAa,SAAU,SAAQ,QAAQ,CAAC,WAAW,CAAC;IACnD,WAAW,EAAE,oBAAoB,CAAC,WAAW,CAAC,CAAA;IAC9C,WAAW,EAAE,oBAAoB,CAAC,WAAW,CAAC,CAAA;IAG9C,UAAU,EAAE,oBAAoB,CAAC,YAAY,CAAC,CAAA;IAC9C,WAAW,EAAE,oBAAoB,CAAC,UAAU,CAAC,CAAA;IAC7C,WAAW,EAAE,oBAAoB,CAAC,WAAW,CAAC,CAAA;IAE9C,MAAM,CAAC,IAAI,CAAC,WAAW,EAAE,WAAW,EAAE,GAAG,EAAE,sBAAsB;gBAYrD,WAAW,EAAE,WAAW,EAAE,OAAO,CAAC,EAAE,GAAG,EAAE,QAAQ,CAAC,EAAE,IAAI;IASpE,aAAa,IAAI,sBAAsB;IAYvC,WAAW,CAAC,QAAQ,EAAE,WAAW;IAYjC,YAAY,CACX,SAAS,EAAE,cAAc,EAAE,EAC3B,mBAAmB,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,EACxC,MAAM,CAAC,EAAE,CAAC,QAAQ,EAAE,WAAW,KAAK,WAAW,GAAG,IAAI,GACpD,MAAM;IA8ET,gBAAgB;IAQhB,aAAa,CAAC,KAAK,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,OAAO,GAAG,WAAW;IAQrE,iBAAiB,CAChB,KAAK,EAAE,MAAM,EACb,mBAAmB,kBAAwB;IAgB5C,cAAc,CACb,KAAK,EAAE,MAAM,EACb,SAAS,EAAE,MAAM,EACjB,UAAU,EAAE,aAAa,EACzB,UAAU,CAAC,EAAE,MAAM;CAkBpB"}
@@ -1,161 +0,0 @@
1
- import { assertValue } from "@osmix/shared/assert";
2
- import { Entities } from "./entities";
3
- import { Ids } from "./ids";
4
- import { Tags } from "./tags";
5
- import { IdArrayType, ResizeableTypedArray, } from "./typed-arrays";
6
- const RELATION_MEMBER_TYPES = ["node", "way", "relation"];
7
- export class Relations extends Entities {
8
- memberStart;
9
- memberCount; // Maximum 65,535 members per relation
10
- // Store the ID of the member because relations have other relations as members.
11
- memberRefs;
12
- memberTypes;
13
- memberRoles;
14
- static from(stringTable, rit) {
15
- const idIndex = Ids.from(rit);
16
- const tagIndex = Tags.from(stringTable, rit);
17
- const ri = new Relations(stringTable, idIndex, tagIndex);
18
- ri.memberStart = ResizeableTypedArray.from(Uint32Array, rit.memberStart);
19
- ri.memberCount = ResizeableTypedArray.from(Uint16Array, rit.memberCount);
20
- ri.memberRefs = ResizeableTypedArray.from(IdArrayType, rit.memberRefs);
21
- ri.memberTypes = ResizeableTypedArray.from(Uint8Array, rit.memberTypes);
22
- ri.memberRoles = ResizeableTypedArray.from(Uint32Array, rit.memberRoles);
23
- return ri;
24
- }
25
- constructor(stringTable, idIndex, tagIndex) {
26
- super("relation", stringTable, idIndex, tagIndex);
27
- this.memberStart = new ResizeableTypedArray(Uint32Array);
28
- this.memberCount = new ResizeableTypedArray(Uint16Array);
29
- this.memberRefs = new ResizeableTypedArray(IdArrayType);
30
- this.memberTypes = new ResizeableTypedArray(Uint8Array);
31
- this.memberRoles = new ResizeableTypedArray(Uint32Array);
32
- }
33
- transferables() {
34
- return {
35
- memberStart: this.memberStart.array.buffer,
36
- memberCount: this.memberCount.array.buffer,
37
- memberRefs: this.memberRefs.array.buffer,
38
- memberTypes: this.memberTypes.array.buffer,
39
- memberRoles: this.memberRoles.array.buffer,
40
- ...this.ids.transferables(),
41
- ...this.tags.transferables(),
42
- };
43
- }
44
- addRelation(relation) {
45
- this.ids.add(relation.id);
46
- this.tags.addTags(relation.tags);
47
- this.memberStart.push(this.memberRefs.length);
48
- this.memberCount.push(relation.members.length);
49
- for (const member of relation.members) {
50
- this.memberRefs.push(member.ref);
51
- this.memberTypes.push(RELATION_MEMBER_TYPES.indexOf(member.type));
52
- this.memberRoles.push(this.stringTable.add(member.role ?? ""));
53
- }
54
- }
55
- addRelations(relations, blockStringIndexMap, filter) {
56
- const blockToStringTable = (k) => {
57
- const index = blockStringIndexMap.get(k);
58
- if (index === undefined)
59
- throw Error("Tag key not found");
60
- return index;
61
- };
62
- let added = 0;
63
- for (const relation of relations) {
64
- const members = [];
65
- const memberRefs = [];
66
- const memberTypes = [];
67
- const memberRoles = [];
68
- let refId = 0;
69
- for (let i = 0; i < relation.memids.length; i++) {
70
- const memid = relation.memids[i];
71
- const roleSid = relation.roles_sid[i];
72
- const typeIndex = relation.types[i];
73
- assertValue(memid, "Relation member ID is undefined");
74
- assertValue(roleSid, "Relation member role SID is undefined");
75
- assertValue(typeIndex, "Relation member type is undefined");
76
- refId += memid;
77
- const roleIndex = blockToStringTable(roleSid);
78
- const type = RELATION_MEMBER_TYPES[typeIndex];
79
- assertValue(type, "Relation member type not found");
80
- if (filter) {
81
- members.push({
82
- type,
83
- ref: refId,
84
- role: this.stringTable.get(roleIndex),
85
- });
86
- }
87
- memberRefs.push(refId);
88
- memberTypes.push(typeIndex);
89
- memberRoles.push(roleIndex);
90
- }
91
- const tagKeys = relation.keys.map(blockToStringTable);
92
- const tagValues = relation.vals.map(blockToStringTable);
93
- const filteredRelation = filter
94
- ? filter({
95
- id: relation.id,
96
- members,
97
- tags: this.tags.getTagsFromIndices(tagKeys, tagValues),
98
- })
99
- : null;
100
- if (filter && filteredRelation === null)
101
- continue;
102
- added++;
103
- this.ids.add(relation.id);
104
- this.memberStart.push(this.memberRefs.length);
105
- this.memberCount.push(filteredRelation?.members.length ?? memberRefs.length);
106
- this.memberRefs.pushMany(filteredRelation?.members.map((m) => m.ref) ?? memberRefs);
107
- this.memberTypes.pushMany(filteredRelation?.members.map((m) => RELATION_MEMBER_TYPES.indexOf(m.type)) ?? memberTypes);
108
- this.memberRoles.pushMany(filteredRelation?.members.map((m) => this.stringTable.add(m.role ?? "")) ?? memberRoles);
109
- this.tags.addTagKeysAndValues(tagKeys, tagValues);
110
- }
111
- return added;
112
- }
113
- buildEntityIndex() {
114
- this.memberStart.compact();
115
- this.memberCount.compact();
116
- this.memberRefs.compact();
117
- this.memberTypes.compact();
118
- this.memberRoles.compact();
119
- }
120
- getFullEntity(index, id, tags) {
121
- return {
122
- id,
123
- members: this.getMembersByIndex(index),
124
- tags,
125
- };
126
- }
127
- getMembersByIndex(index, relationMemberTypes = RELATION_MEMBER_TYPES) {
128
- const start = this.memberStart.at(index);
129
- const count = this.memberCount.at(index);
130
- const members = [];
131
- for (let i = start; i < start + count; i++) {
132
- const ref = this.memberRefs.at(i);
133
- const type = RELATION_MEMBER_TYPES[this.memberTypes.at(i)];
134
- if (type === undefined)
135
- throw Error(`Member type not found: ${i}`);
136
- if (!relationMemberTypes.includes(type))
137
- continue;
138
- const role = this.stringTable.get(this.memberRoles.at(i));
139
- members.push({ ref, type, role });
140
- }
141
- return members;
142
- }
143
- includesMember(index, memberRef, memberType, memberRole) {
144
- const start = this.memberStart.at(index);
145
- const count = this.memberCount.at(index);
146
- for (let i = start; i < start + count; i++) {
147
- const type = RELATION_MEMBER_TYPES[this.memberTypes.at(i)];
148
- if (type !== memberType)
149
- continue;
150
- const ref = this.memberRefs.at(i);
151
- if (ref !== memberRef)
152
- continue;
153
- if (memberRole !== undefined &&
154
- this.stringTable.get(this.memberRoles.at(i)) !== memberRole)
155
- continue;
156
- return true;
157
- }
158
- return false;
159
- }
160
- }
161
- //# sourceMappingURL=relations.js.map