@loaders.gl/flatgeobuf 4.3.1 → 4.4.0-alpha.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/dist/dist.dev.js +359 -211
- package/dist/dist.min.js +2 -2
- package/dist/flatgeobuf-format.d.ts +10 -0
- package/dist/flatgeobuf-format.d.ts.map +1 -0
- package/dist/flatgeobuf-format.js +12 -0
- package/dist/flatgeobuf-loader.d.ts +12 -12
- package/dist/flatgeobuf-loader.d.ts.map +1 -1
- package/dist/flatgeobuf-loader.js +3 -7
- package/dist/flatgeobuf-source.d.ts +42 -0
- package/dist/flatgeobuf-source.d.ts.map +1 -0
- package/dist/{floatgeobuf-source.js → flatgeobuf-source.js} +14 -26
- package/dist/flatgeobuf-worker.js +216 -211
- package/dist/index.cjs +55 -8
- package/dist/index.cjs.map +3 -3
- package/dist/index.d.ts +3 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +2 -0
- package/package.json +6 -6
- package/src/flatgeobuf-format.ts +15 -0
- package/src/flatgeobuf-loader.ts +3 -7
- package/src/{floatgeobuf-source.ts → flatgeobuf-source.ts} +26 -39
- package/src/index.ts +5 -0
- package/dist/floatgeobuf-source.d.ts +0 -51
- package/dist/floatgeobuf-source.d.ts.map +0 -1
package/dist/dist.dev.js
CHANGED
|
@@ -53,11 +53,23 @@ var __exports__ = (() => {
|
|
|
53
53
|
// bundle.ts
|
|
54
54
|
var bundle_exports = {};
|
|
55
55
|
__export(bundle_exports, {
|
|
56
|
+
FlatGeobufFormat: () => FlatGeobufFormat,
|
|
56
57
|
FlatGeobufLoader: () => FlatGeobufLoader,
|
|
57
|
-
FlatGeobufWorkerLoader: () => FlatGeobufWorkerLoader
|
|
58
|
+
FlatGeobufWorkerLoader: () => FlatGeobufWorkerLoader,
|
|
59
|
+
_FlatGeobufSource: () => FlatGeobufSource
|
|
58
60
|
});
|
|
59
61
|
__reExport(bundle_exports, __toESM(require_core(), 1));
|
|
60
62
|
|
|
63
|
+
// src/flatgeobuf-format.ts
|
|
64
|
+
var FlatGeobufFormat = {
|
|
65
|
+
id: "flatgeobuf",
|
|
66
|
+
name: "FlatGeobuf",
|
|
67
|
+
module: "flatgeobuf",
|
|
68
|
+
extensions: ["fgb"],
|
|
69
|
+
mimeTypes: ["application/octet-stream"],
|
|
70
|
+
category: "geometry"
|
|
71
|
+
};
|
|
72
|
+
|
|
61
73
|
// ../../node_modules/proj4/lib/global.js
|
|
62
74
|
function global_default(defs2) {
|
|
63
75
|
defs2("EPSG:4326", "+title=WGS 84 (long/lat) +proj=longlat +ellps=WGS84 +datum=WGS84 +units=degrees");
|
|
@@ -5411,7 +5423,7 @@ var __exports__ = (() => {
|
|
|
5411
5423
|
}
|
|
5412
5424
|
};
|
|
5413
5425
|
|
|
5414
|
-
// ../gis/src/lib/binary-
|
|
5426
|
+
// ../gis/src/lib/binary-geometry-api/transform-coordinates.ts
|
|
5415
5427
|
function transformGeoJsonCoords(features, fn) {
|
|
5416
5428
|
for (const feature of features) {
|
|
5417
5429
|
feature.geometry.coordinates = coordMap(feature.geometry.coordinates, fn);
|
|
@@ -5430,209 +5442,6 @@ var __exports__ = (() => {
|
|
|
5430
5442
|
return Array.isArray(array) && Number.isFinite(array[0]) && Number.isFinite(array[1]);
|
|
5431
5443
|
}
|
|
5432
5444
|
|
|
5433
|
-
// src/lib/binary-geometries.ts
|
|
5434
|
-
function fgbToBinaryGeometry(geometry, type) {
|
|
5435
|
-
if (geometry === null) {
|
|
5436
|
-
return null;
|
|
5437
|
-
}
|
|
5438
|
-
switch (type) {
|
|
5439
|
-
case GeometryType.Point:
|
|
5440
|
-
case GeometryType.MultiPoint:
|
|
5441
|
-
return parsePoint(geometry);
|
|
5442
|
-
case GeometryType.LineString:
|
|
5443
|
-
case GeometryType.MultiLineString:
|
|
5444
|
-
return parseLines(geometry);
|
|
5445
|
-
case GeometryType.Polygon:
|
|
5446
|
-
return parsePolygons(geometry);
|
|
5447
|
-
case GeometryType.MultiPolygon:
|
|
5448
|
-
return parseMultiPolygons(geometry);
|
|
5449
|
-
default:
|
|
5450
|
-
throw new Error(`Unimplemented geometry type: ${type}`);
|
|
5451
|
-
}
|
|
5452
|
-
}
|
|
5453
|
-
function parsePoint(geometry) {
|
|
5454
|
-
const xy = geometry.xyArray();
|
|
5455
|
-
const z = geometry.zArray();
|
|
5456
|
-
const positions = blitArrays(xy, z);
|
|
5457
|
-
return { positions };
|
|
5458
|
-
}
|
|
5459
|
-
function parseLines(geometry) {
|
|
5460
|
-
const xy = geometry.xyArray();
|
|
5461
|
-
const z = geometry.zArray();
|
|
5462
|
-
const positions = blitArrays(xy, z);
|
|
5463
|
-
const ends = geometry.endsArray() && Array.from(geometry.endsArray()) || [xy.length / 2];
|
|
5464
|
-
ends.unshift(0);
|
|
5465
|
-
const pathIndices = { value: new Uint16Array(ends), size: 1 };
|
|
5466
|
-
return {
|
|
5467
|
-
positions,
|
|
5468
|
-
pathIndices
|
|
5469
|
-
};
|
|
5470
|
-
}
|
|
5471
|
-
function parsePolygons(geometry) {
|
|
5472
|
-
const xy = geometry.xyArray();
|
|
5473
|
-
const z = geometry.zArray();
|
|
5474
|
-
const positions = blitArrays(xy, z);
|
|
5475
|
-
const ends = geometry.endsArray() && Array.from(geometry.endsArray()) || [xy.length / 2];
|
|
5476
|
-
ends.unshift(0);
|
|
5477
|
-
const primitivePolygonIndices = { value: new Uint16Array(ends), size: 1 };
|
|
5478
|
-
const polygonIndices = { value: new Uint16Array([0, xy.length / 2]), size: 1 };
|
|
5479
|
-
return {
|
|
5480
|
-
positions,
|
|
5481
|
-
primitivePolygonIndices,
|
|
5482
|
-
polygonIndices
|
|
5483
|
-
};
|
|
5484
|
-
}
|
|
5485
|
-
function parseMultiPolygons(geometry) {
|
|
5486
|
-
const parsedParts = [];
|
|
5487
|
-
let nPositions = 0;
|
|
5488
|
-
let nPrimitivePolygonIndices = 1;
|
|
5489
|
-
let nPolygonIndices = 1;
|
|
5490
|
-
for (let i = 0; i < geometry.partsLength(); i++) {
|
|
5491
|
-
const part = geometry.parts(i);
|
|
5492
|
-
const polygon = parsePolygons(part);
|
|
5493
|
-
nPositions += polygon.positions.value.length;
|
|
5494
|
-
nPrimitivePolygonIndices += polygon.primitivePolygonIndices.value.length - 1;
|
|
5495
|
-
nPolygonIndices += polygon.polygonIndices.value.length - 1;
|
|
5496
|
-
parsedParts.push(polygon);
|
|
5497
|
-
}
|
|
5498
|
-
const concatPositions = new Float64Array(nPositions);
|
|
5499
|
-
const concatPrimitivePolygonIndices = new Uint32Array(nPrimitivePolygonIndices);
|
|
5500
|
-
const concatPolygonIndices = new Uint32Array(nPolygonIndices);
|
|
5501
|
-
let positionCounter = 0;
|
|
5502
|
-
let primitivePolygonIndicesCounter = 1;
|
|
5503
|
-
let polygonIndicesCounter = 1;
|
|
5504
|
-
const positionSize = parsedParts[0].positions.size;
|
|
5505
|
-
for (const parsedPart of parsedParts) {
|
|
5506
|
-
concatPositions.set(parsedPart.positions.value, positionCounter * positionSize);
|
|
5507
|
-
concatPrimitivePolygonIndices.set(
|
|
5508
|
-
// eslint-disable-next-line
|
|
5509
|
-
parsedPart.primitivePolygonIndices.value.subarray(1).map((x) => x + positionCounter),
|
|
5510
|
-
primitivePolygonIndicesCounter
|
|
5511
|
-
);
|
|
5512
|
-
concatPolygonIndices.set(
|
|
5513
|
-
// eslint-disable-next-line
|
|
5514
|
-
parsedPart.polygonIndices.value.subarray(1).map((x) => x + positionCounter),
|
|
5515
|
-
polygonIndicesCounter
|
|
5516
|
-
);
|
|
5517
|
-
positionCounter += parsedPart.positions.value.length / positionSize;
|
|
5518
|
-
primitivePolygonIndicesCounter += parsedPart.primitivePolygonIndices.value.length - 1;
|
|
5519
|
-
polygonIndicesCounter += parsedPart.polygonIndices.value.length - 1;
|
|
5520
|
-
}
|
|
5521
|
-
return {
|
|
5522
|
-
positions: { value: concatPositions, size: positionSize },
|
|
5523
|
-
primitivePolygonIndices: { value: concatPrimitivePolygonIndices, size: 1 },
|
|
5524
|
-
polygonIndices: { value: concatPolygonIndices, size: 1 }
|
|
5525
|
-
};
|
|
5526
|
-
}
|
|
5527
|
-
function blitArrays(xy, z) {
|
|
5528
|
-
if (!z) {
|
|
5529
|
-
return { value: xy, size: 2 };
|
|
5530
|
-
}
|
|
5531
|
-
if (z.length * 2 !== xy.length) {
|
|
5532
|
-
throw new Error("Z array must be half XY array's length");
|
|
5533
|
-
}
|
|
5534
|
-
const totalLength = xy.length + z.length;
|
|
5535
|
-
const xyz = new Float64Array(totalLength);
|
|
5536
|
-
for (let i = 0; i < xy.length / 2; i++) {
|
|
5537
|
-
xyz[i * 3 + 0] = xy[i * 2 + 0];
|
|
5538
|
-
xyz[i * 3 + 1] = xy[i * 2 + 1];
|
|
5539
|
-
xyz[i * 3 + 2] = z[i];
|
|
5540
|
-
}
|
|
5541
|
-
return { value: xyz, size: 3 };
|
|
5542
|
-
}
|
|
5543
|
-
|
|
5544
|
-
// src/lib/get-schema-from-fgb-header.ts
|
|
5545
|
-
function getSchemaFromFGBHeader(fgbHeader) {
|
|
5546
|
-
const metadata = {
|
|
5547
|
-
title: fgbHeader.title || "",
|
|
5548
|
-
description: fgbHeader.description || "",
|
|
5549
|
-
crs: JSON.stringify(fgbHeader.crs) || "",
|
|
5550
|
-
metadata: fgbHeader.metadata || "",
|
|
5551
|
-
geometryType: String(fgbHeader.geometryType),
|
|
5552
|
-
indexNodeSize: String(fgbHeader.indexNodeSize),
|
|
5553
|
-
featureCount: String(fgbHeader.featuresCount),
|
|
5554
|
-
bounds: fgbHeader.envelope?.join(",") || ""
|
|
5555
|
-
};
|
|
5556
|
-
const fields = fgbHeader.columns?.map((column) => getFieldFromFGBColumn(column)) || [];
|
|
5557
|
-
return { metadata, fields };
|
|
5558
|
-
}
|
|
5559
|
-
function getFieldFromFGBColumn(fgbColumn) {
|
|
5560
|
-
const metadata = {
|
|
5561
|
-
title: fgbColumn.title || "",
|
|
5562
|
-
description: fgbColumn.description || "",
|
|
5563
|
-
width: String(fgbColumn.width),
|
|
5564
|
-
precision: String(fgbColumn.precision),
|
|
5565
|
-
scale: String(fgbColumn.scale),
|
|
5566
|
-
unique: String(fgbColumn.unique),
|
|
5567
|
-
primary_key: String(fgbColumn.primary_key)
|
|
5568
|
-
};
|
|
5569
|
-
return {
|
|
5570
|
-
name: fgbColumn.name,
|
|
5571
|
-
type: getTypeFromFGBType(fgbColumn.type),
|
|
5572
|
-
nullable: fgbColumn.nullable,
|
|
5573
|
-
metadata
|
|
5574
|
-
};
|
|
5575
|
-
}
|
|
5576
|
-
function getTypeFromFGBType(fgbType) {
|
|
5577
|
-
switch (fgbType) {
|
|
5578
|
-
case 0 /* Byte */:
|
|
5579
|
-
return "int8";
|
|
5580
|
-
case 1 /* UByte */:
|
|
5581
|
-
return "uint8";
|
|
5582
|
-
case 2 /* Bool */:
|
|
5583
|
-
return "bool";
|
|
5584
|
-
case 3 /* Short */:
|
|
5585
|
-
return "int16";
|
|
5586
|
-
case 4 /* UShort */:
|
|
5587
|
-
return "uint16";
|
|
5588
|
-
case 5 /* Int */:
|
|
5589
|
-
return "int32";
|
|
5590
|
-
case 6 /* UInt */:
|
|
5591
|
-
return "uint32";
|
|
5592
|
-
case 7 /* Long */:
|
|
5593
|
-
return "int64";
|
|
5594
|
-
case 8 /* ULong */:
|
|
5595
|
-
return "uint64";
|
|
5596
|
-
case 9 /* Float */:
|
|
5597
|
-
return "float32";
|
|
5598
|
-
case 10 /* Double */:
|
|
5599
|
-
return "float64";
|
|
5600
|
-
case 11 /* String */:
|
|
5601
|
-
return "utf8";
|
|
5602
|
-
case 12 /* Json */:
|
|
5603
|
-
return "null";
|
|
5604
|
-
case 13 /* DateTime */:
|
|
5605
|
-
return "date-millisecond";
|
|
5606
|
-
case 14 /* Binary */:
|
|
5607
|
-
return "binary";
|
|
5608
|
-
default:
|
|
5609
|
-
return "null";
|
|
5610
|
-
}
|
|
5611
|
-
}
|
|
5612
|
-
|
|
5613
|
-
// src/flatgeobuf/3.27.2/flat-geobuf/geometry-type.ts
|
|
5614
|
-
var GeometryType2 = /* @__PURE__ */ ((GeometryType3) => {
|
|
5615
|
-
GeometryType3[GeometryType3["Unknown"] = 0] = "Unknown";
|
|
5616
|
-
GeometryType3[GeometryType3["Point"] = 1] = "Point";
|
|
5617
|
-
GeometryType3[GeometryType3["LineString"] = 2] = "LineString";
|
|
5618
|
-
GeometryType3[GeometryType3["Polygon"] = 3] = "Polygon";
|
|
5619
|
-
GeometryType3[GeometryType3["MultiPoint"] = 4] = "MultiPoint";
|
|
5620
|
-
GeometryType3[GeometryType3["MultiLineString"] = 5] = "MultiLineString";
|
|
5621
|
-
GeometryType3[GeometryType3["MultiPolygon"] = 6] = "MultiPolygon";
|
|
5622
|
-
GeometryType3[GeometryType3["GeometryCollection"] = 7] = "GeometryCollection";
|
|
5623
|
-
GeometryType3[GeometryType3["CircularString"] = 8] = "CircularString";
|
|
5624
|
-
GeometryType3[GeometryType3["CompoundCurve"] = 9] = "CompoundCurve";
|
|
5625
|
-
GeometryType3[GeometryType3["CurvePolygon"] = 10] = "CurvePolygon";
|
|
5626
|
-
GeometryType3[GeometryType3["MultiCurve"] = 11] = "MultiCurve";
|
|
5627
|
-
GeometryType3[GeometryType3["MultiSurface"] = 12] = "MultiSurface";
|
|
5628
|
-
GeometryType3[GeometryType3["Curve"] = 13] = "Curve";
|
|
5629
|
-
GeometryType3[GeometryType3["Surface"] = 14] = "Surface";
|
|
5630
|
-
GeometryType3[GeometryType3["PolyhedralSurface"] = 15] = "PolyhedralSurface";
|
|
5631
|
-
GeometryType3[GeometryType3["TIN"] = 16] = "TIN";
|
|
5632
|
-
GeometryType3[GeometryType3["Triangle"] = 17] = "Triangle";
|
|
5633
|
-
return GeometryType3;
|
|
5634
|
-
})(GeometryType2 || {});
|
|
5635
|
-
|
|
5636
5445
|
// ../../node_modules/flatbuffers/mjs/constants.js
|
|
5637
5446
|
var SIZEOF_INT = 4;
|
|
5638
5447
|
var FILE_IDENTIFIER_LENGTH = 4;
|
|
@@ -5895,6 +5704,209 @@ var __exports__ = (() => {
|
|
|
5895
5704
|
}
|
|
5896
5705
|
};
|
|
5897
5706
|
|
|
5707
|
+
// src/lib/binary-geometries.ts
|
|
5708
|
+
function fgbToBinaryGeometry(geometry, type) {
|
|
5709
|
+
if (geometry === null) {
|
|
5710
|
+
return null;
|
|
5711
|
+
}
|
|
5712
|
+
switch (type) {
|
|
5713
|
+
case GeometryType.Point:
|
|
5714
|
+
case GeometryType.MultiPoint:
|
|
5715
|
+
return parsePoint(geometry);
|
|
5716
|
+
case GeometryType.LineString:
|
|
5717
|
+
case GeometryType.MultiLineString:
|
|
5718
|
+
return parseLines(geometry);
|
|
5719
|
+
case GeometryType.Polygon:
|
|
5720
|
+
return parsePolygons(geometry);
|
|
5721
|
+
case GeometryType.MultiPolygon:
|
|
5722
|
+
return parseMultiPolygons(geometry);
|
|
5723
|
+
default:
|
|
5724
|
+
throw new Error(`Unimplemented geometry type: ${type}`);
|
|
5725
|
+
}
|
|
5726
|
+
}
|
|
5727
|
+
function parsePoint(geometry) {
|
|
5728
|
+
const xy = geometry.xyArray();
|
|
5729
|
+
const z = geometry.zArray();
|
|
5730
|
+
const positions = blitArrays(xy, z);
|
|
5731
|
+
return { positions };
|
|
5732
|
+
}
|
|
5733
|
+
function parseLines(geometry) {
|
|
5734
|
+
const xy = geometry.xyArray();
|
|
5735
|
+
const z = geometry.zArray();
|
|
5736
|
+
const positions = blitArrays(xy, z);
|
|
5737
|
+
const ends = geometry.endsArray() && Array.from(geometry.endsArray()) || [xy.length / 2];
|
|
5738
|
+
ends.unshift(0);
|
|
5739
|
+
const pathIndices = { value: new Uint16Array(ends), size: 1 };
|
|
5740
|
+
return {
|
|
5741
|
+
positions,
|
|
5742
|
+
pathIndices
|
|
5743
|
+
};
|
|
5744
|
+
}
|
|
5745
|
+
function parsePolygons(geometry) {
|
|
5746
|
+
const xy = geometry.xyArray();
|
|
5747
|
+
const z = geometry.zArray();
|
|
5748
|
+
const positions = blitArrays(xy, z);
|
|
5749
|
+
const ends = geometry.endsArray() && Array.from(geometry.endsArray()) || [xy.length / 2];
|
|
5750
|
+
ends.unshift(0);
|
|
5751
|
+
const primitivePolygonIndices = { value: new Uint16Array(ends), size: 1 };
|
|
5752
|
+
const polygonIndices = { value: new Uint16Array([0, xy.length / 2]), size: 1 };
|
|
5753
|
+
return {
|
|
5754
|
+
positions,
|
|
5755
|
+
primitivePolygonIndices,
|
|
5756
|
+
polygonIndices
|
|
5757
|
+
};
|
|
5758
|
+
}
|
|
5759
|
+
function parseMultiPolygons(geometry) {
|
|
5760
|
+
const parsedParts = [];
|
|
5761
|
+
let nPositions = 0;
|
|
5762
|
+
let nPrimitivePolygonIndices = 1;
|
|
5763
|
+
let nPolygonIndices = 1;
|
|
5764
|
+
for (let i = 0; i < geometry.partsLength(); i++) {
|
|
5765
|
+
const part = geometry.parts(i);
|
|
5766
|
+
const polygon = parsePolygons(part);
|
|
5767
|
+
nPositions += polygon.positions.value.length;
|
|
5768
|
+
nPrimitivePolygonIndices += polygon.primitivePolygonIndices.value.length - 1;
|
|
5769
|
+
nPolygonIndices += polygon.polygonIndices.value.length - 1;
|
|
5770
|
+
parsedParts.push(polygon);
|
|
5771
|
+
}
|
|
5772
|
+
const concatPositions = new Float64Array(nPositions);
|
|
5773
|
+
const concatPrimitivePolygonIndices = new Uint32Array(nPrimitivePolygonIndices);
|
|
5774
|
+
const concatPolygonIndices = new Uint32Array(nPolygonIndices);
|
|
5775
|
+
let positionCounter = 0;
|
|
5776
|
+
let primitivePolygonIndicesCounter = 1;
|
|
5777
|
+
let polygonIndicesCounter = 1;
|
|
5778
|
+
const positionSize = parsedParts[0].positions.size;
|
|
5779
|
+
for (const parsedPart of parsedParts) {
|
|
5780
|
+
concatPositions.set(parsedPart.positions.value, positionCounter * positionSize);
|
|
5781
|
+
concatPrimitivePolygonIndices.set(
|
|
5782
|
+
// eslint-disable-next-line
|
|
5783
|
+
parsedPart.primitivePolygonIndices.value.subarray(1).map((x) => x + positionCounter),
|
|
5784
|
+
primitivePolygonIndicesCounter
|
|
5785
|
+
);
|
|
5786
|
+
concatPolygonIndices.set(
|
|
5787
|
+
// eslint-disable-next-line
|
|
5788
|
+
parsedPart.polygonIndices.value.subarray(1).map((x) => x + positionCounter),
|
|
5789
|
+
polygonIndicesCounter
|
|
5790
|
+
);
|
|
5791
|
+
positionCounter += parsedPart.positions.value.length / positionSize;
|
|
5792
|
+
primitivePolygonIndicesCounter += parsedPart.primitivePolygonIndices.value.length - 1;
|
|
5793
|
+
polygonIndicesCounter += parsedPart.polygonIndices.value.length - 1;
|
|
5794
|
+
}
|
|
5795
|
+
return {
|
|
5796
|
+
positions: { value: concatPositions, size: positionSize },
|
|
5797
|
+
primitivePolygonIndices: { value: concatPrimitivePolygonIndices, size: 1 },
|
|
5798
|
+
polygonIndices: { value: concatPolygonIndices, size: 1 }
|
|
5799
|
+
};
|
|
5800
|
+
}
|
|
5801
|
+
function blitArrays(xy, z) {
|
|
5802
|
+
if (!z) {
|
|
5803
|
+
return { value: xy, size: 2 };
|
|
5804
|
+
}
|
|
5805
|
+
if (z.length * 2 !== xy.length) {
|
|
5806
|
+
throw new Error("Z array must be half XY array's length");
|
|
5807
|
+
}
|
|
5808
|
+
const totalLength = xy.length + z.length;
|
|
5809
|
+
const xyz = new Float64Array(totalLength);
|
|
5810
|
+
for (let i = 0; i < xy.length / 2; i++) {
|
|
5811
|
+
xyz[i * 3 + 0] = xy[i * 2 + 0];
|
|
5812
|
+
xyz[i * 3 + 1] = xy[i * 2 + 1];
|
|
5813
|
+
xyz[i * 3 + 2] = z[i];
|
|
5814
|
+
}
|
|
5815
|
+
return { value: xyz, size: 3 };
|
|
5816
|
+
}
|
|
5817
|
+
|
|
5818
|
+
// src/lib/get-schema-from-fgb-header.ts
|
|
5819
|
+
function getSchemaFromFGBHeader(fgbHeader) {
|
|
5820
|
+
const metadata = {
|
|
5821
|
+
title: fgbHeader.title || "",
|
|
5822
|
+
description: fgbHeader.description || "",
|
|
5823
|
+
crs: JSON.stringify(fgbHeader.crs) || "",
|
|
5824
|
+
metadata: fgbHeader.metadata || "",
|
|
5825
|
+
geometryType: String(fgbHeader.geometryType),
|
|
5826
|
+
indexNodeSize: String(fgbHeader.indexNodeSize),
|
|
5827
|
+
featureCount: String(fgbHeader.featuresCount),
|
|
5828
|
+
bounds: fgbHeader.envelope?.join(",") || ""
|
|
5829
|
+
};
|
|
5830
|
+
const fields = fgbHeader.columns?.map((column) => getFieldFromFGBColumn(column)) || [];
|
|
5831
|
+
return { metadata, fields };
|
|
5832
|
+
}
|
|
5833
|
+
function getFieldFromFGBColumn(fgbColumn) {
|
|
5834
|
+
const metadata = {
|
|
5835
|
+
title: fgbColumn.title || "",
|
|
5836
|
+
description: fgbColumn.description || "",
|
|
5837
|
+
width: String(fgbColumn.width),
|
|
5838
|
+
precision: String(fgbColumn.precision),
|
|
5839
|
+
scale: String(fgbColumn.scale),
|
|
5840
|
+
unique: String(fgbColumn.unique),
|
|
5841
|
+
primary_key: String(fgbColumn.primary_key)
|
|
5842
|
+
};
|
|
5843
|
+
return {
|
|
5844
|
+
name: fgbColumn.name,
|
|
5845
|
+
type: getTypeFromFGBType(fgbColumn.type),
|
|
5846
|
+
nullable: fgbColumn.nullable,
|
|
5847
|
+
metadata
|
|
5848
|
+
};
|
|
5849
|
+
}
|
|
5850
|
+
function getTypeFromFGBType(fgbType) {
|
|
5851
|
+
switch (fgbType) {
|
|
5852
|
+
case 0 /* Byte */:
|
|
5853
|
+
return "int8";
|
|
5854
|
+
case 1 /* UByte */:
|
|
5855
|
+
return "uint8";
|
|
5856
|
+
case 2 /* Bool */:
|
|
5857
|
+
return "bool";
|
|
5858
|
+
case 3 /* Short */:
|
|
5859
|
+
return "int16";
|
|
5860
|
+
case 4 /* UShort */:
|
|
5861
|
+
return "uint16";
|
|
5862
|
+
case 5 /* Int */:
|
|
5863
|
+
return "int32";
|
|
5864
|
+
case 6 /* UInt */:
|
|
5865
|
+
return "uint32";
|
|
5866
|
+
case 7 /* Long */:
|
|
5867
|
+
return "int64";
|
|
5868
|
+
case 8 /* ULong */:
|
|
5869
|
+
return "uint64";
|
|
5870
|
+
case 9 /* Float */:
|
|
5871
|
+
return "float32";
|
|
5872
|
+
case 10 /* Double */:
|
|
5873
|
+
return "float64";
|
|
5874
|
+
case 11 /* String */:
|
|
5875
|
+
return "utf8";
|
|
5876
|
+
case 12 /* Json */:
|
|
5877
|
+
return "null";
|
|
5878
|
+
case 13 /* DateTime */:
|
|
5879
|
+
return "date-millisecond";
|
|
5880
|
+
case 14 /* Binary */:
|
|
5881
|
+
return "binary";
|
|
5882
|
+
default:
|
|
5883
|
+
return "null";
|
|
5884
|
+
}
|
|
5885
|
+
}
|
|
5886
|
+
|
|
5887
|
+
// src/flatgeobuf/3.27.2/flat-geobuf/geometry-type.ts
|
|
5888
|
+
var GeometryType2 = /* @__PURE__ */ ((GeometryType3) => {
|
|
5889
|
+
GeometryType3[GeometryType3["Unknown"] = 0] = "Unknown";
|
|
5890
|
+
GeometryType3[GeometryType3["Point"] = 1] = "Point";
|
|
5891
|
+
GeometryType3[GeometryType3["LineString"] = 2] = "LineString";
|
|
5892
|
+
GeometryType3[GeometryType3["Polygon"] = 3] = "Polygon";
|
|
5893
|
+
GeometryType3[GeometryType3["MultiPoint"] = 4] = "MultiPoint";
|
|
5894
|
+
GeometryType3[GeometryType3["MultiLineString"] = 5] = "MultiLineString";
|
|
5895
|
+
GeometryType3[GeometryType3["MultiPolygon"] = 6] = "MultiPolygon";
|
|
5896
|
+
GeometryType3[GeometryType3["GeometryCollection"] = 7] = "GeometryCollection";
|
|
5897
|
+
GeometryType3[GeometryType3["CircularString"] = 8] = "CircularString";
|
|
5898
|
+
GeometryType3[GeometryType3["CompoundCurve"] = 9] = "CompoundCurve";
|
|
5899
|
+
GeometryType3[GeometryType3["CurvePolygon"] = 10] = "CurvePolygon";
|
|
5900
|
+
GeometryType3[GeometryType3["MultiCurve"] = 11] = "MultiCurve";
|
|
5901
|
+
GeometryType3[GeometryType3["MultiSurface"] = 12] = "MultiSurface";
|
|
5902
|
+
GeometryType3[GeometryType3["Curve"] = 13] = "Curve";
|
|
5903
|
+
GeometryType3[GeometryType3["Surface"] = 14] = "Surface";
|
|
5904
|
+
GeometryType3[GeometryType3["PolyhedralSurface"] = 15] = "PolyhedralSurface";
|
|
5905
|
+
GeometryType3[GeometryType3["TIN"] = 16] = "TIN";
|
|
5906
|
+
GeometryType3[GeometryType3["Triangle"] = 17] = "Triangle";
|
|
5907
|
+
return GeometryType3;
|
|
5908
|
+
})(GeometryType2 || {});
|
|
5909
|
+
|
|
5898
5910
|
// src/flatgeobuf/3.27.2/flat-geobuf/geometry.ts
|
|
5899
5911
|
var Geometry = class {
|
|
5900
5912
|
bb = null;
|
|
@@ -8681,16 +8693,11 @@ var __exports__ = (() => {
|
|
|
8681
8693
|
var VERSION = typeof __VERSION__ !== "undefined" ? __VERSION__ : "latest";
|
|
8682
8694
|
var FGB_MAGIC_NUMBER = [102, 103, 98, 3, 102, 103, 98, 1];
|
|
8683
8695
|
var FlatGeobufWorkerLoader = {
|
|
8696
|
+
...FlatGeobufFormat,
|
|
8684
8697
|
dataType: null,
|
|
8685
8698
|
batchType: null,
|
|
8686
|
-
id: "flatgeobuf",
|
|
8687
|
-
name: "FlatGeobuf",
|
|
8688
|
-
module: "flatgeobuf",
|
|
8689
8699
|
version: VERSION,
|
|
8690
8700
|
worker: true,
|
|
8691
|
-
extensions: ["fgb"],
|
|
8692
|
-
mimeTypes: ["application/octet-stream"],
|
|
8693
|
-
category: "geometry",
|
|
8694
8701
|
tests: [new Uint8Array(FGB_MAGIC_NUMBER).buffer],
|
|
8695
8702
|
options: {
|
|
8696
8703
|
flatgeobuf: {
|
|
@@ -8728,6 +8735,147 @@ var __exports__ = (() => {
|
|
|
8728
8735
|
reproject: options?.gis?.reproject || false
|
|
8729
8736
|
};
|
|
8730
8737
|
}
|
|
8738
|
+
|
|
8739
|
+
// ../loader-utils/src/lib/option-utils/merge-options.ts
|
|
8740
|
+
function mergeOptions(baseOptions, newOptions) {
|
|
8741
|
+
return mergeOptionsRecursively(baseOptions || {}, newOptions);
|
|
8742
|
+
}
|
|
8743
|
+
function mergeOptionsRecursively(baseOptions, newOptions, level = 0) {
|
|
8744
|
+
if (level > 3) {
|
|
8745
|
+
return newOptions;
|
|
8746
|
+
}
|
|
8747
|
+
const options = { ...baseOptions };
|
|
8748
|
+
for (const [key, newValue] of Object.entries(newOptions)) {
|
|
8749
|
+
if (newValue && typeof newValue === "object" && !Array.isArray(newValue)) {
|
|
8750
|
+
options[key] = mergeOptionsRecursively(
|
|
8751
|
+
options[key] || {},
|
|
8752
|
+
newOptions[key],
|
|
8753
|
+
level + 1
|
|
8754
|
+
);
|
|
8755
|
+
} else {
|
|
8756
|
+
options[key] = newOptions[key];
|
|
8757
|
+
}
|
|
8758
|
+
}
|
|
8759
|
+
return options;
|
|
8760
|
+
}
|
|
8761
|
+
|
|
8762
|
+
// ../loader-utils/src/lib/path-utils/file-aliases.ts
|
|
8763
|
+
var pathPrefix = "";
|
|
8764
|
+
var fileAliases = {};
|
|
8765
|
+
function resolvePath(filename) {
|
|
8766
|
+
for (const alias in fileAliases) {
|
|
8767
|
+
if (filename.startsWith(alias)) {
|
|
8768
|
+
const replacement = fileAliases[alias];
|
|
8769
|
+
filename = filename.replace(alias, replacement);
|
|
8770
|
+
}
|
|
8771
|
+
}
|
|
8772
|
+
if (!filename.startsWith("http://") && !filename.startsWith("https://")) {
|
|
8773
|
+
filename = `${pathPrefix}${filename}`;
|
|
8774
|
+
}
|
|
8775
|
+
return filename;
|
|
8776
|
+
}
|
|
8777
|
+
|
|
8778
|
+
// ../loader-utils/src/lib/sources/data-source.ts
|
|
8779
|
+
var _DataSource = class {
|
|
8780
|
+
optionsType;
|
|
8781
|
+
options;
|
|
8782
|
+
data;
|
|
8783
|
+
url;
|
|
8784
|
+
/** The actual load options, if calling a loaders.gl loader */
|
|
8785
|
+
loadOptions;
|
|
8786
|
+
/** A resolved fetch function extracted from loadOptions prop */
|
|
8787
|
+
fetch;
|
|
8788
|
+
_needsRefresh = true;
|
|
8789
|
+
constructor(data, options, defaultOptions) {
|
|
8790
|
+
if (defaultOptions) {
|
|
8791
|
+
this.options = mergeOptions({ ...defaultOptions, core: _DataSource.defaultOptions }, options);
|
|
8792
|
+
} else {
|
|
8793
|
+
this.options = { ...options };
|
|
8794
|
+
}
|
|
8795
|
+
this.data = data;
|
|
8796
|
+
this.url = typeof data === "string" ? resolvePath(data) : "";
|
|
8797
|
+
this.loadOptions = { ...this.options.core?.loadOptions };
|
|
8798
|
+
this.fetch = getFetchFunction(this.loadOptions);
|
|
8799
|
+
}
|
|
8800
|
+
setProps(options) {
|
|
8801
|
+
this.options = Object.assign(this.options, options);
|
|
8802
|
+
this.setNeedsRefresh();
|
|
8803
|
+
}
|
|
8804
|
+
/** Mark this data source as needing a refresh (redraw) */
|
|
8805
|
+
setNeedsRefresh() {
|
|
8806
|
+
this._needsRefresh = true;
|
|
8807
|
+
}
|
|
8808
|
+
/**
|
|
8809
|
+
* Does this data source need refreshing?
|
|
8810
|
+
* @note The specifics of the refresh mechanism depends on type of data source
|
|
8811
|
+
*/
|
|
8812
|
+
getNeedsRefresh(clear = true) {
|
|
8813
|
+
const needsRefresh = this._needsRefresh;
|
|
8814
|
+
if (clear) {
|
|
8815
|
+
this._needsRefresh = false;
|
|
8816
|
+
}
|
|
8817
|
+
return needsRefresh;
|
|
8818
|
+
}
|
|
8819
|
+
};
|
|
8820
|
+
var DataSource = _DataSource;
|
|
8821
|
+
__publicField(DataSource, "defaultOptions", {
|
|
8822
|
+
core: {
|
|
8823
|
+
type: "auto",
|
|
8824
|
+
attributions: [],
|
|
8825
|
+
loadOptions: {},
|
|
8826
|
+
loaders: []
|
|
8827
|
+
}
|
|
8828
|
+
});
|
|
8829
|
+
function getFetchFunction(options) {
|
|
8830
|
+
const fetchFunction = options?.fetch;
|
|
8831
|
+
if (fetchFunction && typeof fetchFunction === "function") {
|
|
8832
|
+
return (url, fetchOptions2) => fetchFunction(url, fetchOptions2);
|
|
8833
|
+
}
|
|
8834
|
+
const fetchOptions = options?.fetch;
|
|
8835
|
+
if (fetchOptions && typeof fetchOptions !== "function") {
|
|
8836
|
+
return (url) => fetch(url, fetchOptions);
|
|
8837
|
+
}
|
|
8838
|
+
return (url) => fetch(url);
|
|
8839
|
+
}
|
|
8840
|
+
|
|
8841
|
+
// src/flatgeobuf-source.ts
|
|
8842
|
+
var FlatGeobufSource = {
|
|
8843
|
+
...FlatGeobufFormat,
|
|
8844
|
+
version: "0.0.0",
|
|
8845
|
+
type: "flatgeobuf-server",
|
|
8846
|
+
fromUrl: true,
|
|
8847
|
+
fromBlob: false,
|
|
8848
|
+
// TODO check if supported by library?
|
|
8849
|
+
defaultOptions: {
|
|
8850
|
+
flatgeobuf: {}
|
|
8851
|
+
},
|
|
8852
|
+
testURL: (url) => url.toLowerCase().includes("FeatureServer"),
|
|
8853
|
+
createDataSource: (url, options) => new FlatGeobufVectorSource(url, options)
|
|
8854
|
+
};
|
|
8855
|
+
var FlatGeobufVectorSource = class extends DataSource {
|
|
8856
|
+
formatSpecificMetadata = null;
|
|
8857
|
+
constructor(data, options) {
|
|
8858
|
+
super(data, options, FlatGeobufSource.defaultOptions);
|
|
8859
|
+
}
|
|
8860
|
+
/** TODO - not yet clear if we can find schema information in the FeatureServer metadata or if we need to request a feature */
|
|
8861
|
+
async getSchema() {
|
|
8862
|
+
await this.getMetadata({ formatSpecificMetadata: true });
|
|
8863
|
+
return { metadata: {}, fields: [] };
|
|
8864
|
+
}
|
|
8865
|
+
async getMetadata(options) {
|
|
8866
|
+
if (!this.formatSpecificMetadata) {
|
|
8867
|
+
}
|
|
8868
|
+
if (options.formatSpecificMetadata) {
|
|
8869
|
+
}
|
|
8870
|
+
return {};
|
|
8871
|
+
}
|
|
8872
|
+
async getFeatures(parameters) {
|
|
8873
|
+
const response = await this.fetch(this.url);
|
|
8874
|
+
const arrayBuffer = await response.arrayBuffer();
|
|
8875
|
+
const table = await FlatGeobufLoader.parse(arrayBuffer, {});
|
|
8876
|
+
return table;
|
|
8877
|
+
}
|
|
8878
|
+
};
|
|
8731
8879
|
return __toCommonJS(bundle_exports);
|
|
8732
8880
|
})();
|
|
8733
8881
|
/*! Bundled license information:
|