@osmix/geoparquet 0.1.0 → 0.1.1

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 CHANGED
@@ -1,5 +1,14 @@
1
1
  # @osmix/geoparquet
2
2
 
3
+ ## 0.1.1
4
+
5
+ ### Patch Changes
6
+
7
+ - 68d6bd8: Fix publishing for packages.
8
+ - Updated dependencies [68d6bd8]
9
+ - @osmix/core@0.1.2
10
+ - @osmix/shared@0.0.7
11
+
3
12
  ## 0.1.0
4
13
 
5
14
  ### Minor Changes
@@ -0,0 +1,68 @@
1
+ /**
2
+ * GeoParquet to OSM conversion utilities.
3
+ *
4
+ * Imports GeoParquet files into Osm indexes, mapping geometry
5
+ * types to appropriate OSM entity structures.
6
+ *
7
+ * @module
8
+ */
9
+ import { Osm, type OsmOptions } from "@osmix/core";
10
+ import { type ProgressEvent } from "@osmix/shared/progress";
11
+ import type { GeoParquetReadOptions, GeoParquetSource } from "./types";
12
+ /**
13
+ * Create an Osm index from GeoParquet data.
14
+ *
15
+ * Accepts various input formats (file path, URL, or buffer) and converts
16
+ * features to OSM entities:
17
+ * - Point → Node
18
+ * - LineString → Way with nodes
19
+ * - Polygon → Way (simple) or Relation (with holes)
20
+ * - MultiPolygon → Relation
21
+ *
22
+ * Feature IDs are preserved if available; otherwise sequential negative IDs
23
+ * are assigned. Feature tags become OSM tags.
24
+ *
25
+ * @param source - GeoParquet data source (file path, URL, or buffer)
26
+ * @param options - Osm index options (id, header)
27
+ * @param readOptions - Options for reading the parquet file
28
+ * @param onProgress - Progress callback for UI feedback
29
+ * @returns Populated Osm index with built indexes
30
+ *
31
+ * @example
32
+ * ```ts
33
+ * import { fromGeoParquet } from "@osmix/geoparquet"
34
+ *
35
+ * // From file
36
+ * const osm = await fromGeoParquet("./roads.parquet")
37
+ *
38
+ * // Query the imported data
39
+ * const highways = osm.ways.search("highway")
40
+ * ```
41
+ */
42
+ export declare function fromGeoParquet(source: GeoParquetSource, options?: Partial<OsmOptions>, readOptions?: GeoParquetReadOptions, onProgress?: (progress: ProgressEvent) => void): Promise<Osm>;
43
+ export declare class GeoParquetOsmBuilder {
44
+ private osm;
45
+ private readOptions;
46
+ private onProgress;
47
+ constructor(osmOptions?: Partial<OsmOptions>, readOptions?: GeoParquetReadOptions, onProgress?: (progress: ProgressEvent) => void);
48
+ readParquetRows(source: GeoParquetSource): Promise<Record<string, any>[]>;
49
+ /**
50
+ * Converts GeoParquet rows to OSM entities.
51
+ */
52
+ processGeoParquetRows(rows: Record<string, unknown>[]): void;
53
+ buildOsm(): Osm;
54
+ private nextNodeId;
55
+ private nextWayId;
56
+ private nextRelationId;
57
+ getNextRelationId(): number;
58
+ getNextWayId(): number;
59
+ getNextNodeId(): number;
60
+ private nodeMap;
61
+ private getOrCreateNode;
62
+ private processPoint;
63
+ private processLineString;
64
+ private processMultiLineString;
65
+ private processPolygon;
66
+ private processMultiPolygon;
67
+ }
68
+ //# sourceMappingURL=from-geoparquet.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"from-geoparquet.d.ts","sourceRoot":"","sources":["../src/from-geoparquet.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,EAAE,GAAG,EAAE,KAAK,UAAU,EAAE,MAAM,aAAa,CAAA;AAClD,OAAO,EAEN,KAAK,aAAa,EAElB,MAAM,wBAAwB,CAAA;AAiB/B,OAAO,KAAK,EAAE,qBAAqB,EAAE,gBAAgB,EAAE,MAAM,SAAS,CAAA;AAGtE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6BG;AACH,wBAAsB,cAAc,CACnC,MAAM,EAAE,gBAAgB,EACxB,OAAO,GAAE,OAAO,CAAC,UAAU,CAAM,EACjC,WAAW,GAAE,qBAA0B,EACvC,UAAU,GAAE,CAAC,QAAQ,EAAE,aAAa,KAAK,IAAkB,GACzD,OAAO,CAAC,GAAG,CAAC,CAcd;AAED,qBAAa,oBAAoB;IAChC,OAAO,CAAC,GAAG,CAAK;IAChB,OAAO,CAAC,WAAW,CAAuB;IAC1C,OAAO,CAAC,UAAU,CAAmC;gBAGpD,UAAU,GAAE,OAAO,CAAC,UAAU,CAAM,EACpC,WAAW,GAAE,qBAA0B,EACvC,UAAU,GAAE,CAAC,QAAQ,EAAE,aAAa,KAAK,IAAkB;IAOtD,eAAe,CAAC,MAAM,EAAE,gBAAgB;IAoC9C;;OAEG;IACH,qBAAqB,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE;IA6FrD,QAAQ;IAWR,OAAO,CAAC,UAAU,CAAK;IACvB,OAAO,CAAC,SAAS,CAAK;IACtB,OAAO,CAAC,cAAc,CAAK;IAC3B,iBAAiB;IAGjB,YAAY;IAGZ,aAAa;IAKb,OAAO,CAAC,OAAO,CAA4B;IAG3C,OAAO,CAAC,eAAe;IAiBvB,OAAO,CAAC,YAAY;IAoBpB,OAAO,CAAC,iBAAiB;IA6BzB,OAAO,CAAC,sBAAsB;IA2B9B,OAAO,CAAC,cAAc;IAoFtB,OAAO,CAAC,mBAAmB;CA4E3B"}
@@ -0,0 +1,455 @@
1
+ /**
2
+ * GeoParquet to OSM conversion utilities.
3
+ *
4
+ * Imports GeoParquet files into Osm indexes, mapping geometry
5
+ * types to appropriate OSM entity structures.
6
+ *
7
+ * @module
8
+ */
9
+ import { Osm } from "@osmix/core";
10
+ import { logProgress, progressEvent, } from "@osmix/shared/progress";
11
+ import { rewindFeature } from "@placemarkio/geojson-rewind";
12
+ import { asyncBufferFromUrl, parquetReadObjects, } from "hyparquet";
13
+ import { parseWkb } from "./wkb";
14
+ /**
15
+ * Create an Osm index from GeoParquet data.
16
+ *
17
+ * Accepts various input formats (file path, URL, or buffer) and converts
18
+ * features to OSM entities:
19
+ * - Point → Node
20
+ * - LineString → Way with nodes
21
+ * - Polygon → Way (simple) or Relation (with holes)
22
+ * - MultiPolygon → Relation
23
+ *
24
+ * Feature IDs are preserved if available; otherwise sequential negative IDs
25
+ * are assigned. Feature tags become OSM tags.
26
+ *
27
+ * @param source - GeoParquet data source (file path, URL, or buffer)
28
+ * @param options - Osm index options (id, header)
29
+ * @param readOptions - Options for reading the parquet file
30
+ * @param onProgress - Progress callback for UI feedback
31
+ * @returns Populated Osm index with built indexes
32
+ *
33
+ * @example
34
+ * ```ts
35
+ * import { fromGeoParquet } from "@osmix/geoparquet"
36
+ *
37
+ * // From file
38
+ * const osm = await fromGeoParquet("./roads.parquet")
39
+ *
40
+ * // Query the imported data
41
+ * const highways = osm.ways.search("highway")
42
+ * ```
43
+ */
44
+ export async function fromGeoParquet(source, options = {}, readOptions = {}, onProgress = logProgress) {
45
+ const builder = new GeoParquetOsmBuilder(options, readOptions, onProgress);
46
+ onProgress(progressEvent("Loading GeoParquet file..."));
47
+ // Read rows from parquet file
48
+ const rows = await builder.readParquetRows(source);
49
+ onProgress(progressEvent(`Processing ${rows.length} features...`));
50
+ // Convert to OSM entities
51
+ builder.processGeoParquetRows(rows);
52
+ return builder.buildOsm();
53
+ }
54
+ export class GeoParquetOsmBuilder {
55
+ osm;
56
+ readOptions;
57
+ onProgress;
58
+ constructor(osmOptions = {}, readOptions = {}, onProgress = logProgress) {
59
+ this.osm = new Osm(osmOptions);
60
+ this.readOptions = readOptions;
61
+ this.onProgress = onProgress;
62
+ }
63
+ async readParquetRows(source) {
64
+ let file;
65
+ if (typeof source === "string") {
66
+ // String sources are treated as URLs
67
+ this.onProgress(progressEvent(`Fetching from URL: ${source}`));
68
+ file = await asyncBufferFromUrl({ url: source });
69
+ }
70
+ else if (source instanceof URL) {
71
+ this.onProgress(progressEvent(`Fetching from URL: ${source.href}`));
72
+ file = await asyncBufferFromUrl({ url: source.href });
73
+ }
74
+ else if (source instanceof ArrayBuffer) {
75
+ // Wrap ArrayBuffer as AsyncBuffer
76
+ file = {
77
+ byteLength: source.byteLength,
78
+ slice: (start, end) => source.slice(start, end),
79
+ };
80
+ }
81
+ else {
82
+ // Assume it's already an AsyncBuffer
83
+ file = source;
84
+ }
85
+ const readConfig = {
86
+ file,
87
+ ...this.readOptions,
88
+ columns: [
89
+ this.readOptions.typeColumn ?? "type",
90
+ this.readOptions.idColumn ?? "id",
91
+ this.readOptions.geometryColumn ?? "geometry",
92
+ this.readOptions.tagsColumn ?? "tags",
93
+ this.readOptions.bboxColumn ?? "bbox",
94
+ ],
95
+ };
96
+ this.onProgress(progressEvent("Reading parquet data..."));
97
+ return parquetReadObjects(readConfig);
98
+ }
99
+ /**
100
+ * Converts GeoParquet rows to OSM entities.
101
+ */
102
+ processGeoParquetRows(rows) {
103
+ this.onProgress(progressEvent("Converting GeoParquet to Osmix..."));
104
+ const idColumn = this.readOptions.idColumn ?? "id";
105
+ const typeColumn = this.readOptions.typeColumn ?? "type";
106
+ const geometryColumn = this.readOptions.geometryColumn ?? "geometry";
107
+ const tagsColumn = this.readOptions.tagsColumn ?? "tags";
108
+ const bboxColumn = this.readOptions.bboxColumn ?? "bbox";
109
+ // Process each row
110
+ let count = 0;
111
+ for (const row of rows) {
112
+ // Extract values using column names
113
+ // biome-ignore lint/suspicious/noExplicitAny: dynamic column access
114
+ const rowAny = row;
115
+ const id = rowAny[idColumn];
116
+ const type = rowAny[typeColumn];
117
+ const geometryData = rowAny[geometryColumn];
118
+ const tagsData = rowAny[tagsColumn];
119
+ // bboxData is read but currently unused - reserved for future optimization
120
+ void rowAny[bboxColumn];
121
+ if (!geometryData) {
122
+ count++;
123
+ continue;
124
+ }
125
+ // Parse WKB geometry
126
+ let geometry;
127
+ try {
128
+ if (geometryData instanceof Uint8Array) {
129
+ geometry = parseWkb(geometryData);
130
+ }
131
+ else if (typeof geometryData === "string") {
132
+ geometry = JSON.parse(geometryData);
133
+ }
134
+ else {
135
+ geometry = geometryData;
136
+ }
137
+ }
138
+ catch (_e) {
139
+ // Skip invalid geometries
140
+ count++;
141
+ continue;
142
+ }
143
+ // Parse tags
144
+ const tags = parseTags(tagsData);
145
+ // Get numeric ID from bigint or generate one
146
+ const numericId = id !== undefined
147
+ ? typeof id === "bigint"
148
+ ? Number(id)
149
+ : id
150
+ : undefined;
151
+ // Normalize geometry winding order
152
+ const normalizedGeometry = normalizeGeometry(geometry);
153
+ if (normalizedGeometry.type === "Point") {
154
+ this.processPoint(normalizedGeometry, numericId, tags);
155
+ }
156
+ else if (normalizedGeometry.type === "LineString") {
157
+ this.processLineString(normalizedGeometry, numericId, tags);
158
+ }
159
+ else if (normalizedGeometry.type === "Polygon") {
160
+ if (type === "node")
161
+ throw Error(`ID: ${numericId} has type 'node' but geometry is a polygon`);
162
+ // Infer type from geometry if missing: relation if has holes, way otherwise
163
+ const polygonType = type ??
164
+ (normalizedGeometry.coordinates.length > 1 ? "relation" : "way");
165
+ this.processPolygon(normalizedGeometry, polygonType, numericId, tags);
166
+ }
167
+ else if (normalizedGeometry.type === "MultiPolygon") {
168
+ this.processMultiPolygon(normalizedGeometry, numericId, tags);
169
+ }
170
+ else if (normalizedGeometry.type === "MultiLineString") {
171
+ this.processMultiLineString(normalizedGeometry, numericId, tags);
172
+ }
173
+ else {
174
+ throw Error(`Unsupported geometry type: ${normalizedGeometry.type}`);
175
+ }
176
+ count++;
177
+ if (count % 10000 === 0) {
178
+ this.onProgress(progressEvent(`Processed ${count} features...`));
179
+ }
180
+ }
181
+ this.onProgress(progressEvent(`Imported ${count} features`));
182
+ }
183
+ buildOsm() {
184
+ this.onProgress(progressEvent("Finished converting GeoParquet to Osmix, building indexes..."));
185
+ this.osm.buildIndexes();
186
+ this.osm.buildSpatialIndexes();
187
+ return this.osm;
188
+ }
189
+ nextNodeId = -1;
190
+ nextWayId = -1;
191
+ nextRelationId = -1;
192
+ getNextRelationId() {
193
+ return this.nextRelationId--;
194
+ }
195
+ getNextWayId() {
196
+ return this.nextWayId--;
197
+ }
198
+ getNextNodeId() {
199
+ return this.nextNodeId--;
200
+ }
201
+ // Map to track nodes by coordinate string for reuse when creating ways
202
+ nodeMap = new Map();
203
+ // Helper to get or create a node for a coordinate
204
+ getOrCreateNode(lon, lat) {
205
+ const coordKey = `${lon},${lat}`;
206
+ const existingNodeId = this.nodeMap.get(coordKey);
207
+ if (existingNodeId !== undefined) {
208
+ return existingNodeId;
209
+ }
210
+ const nodeId = this.getNextNodeId();
211
+ this.nodeMap.set(coordKey, nodeId);
212
+ this.osm.nodes.addNode({
213
+ id: nodeId,
214
+ lon,
215
+ lat,
216
+ });
217
+ return nodeId;
218
+ }
219
+ processPoint(geometry, featureId, tags) {
220
+ const [lon, lat] = geometry.coordinates;
221
+ if (lon === undefined || lat === undefined)
222
+ throw Error("Point must have lon and lat coordinates");
223
+ const nodeId = featureId ?? this.getNextNodeId();
224
+ this.osm.nodes.addNode({
225
+ id: nodeId,
226
+ lon,
227
+ lat,
228
+ tags,
229
+ });
230
+ this.nodeMap.set(`${lon},${lat}`, nodeId);
231
+ return nodeId;
232
+ }
233
+ processLineString(geometry, featureId, tags) {
234
+ const coordinates = geometry.coordinates;
235
+ if (coordinates.length < 2)
236
+ throw Error("LineString must have at least 2 coordinates");
237
+ const nodeRefs = [];
238
+ for (const [lon, lat] of coordinates) {
239
+ if (lon === undefined || lat === undefined)
240
+ throw Error("LineString coordinates must have lon and lat");
241
+ nodeRefs.push(this.getOrCreateNode(lon, lat));
242
+ }
243
+ if (nodeRefs.length < 2)
244
+ throw Error("LineString must have at least 2 coordinates");
245
+ const wayId = featureId ?? this.getNextWayId();
246
+ this.osm.ways.addWay({
247
+ id: wayId,
248
+ refs: nodeRefs,
249
+ tags,
250
+ });
251
+ return wayId;
252
+ }
253
+ processMultiLineString(geometry, featureId, tags) {
254
+ const coordinates = geometry.coordinates;
255
+ if (coordinates.length === 0)
256
+ throw Error("MultiLineString must have at least one LineString");
257
+ const wayIds = [];
258
+ for (const line of coordinates) {
259
+ if (line.length < 2)
260
+ throw Error("LineString must have at least 2 coordinates");
261
+ const wayId = this.processLineString({ type: "LineString", coordinates: line }, this.getNextWayId());
262
+ wayIds.push(wayId);
263
+ }
264
+ this.osm.relations.addRelation({
265
+ id: featureId ?? this.getNextRelationId(),
266
+ members: wayIds.map((id) => ({ type: "way", ref: id })),
267
+ tags: { type: "multilinestring", ...tags },
268
+ });
269
+ }
270
+ processPolygon(geometry, type, featureId, tags) {
271
+ const coordinates = geometry.coordinates;
272
+ if (coordinates.length === 0)
273
+ return;
274
+ const outerRing = coordinates[0];
275
+ if (!outerRing || outerRing.length < 3)
276
+ return;
277
+ // Create nodes for outer ring
278
+ const outerNodeRefs = [];
279
+ for (const [lon, lat] of outerRing) {
280
+ if (lon === undefined || lat === undefined)
281
+ continue;
282
+ const nodeId = this.getOrCreateNode(lon, lat);
283
+ outerNodeRefs.push(nodeId);
284
+ }
285
+ if (outerNodeRefs.length < 3)
286
+ return;
287
+ // Ensure the outer ring is closed
288
+ if (outerNodeRefs[0] !== outerNodeRefs[outerNodeRefs.length - 1]) {
289
+ outerNodeRefs.push(outerNodeRefs[0]);
290
+ }
291
+ const outerWayId = type === "relation"
292
+ ? this.getNextWayId()
293
+ : (featureId ?? this.getNextWayId());
294
+ this.osm.ways.addWay({
295
+ id: outerWayId,
296
+ refs: outerNodeRefs,
297
+ tags: type === "relation" ? { area: "yes" } : { area: "yes", ...tags },
298
+ });
299
+ if (type === "way")
300
+ return;
301
+ // Create separate ways for holes
302
+ const holeWayIds = [];
303
+ for (let i = 1; i < coordinates.length; i++) {
304
+ const holeRing = coordinates[i];
305
+ if (!holeRing || holeRing.length < 3)
306
+ continue;
307
+ const holeNodeRefs = [];
308
+ for (const [lon, lat] of holeRing) {
309
+ if (lon === undefined || lat === undefined)
310
+ continue;
311
+ const nodeId = this.getOrCreateNode(lon, lat);
312
+ holeNodeRefs.push(nodeId);
313
+ }
314
+ if (holeNodeRefs.length < 3)
315
+ continue;
316
+ // Ensure the ring is closed
317
+ if (holeNodeRefs[0] !== holeNodeRefs[holeNodeRefs.length - 1]) {
318
+ holeNodeRefs.push(holeNodeRefs[0]);
319
+ }
320
+ const holeWayId = this.getNextWayId();
321
+ this.osm.ways.addWay({
322
+ id: holeWayId,
323
+ refs: holeNodeRefs,
324
+ tags: { area: "yes" },
325
+ });
326
+ holeWayIds.push(holeWayId);
327
+ }
328
+ this.osm.relations.addRelation({
329
+ id: featureId ?? this.getNextRelationId(),
330
+ members: [
331
+ { type: "way", ref: outerWayId, role: "outer" },
332
+ ...holeWayIds.map((id) => ({ type: "way", ref: id, role: "inner" })),
333
+ ],
334
+ tags: {
335
+ type: "multipolygon",
336
+ ...tags,
337
+ },
338
+ });
339
+ }
340
+ processMultiPolygon(geometry, featureId, tags) {
341
+ const coordinates = geometry.coordinates;
342
+ if (coordinates.length === 0)
343
+ return;
344
+ const relationMembers = [];
345
+ for (const polygon of coordinates) {
346
+ if (polygon.length === 0)
347
+ continue;
348
+ const outerRing = polygon[0];
349
+ if (!outerRing || outerRing.length < 3)
350
+ continue;
351
+ // Create nodes for outer ring
352
+ const outerNodeRefs = [];
353
+ for (const [lon, lat] of outerRing) {
354
+ if (lon === undefined || lat === undefined)
355
+ continue;
356
+ const nodeId = this.getOrCreateNode(lon, lat);
357
+ outerNodeRefs.push(nodeId);
358
+ }
359
+ if (outerNodeRefs.length < 3)
360
+ continue;
361
+ // Ensure the ring is closed
362
+ if (outerNodeRefs[0] !== outerNodeRefs[outerNodeRefs.length - 1]) {
363
+ outerNodeRefs.push(outerNodeRefs[0]);
364
+ }
365
+ const outerWayId = this.getNextWayId();
366
+ this.osm.ways.addWay({
367
+ id: outerWayId,
368
+ refs: outerNodeRefs,
369
+ tags: { area: "yes" },
370
+ });
371
+ relationMembers.push({ type: "way", ref: outerWayId, role: "outer" });
372
+ // Create separate ways for holes
373
+ for (let i = 1; i < polygon.length; i++) {
374
+ const holeRing = polygon[i];
375
+ if (!holeRing || holeRing.length < 3)
376
+ continue;
377
+ const holeNodeRefs = [];
378
+ for (const [lon, lat] of holeRing) {
379
+ if (lon === undefined || lat === undefined)
380
+ continue;
381
+ const nodeId = this.getOrCreateNode(lon, lat);
382
+ holeNodeRefs.push(nodeId);
383
+ }
384
+ if (holeNodeRefs.length < 3)
385
+ continue;
386
+ // Ensure the ring is closed
387
+ if (holeNodeRefs[0] !== holeNodeRefs[holeNodeRefs.length - 1]) {
388
+ holeNodeRefs.push(holeNodeRefs[0]);
389
+ }
390
+ const holeWayId = this.getNextWayId();
391
+ this.osm.ways.addWay({
392
+ id: holeWayId,
393
+ refs: holeNodeRefs,
394
+ tags: { area: "yes" },
395
+ });
396
+ relationMembers.push({ type: "way", ref: holeWayId, role: "inner" });
397
+ }
398
+ }
399
+ if (relationMembers.length > 0) {
400
+ this.osm.relations.addRelation({
401
+ id: featureId ?? this.getNextRelationId(),
402
+ members: relationMembers,
403
+ tags: { type: "multipolygon", ...tags },
404
+ });
405
+ }
406
+ }
407
+ }
408
+ /**
409
+ * Parse tags from various formats.
410
+ */
411
+ function parseTags(tagsData) {
412
+ if (!tagsData)
413
+ return undefined;
414
+ if (typeof tagsData === "string") {
415
+ try {
416
+ const parsed = JSON.parse(tagsData);
417
+ if (typeof parsed === "object" && parsed !== null) {
418
+ return parsed;
419
+ }
420
+ }
421
+ catch {
422
+ return undefined;
423
+ }
424
+ }
425
+ if (typeof tagsData === "object") {
426
+ const tags = {};
427
+ for (const [key, value] of Object.entries(tagsData)) {
428
+ if (typeof value === "string" || typeof value === "number") {
429
+ tags[key] = value;
430
+ }
431
+ else if (value != null) {
432
+ tags[key] = String(value);
433
+ }
434
+ }
435
+ return Object.keys(tags).length > 0 ? tags : undefined;
436
+ }
437
+ return undefined;
438
+ }
439
+ /**
440
+ * Normalize geometry winding order for OSM conventions.
441
+ */
442
+ function normalizeGeometry(geometry) {
443
+ if (geometry.type === "Polygon" || geometry.type === "MultiPolygon") {
444
+ // Use rewind to ensure correct winding order
445
+ const feature = {
446
+ type: "Feature",
447
+ geometry,
448
+ properties: {},
449
+ };
450
+ const rewound = rewindFeature(feature);
451
+ return rewound.geometry ?? geometry;
452
+ }
453
+ return geometry;
454
+ }
455
+ //# sourceMappingURL=from-geoparquet.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"from-geoparquet.js","sourceRoot":"","sources":["../src/from-geoparquet.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,27 @@
1
+ /**
2
+ * @osmix/geoparquet - Import OSM data from GeoParquet files.
3
+ *
4
+ * Provides import functionality for GeoParquet files including OpenStreetMap US Layercake,
5
+ * converting geometry data to Osmix's in-memory format.
6
+ *
7
+ * Handles geometry mapping:
8
+ * - Point → Node
9
+ * - LineString → Way with nodes
10
+ * - Polygon → Way (simple) or Relation (with holes)
11
+ * - MultiPolygon → Multipolygon relation
12
+ *
13
+ * @example
14
+ * ```ts
15
+ * // Import GeoParquet data to Osm index
16
+ * import { fromGeoParquet } from "@osmix/geoparquet"
17
+ *
18
+ * const osm = await fromGeoParquet("./data.parquet")
19
+ * const highways = osm.ways.search("highway")
20
+ * ```
21
+ *
22
+ * @module @osmix/geoparquet
23
+ */
24
+ export * from "./from-geoparquet";
25
+ export * from "./types";
26
+ export { parseWkb } from "./wkb";
27
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;GAsBG;AAEH,cAAc,mBAAmB,CAAA;AACjC,cAAc,SAAS,CAAA;AACvB,OAAO,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAA"}
package/dist/index.js ADDED
@@ -0,0 +1,27 @@
1
+ /**
2
+ * @osmix/geoparquet - Import OSM data from GeoParquet files.
3
+ *
4
+ * Provides import functionality for GeoParquet files including OpenStreetMap US Layercake,
5
+ * converting geometry data to Osmix's in-memory format.
6
+ *
7
+ * Handles geometry mapping:
8
+ * - Point → Node
9
+ * - LineString → Way with nodes
10
+ * - Polygon → Way (simple) or Relation (with holes)
11
+ * - MultiPolygon → Multipolygon relation
12
+ *
13
+ * @example
14
+ * ```ts
15
+ * // Import GeoParquet data to Osm index
16
+ * import { fromGeoParquet } from "@osmix/geoparquet"
17
+ *
18
+ * const osm = await fromGeoParquet("./data.parquet")
19
+ * const highways = osm.ways.search("highway")
20
+ * ```
21
+ *
22
+ * @module @osmix/geoparquet
23
+ */
24
+ export * from "./from-geoparquet";
25
+ export * from "./types";
26
+ export { parseWkb } from "./wkb";
27
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;GAsBG;AAEH,cAAc,mBAAmB,CAAA;AACjC,cAAc,SAAS,CAAA;AACvB,OAAO,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAA"}
@@ -0,0 +1,47 @@
1
+ /**
2
+ * Type definitions for GeoParquet data.
3
+ *
4
+ * @module
5
+ */
6
+ import type { GeoBbox2D, OsmTags } from "@osmix/shared/types";
7
+ import type { AsyncBuffer, ParquetReadOptions } from "hyparquet";
8
+ /**
9
+ * Source types that can be used to read GeoParquet data by hyparquet.
10
+ * - string: File path (Node.js/Bun) or URL (browser)
11
+ * - URL: URL object
12
+ * - ArrayBuffer: Raw parquet data
13
+ * - AsyncBuffer: hyparquet async buffer for streaming
14
+ */
15
+ export type GeoParquetSource = string | URL | ArrayBuffer | AsyncBuffer;
16
+ /**
17
+ * Raw row from GeoParquet file.
18
+ * The geometry field is WKB-encoded.
19
+ */
20
+ export interface GeoParquetRow {
21
+ /** OSM entity type */
22
+ type: "node" | "way" | "relation";
23
+ /** OSM entity ID */
24
+ id: bigint | number;
25
+ /** OSM tags as string or key-value pairs */
26
+ tags: OsmTags | string;
27
+ /** the xmin, ymin, xmax, and ymax of the element’s geometry */
28
+ bbox: GeoBbox2D;
29
+ /** WKB-encoded geometry or GeoJSON */
30
+ geometry: Uint8Array | GeoJSON.Geometry | string;
31
+ }
32
+ /**
33
+ * Options for reading GeoParquet files.
34
+ */
35
+ export interface GeoParquetReadOptions extends Omit<ParquetReadOptions, "onComplete" | "file" | "columns"> {
36
+ /** Column name for the entity type (default: "type") */
37
+ typeColumn?: string;
38
+ /** Column name for the entity ID (default: "id") */
39
+ idColumn?: string;
40
+ /** Column name for the entity tags (default: "tags") */
41
+ tagsColumn?: string;
42
+ /** Column name for the entity bbox (default: "bbox") */
43
+ bboxColumn?: string;
44
+ /** Column name for the entity geometry (default: "geometry") */
45
+ geometryColumn?: string;
46
+ }
47
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EAAE,SAAS,EAAE,OAAO,EAAE,MAAM,qBAAqB,CAAA;AAC7D,OAAO,KAAK,EAAE,WAAW,EAAE,kBAAkB,EAAE,MAAM,WAAW,CAAA;AAEhE;;;;;;GAMG;AACH,MAAM,MAAM,gBAAgB,GAAG,MAAM,GAAG,GAAG,GAAG,WAAW,GAAG,WAAW,CAAA;AAEvE;;;GAGG;AACH,MAAM,WAAW,aAAa;IAC7B,sBAAsB;IACtB,IAAI,EAAE,MAAM,GAAG,KAAK,GAAG,UAAU,CAAA;IACjC,oBAAoB;IACpB,EAAE,EAAE,MAAM,GAAG,MAAM,CAAA;IACnB,4CAA4C;IAC5C,IAAI,EAAE,OAAO,GAAG,MAAM,CAAA;IACtB,+DAA+D;IAC/D,IAAI,EAAE,SAAS,CAAA;IACf,sCAAsC;IACtC,QAAQ,EAAE,UAAU,GAAG,OAAO,CAAC,QAAQ,GAAG,MAAM,CAAA;CAChD;AAED;;GAEG;AACH,MAAM,WAAW,qBAChB,SAAQ,IAAI,CAAC,kBAAkB,EAAE,YAAY,GAAG,MAAM,GAAG,SAAS,CAAC;IACnE,wDAAwD;IACxD,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,oDAAoD;IACpD,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,wDAAwD;IACxD,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,wDAAwD;IACxD,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,gEAAgE;IAChE,cAAc,CAAC,EAAE,MAAM,CAAA;CACvB"}
package/dist/types.js ADDED
@@ -0,0 +1,6 @@
1
+ /**
2
+ * Type definitions for GeoParquet data.
3
+ *
4
+ * @module
5
+ */
6
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA;;;;GAIG"}
package/dist/wkb.d.ts ADDED
@@ -0,0 +1,22 @@
1
+ /**
2
+ * WKB (Well-Known Binary) geometry parsing utilities.
3
+ *
4
+ * Browser-compatible WKB parser using DataView instead of Node.js Buffer.
5
+ * Supports standard WKB and EWKB (with SRID) formats.
6
+ *
7
+ * @module
8
+ */
9
+ import type { Geometry } from "geojson";
10
+ /**
11
+ * Parse a WKB geometry into a GeoJSON Geometry object.
12
+ *
13
+ * Browser-compatible implementation using DataView.
14
+ * Supports Point, LineString, Polygon, MultiPoint, MultiLineString,
15
+ * MultiPolygon, and GeometryCollection. Also handles EWKB with SRID.
16
+ *
17
+ * @param wkb - WKB-encoded geometry as Uint8Array
18
+ * @returns Parsed GeoJSON Geometry
19
+ * @throws Error if geometry type is unsupported
20
+ */
21
+ export declare function parseWkb(wkb: Uint8Array): Geometry;
22
+ //# sourceMappingURL=wkb.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"wkb.d.ts","sourceRoot":"","sources":["../src/wkb.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,KAAK,EACX,QAAQ,EASR,MAAM,SAAS,CAAA;AAoDhB;;;;;;;;;;GAUG;AACH,wBAAgB,QAAQ,CAAC,GAAG,EAAE,UAAU,GAAG,QAAQ,CAGlD"}
package/dist/wkb.js ADDED
@@ -0,0 +1,181 @@
1
+ /**
2
+ * WKB (Well-Known Binary) geometry parsing utilities.
3
+ *
4
+ * Browser-compatible WKB parser using DataView instead of Node.js Buffer.
5
+ * Supports standard WKB and EWKB (with SRID) formats.
6
+ *
7
+ * @module
8
+ */
9
+ /** WKB geometry type codes */
10
+ const WKB_POINT = 1;
11
+ const WKB_LINESTRING = 2;
12
+ const WKB_POLYGON = 3;
13
+ const WKB_MULTIPOINT = 4;
14
+ const WKB_MULTILINESTRING = 5;
15
+ const WKB_MULTIPOLYGON = 6;
16
+ const WKB_GEOMETRYCOLLECTION = 7;
17
+ /** EWKB flags */
18
+ const EWKB_SRID_FLAG = 0x20000000;
19
+ const EWKB_Z_FLAG = 0x80000000;
20
+ const EWKB_M_FLAG = 0x40000000;
21
+ /**
22
+ * Binary reader using DataView for browser compatibility.
23
+ */
24
+ class WkbReader {
25
+ view;
26
+ offset = 0;
27
+ littleEndian = true;
28
+ constructor(data) {
29
+ // Create DataView from the Uint8Array's underlying buffer with correct offset
30
+ this.view = new DataView(data.buffer, data.byteOffset, data.byteLength);
31
+ }
32
+ readByte() {
33
+ const value = this.view.getUint8(this.offset);
34
+ this.offset += 1;
35
+ return value;
36
+ }
37
+ readUint32() {
38
+ const value = this.view.getUint32(this.offset, this.littleEndian);
39
+ this.offset += 4;
40
+ return value;
41
+ }
42
+ readDouble() {
43
+ const value = this.view.getFloat64(this.offset, this.littleEndian);
44
+ this.offset += 8;
45
+ return value;
46
+ }
47
+ setLittleEndian(littleEndian) {
48
+ this.littleEndian = littleEndian;
49
+ }
50
+ }
51
+ /**
52
+ * Parse a WKB geometry into a GeoJSON Geometry object.
53
+ *
54
+ * Browser-compatible implementation using DataView.
55
+ * Supports Point, LineString, Polygon, MultiPoint, MultiLineString,
56
+ * MultiPolygon, and GeometryCollection. Also handles EWKB with SRID.
57
+ *
58
+ * @param wkb - WKB-encoded geometry as Uint8Array
59
+ * @returns Parsed GeoJSON Geometry
60
+ * @throws Error if geometry type is unsupported
61
+ */
62
+ export function parseWkb(wkb) {
63
+ const reader = new WkbReader(wkb);
64
+ return parseGeometry(reader);
65
+ }
66
+ /**
67
+ * Parse a geometry from the reader at current position.
68
+ */
69
+ function parseGeometry(reader) {
70
+ // Read byte order
71
+ const byteOrder = reader.readByte();
72
+ reader.setLittleEndian(byteOrder === 1);
73
+ // Read geometry type (may include EWKB flags)
74
+ let geometryType = reader.readUint32();
75
+ // Handle EWKB SRID flag
76
+ if (geometryType & EWKB_SRID_FLAG) {
77
+ // Skip SRID (4 bytes)
78
+ reader.readUint32();
79
+ geometryType &= ~EWKB_SRID_FLAG;
80
+ }
81
+ // Check for Z/M flags and mask them out
82
+ const hasZ = (geometryType & EWKB_Z_FLAG) !== 0;
83
+ const hasM = (geometryType & EWKB_M_FLAG) !== 0;
84
+ geometryType &= 0x0000ffff; // Keep only the base type
85
+ // Determine coordinate dimensions
86
+ const dimensions = 2 + (hasZ ? 1 : 0) + (hasM ? 1 : 0);
87
+ switch (geometryType) {
88
+ case WKB_POINT:
89
+ return parsePoint(reader, dimensions);
90
+ case WKB_LINESTRING:
91
+ return parseLineString(reader, dimensions);
92
+ case WKB_POLYGON:
93
+ return parsePolygon(reader, dimensions);
94
+ case WKB_MULTIPOINT:
95
+ return parseMultiPoint(reader);
96
+ case WKB_MULTILINESTRING:
97
+ return parseMultiLineString(reader);
98
+ case WKB_MULTIPOLYGON:
99
+ return parseMultiPolygon(reader);
100
+ case WKB_GEOMETRYCOLLECTION:
101
+ return parseGeometryCollection(reader);
102
+ default:
103
+ throw new Error(`Unsupported WKB geometry type: ${geometryType}`);
104
+ }
105
+ }
106
+ /**
107
+ * Read a coordinate (lon, lat, and optionally z/m).
108
+ * Only returns [lon, lat] for GeoJSON compatibility.
109
+ */
110
+ function readCoordinate(reader, dimensions) {
111
+ const x = reader.readDouble();
112
+ const y = reader.readDouble();
113
+ // Read and discard extra dimensions (Z, M)
114
+ for (let i = 2; i < dimensions; i++) {
115
+ reader.readDouble();
116
+ }
117
+ return [x, y];
118
+ }
119
+ /**
120
+ * Read an array of coordinates.
121
+ */
122
+ function readCoordinates(reader, dimensions) {
123
+ const count = reader.readUint32();
124
+ const coords = [];
125
+ for (let i = 0; i < count; i++) {
126
+ coords.push(readCoordinate(reader, dimensions));
127
+ }
128
+ return coords;
129
+ }
130
+ function parsePoint(reader, dimensions) {
131
+ const coordinates = readCoordinate(reader, dimensions);
132
+ return { type: "Point", coordinates };
133
+ }
134
+ function parseLineString(reader, dimensions) {
135
+ const coordinates = readCoordinates(reader, dimensions);
136
+ return { type: "LineString", coordinates };
137
+ }
138
+ function parsePolygon(reader, dimensions) {
139
+ const numRings = reader.readUint32();
140
+ const coordinates = [];
141
+ for (let i = 0; i < numRings; i++) {
142
+ coordinates.push(readCoordinates(reader, dimensions));
143
+ }
144
+ return { type: "Polygon", coordinates };
145
+ }
146
+ function parseMultiPoint(reader) {
147
+ const numPoints = reader.readUint32();
148
+ const coordinates = [];
149
+ for (let i = 0; i < numPoints; i++) {
150
+ const point = parseGeometry(reader);
151
+ coordinates.push(point.coordinates);
152
+ }
153
+ return { type: "MultiPoint", coordinates };
154
+ }
155
+ function parseMultiLineString(reader) {
156
+ const numLineStrings = reader.readUint32();
157
+ const coordinates = [];
158
+ for (let i = 0; i < numLineStrings; i++) {
159
+ const lineString = parseGeometry(reader);
160
+ coordinates.push(lineString.coordinates);
161
+ }
162
+ return { type: "MultiLineString", coordinates };
163
+ }
164
+ function parseMultiPolygon(reader) {
165
+ const numPolygons = reader.readUint32();
166
+ const coordinates = [];
167
+ for (let i = 0; i < numPolygons; i++) {
168
+ const polygon = parseGeometry(reader);
169
+ coordinates.push(polygon.coordinates);
170
+ }
171
+ return { type: "MultiPolygon", coordinates };
172
+ }
173
+ function parseGeometryCollection(reader) {
174
+ const numGeometries = reader.readUint32();
175
+ const geometries = [];
176
+ for (let i = 0; i < numGeometries; i++) {
177
+ geometries.push(parseGeometry(reader));
178
+ }
179
+ return { type: "GeometryCollection", geometries };
180
+ }
181
+ //# sourceMappingURL=wkb.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"wkb.js","sourceRoot":"","sources":["../src/wkb.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -2,12 +2,13 @@
2
2
  "$schema": "https://json.schemastore.org/package",
