@osmix/geoparquet 0.1.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.
Files changed (40) hide show
  1. package/CHANGELOG.md +21 -0
  2. package/README.md +47 -0
  3. package/dist/src/from-geoparquet.d.ts +68 -0
  4. package/dist/src/from-geoparquet.d.ts.map +1 -0
  5. package/dist/src/from-geoparquet.js +455 -0
  6. package/dist/src/from-geoparquet.js.map +1 -0
  7. package/dist/src/index.d.ts +27 -0
  8. package/dist/src/index.d.ts.map +1 -0
  9. package/dist/src/index.js +27 -0
  10. package/dist/src/index.js.map +1 -0
  11. package/dist/src/types.d.ts +47 -0
  12. package/dist/src/types.d.ts.map +1 -0
  13. package/dist/src/types.js +6 -0
  14. package/dist/src/types.js.map +1 -0
  15. package/dist/src/wkb.d.ts +22 -0
  16. package/dist/src/wkb.d.ts.map +1 -0
  17. package/dist/src/wkb.js +181 -0
  18. package/dist/src/wkb.js.map +1 -0
  19. package/dist/test/from-geoparquet.test.d.ts +2 -0
  20. package/dist/test/from-geoparquet.test.d.ts.map +1 -0
  21. package/dist/test/from-geoparquet.test.js +445 -0
  22. package/dist/test/from-geoparquet.test.js.map +1 -0
  23. package/dist/test/monaco-parquet.test.d.ts +2 -0
  24. package/dist/test/monaco-parquet.test.d.ts.map +1 -0
  25. package/dist/test/monaco-parquet.test.js +200 -0
  26. package/dist/test/monaco-parquet.test.js.map +1 -0
  27. package/dist/test/wkb.test.d.ts +2 -0
  28. package/dist/test/wkb.test.d.ts.map +1 -0
  29. package/dist/test/wkb.test.js +234 -0
  30. package/dist/test/wkb.test.js.map +1 -0
  31. package/package.json +53 -0
  32. package/src/from-geoparquet.ts +565 -0
  33. package/src/index.ts +27 -0
  34. package/src/types.ts +51 -0
  35. package/src/wkb.ts +218 -0
  36. package/test/download-monaco-highways.sh +40 -0
  37. package/test/from-geoparquet.test.ts +520 -0
  38. package/test/monaco-parquet.test.ts +249 -0
  39. package/test/wkb.test.ts +296 -0
  40. package/tsconfig.json +9 -0
