@loaders.gl/flatgeobuf 3.2.0-alpha.1 → 3.2.0-alpha.2
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.min.js +25 -9
- package/dist/es5/flatgeobuf-loader.js +4 -2
- package/dist/es5/flatgeobuf-loader.js.map +1 -1
- package/dist/es5/lib/parse-flatgeobuf.js +33 -9
- package/dist/es5/lib/parse-flatgeobuf.js.map +1 -1
- package/dist/es5/lib/types.js +2 -0
- package/dist/es5/lib/types.js.map +1 -0
- package/dist/esm/flatgeobuf-loader.js +4 -2
- package/dist/esm/flatgeobuf-loader.js.map +1 -1
- package/dist/esm/lib/parse-flatgeobuf.js +33 -9
- package/dist/esm/lib/parse-flatgeobuf.js.map +1 -1
- package/dist/esm/lib/types.js +2 -0
- package/dist/esm/lib/types.js.map +1 -0
- package/dist/flatgeobuf-loader.d.ts +3 -1
- package/dist/flatgeobuf-loader.d.ts.map +1 -1
- package/dist/flatgeobuf-loader.js +4 -1
- package/dist/flatgeobuf-worker.js +26 -10
- package/dist/index.d.ts +7 -2
- package/dist/index.d.ts.map +1 -1
- package/dist/lib/parse-flatgeobuf.d.ts +7 -2
- package/dist/lib/parse-flatgeobuf.d.ts.map +1 -1
- package/dist/lib/parse-flatgeobuf.js +22 -8
- package/dist/lib/types.d.ts +13 -0
- package/dist/lib/types.d.ts.map +1 -0
- package/dist/lib/types.js +2 -0
- package/package.json +4 -4
- package/src/flatgeobuf-loader.ts +4 -1
- package/src/lib/parse-flatgeobuf.ts +35 -16
- package/src/lib/types.ts +13 -0
package/dist/dist.min.js
CHANGED
|
@@ -44,7 +44,9 @@
|
|
|
44
44
|
mimeTypes: ["application/octet-stream"],
|
|
45
45
|
category: "geometry",
|
|
46
46
|
options: {
|
|
47
|
-
flatgeobuf: {
|
|
47
|
+
flatgeobuf: {
|
|
48
|
+
shape: "geojson"
|
|
49
|
+
}
|
|
48
50
|
}
|
|
49
51
|
};
|
|
50
52
|
}
|
|
@@ -9340,19 +9342,33 @@
|
|
|
9340
9342
|
return parsedGeometry;
|
|
9341
9343
|
}
|
|
9342
9344
|
function parseFlatGeobuf(arrayBuffer, options) {
|
|
9343
|
-
|
|
9344
|
-
|
|
9345
|
-
|
|
9346
|
-
|
|
9347
|
-
|
|
9345
|
+
const shape = options?.gis?.format || options?.flatgeobuf?.shape;
|
|
9346
|
+
switch (shape) {
|
|
9347
|
+
case "geojson-row-table": {
|
|
9348
|
+
const table = {
|
|
9349
|
+
shape: "geojson-row-table",
|
|
9350
|
+
data: parseFlatGeobufToGeoJSON(arrayBuffer, options)
|
|
9351
|
+
};
|
|
9352
|
+
return table;
|
|
9353
|
+
}
|
|
9354
|
+
case "columnar-table":
|
|
9355
|
+
return { shape: "columnar-table", data: parseFlatGeobufToBinary(arrayBuffer, options) };
|
|
9356
|
+
case "geojson":
|
|
9357
|
+
return parseFlatGeobufToGeoJSON(arrayBuffer, options);
|
|
9358
|
+
case "binary":
|
|
9359
|
+
return parseFlatGeobufToBinary(arrayBuffer, options);
|
|
9360
|
+
default:
|
|
9361
|
+
throw new Error(shape);
|
|
9348
9362
|
}
|
|
9349
|
-
return parseFlatGeobufToGeoJSON(arrayBuffer, options);
|
|
9350
9363
|
}
|
|
9351
9364
|
function parseFlatGeobufToBinary(arrayBuffer, options) {
|
|
9352
|
-
const
|
|
9353
|
-
return (0, import_generic.deserialize)(
|
|
9365
|
+
const array = new Uint8Array(arrayBuffer);
|
|
9366
|
+
return (0, import_generic.deserialize)(array, binaryFromFeature);
|
|
9354
9367
|
}
|
|
9355
9368
|
function parseFlatGeobufToGeoJSON(arrayBuffer, options) {
|
|
9369
|
+
if (arrayBuffer.byteLength === 0) {
|
|
9370
|
+
return [];
|
|
9371
|
+
}
|
|
9356
9372
|
const { reproject = false, _targetCrs = "WGS84" } = options && options.gis || {};
|
|
9357
9373
|
const arr = new Uint8Array(arrayBuffer);
|
|
9358
9374
|
let headerMeta;
|
|
@@ -4,7 +4,7 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
4
4
|
value: true
|
|
5
5
|
});
|
|
6
6
|
exports._typecheckFlatGeobufLoader = exports.FlatGeobufLoader = void 0;
|
|
7
|
-
var VERSION = typeof "3.2.0-alpha.
|
|
7
|
+
var VERSION = typeof "3.2.0-alpha.2" !== 'undefined' ? "3.2.0-alpha.2" : 'latest';
|
|
8
8
|
var FlatGeobufLoader = {
|
|
9
9
|
id: 'flatgeobuf',
|
|
10
10
|
name: 'FlatGeobuf',
|
|
@@ -15,7 +15,9 @@ var FlatGeobufLoader = {
|
|
|
15
15
|
mimeTypes: ['application/octet-stream'],
|
|
16
16
|
category: 'geometry',
|
|
17
17
|
options: {
|
|
18
|
-
flatgeobuf: {
|
|
18
|
+
flatgeobuf: {
|
|
19
|
+
shape: 'geojson'
|
|
20
|
+
}
|
|
19
21
|
}
|
|
20
22
|
};
|
|
21
23
|
exports.FlatGeobufLoader = FlatGeobufLoader;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/flatgeobuf-loader.ts"],"names":["VERSION","FlatGeobufLoader","id","name","module","version","worker","extensions","mimeTypes","category","options","flatgeobuf","_typecheckFlatGeobufLoader"],"mappings":";;;;;;AAIA,IAAMA,OAAO,GAAG,2BAAuB,WAAvB,qBAAmD,QAAnE;AAEO,IAAMC,gBAAgB,GAAG;AAC9BC,EAAAA,EAAE,EAAE,YAD0B;AAE9BC,EAAAA,IAAI,EAAE,YAFwB;AAG9BC,EAAAA,MAAM,EAAE,YAHsB;AAI9BC,EAAAA,OAAO,EAAEL,OAJqB;AAK9BM,EAAAA,MAAM,EAAE,IALsB;AAM9BC,EAAAA,UAAU,EAAE,CAAC,KAAD,CANkB;AAO9BC,EAAAA,SAAS,EAAE,CAAC,0BAAD,CAPmB;AAQ9BC,EAAAA,QAAQ,EAAE,UARoB;AAS9BC,EAAAA,OAAO,EAAE;AACPC,IAAAA,UAAU,EAAE;AADL;AATqB,CAAzB;;
|
|
1
|
+
{"version":3,"sources":["../../src/flatgeobuf-loader.ts"],"names":["VERSION","FlatGeobufLoader","id","name","module","version","worker","extensions","mimeTypes","category","options","flatgeobuf","shape","_typecheckFlatGeobufLoader"],"mappings":";;;;;;AAIA,IAAMA,OAAO,GAAG,2BAAuB,WAAvB,qBAAmD,QAAnE;AAEO,IAAMC,gBAAgB,GAAG;AAC9BC,EAAAA,EAAE,EAAE,YAD0B;AAE9BC,EAAAA,IAAI,EAAE,YAFwB;AAG9BC,EAAAA,MAAM,EAAE,YAHsB;AAI9BC,EAAAA,OAAO,EAAEL,OAJqB;AAK9BM,EAAAA,MAAM,EAAE,IALsB;AAM9BC,EAAAA,UAAU,EAAE,CAAC,KAAD,CANkB;AAO9BC,EAAAA,SAAS,EAAE,CAAC,0BAAD,CAPmB;AAQ9BC,EAAAA,QAAQ,EAAE,UARoB;AAS9BC,EAAAA,OAAO,EAAE;AACPC,IAAAA,UAAU,EAAE;AAEVC,MAAAA,KAAK,EAAE;AAFG;AADL;AATqB,CAAzB;;AAiBA,IAAMC,0BAAkC,GAAGZ,gBAA3C","sourcesContent":["import type {Loader} from '@loaders.gl/loader-utils';\n\n// __VERSION__ is injected by babel-plugin-version-inline\n// @ts-ignore TS2304: Cannot find name '__VERSION__'.\nconst VERSION = typeof __VERSION__ !== 'undefined' ? __VERSION__ : 'latest';\n\nexport const FlatGeobufLoader = {\n id: 'flatgeobuf',\n name: 'FlatGeobuf',\n module: 'flatgeobuf',\n version: VERSION,\n worker: true,\n extensions: ['fgb'],\n mimeTypes: ['application/octet-stream'],\n category: 'geometry',\n options: {\n flatgeobuf: {\n // Set to GeoJSON for backwards compatibility\n shape: 'geojson'\n }\n }\n};\n\nexport const _typecheckFlatGeobufLoader: Loader = FlatGeobufLoader;\n"],"file":"flatgeobuf-loader.js"}
|
|
@@ -37,23 +37,47 @@ function binaryFromFeature(feature, header) {
|
|
|
37
37
|
}
|
|
38
38
|
|
|
39
39
|
function parseFlatGeobuf(arrayBuffer, options) {
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
40
|
+
var _options$gis, _options$flatgeobuf;
|
|
41
|
+
|
|
42
|
+
var shape = (options === null || options === void 0 ? void 0 : (_options$gis = options.gis) === null || _options$gis === void 0 ? void 0 : _options$gis.format) || (options === null || options === void 0 ? void 0 : (_options$flatgeobuf = options.flatgeobuf) === null || _options$flatgeobuf === void 0 ? void 0 : _options$flatgeobuf.shape);
|
|
43
|
+
|
|
44
|
+
switch (shape) {
|
|
45
|
+
case 'geojson-row-table':
|
|
46
|
+
{
|
|
47
|
+
var table = {
|
|
48
|
+
shape: 'geojson-row-table',
|
|
49
|
+
data: parseFlatGeobufToGeoJSON(arrayBuffer, options)
|
|
50
|
+
};
|
|
51
|
+
return table;
|
|
52
|
+
}
|
|
43
53
|
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
54
|
+
case 'columnar-table':
|
|
55
|
+
return {
|
|
56
|
+
shape: 'columnar-table',
|
|
57
|
+
data: parseFlatGeobufToBinary(arrayBuffer, options)
|
|
58
|
+
};
|
|
59
|
+
|
|
60
|
+
case 'geojson':
|
|
61
|
+
return parseFlatGeobufToGeoJSON(arrayBuffer, options);
|
|
47
62
|
|
|
48
|
-
|
|
63
|
+
case 'binary':
|
|
64
|
+
return parseFlatGeobufToBinary(arrayBuffer, options);
|
|
65
|
+
|
|
66
|
+
default:
|
|
67
|
+
throw new Error(shape);
|
|
68
|
+
}
|
|
49
69
|
}
|
|
50
70
|
|
|
51
71
|
function parseFlatGeobufToBinary(arrayBuffer, options) {
|
|
52
|
-
var
|
|
53
|
-
return (0, _generic.deserialize)(
|
|
72
|
+
var array = new Uint8Array(arrayBuffer);
|
|
73
|
+
return (0, _generic.deserialize)(array, binaryFromFeature);
|
|
54
74
|
}
|
|
55
75
|
|
|
56
76
|
function parseFlatGeobufToGeoJSON(arrayBuffer, options) {
|
|
77
|
+
if (arrayBuffer.byteLength === 0) {
|
|
78
|
+
return [];
|
|
79
|
+
}
|
|
80
|
+
|
|
57
81
|
var _ref = options && options.gis || {},
|
|
58
82
|
_ref$reproject = _ref.reproject,
|
|
59
83
|
reproject = _ref$reproject === void 0 ? false : _ref$reproject,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/lib/parse-flatgeobuf.ts"],"names":["binaryFromFeature","feature","header","geometry","geometryType","type","parsedGeometry","properties","columns","parseFlatGeobuf","arrayBuffer","options","
|
|
1
|
+
{"version":3,"sources":["../../../src/lib/parse-flatgeobuf.ts"],"names":["binaryFromFeature","feature","header","geometry","geometryType","type","parsedGeometry","properties","columns","parseFlatGeobuf","arrayBuffer","options","shape","gis","format","flatgeobuf","table","data","parseFlatGeobufToGeoJSON","parseFlatGeobufToBinary","Error","array","Uint8Array","byteLength","reproject","_targetCrs","arr","headerMeta","features","crs","projection","Proj4Projection","from","wkt","to","e","coords","project","parseFlatGeobufInBatches","stream","parseFlatGeobufInBatchesToBinary","parseFlatGeobufInBatchesToGeoJSON","iterator","firstRecord"],"mappings":"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","sourcesContent":["// @ts-nocheck\nimport {Proj4Projection} from '@math.gl/proj4';\nimport {transformGeoJsonCoords} from '@loaders.gl/gis';\n\nimport {deserialize as deserializeGeoJson} from 'flatgeobuf/lib/cjs/geojson';\nimport {deserialize as deserializeGeneric} from 'flatgeobuf/lib/cjs/generic';\nimport {parseProperties as parsePropertiesBinary} from 'flatgeobuf/lib/cjs/generic/feature';\n\nimport {fromGeometry as binaryFromGeometry} from './binary-geometries';\nimport {FlatGeobufLoaderOptions} from './types';\nimport {GeoJSONRowTable, Feature} from '@loaders.gl/schema';\n\n// TODO: reproject binary features\nfunction binaryFromFeature(feature, header) {\n const geometry = feature.geometry();\n\n // FlatGeobuf files can only hold a single geometry type per file, otherwise\n // GeometryType is GeometryCollection\n // I believe geometry.type() is null (0) except when the geometry type isn't\n // known in the header?\n const geometryType = header.geometryType || geometry.type();\n const parsedGeometry = binaryFromGeometry(geometry, geometryType);\n parsedGeometry.properties = parsePropertiesBinary(feature, header.columns);\n\n // TODO: wrap binary data either in points, lines, or polygons key\n return parsedGeometry;\n}\n\n/*\n * Parse FlatGeobuf arrayBuffer and return GeoJSON.\n *\n * @param arrayBuffer A FlatGeobuf arrayBuffer\n * @return A GeoJSON geometry object\n */\nexport function parseFlatGeobuf(arrayBuffer: ArrayBuffer, options?: FlatGeobufLoaderOptions) {\n const shape = options?.gis?.format || options?.flatgeobuf?.shape;\n\n switch (shape) {\n case 'geojson-row-table': {\n const table: GeoJSONRowTable = {\n shape: 'geojson-row-table',\n data: parseFlatGeobufToGeoJSON(arrayBuffer, options)\n };\n return table;\n }\n case 'columnar-table': // binary + some JS arrays\n return {shape: 'columnar-table', data: parseFlatGeobufToBinary(arrayBuffer, options)};\n case 'geojson':\n return parseFlatGeobufToGeoJSON(arrayBuffer, options);\n case 'binary':\n return parseFlatGeobufToBinary(arrayBuffer, options);\n default:\n throw new Error(shape);\n }\n}\n\nfunction parseFlatGeobufToBinary(arrayBuffer: ArrayBuffer, options: FlatGeobufLoaderOptions) {\n // TODO: reproject binary features\n // const {reproject = false, _targetCrs = 'WGS84'} = (options && options.gis) || {};\n\n const array = new Uint8Array(arrayBuffer);\n return deserializeGeneric(array, binaryFromFeature);\n}\n\nfunction parseFlatGeobufToGeoJSON(\n arrayBuffer: ArrayBuffer,\n options: FlatGeobufLoaderOptions\n): Feature[] {\n if (arrayBuffer.byteLength === 0) {\n return [];\n }\n\n const {reproject = false, _targetCrs = 'WGS84'} = (options && options.gis) || {};\n\n const arr = new Uint8Array(arrayBuffer);\n\n let headerMeta;\n const {features} = deserializeGeoJson(arr, false, (header) => {\n headerMeta = header;\n });\n\n const crs = headerMeta && headerMeta.crs;\n let projection;\n if (reproject && crs) {\n // Constructing the projection may fail for some invalid WKT strings\n try {\n projection = new Proj4Projection({from: crs.wkt, to: _targetCrs});\n } catch (e) {\n // no op\n }\n }\n\n if (projection) {\n return transformGeoJsonCoords(features, (coords) => projection.project(coords));\n }\n\n return features;\n}\n\n/*\n * Parse FlatGeobuf arrayBuffer and return GeoJSON.\n *\n * @param {ReadableStream} _ A FlatGeobuf arrayBuffer\n * @return A GeoJSON geometry object iterator\n */\n// eslint-disable-next-line complexity\nexport function parseFlatGeobufInBatches(stream, options: FlatGeobufLoaderOptions) {\n if (options && options.gis && options.gis.format === 'binary') {\n return parseFlatGeobufInBatchesToBinary(stream, options);\n }\n\n return parseFlatGeobufInBatchesToGeoJSON(stream, options);\n}\n\nfunction parseFlatGeobufInBatchesToBinary(stream, options: FlatGeobufLoaderOptions) {\n // TODO: reproject binary streaming features\n // const {reproject = false, _targetCrs = 'WGS84'} = (options && options.gis) || {};\n\n const iterator = deserializeGeneric(stream, binaryFromFeature);\n return iterator;\n}\n\n// eslint-disable-next-line complexity\nasync function* parseFlatGeobufInBatchesToGeoJSON(stream, options: FlatGeobufLoaderOptions) {\n const {reproject = false, _targetCrs = 'WGS84'} = (options && options.gis) || {};\n\n let headerMeta;\n const iterator = deserializeGeoJson(stream, false, (header) => {\n headerMeta = header;\n });\n\n let projection;\n let firstRecord = true;\n for await (const feature of iterator) {\n if (firstRecord) {\n const crs = headerMeta && headerMeta.crs;\n if (reproject && crs) {\n projection = new Proj4Projection({from: crs.wkt, to: _targetCrs});\n }\n\n firstRecord = false;\n }\n\n if (reproject && projection) {\n // eslint-disable-next-line\n yield transformGeoJsonCoords([feature], (coords) => projection.project(coords));\n } else {\n yield feature;\n }\n }\n}\n"],"file":"parse-flatgeobuf.js"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":[],"names":[],"mappings":"","sourcesContent":[],"file":"types.js"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
const VERSION = typeof "3.2.0-alpha.
|
|
1
|
+
const VERSION = typeof "3.2.0-alpha.2" !== 'undefined' ? "3.2.0-alpha.2" : 'latest';
|
|
2
2
|
export const FlatGeobufLoader = {
|
|
3
3
|
id: 'flatgeobuf',
|
|
4
4
|
name: 'FlatGeobuf',
|
|
@@ -9,7 +9,9 @@ export const FlatGeobufLoader = {
|
|
|
9
9
|
mimeTypes: ['application/octet-stream'],
|
|
10
10
|
category: 'geometry',
|
|
11
11
|
options: {
|
|
12
|
-
flatgeobuf: {
|
|
12
|
+
flatgeobuf: {
|
|
13
|
+
shape: 'geojson'
|
|
14
|
+
}
|
|
13
15
|
}
|
|
14
16
|
};
|
|
15
17
|
export const _typecheckFlatGeobufLoader = FlatGeobufLoader;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/flatgeobuf-loader.ts"],"names":["VERSION","FlatGeobufLoader","id","name","module","version","worker","extensions","mimeTypes","category","options","flatgeobuf","_typecheckFlatGeobufLoader"],"mappings":"AAIA,MAAMA,OAAO,GAAG,2BAAuB,WAAvB,qBAAmD,QAAnE;AAEA,OAAO,MAAMC,gBAAgB,GAAG;AAC9BC,EAAAA,EAAE,EAAE,YAD0B;AAE9BC,EAAAA,IAAI,EAAE,YAFwB;AAG9BC,EAAAA,MAAM,EAAE,YAHsB;AAI9BC,EAAAA,OAAO,EAAEL,OAJqB;AAK9BM,EAAAA,MAAM,EAAE,IALsB;AAM9BC,EAAAA,UAAU,EAAE,CAAC,KAAD,CANkB;AAO9BC,EAAAA,SAAS,EAAE,CAAC,0BAAD,CAPmB;AAQ9BC,EAAAA,QAAQ,EAAE,UARoB;AAS9BC,EAAAA,OAAO,EAAE;AACPC,IAAAA,UAAU,EAAE;AADL;AATqB,CAAzB;
|
|
1
|
+
{"version":3,"sources":["../../src/flatgeobuf-loader.ts"],"names":["VERSION","FlatGeobufLoader","id","name","module","version","worker","extensions","mimeTypes","category","options","flatgeobuf","shape","_typecheckFlatGeobufLoader"],"mappings":"AAIA,MAAMA,OAAO,GAAG,2BAAuB,WAAvB,qBAAmD,QAAnE;AAEA,OAAO,MAAMC,gBAAgB,GAAG;AAC9BC,EAAAA,EAAE,EAAE,YAD0B;AAE9BC,EAAAA,IAAI,EAAE,YAFwB;AAG9BC,EAAAA,MAAM,EAAE,YAHsB;AAI9BC,EAAAA,OAAO,EAAEL,OAJqB;AAK9BM,EAAAA,MAAM,EAAE,IALsB;AAM9BC,EAAAA,UAAU,EAAE,CAAC,KAAD,CANkB;AAO9BC,EAAAA,SAAS,EAAE,CAAC,0BAAD,CAPmB;AAQ9BC,EAAAA,QAAQ,EAAE,UARoB;AAS9BC,EAAAA,OAAO,EAAE;AACPC,IAAAA,UAAU,EAAE;AAEVC,MAAAA,KAAK,EAAE;AAFG;AADL;AATqB,CAAzB;AAiBP,OAAO,MAAMC,0BAAkC,GAAGZ,gBAA3C","sourcesContent":["import type {Loader} from '@loaders.gl/loader-utils';\n\n// __VERSION__ is injected by babel-plugin-version-inline\n// @ts-ignore TS2304: Cannot find name '__VERSION__'.\nconst VERSION = typeof __VERSION__ !== 'undefined' ? __VERSION__ : 'latest';\n\nexport const FlatGeobufLoader = {\n id: 'flatgeobuf',\n name: 'FlatGeobuf',\n module: 'flatgeobuf',\n version: VERSION,\n worker: true,\n extensions: ['fgb'],\n mimeTypes: ['application/octet-stream'],\n category: 'geometry',\n options: {\n flatgeobuf: {\n // Set to GeoJSON for backwards compatibility\n shape: 'geojson'\n }\n }\n};\n\nexport const _typecheckFlatGeobufLoader: Loader = FlatGeobufLoader;\n"],"file":"flatgeobuf-loader.js"}
|
|
@@ -14,23 +14,47 @@ function binaryFromFeature(feature, header) {
|
|
|
14
14
|
}
|
|
15
15
|
|
|
16
16
|
export function parseFlatGeobuf(arrayBuffer, options) {
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
17
|
+
var _options$gis, _options$flatgeobuf;
|
|
18
|
+
|
|
19
|
+
const shape = (options === null || options === void 0 ? void 0 : (_options$gis = options.gis) === null || _options$gis === void 0 ? void 0 : _options$gis.format) || (options === null || options === void 0 ? void 0 : (_options$flatgeobuf = options.flatgeobuf) === null || _options$flatgeobuf === void 0 ? void 0 : _options$flatgeobuf.shape);
|
|
20
|
+
|
|
21
|
+
switch (shape) {
|
|
22
|
+
case 'geojson-row-table':
|
|
23
|
+
{
|
|
24
|
+
const table = {
|
|
25
|
+
shape: 'geojson-row-table',
|
|
26
|
+
data: parseFlatGeobufToGeoJSON(arrayBuffer, options)
|
|
27
|
+
};
|
|
28
|
+
return table;
|
|
29
|
+
}
|
|
20
30
|
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
31
|
+
case 'columnar-table':
|
|
32
|
+
return {
|
|
33
|
+
shape: 'columnar-table',
|
|
34
|
+
data: parseFlatGeobufToBinary(arrayBuffer, options)
|
|
35
|
+
};
|
|
36
|
+
|
|
37
|
+
case 'geojson':
|
|
38
|
+
return parseFlatGeobufToGeoJSON(arrayBuffer, options);
|
|
24
39
|
|
|
25
|
-
|
|
40
|
+
case 'binary':
|
|
41
|
+
return parseFlatGeobufToBinary(arrayBuffer, options);
|
|
42
|
+
|
|
43
|
+
default:
|
|
44
|
+
throw new Error(shape);
|
|
45
|
+
}
|
|
26
46
|
}
|
|
27
47
|
|
|
28
48
|
function parseFlatGeobufToBinary(arrayBuffer, options) {
|
|
29
|
-
const
|
|
30
|
-
return deserializeGeneric(
|
|
49
|
+
const array = new Uint8Array(arrayBuffer);
|
|
50
|
+
return deserializeGeneric(array, binaryFromFeature);
|
|
31
51
|
}
|
|
32
52
|
|
|
33
53
|
function parseFlatGeobufToGeoJSON(arrayBuffer, options) {
|
|
54
|
+
if (arrayBuffer.byteLength === 0) {
|
|
55
|
+
return [];
|
|
56
|
+
}
|
|
57
|
+
|
|
34
58
|
const {
|
|
35
59
|
reproject = false,
|
|
36
60
|
_targetCrs = 'WGS84'
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/lib/parse-flatgeobuf.ts"],"names":["Proj4Projection","transformGeoJsonCoords","deserialize","deserializeGeoJson","deserializeGeneric","parseProperties","parsePropertiesBinary","fromGeometry","binaryFromGeometry","binaryFromFeature","feature","header","geometry","geometryType","type","parsedGeometry","properties","columns","parseFlatGeobuf","arrayBuffer","options","
|
|
1
|
+
{"version":3,"sources":["../../../src/lib/parse-flatgeobuf.ts"],"names":["Proj4Projection","transformGeoJsonCoords","deserialize","deserializeGeoJson","deserializeGeneric","parseProperties","parsePropertiesBinary","fromGeometry","binaryFromGeometry","binaryFromFeature","feature","header","geometry","geometryType","type","parsedGeometry","properties","columns","parseFlatGeobuf","arrayBuffer","options","shape","gis","format","flatgeobuf","table","data","parseFlatGeobufToGeoJSON","parseFlatGeobufToBinary","Error","array","Uint8Array","byteLength","reproject","_targetCrs","arr","headerMeta","features","crs","projection","from","wkt","to","e","coords","project","parseFlatGeobufInBatches","stream","parseFlatGeobufInBatchesToBinary","parseFlatGeobufInBatchesToGeoJSON","iterator","firstRecord"],"mappings":"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","sourcesContent":["// @ts-nocheck\nimport {Proj4Projection} from '@math.gl/proj4';\nimport {transformGeoJsonCoords} from '@loaders.gl/gis';\n\nimport {deserialize as deserializeGeoJson} from 'flatgeobuf/lib/cjs/geojson';\nimport {deserialize as deserializeGeneric} from 'flatgeobuf/lib/cjs/generic';\nimport {parseProperties as parsePropertiesBinary} from 'flatgeobuf/lib/cjs/generic/feature';\n\nimport {fromGeometry as binaryFromGeometry} from './binary-geometries';\nimport {FlatGeobufLoaderOptions} from './types';\nimport {GeoJSONRowTable, Feature} from '@loaders.gl/schema';\n\n// TODO: reproject binary features\nfunction binaryFromFeature(feature, header) {\n const geometry = feature.geometry();\n\n // FlatGeobuf files can only hold a single geometry type per file, otherwise\n // GeometryType is GeometryCollection\n // I believe geometry.type() is null (0) except when the geometry type isn't\n // known in the header?\n const geometryType = header.geometryType || geometry.type();\n const parsedGeometry = binaryFromGeometry(geometry, geometryType);\n parsedGeometry.properties = parsePropertiesBinary(feature, header.columns);\n\n // TODO: wrap binary data either in points, lines, or polygons key\n return parsedGeometry;\n}\n\n/*\n * Parse FlatGeobuf arrayBuffer and return GeoJSON.\n *\n * @param arrayBuffer A FlatGeobuf arrayBuffer\n * @return A GeoJSON geometry object\n */\nexport function parseFlatGeobuf(arrayBuffer: ArrayBuffer, options?: FlatGeobufLoaderOptions) {\n const shape = options?.gis?.format || options?.flatgeobuf?.shape;\n\n switch (shape) {\n case 'geojson-row-table': {\n const table: GeoJSONRowTable = {\n shape: 'geojson-row-table',\n data: parseFlatGeobufToGeoJSON(arrayBuffer, options)\n };\n return table;\n }\n case 'columnar-table': // binary + some JS arrays\n return {shape: 'columnar-table', data: parseFlatGeobufToBinary(arrayBuffer, options)};\n case 'geojson':\n return parseFlatGeobufToGeoJSON(arrayBuffer, options);\n case 'binary':\n return parseFlatGeobufToBinary(arrayBuffer, options);\n default:\n throw new Error(shape);\n }\n}\n\nfunction parseFlatGeobufToBinary(arrayBuffer: ArrayBuffer, options: FlatGeobufLoaderOptions) {\n // TODO: reproject binary features\n // const {reproject = false, _targetCrs = 'WGS84'} = (options && options.gis) || {};\n\n const array = new Uint8Array(arrayBuffer);\n return deserializeGeneric(array, binaryFromFeature);\n}\n\nfunction parseFlatGeobufToGeoJSON(\n arrayBuffer: ArrayBuffer,\n options: FlatGeobufLoaderOptions\n): Feature[] {\n if (arrayBuffer.byteLength === 0) {\n return [];\n }\n\n const {reproject = false, _targetCrs = 'WGS84'} = (options && options.gis) || {};\n\n const arr = new Uint8Array(arrayBuffer);\n\n let headerMeta;\n const {features} = deserializeGeoJson(arr, false, (header) => {\n headerMeta = header;\n });\n\n const crs = headerMeta && headerMeta.crs;\n let projection;\n if (reproject && crs) {\n // Constructing the projection may fail for some invalid WKT strings\n try {\n projection = new Proj4Projection({from: crs.wkt, to: _targetCrs});\n } catch (e) {\n // no op\n }\n }\n\n if (projection) {\n return transformGeoJsonCoords(features, (coords) => projection.project(coords));\n }\n\n return features;\n}\n\n/*\n * Parse FlatGeobuf arrayBuffer and return GeoJSON.\n *\n * @param {ReadableStream} _ A FlatGeobuf arrayBuffer\n * @return A GeoJSON geometry object iterator\n */\n// eslint-disable-next-line complexity\nexport function parseFlatGeobufInBatches(stream, options: FlatGeobufLoaderOptions) {\n if (options && options.gis && options.gis.format === 'binary') {\n return parseFlatGeobufInBatchesToBinary(stream, options);\n }\n\n return parseFlatGeobufInBatchesToGeoJSON(stream, options);\n}\n\nfunction parseFlatGeobufInBatchesToBinary(stream, options: FlatGeobufLoaderOptions) {\n // TODO: reproject binary streaming features\n // const {reproject = false, _targetCrs = 'WGS84'} = (options && options.gis) || {};\n\n const iterator = deserializeGeneric(stream, binaryFromFeature);\n return iterator;\n}\n\n// eslint-disable-next-line complexity\nasync function* parseFlatGeobufInBatchesToGeoJSON(stream, options: FlatGeobufLoaderOptions) {\n const {reproject = false, _targetCrs = 'WGS84'} = (options && options.gis) || {};\n\n let headerMeta;\n const iterator = deserializeGeoJson(stream, false, (header) => {\n headerMeta = header;\n });\n\n let projection;\n let firstRecord = true;\n for await (const feature of iterator) {\n if (firstRecord) {\n const crs = headerMeta && headerMeta.crs;\n if (reproject && crs) {\n projection = new Proj4Projection({from: crs.wkt, to: _targetCrs});\n }\n\n firstRecord = false;\n }\n\n if (reproject && projection) {\n // eslint-disable-next-line\n yield transformGeoJsonCoords([feature], (coords) => projection.project(coords));\n } else {\n yield feature;\n }\n }\n}\n"],"file":"parse-flatgeobuf.js"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":[],"names":[],"mappings":"","sourcesContent":[],"file":"types.js"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"flatgeobuf-loader.d.ts","sourceRoot":"","sources":["../src/flatgeobuf-loader.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAC,MAAM,EAAC,MAAM,0BAA0B,CAAC;AAMrD,eAAO,MAAM,gBAAgB
|
|
1
|
+
{"version":3,"file":"flatgeobuf-loader.d.ts","sourceRoot":"","sources":["../src/flatgeobuf-loader.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAC,MAAM,EAAC,MAAM,0BAA0B,CAAC;AAMrD,eAAO,MAAM,gBAAgB;;;;;;;;;;;;;;CAe5B,CAAC;AAEF,eAAO,MAAM,0BAA0B,EAAE,MAAyB,CAAC"}
|
|
@@ -14,7 +14,10 @@ exports.FlatGeobufLoader = {
|
|
|
14
14
|
mimeTypes: ['application/octet-stream'],
|
|
15
15
|
category: 'geometry',
|
|
16
16
|
options: {
|
|
17
|
-
flatgeobuf: {
|
|
17
|
+
flatgeobuf: {
|
|
18
|
+
// Set to GeoJSON for backwards compatibility
|
|
19
|
+
shape: 'geojson'
|
|
20
|
+
}
|
|
18
21
|
}
|
|
19
22
|
};
|
|
20
23
|
exports._typecheckFlatGeobufLoader = exports.FlatGeobufLoader;
|
|
@@ -3394,7 +3394,7 @@
|
|
|
3394
3394
|
}
|
|
3395
3395
|
|
|
3396
3396
|
// src/flatgeobuf-loader.ts
|
|
3397
|
-
var VERSION = true ? "3.2.0-alpha.
|
|
3397
|
+
var VERSION = true ? "3.2.0-alpha.2" : "latest";
|
|
3398
3398
|
var FlatGeobufLoader = {
|
|
3399
3399
|
id: "flatgeobuf",
|
|
3400
3400
|
name: "FlatGeobuf",
|
|
@@ -3405,7 +3405,9 @@
|
|
|
3405
3405
|
mimeTypes: ["application/octet-stream"],
|
|
3406
3406
|
category: "geometry",
|
|
3407
3407
|
options: {
|
|
3408
|
-
flatgeobuf: {
|
|
3408
|
+
flatgeobuf: {
|
|
3409
|
+
shape: "geojson"
|
|
3410
|
+
}
|
|
3409
3411
|
}
|
|
3410
3412
|
};
|
|
3411
3413
|
|
|
@@ -8879,19 +8881,33 @@
|
|
|
8879
8881
|
return parsedGeometry;
|
|
8880
8882
|
}
|
|
8881
8883
|
function parseFlatGeobuf(arrayBuffer, options) {
|
|
8882
|
-
|
|
8883
|
-
|
|
8884
|
-
|
|
8885
|
-
|
|
8886
|
-
|
|
8884
|
+
const shape = options?.gis?.format || options?.flatgeobuf?.shape;
|
|
8885
|
+
switch (shape) {
|
|
8886
|
+
case "geojson-row-table": {
|
|
8887
|
+
const table = {
|
|
8888
|
+
shape: "geojson-row-table",
|
|
8889
|
+
data: parseFlatGeobufToGeoJSON(arrayBuffer, options)
|
|
8890
|
+
};
|
|
8891
|
+
return table;
|
|
8892
|
+
}
|
|
8893
|
+
case "columnar-table":
|
|
8894
|
+
return { shape: "columnar-table", data: parseFlatGeobufToBinary(arrayBuffer, options) };
|
|
8895
|
+
case "geojson":
|
|
8896
|
+
return parseFlatGeobufToGeoJSON(arrayBuffer, options);
|
|
8897
|
+
case "binary":
|
|
8898
|
+
return parseFlatGeobufToBinary(arrayBuffer, options);
|
|
8899
|
+
default:
|
|
8900
|
+
throw new Error(shape);
|
|
8887
8901
|
}
|
|
8888
|
-
return parseFlatGeobufToGeoJSON(arrayBuffer, options);
|
|
8889
8902
|
}
|
|
8890
8903
|
function parseFlatGeobufToBinary(arrayBuffer, options) {
|
|
8891
|
-
const
|
|
8892
|
-
return (0, import_generic.deserialize)(
|
|
8904
|
+
const array = new Uint8Array(arrayBuffer);
|
|
8905
|
+
return (0, import_generic.deserialize)(array, binaryFromFeature);
|
|
8893
8906
|
}
|
|
8894
8907
|
function parseFlatGeobufToGeoJSON(arrayBuffer, options) {
|
|
8908
|
+
if (arrayBuffer.byteLength === 0) {
|
|
8909
|
+
return [];
|
|
8910
|
+
}
|
|
8895
8911
|
const { reproject = false, _targetCrs = "WGS84" } = options && options.gis || {};
|
|
8896
8912
|
const arr = new Uint8Array(arrayBuffer);
|
|
8897
8913
|
let headerMeta;
|
package/dist/index.d.ts
CHANGED
|
@@ -3,7 +3,10 @@ import { FlatGeobufLoader as FlatGeobufWorkerLoader } from './flatgeobuf-loader'
|
|
|
3
3
|
import { parseFlatGeobuf, parseFlatGeobufInBatches } from './lib/parse-flatgeobuf';
|
|
4
4
|
export { FlatGeobufWorkerLoader };
|
|
5
5
|
export declare const FlatGeobufLoader: {
|
|
6
|
-
parse: (arrayBuffer: any, options: any) => Promise<any
|
|
6
|
+
parse: (arrayBuffer: any, options: any) => Promise<any[] | import("@loaders.gl/schema").GeoJSONRowTable | AsyncGenerator<import("flatgeobuf/lib/cjs/generic/feature").IFeature, any, unknown> | {
|
|
7
|
+
shape: string;
|
|
8
|
+
data: any[] | AsyncGenerator<import("flatgeobuf/lib/cjs/generic/feature").IFeature, any, unknown>;
|
|
9
|
+
}>;
|
|
7
10
|
parseSync: typeof parseFlatGeobuf;
|
|
8
11
|
parseInBatchesFromStream: typeof parseFlatGeobufInBatches;
|
|
9
12
|
binary: boolean;
|
|
@@ -16,7 +19,9 @@ export declare const FlatGeobufLoader: {
|
|
|
16
19
|
mimeTypes: string[];
|
|
17
20
|
category: string;
|
|
18
21
|
options: {
|
|
19
|
-
flatgeobuf: {
|
|
22
|
+
flatgeobuf: {
|
|
23
|
+
shape: string;
|
|
24
|
+
};
|
|
20
25
|
};
|
|
21
26
|
};
|
|
22
27
|
export declare const _typecheckFlatGeobufLoader: LoaderWithParser;
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAC,gBAAgB,EAAC,MAAM,0BAA0B,CAAC;AAC/D,OAAO,EAAC,gBAAgB,IAAI,sBAAsB,EAAC,MAAM,qBAAqB,CAAC;AAC/E,OAAO,EAAC,eAAe,EAAE,wBAAwB,EAAC,MAAM,wBAAwB,CAAC;AAEjF,OAAO,EAAC,sBAAsB,EAAC,CAAC;AAEhC,eAAO,MAAM,gBAAgB
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAC,gBAAgB,EAAC,MAAM,0BAA0B,CAAC;AAC/D,OAAO,EAAC,gBAAgB,IAAI,sBAAsB,EAAC,MAAM,qBAAqB,CAAC;AAC/E,OAAO,EAAC,eAAe,EAAE,wBAAwB,EAAC,MAAM,wBAAwB,CAAC;AAEjF,OAAO,EAAC,sBAAsB,EAAC,CAAC;AAEhC,eAAO,MAAM,gBAAgB;;;;;;;;;;;;;;;;;;;;;CAM5B,CAAC;AAEF,eAAO,MAAM,0BAA0B,EAAE,gBAAmC,CAAC"}
|
|
@@ -1,3 +1,8 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
1
|
+
import { FlatGeobufLoaderOptions } from './types';
|
|
2
|
+
import { GeoJSONRowTable } from '@loaders.gl/schema';
|
|
3
|
+
export declare function parseFlatGeobuf(arrayBuffer: ArrayBuffer, options?: FlatGeobufLoaderOptions): any[] | GeoJSONRowTable | AsyncGenerator<import("flatgeobuf/lib/cjs/generic/feature").IFeature, any, unknown> | {
|
|
4
|
+
shape: string;
|
|
5
|
+
data: any[] | AsyncGenerator<import("flatgeobuf/lib/cjs/generic/feature").IFeature, any, unknown>;
|
|
6
|
+
};
|
|
7
|
+
export declare function parseFlatGeobufInBatches(stream: any, options: FlatGeobufLoaderOptions): any[] | AsyncGenerator<import("flatgeobuf/lib/cjs/generic/feature").IFeature, any, unknown> | AsyncGenerator<any, void, unknown>;
|
|
3
8
|
//# sourceMappingURL=parse-flatgeobuf.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"parse-flatgeobuf.d.ts","sourceRoot":"","sources":["../../src/lib/parse-flatgeobuf.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"parse-flatgeobuf.d.ts","sourceRoot":"","sources":["../../src/lib/parse-flatgeobuf.ts"],"names":[],"mappings":"AASA,OAAO,EAAC,uBAAuB,EAAC,MAAM,SAAS,CAAC;AAChD,OAAO,EAAC,eAAe,EAAU,MAAM,oBAAoB,CAAC;AAwB5D,wBAAgB,eAAe,CAAC,WAAW,EAAE,WAAW,EAAE,OAAO,CAAC,EAAE,uBAAuB;;;EAoB1F;AAoDD,wBAAgB,wBAAwB,CAAC,MAAM,KAAA,EAAE,OAAO,EAAE,uBAAuB,oIAMhF"}
|
|
@@ -28,22 +28,36 @@ function binaryFromFeature(feature, header) {
|
|
|
28
28
|
* @return A GeoJSON geometry object
|
|
29
29
|
*/
|
|
30
30
|
function parseFlatGeobuf(arrayBuffer, options) {
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
31
|
+
const shape = options?.gis?.format || options?.flatgeobuf?.shape;
|
|
32
|
+
switch (shape) {
|
|
33
|
+
case 'geojson-row-table': {
|
|
34
|
+
const table = {
|
|
35
|
+
shape: 'geojson-row-table',
|
|
36
|
+
data: parseFlatGeobufToGeoJSON(arrayBuffer, options)
|
|
37
|
+
};
|
|
38
|
+
return table;
|
|
39
|
+
}
|
|
40
|
+
case 'columnar-table': // binary + some JS arrays
|
|
41
|
+
return { shape: 'columnar-table', data: parseFlatGeobufToBinary(arrayBuffer, options) };
|
|
42
|
+
case 'geojson':
|
|
43
|
+
return parseFlatGeobufToGeoJSON(arrayBuffer, options);
|
|
44
|
+
case 'binary':
|
|
45
|
+
return parseFlatGeobufToBinary(arrayBuffer, options);
|
|
46
|
+
default:
|
|
47
|
+
throw new Error(shape);
|
|
36
48
|
}
|
|
37
|
-
return parseFlatGeobufToGeoJSON(arrayBuffer, options);
|
|
38
49
|
}
|
|
39
50
|
exports.parseFlatGeobuf = parseFlatGeobuf;
|
|
40
51
|
function parseFlatGeobufToBinary(arrayBuffer, options) {
|
|
41
52
|
// TODO: reproject binary features
|
|
42
53
|
// const {reproject = false, _targetCrs = 'WGS84'} = (options && options.gis) || {};
|
|
43
|
-
const
|
|
44
|
-
return (0, generic_1.deserialize)(
|
|
54
|
+
const array = new Uint8Array(arrayBuffer);
|
|
55
|
+
return (0, generic_1.deserialize)(array, binaryFromFeature);
|
|
45
56
|
}
|
|
46
57
|
function parseFlatGeobufToGeoJSON(arrayBuffer, options) {
|
|
58
|
+
if (arrayBuffer.byteLength === 0) {
|
|
59
|
+
return [];
|
|
60
|
+
}
|
|
47
61
|
const { reproject = false, _targetCrs = 'WGS84' } = (options && options.gis) || {};
|
|
48
62
|
const arr = new Uint8Array(arrayBuffer);
|
|
49
63
|
let headerMeta;
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import type { LoaderOptions } from '@loaders.gl/loader-utils';
|
|
2
|
+
export declare type FlatGeobufLoaderOptions = LoaderOptions & {
|
|
3
|
+
flatgeobuf?: {
|
|
4
|
+
shape?: 'geojson-row-table' | 'columnar-table' | 'geojson' | 'binary';
|
|
5
|
+
};
|
|
6
|
+
gis?: {
|
|
7
|
+
reproject?: boolean;
|
|
8
|
+
_targetCrs?: string;
|
|
9
|
+
/** @deprecated Use options.flatgeobuf.shape */
|
|
10
|
+
format?: 'geojson-row-table' | 'columnar-table' | 'geojson' | 'binary';
|
|
11
|
+
};
|
|
12
|
+
};
|
|
13
|
+
//# sourceMappingURL=types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/lib/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAC,aAAa,EAAC,MAAM,0BAA0B,CAAC;AAE5D,oBAAY,uBAAuB,GAAG,aAAa,GAAG;IACpD,UAAU,CAAC,EAAE;QACX,KAAK,CAAC,EAAE,mBAAmB,GAAG,gBAAgB,GAAG,SAAS,GAAG,QAAQ,CAAC;KACvE,CAAC;IACF,GAAG,CAAC,EAAE;QACJ,SAAS,CAAC,EAAE,OAAO,CAAC;QACpB,UAAU,CAAC,EAAE,MAAM,CAAC;QACpB,+CAA+C;QAC/C,MAAM,CAAC,EAAE,mBAAmB,GAAG,gBAAgB,GAAG,SAAS,GAAG,QAAQ,CAAC;KACxE,CAAC;CACH,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@loaders.gl/flatgeobuf",
|
|
3
3
|
"description": "Loader for FlatGeobuf",
|
|
4
|
-
"version": "3.2.0-alpha.
|
|
4
|
+
"version": "3.2.0-alpha.2",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"publishConfig": {
|
|
7
7
|
"access": "public"
|
|
@@ -32,10 +32,10 @@
|
|
|
32
32
|
"build-worker": "esbuild src/workers/flatgeobuf-worker.ts --bundle --outfile=dist/flatgeobuf-worker.js --define:__VERSION__=\\\"$npm_package_version\\\""
|
|
33
33
|
},
|
|
34
34
|
"dependencies": {
|
|
35
|
-
"@loaders.gl/gis": "
|
|
36
|
-
"@loaders.gl/loader-utils": "3.2.0-alpha.
|
|
35
|
+
"@loaders.gl/gis": "3.2.0-alpha.2",
|
|
36
|
+
"@loaders.gl/loader-utils": "3.2.0-alpha.2",
|
|
37
37
|
"@math.gl/proj4": "^3.3.1",
|
|
38
38
|
"flatgeobuf": "3.6.5"
|
|
39
39
|
},
|
|
40
|
-
"gitHead": "
|
|
40
|
+
"gitHead": "52a602739cbfce60fc314f474efc984d199dff78"
|
|
41
41
|
}
|
package/src/flatgeobuf-loader.ts
CHANGED
|
@@ -7,6 +7,8 @@ import {deserialize as deserializeGeneric} from 'flatgeobuf/lib/cjs/generic';
|
|
|
7
7
|
import {parseProperties as parsePropertiesBinary} from 'flatgeobuf/lib/cjs/generic/feature';
|
|
8
8
|
|
|
9
9
|
import {fromGeometry as binaryFromGeometry} from './binary-geometries';
|
|
10
|
+
import {FlatGeobufLoaderOptions} from './types';
|
|
11
|
+
import {GeoJSONRowTable, Feature} from '@loaders.gl/schema';
|
|
10
12
|
|
|
11
13
|
// TODO: reproject binary features
|
|
12
14
|
function binaryFromFeature(feature, header) {
|
|
@@ -30,27 +32,44 @@ function binaryFromFeature(feature, header) {
|
|
|
30
32
|
* @param arrayBuffer A FlatGeobuf arrayBuffer
|
|
31
33
|
* @return A GeoJSON geometry object
|
|
32
34
|
*/
|
|
33
|
-
export function parseFlatGeobuf(arrayBuffer, options) {
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
35
|
+
export function parseFlatGeobuf(arrayBuffer: ArrayBuffer, options?: FlatGeobufLoaderOptions) {
|
|
36
|
+
const shape = options?.gis?.format || options?.flatgeobuf?.shape;
|
|
37
|
+
|
|
38
|
+
switch (shape) {
|
|
39
|
+
case 'geojson-row-table': {
|
|
40
|
+
const table: GeoJSONRowTable = {
|
|
41
|
+
shape: 'geojson-row-table',
|
|
42
|
+
data: parseFlatGeobufToGeoJSON(arrayBuffer, options)
|
|
43
|
+
};
|
|
44
|
+
return table;
|
|
45
|
+
}
|
|
46
|
+
case 'columnar-table': // binary + some JS arrays
|
|
47
|
+
return {shape: 'columnar-table', data: parseFlatGeobufToBinary(arrayBuffer, options)};
|
|
48
|
+
case 'geojson':
|
|
49
|
+
return parseFlatGeobufToGeoJSON(arrayBuffer, options);
|
|
50
|
+
case 'binary':
|
|
51
|
+
return parseFlatGeobufToBinary(arrayBuffer, options);
|
|
52
|
+
default:
|
|
53
|
+
throw new Error(shape);
|
|
40
54
|
}
|
|
41
|
-
|
|
42
|
-
return parseFlatGeobufToGeoJSON(arrayBuffer, options);
|
|
43
55
|
}
|
|
44
56
|
|
|
45
|
-
function parseFlatGeobufToBinary(arrayBuffer, options) {
|
|
57
|
+
function parseFlatGeobufToBinary(arrayBuffer: ArrayBuffer, options: FlatGeobufLoaderOptions) {
|
|
46
58
|
// TODO: reproject binary features
|
|
47
59
|
// const {reproject = false, _targetCrs = 'WGS84'} = (options && options.gis) || {};
|
|
48
60
|
|
|
49
|
-
const
|
|
50
|
-
return deserializeGeneric(
|
|
61
|
+
const array = new Uint8Array(arrayBuffer);
|
|
62
|
+
return deserializeGeneric(array, binaryFromFeature);
|
|
51
63
|
}
|
|
52
64
|
|
|
53
|
-
function parseFlatGeobufToGeoJSON(
|
|
65
|
+
function parseFlatGeobufToGeoJSON(
|
|
66
|
+
arrayBuffer: ArrayBuffer,
|
|
67
|
+
options: FlatGeobufLoaderOptions
|
|
68
|
+
): Feature[] {
|
|
69
|
+
if (arrayBuffer.byteLength === 0) {
|
|
70
|
+
return [];
|
|
71
|
+
}
|
|
72
|
+
|
|
54
73
|
const {reproject = false, _targetCrs = 'WGS84'} = (options && options.gis) || {};
|
|
55
74
|
|
|
56
75
|
const arr = new Uint8Array(arrayBuffer);
|
|
@@ -85,7 +104,7 @@ function parseFlatGeobufToGeoJSON(arrayBuffer, options) {
|
|
|
85
104
|
* @return A GeoJSON geometry object iterator
|
|
86
105
|
*/
|
|
87
106
|
// eslint-disable-next-line complexity
|
|
88
|
-
export function parseFlatGeobufInBatches(stream, options) {
|
|
107
|
+
export function parseFlatGeobufInBatches(stream, options: FlatGeobufLoaderOptions) {
|
|
89
108
|
if (options && options.gis && options.gis.format === 'binary') {
|
|
90
109
|
return parseFlatGeobufInBatchesToBinary(stream, options);
|
|
91
110
|
}
|
|
@@ -93,7 +112,7 @@ export function parseFlatGeobufInBatches(stream, options) {
|
|
|
93
112
|
return parseFlatGeobufInBatchesToGeoJSON(stream, options);
|
|
94
113
|
}
|
|
95
114
|
|
|
96
|
-
function parseFlatGeobufInBatchesToBinary(stream, options) {
|
|
115
|
+
function parseFlatGeobufInBatchesToBinary(stream, options: FlatGeobufLoaderOptions) {
|
|
97
116
|
// TODO: reproject binary streaming features
|
|
98
117
|
// const {reproject = false, _targetCrs = 'WGS84'} = (options && options.gis) || {};
|
|
99
118
|
|
|
@@ -102,7 +121,7 @@ function parseFlatGeobufInBatchesToBinary(stream, options) {
|
|
|
102
121
|
}
|
|
103
122
|
|
|
104
123
|
// eslint-disable-next-line complexity
|
|
105
|
-
async function* parseFlatGeobufInBatchesToGeoJSON(stream, options) {
|
|
124
|
+
async function* parseFlatGeobufInBatchesToGeoJSON(stream, options: FlatGeobufLoaderOptions) {
|
|
106
125
|
const {reproject = false, _targetCrs = 'WGS84'} = (options && options.gis) || {};
|
|
107
126
|
|
|
108
127
|
let headerMeta;
|
package/src/lib/types.ts
ADDED
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import type {LoaderOptions} from '@loaders.gl/loader-utils';
|
|
2
|
+
|
|
3
|
+
export type FlatGeobufLoaderOptions = LoaderOptions & {
|
|
4
|
+
flatgeobuf?: {
|
|
5
|
+
shape?: 'geojson-row-table' | 'columnar-table' | 'geojson' | 'binary';
|
|
6
|
+
};
|
|
7
|
+
gis?: {
|
|
8
|
+
reproject?: boolean;
|
|
9
|
+
_targetCrs?: string;
|
|
10
|
+
/** @deprecated Use options.flatgeobuf.shape */
|
|
11
|
+
format?: 'geojson-row-table' | 'columnar-table' | 'geojson' | 'binary';
|
|
12
|
+
};
|
|
13
|
+
};
|