3
3
  "name": "@osmix/geoparquet",
4
4
  "description": "Import OSM data from GeoParquet files.",
5
- "version": "0.1.0",
5
+ "version": "0.1.1",
6
6
  "type": "module",
7
7
  "main": "./src/index.ts",
8
8
  "types": "./src/index.ts",
9
9
  "publishConfig": {
10
10
  "access": "public",
11
+ "registry": "https://registry.npmjs.org/",
11
12
  "main": "./dist/index.js",
12
13
  "types": "./dist/index.d.ts",
13
14
  "exports": {
@@ -33,21 +34,22 @@
33
34
  },
34
35
  "sideEffects": false,
35
36
  "scripts": {
36
- "build": "tsc --excludeDirectories test",
37
+ "build": "tsc -p tsconfig.build.json",
37
38
  "bench": "bun test --bench",
38
- "prepublishOnly": "tsc",
39
+ "prepare": "bun run build",
40
+ "release": "bun publish",
39
41
  "test": "bun test",
40
42
  "typecheck": "tsc --noEmit"
41
43
  },
42
44
  "devDependencies": {
43
- "@types/bun": "catalog:",
44
- "@types/geojson": "catalog:",
45
- "typescript": "catalog:"
45
+ "@types/bun": "^1.3.3",
46
+ "@types/geojson": "^7946.0.16",
47
+ "typescript": "^5.9.0"
46
48
  },
47
49
  "dependencies": {
48
- "@osmix/core": "workspace:*",
49
- "@osmix/shared": "workspace:*",
50
- "@placemarkio/geojson-rewind": "catalog:",
51
- "hyparquet": "^1.23.0"
50
+ "@osmix/core": "0.1.2",
51
+ "@osmix/shared": "0.0.7",
52
+ "@placemarkio/geojson-rewind": "^1.0.3",
53
+ "hyparquet": "^1.24.1"
52
54
  }
53
55
  }
@@ -0,0 +1,5 @@
1
+ {
2
+ "$schema": "https://json.schemastore.org/tsconfig",
3
+ "extends": "./tsconfig.json",
4
+ "include": ["src"]
5
+ }