@@ -0,0 +1,445 @@
1
+ import { describe, expect, it } from "bun:test";
2
+ import { GeoParquetOsmBuilder } from "../src/from-geoparquet";
3
+ /**
4
+ * Create WKB Point geometry.
5
+ */
6
+ function createPointWkb(lon, lat) {
7
+ const buffer = new ArrayBuffer(21);
8
+ const view = new DataView(buffer);
9
+ let offset = 0;
10
+ view.setUint8(offset, 1); // little endian
11
+ offset += 1;
12
+ view.setUint32(offset, 1, true); // Point type
13
+ offset += 4;
14
+ view.setFloat64(offset, lon, true);
15
+ offset += 8;
16
+ view.setFloat64(offset, lat, true);
17
+ return new Uint8Array(buffer);
18
+ }
19
+ /**
20
+ * Create WKB LineString geometry.
21
+ */
22
+ function createLineStringWkb(coords) {
23
+ const buffer = new ArrayBuffer(1 + 4 + 4 + coords.length * 16);
24
+ const view = new DataView(buffer);
25
+ let offset = 0;
26
+ view.setUint8(offset, 1); // little endian
27
+ offset += 1;
28
+ view.setUint32(offset, 2, true); // LineString type
29
+ offset += 4;
30
+ view.setUint32(offset, coords.length, true); // num points
31
+ offset += 4;
32
+ for (const [lon, lat] of coords) {
33
+ view.setFloat64(offset, lon, true);
34
+ offset += 8;
35
+ view.setFloat64(offset, lat, true);
36
+ offset += 8;
37
+ }
38
+ return new Uint8Array(buffer);
39
+ }
40
+ /**
41
+ * Create WKB Polygon geometry.
42
+ */
43
+ function createPolygonWkb(rings) {
44
+ const totalPoints = rings.reduce((sum, ring) => sum + ring.length, 0);
45
+ const buffer = new ArrayBuffer(1 + 4 + 4 + rings.length * 4 + totalPoints * 16);
46
+ const view = new DataView(buffer);
47
+ let offset = 0;
48
+ view.setUint8(offset, 1); // little endian
49
+ offset += 1;
50
+ view.setUint32(offset, 3, true); // Polygon type
51
+ offset += 4;
52
+ view.setUint32(offset, rings.length, true); // num rings
53
+ offset += 4;
54
+ for (const ring of rings) {
55
+ view.setUint32(offset, ring.length, true);
56
+ offset += 4;
57
+ for (const [lon, lat] of ring) {
58
+ view.setFloat64(offset, lon, true);
59
+ offset += 8;
60
+ view.setFloat64(offset, lat, true);
61
+ offset += 8;
62
+ }
63
+ }
64
+ return new Uint8Array(buffer);
65
+ }
66
+ /**
67
+ * Helper function to process rows using the builder.
68
+ */
69
+ function processRows(rows, options) {
70
+ const builder = new GeoParquetOsmBuilder({}, options, () => { });
71
+ builder.processGeoParquetRows(rows);
72
+ return builder.buildOsm();
73
+ }
74
+ describe("@osmix/geoparquet: GeoParquetOsmBuilder", () => {
75
+ it("should convert Point features to Nodes", () => {
76
+ const rows = [
77
+ {
78
+ type: "node",
79
+ id: 100n,
80
+ geometry: createPointWkb(-122.4194, 37.7749),
81
+ tags: { name: "San Francisco", population: "873965" },
82
+ bbox: [-122.4194, 37.7749, -122.4194, 37.7749],
83
+ },
84
+ {
85
+ type: "node",
86
+ id: 200n,
87
+ geometry: createPointWkb(-122.4094, 37.7849),
88
+ tags: { name: "Another Point" },
89
+ bbox: [-122.4094, 37.7849, -122.4094, 37.7849],
90
+ },
91
+ ];
92
+ const osm = processRows(rows);
93
+ expect(osm.nodes.size).toBe(2);
94
+ expect(osm.ways.size).toBe(0);
95
+ // Get nodes by index to check values
96
+ const node1 = osm.nodes.getByIndex(0);
97
+ const node2 = osm.nodes.getByIndex(1);
98
+ expect(node1).toBeDefined();
99
+ expect(node1?.lon).toBeCloseTo(-122.4194, 4);
100
+ expect(node1?.lat).toBeCloseTo(37.7749, 4);
101
+ expect(node1?.tags?.["name"]).toBe("San Francisco");
102
+ expect(node1?.tags?.["population"]).toBe("873965");
103
+ expect(node2).toBeDefined();
104
+ expect(node2?.lon).toBeCloseTo(-122.4094, 4);
105
+ expect(node2?.lat).toBeCloseTo(37.7849, 4);
106
+ });
107
+ it("should convert Point features to Nodes with auto-generated IDs", () => {
108
+ const rows = [
109
+ {
110
+ type: "node",
111
+ id: undefined, // No ID provided
112
+ geometry: createPointWkb(-122.4194, 37.7749),
113
+ tags: { name: "San Francisco" },
114
+ bbox: [-122.4194, 37.7749, -122.4194, 37.7749],
115
+ },
116
+ ];
117
+ const osm = processRows(rows);
118
+ expect(osm.nodes.size).toBe(1);
119
+ // Auto-generated IDs start at -1
120
+ const node = osm.nodes.getById(-1);
121
+ expect(node).toBeDefined();
122
+ expect(node?.lon).toBeCloseTo(-122.4194, 4);
123
+ expect(node?.lat).toBeCloseTo(37.7749, 4);
124
+ expect(node?.tags?.["name"]).toBe("San Francisco");
125
+ });
126
+ it("should convert LineString features to Ways with Nodes", () => {
127
+ const rows = [
128
+ {
129
+ type: "way",
130
+ id: undefined, // Auto-generate IDs
131
+ geometry: createLineStringWkb([
132
+ [-122.4194, 37.7749],
133
+ [-122.4094, 37.7849],
134
+ [-122.3994, 37.7949],
135
+ ]),
136
+ tags: { highway: "primary", name: "Main Street" },
137
+ bbox: [-122.4194, 37.7749, -122.3994, 37.7949],
138
+ },
139
+ ];
140
+ const osm = processRows(rows);
141
+ expect(osm.nodes.size).toBe(3);
142
+ expect(osm.ways.size).toBe(1);
143
+ const way = osm.ways.getById(-1);
144
+ expect(way).toBeDefined();
145
+ expect(way?.refs).toHaveLength(3);
146
+ expect(way?.tags?.["highway"]).toBe("primary");
147
+ expect(way?.tags?.["name"]).toBe("Main Street");
148
+ // Verify nodes were created with auto-generated IDs
149
+ const node1 = osm.nodes.getById(way.refs[0]);
150
+ const node2 = osm.nodes.getById(way.refs[1]);
151
+ const node3 = osm.nodes.getById(way.refs[2]);
152
+ expect(node1?.lon).toBeCloseTo(-122.4194, 4);
153
+ expect(node1?.lat).toBeCloseTo(37.7749, 4);
154
+ expect(node2?.lon).toBeCloseTo(-122.4094, 4);
155
+ expect(node2?.lat).toBeCloseTo(37.7849, 4);
156
+ expect(node3?.lon).toBeCloseTo(-122.3994, 4);
157
+ expect(node3?.lat).toBeCloseTo(37.7949, 4);
158
+ });
159
+ it("should convert Polygon features to Ways with area tags", () => {
160
+ const rows = [
161
+ {
162
+ type: "way",
163
+ id: undefined, // Auto-generate IDs
164
+ geometry: createPolygonWkb([
165
+ [
166
+ [-122.4194, 37.7749],
167
+ [-122.4094, 37.7749],
168
+ [-122.4094, 37.7849],
169
+ [-122.4194, 37.7849],
170
+ [-122.4194, 37.7749], // closed
171
+ ],
172
+ ]),
173
+ tags: { building: "yes", name: "Test Building" },
174
+ bbox: [-122.4194, 37.7749, -122.4094, 37.7849],
175
+ },
176
+ ];
177
+ const osm = processRows(rows);
178
+ expect(osm.nodes.size).toBe(4); // 4 unique nodes
179
+ expect(osm.ways.size).toBe(1);
180
+ expect(osm.relations.size).toBe(0);
181
+ const way = osm.ways.getById(-1);
182
+ expect(way).toBeDefined();
183
+ expect(way?.tags?.["building"]).toBe("yes");
184
+ expect(way?.tags?.["name"]).toBe("Test Building");
185
+ expect(way?.tags?.["area"]).toBe("yes");
186
+ expect(way?.refs).toHaveLength(5); // 4 unique + closing
187
+ expect(way?.refs[0]).toBe(way?.refs[4]); // Ring is closed
188
+ });
189
+ it("should convert Polygon with holes to relation with multiple Ways", () => {
190
+ const rows = [
191
+ {
192
+ type: "relation",
193
+ id: undefined, // Auto-generate IDs
194
+ geometry: createPolygonWkb([
195
+ // Outer ring
196
+ [
197
+ [-122.4194, 37.7749],
198
+ [-122.4094, 37.7749],
199
+ [-122.4094, 37.7849],
200
+ [-122.4194, 37.7849],
201
+ [-122.4194, 37.7749],
202
+ ],
203
+ // Hole
204
+ [
205
+ [-122.4164, 37.7779],
206
+ [-122.4144, 37.7779],
207
+ [-122.4144, 37.7799],
208
+ [-122.4164, 37.7799],
209
+ [-122.4164, 37.7779],
210
+ ],
211
+ ]),
212
+ tags: { building: "yes" },
213
+ bbox: [-122.4194, 37.7749, -122.4094, 37.7849],
214
+ },
215
+ ];
216
+ const osm = processRows(rows);
217
+ expect(osm.ways.size).toBe(2);
218
+ expect(osm.relations.size).toBe(1);
219
+ // Get ways by index since IDs are auto-generated
220
+ const outerWay = osm.ways.getByIndex(0);
221
+ expect(outerWay).toBeDefined();
222
+ expect(outerWay?.tags?.["area"]).toBe("yes");
223
+ expect(outerWay?.tags?.["building"]).toBeUndefined(); // Tags go on relation
224
+ const holeWay = osm.ways.getByIndex(1);
225
+ expect(holeWay).toBeDefined();
226
+ expect(holeWay?.tags?.["area"]).toBe("yes");
227
+ const relation = osm.relations.getById(-1);
228
+ expect(relation).toBeDefined();
229
+ expect(relation?.tags?.["type"]).toBe("multipolygon");
230
+ expect(relation?.tags?.["building"]).toBe("yes");
231
+ expect(relation?.members).toHaveLength(2);
232
+ expect(relation?.members[0]?.type).toBe("way");
233
+ expect(relation?.members[0]?.role).toBe("outer");
234
+ expect(relation?.members[1]?.type).toBe("way");
235
+ expect(relation?.members[1]?.role).toBe("inner");
236
+ });
237
+ it("should handle JSON string tags", () => {
238
+ const rows = [
239
+ {
240
+ type: "node",
241
+ id: undefined,
242
+ geometry: createPointWkb(-122.4194, 37.7749),
243
+ tags: '{"name":"Test","highway":"primary"}',
244
+ bbox: [-122.4194, 37.7749, -122.4194, 37.7749],
245
+ },
246
+ ];
247
+ const osm = processRows(rows);
248
+ const node = osm.nodes.getById(-1);
249
+ expect(node?.tags?.["name"]).toBe("Test");
250
+ expect(node?.tags?.["highway"]).toBe("primary");
251
+ });
252
+ it("should handle null tags", () => {
253
+ const rows = [
254
+ {
255
+ type: "node",
256
+ id: undefined,
257
+ geometry: createPointWkb(-122.4194, 37.7749),
258
+ tags: null,
259
+ bbox: [-122.4194, 37.7749, -122.4194, 37.7749],
260
+ },
261
+ ];
262
+ const osm = processRows(rows);
263
+ const node = osm.nodes.getById(-1);
264
+ expect(node?.tags).toBeUndefined();
265
+ });
266
+ it("should skip rows with missing geometry", () => {
267
+ const rows = [
268
+ {
269
+ type: "node",
270
+ id: undefined,
271
+ geometry: undefined,
272
+ tags: { name: "Missing geometry" },
273
+ bbox: [0, 0, 0, 0],
274
+ },
275
+ {
276
+ type: "node",
277
+ id: undefined,
278
+ geometry: createPointWkb(-122.4194, 37.7749),
279
+ tags: { name: "Valid point" },
280
+ bbox: [-122.4194, 37.7749, -122.4194, 37.7749],
281
+ },
282
+ ];
283
+ const osm = processRows(rows);
284
+ expect(osm.nodes.size).toBe(1);
285
+ const node = osm.nodes.getById(-1);
286
+ expect(node?.tags?.["name"]).toBe("Valid point");
287
+ });
288
+ it("should reuse nodes when features share coordinates", () => {
289
+ const rows = [
290
+ {
291
+ type: "way",
292
+ id: undefined,
293
+ geometry: createLineStringWkb([
294
+ [-122.4194, 37.7749],
295
+ [-122.4094, 37.7849],
296
+ ]),
297
+ tags: { highway: "primary" },
298
+ bbox: [-122.4194, 37.7749, -122.4094, 37.7849],
299
+ },
300
+ {
301
+ type: "way",
302
+ id: undefined,
303
+ geometry: createLineStringWkb([
304
+ [-122.4094, 37.7849], // Shared coordinate
305
+ [-122.3994, 37.7949],
306
+ ]),
307
+ tags: { highway: "secondary" },
308
+ bbox: [-122.4094, 37.7849, -122.3994, 37.7949],
309
+ },
310
+ ];
311
+ const osm = processRows(rows);
312
+ // Should have 3 nodes (shared coordinate is reused)
313
+ expect(osm.nodes.size).toBe(3);
314
+ expect(osm.ways.size).toBe(2);
315
+ const way1 = osm.ways.getById(-1);
316
+ const way2 = osm.ways.getById(-2);
317
+ expect(way1?.refs).toHaveLength(2);
318
+ expect(way2?.refs).toHaveLength(2);
319
+ // Shared node
320
+ expect(way1?.refs[1]).toBe(way2?.refs[0]);
321
+ });
322
+ it("should build indexes after processing", () => {
323
+ const rows = [
324
+ {
325
+ type: "node",
326
+ id: undefined,
327
+ geometry: createPointWkb(-122.4194, 37.7749),
328
+ tags: { name: "Test" },
329
+ bbox: [-122.4194, 37.7749, -122.4194, 37.7749],
330
+ },
331
+ ];
332
+ const osm = processRows(rows);
333
+ expect(osm.isReady()).toBe(true);
334
+ expect(osm.nodes.isReady()).toBe(true);
335
+ expect(osm.ways.isReady()).toBe(true);
336
+ });
337
+ it("should handle object tags", () => {
338
+ const rows = [
339
+ {
340
+ type: "node",
341
+ id: undefined,
342
+ geometry: createPointWkb(-122.4194, 37.7749),
343
+ tags: { name: "Test", highway: "primary" },
344
+ bbox: [-122.4194, 37.7749, -122.4194, 37.7749],
345
+ },
346
+ ];
347
+ const osm = processRows(rows);
348
+ const node = osm.nodes.getById(-1);
349
+ expect(node?.tags?.["name"]).toBe("Test");
350
+ expect(node?.tags?.["highway"]).toBe("primary");
351
+ });
352
+ it("should handle custom column names", () => {
353
+ const rows = [
354
+ {
355
+ type: "node",
356
+ osm_id: undefined,
357
+ geom: createPointWkb(-122.4194, 37.7749),
358
+ properties: { name: "Custom columns" },
359
+ bbox: [-122.4194, 37.7749, -122.4194, 37.7749],
360
+ },
361
+ ];
362
+ const osm = processRows(rows, {
363
+ idColumn: "osm_id",
364
+ geometryColumn: "geom",
365
+ tagsColumn: "properties",
366
+ });
367
+ expect(osm.nodes.size).toBe(1);
368
+ const node = osm.nodes.getById(-1);
369
+ expect(node?.tags?.["name"]).toBe("Custom columns");
370
+ });
371
+ it("should infer type from geometry when type column is missing", () => {
372
+ // Simple polygon without holes - should only create a way, not a relation
373
+ const simplePolygonRows = [
374
+ {
375
+ type: undefined, // Missing type
376
+ id: 123n,
377
+ geometry: createPolygonWkb([
378
+ [
379
+ [-122.4194, 37.7749],
380
+ [-122.4094, 37.7749],
381
+ [-122.4094, 37.7849],
382
+ [-122.4194, 37.7849],
383
+ [-122.4194, 37.7749],
384
+ ],
385
+ ]),
386
+ tags: { building: "yes" },
387
+ bbox: [-122.4194, 37.7749, -122.4094, 37.7849],
388
+ },
389
+ ];
390
+ const osm1 = processRows(simplePolygonRows);
391
+ // Should create just a way, no relation
392
+ expect(osm1.ways.size).toBe(1);
393
+ expect(osm1.relations.size).toBe(0);
394
+ // Way should have the feature ID and tags
395
+ const way = osm1.ways.getById(123);
396
+ expect(way).toBeDefined();
397
+ expect(way?.tags?.["building"]).toBe("yes");
398
+ expect(way?.tags?.["area"]).toBe("yes");
399
+ });
400
+ it("should infer relation type for polygon with holes when type is missing", () => {
401
+ // Polygon with hole - should create a relation
402
+ const polygonWithHoleRows = [
403
+ {
404
+ type: undefined, // Missing type
405
+ id: 456n,
406
+ geometry: createPolygonWkb([
407
+ // Outer ring
408
+ [
409
+ [-122.4194, 37.7749],
410
+ [-122.4094, 37.7749],
411
+ [-122.4094, 37.7849],
412
+ [-122.4194, 37.7849],
413
+ [-122.4194, 37.7749],
414
+ ],
415
+ // Hole
416
+ [
417
+ [-122.4164, 37.7779],
418
+ [-122.4144, 37.7779],
419
+ [-122.4144, 37.7799],
420
+ [-122.4164, 37.7799],
421
+ [-122.4164, 37.7779],
422
+ ],
423
+ ]),
424
+ tags: { building: "yes" },
425
+ bbox: [-122.4194, 37.7749, -122.4094, 37.7849],
426
+ },
427
+ ];
428
+ const osm2 = processRows(polygonWithHoleRows);
429
+ // Should create 2 ways (outer + hole) and 1 relation
430
+ expect(osm2.ways.size).toBe(2);
431
+ expect(osm2.relations.size).toBe(1);
432
+ // Relation should have the feature ID and tags
433
+ const relation = osm2.relations.getById(456);
434
+ expect(relation).toBeDefined();
435
+ expect(relation?.tags?.["type"]).toBe("multipolygon");
436
+ expect(relation?.tags?.["building"]).toBe("yes");
437
+ expect(relation?.members).toHaveLength(2);
438
+ expect(relation?.members[0]?.role).toBe("outer");
439
+ expect(relation?.members[1]?.role).toBe("inner");
440
+ // Ways should not have the feature ID (456 goes to relation)
441
+ const outerWay = osm2.ways.getByIndex(0);
442
+ expect(outerWay?.id).not.toBe(456);
443
+ });
444
+ });
445
+ //# sourceMappingURL=from-geoparquet.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"from-geoparquet.test.js","sourceRoot":"","sources":["../../test/from-geoparquet.test.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=monaco-parquet.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"monaco-parquet.test.d.ts","sourceRoot":"","sources":["../../test/monaco-parquet.test.ts"],"names":[],"mappings":""}