@loaders.gl/flatgeobuf 4.0.0-alpha.5 → 4.0.0-alpha.7

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (55) hide show
  1. package/dist/bundle.js +2 -2
  2. package/dist/dist.min.js +123 -24
  3. package/dist/es5/bundle.js +6 -0
  4. package/dist/es5/bundle.js.map +1 -0
  5. package/dist/es5/flatgeobuf-loader.js +26 -0
  6. package/dist/es5/flatgeobuf-loader.js.map +1 -0
  7. package/dist/es5/index.js +47 -0
  8. package/dist/es5/index.js.map +1 -0
  9. package/dist/es5/lib/binary-geometries.js +137 -0
  10. package/dist/es5/lib/binary-geometries.js.map +1 -0
  11. package/dist/es5/lib/parse-flatgeobuf.js +189 -0
  12. package/dist/es5/lib/parse-flatgeobuf.js.map +1 -0
  13. package/dist/es5/lib/types.js +2 -0
  14. package/dist/es5/lib/types.js.map +1 -0
  15. package/dist/es5/workers/flatgeobuf-worker.js +6 -0
  16. package/dist/es5/workers/flatgeobuf-worker.js.map +1 -0
  17. package/dist/esm/bundle.js +4 -0
  18. package/dist/esm/bundle.js.map +1 -0
  19. package/dist/esm/flatgeobuf-loader.js +18 -0
  20. package/dist/esm/flatgeobuf-loader.js.map +1 -0
  21. package/dist/esm/index.js +12 -0
  22. package/dist/esm/index.js.map +1 -0
  23. package/dist/esm/lib/binary-geometries.js +126 -0
  24. package/dist/esm/lib/binary-geometries.js.map +1 -0
  25. package/dist/esm/lib/parse-flatgeobuf.js +112 -0
  26. package/dist/esm/lib/parse-flatgeobuf.js.map +1 -0
  27. package/dist/esm/lib/types.js +2 -0
  28. package/dist/esm/lib/types.js.map +1 -0
  29. package/dist/esm/workers/flatgeobuf-worker.js +4 -0
  30. package/dist/esm/workers/flatgeobuf-worker.js.map +1 -0
  31. package/dist/flatgeobuf-loader.d.ts +3 -1
  32. package/dist/flatgeobuf-loader.d.ts.map +1 -1
  33. package/dist/flatgeobuf-loader.js +22 -15
  34. package/dist/flatgeobuf-worker.js +147 -37
  35. package/dist/index.d.ts +7 -2
  36. package/dist/index.d.ts.map +1 -1
  37. package/dist/index.js +13 -10
  38. package/dist/lib/binary-geometries.js +108 -132
  39. package/dist/lib/parse-flatgeobuf.d.ts +7 -2
  40. package/dist/lib/parse-flatgeobuf.d.ts.map +1 -1
  41. package/dist/lib/parse-flatgeobuf.js +115 -97
  42. package/dist/lib/types.d.ts +13 -0
  43. package/dist/lib/types.d.ts.map +1 -0
  44. package/dist/lib/types.js +2 -0
  45. package/dist/workers/flatgeobuf-worker.js +5 -4
  46. package/package.json +7 -7
  47. package/src/flatgeobuf-loader.ts +4 -1
  48. package/src/lib/parse-flatgeobuf.ts +35 -16
  49. package/src/lib/types.ts +13 -0
  50. package/dist/bundle.js.map +0 -1
  51. package/dist/flatgeobuf-loader.js.map +0 -1
  52. package/dist/index.js.map +0 -1
  53. package/dist/lib/binary-geometries.js.map +0 -1
  54. package/dist/lib/parse-flatgeobuf.js.map +0 -1
  55. package/dist/workers/flatgeobuf-worker.js.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"parse-flatgeobuf.d.ts","sourceRoot":"","sources":["../../src/lib/parse-flatgeobuf.ts"],"names":[],"mappings":"AAgCA,wBAAgB,eAAe,CAAC,WAAW,KAAA,EAAE,OAAO,KAAA,OAUnD;AA6CD,wBAAgB,wBAAwB,CAAC,MAAM,KAAA,EAAE,OAAO,KAAA,oIAMvD"}
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"}
@@ -1,110 +1,128 @@
1
- import { Proj4Projection } from '@math.gl/proj4';
2
- import { transformGeoJsonCoords } from '@loaders.gl/gis';
3
- import { deserialize as deserializeGeoJson } from 'flatgeobuf/lib/cjs/geojson';
4
- import { deserialize as deserializeGeneric } from 'flatgeobuf/lib/cjs/generic';
5
- import { parseProperties as parsePropertiesBinary } from 'flatgeobuf/lib/cjs/generic/feature';
6
- import { fromGeometry as binaryFromGeometry } from './binary-geometries';
7
-
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.parseFlatGeobufInBatches = exports.parseFlatGeobuf = void 0;
4
+ // @ts-nocheck
5
+ const proj4_1 = require("@math.gl/proj4");
6
+ const gis_1 = require("@loaders.gl/gis");
7
+ const geojson_1 = require("flatgeobuf/lib/cjs/geojson");
8
+ const generic_1 = require("flatgeobuf/lib/cjs/generic");
9
+ const feature_1 = require("flatgeobuf/lib/cjs/generic/feature");
10
+ const binary_geometries_1 = require("./binary-geometries");
11
+ // TODO: reproject binary features
8
12
  function binaryFromFeature(feature, header) {
9
- const geometry = feature.geometry();
10
- const geometryType = header.geometryType || geometry.type();
11
- const parsedGeometry = binaryFromGeometry(geometry, geometryType);
12
- parsedGeometry.properties = parsePropertiesBinary(feature, header.columns);
13
- return parsedGeometry;
13
+ const geometry = feature.geometry();
14
+ // FlatGeobuf files can only hold a single geometry type per file, otherwise
15
+ // GeometryType is GeometryCollection
16
+ // I believe geometry.type() is null (0) except when the geometry type isn't
17
+ // known in the header?
18
+ const geometryType = header.geometryType || geometry.type();
19
+ const parsedGeometry = (0, binary_geometries_1.fromGeometry)(geometry, geometryType);
20
+ parsedGeometry.properties = (0, feature_1.parseProperties)(feature, header.columns);
21
+ // TODO: wrap binary data either in points, lines, or polygons key
22
+ return parsedGeometry;
14
23
  }
15
-
16
- export function parseFlatGeobuf(arrayBuffer, options) {
17
- if (arrayBuffer.byteLength === 0) {
18
- return [];
19
- }
20
-
21
- if (options && options.gis && options.gis.format === 'binary') {
22
- return parseFlatGeobufToBinary(arrayBuffer, options);
23
- }
24
-
25
- return parseFlatGeobufToGeoJSON(arrayBuffer, options);
24
+ /*
25
+ * Parse FlatGeobuf arrayBuffer and return GeoJSON.
26
+ *
27
+ * @param arrayBuffer A FlatGeobuf arrayBuffer
28
+ * @return A GeoJSON geometry object
29
+ */
30
+ function parseFlatGeobuf(arrayBuffer, options) {
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);
48
+ }
26
49
  }
27
-
50
+ exports.parseFlatGeobuf = parseFlatGeobuf;
28
51
  function parseFlatGeobufToBinary(arrayBuffer, options) {
29
- const arr = new Uint8Array(arrayBuffer);
30
- return deserializeGeneric(arr, binaryFromFeature);
52
+ // TODO: reproject binary features
53
+ // const {reproject = false, _targetCrs = 'WGS84'} = (options && options.gis) || {};
54
+ const array = new Uint8Array(arrayBuffer);
55
+ return (0, generic_1.deserialize)(array, binaryFromFeature);
31
56
  }
32
-
33
57
  function parseFlatGeobufToGeoJSON(arrayBuffer, options) {
34
- const {
35
- reproject = false,
36
- _targetCrs = 'WGS84'
37
- } = options && options.gis || {};
38
- const arr = new Uint8Array(arrayBuffer);
39
- let headerMeta;
40
- const {
41
- features
42
- } = deserializeGeoJson(arr, false, header => {
43
- headerMeta = header;
44
- });
45
- const crs = headerMeta && headerMeta.crs;
46
- let projection;
47
-
48
- if (reproject && crs) {
49
- try {
50
- projection = new Proj4Projection({
51
- from: crs.wkt,
52
- to: _targetCrs
53
- });
54
- } catch (e) {}
55
- }
56
-
57
- if (projection) {
58
- return transformGeoJsonCoords(features, coords => projection.project(coords));
59
- }
60
-
61
- return features;
58
+ if (arrayBuffer.byteLength === 0) {
59
+ return [];
60
+ }
61
+ const { reproject = false, _targetCrs = 'WGS84' } = (options && options.gis) || {};
62
+ const arr = new Uint8Array(arrayBuffer);
63
+ let headerMeta;
64
+ const { features } = (0, geojson_1.deserialize)(arr, false, (header) => {
65
+ headerMeta = header;
66
+ });
67
+ const crs = headerMeta && headerMeta.crs;
68
+ let projection;
69
+ if (reproject && crs) {
70
+ // Constructing the projection may fail for some invalid WKT strings
71
+ try {
72
+ projection = new proj4_1.Proj4Projection({ from: crs.wkt, to: _targetCrs });
73
+ }
74
+ catch (e) {
75
+ // no op
76
+ }
77
+ }
78
+ if (projection) {
79
+ return (0, gis_1.transformGeoJsonCoords)(features, (coords) => projection.project(coords));
80
+ }
81
+ return features;
62
82
  }
63
-
64
- export function parseFlatGeobufInBatches(stream, options) {
65
- if (options && options.gis && options.gis.format === 'binary') {
66
- return parseFlatGeobufInBatchesToBinary(stream, options);
67
- }
68
-
69
- return parseFlatGeobufInBatchesToGeoJSON(stream, options);
83
+ /*
84
+ * Parse FlatGeobuf arrayBuffer and return GeoJSON.
85
+ *
86
+ * @param {ReadableStream} _ A FlatGeobuf arrayBuffer
87
+ * @return A GeoJSON geometry object iterator
88
+ */
89
+ // eslint-disable-next-line complexity
90
+ function parseFlatGeobufInBatches(stream, options) {
91
+ if (options && options.gis && options.gis.format === 'binary') {
92
+ return parseFlatGeobufInBatchesToBinary(stream, options);
93
+ }
94
+ return parseFlatGeobufInBatchesToGeoJSON(stream, options);
70
95
  }
71
-
96
+ exports.parseFlatGeobufInBatches = parseFlatGeobufInBatches;
72
97
  function parseFlatGeobufInBatchesToBinary(stream, options) {
73
- const iterator = deserializeGeneric(stream, binaryFromFeature);
74
- return iterator;
98
+ // TODO: reproject binary streaming features
99
+ // const {reproject = false, _targetCrs = 'WGS84'} = (options && options.gis) || {};
100
+ const iterator = (0, generic_1.deserialize)(stream, binaryFromFeature);
101
+ return iterator;
75
102
  }
76
-
103
+ // eslint-disable-next-line complexity
77
104
  async function* parseFlatGeobufInBatchesToGeoJSON(stream, options) {
78
- const {
79
- reproject = false,
80
- _targetCrs = 'WGS84'
81
- } = options && options.gis || {};
82
- let headerMeta;
83
- const iterator = deserializeGeoJson(stream, false, header => {
84
- headerMeta = header;
85
- });
86
- let projection;
87
- let firstRecord = true;
88
-
89
- for await (const feature of iterator) {
90
- if (firstRecord) {
91
- const crs = headerMeta && headerMeta.crs;
92
-
93
- if (reproject && crs) {
94
- projection = new Proj4Projection({
95
- from: crs.wkt,
96
- to: _targetCrs
97
- });
98
- }
99
-
100
- firstRecord = false;
101
- }
102
-
103
- if (reproject && projection) {
104
- yield transformGeoJsonCoords([feature], coords => projection.project(coords));
105
- } else {
106
- yield feature;
105
+ const { reproject = false, _targetCrs = 'WGS84' } = (options && options.gis) || {};
106
+ let headerMeta;
107
+ const iterator = (0, geojson_1.deserialize)(stream, false, (header) => {
108
+ headerMeta = header;
109
+ });
110
+ let projection;
111
+ let firstRecord = true;
112
+ for await (const feature of iterator) {
113
+ if (firstRecord) {
114
+ const crs = headerMeta && headerMeta.crs;
115
+ if (reproject && crs) {
116
+ projection = new proj4_1.Proj4Projection({ from: crs.wkt, to: _targetCrs });
117
+ }
118
+ firstRecord = false;
119
+ }
120
+ if (reproject && projection) {
121
+ // eslint-disable-next-line
122
+ yield (0, gis_1.transformGeoJsonCoords)([feature], (coords) => projection.project(coords));
123
+ }
124
+ else {
125
+ yield feature;
126
+ }
107
127
  }
108
- }
109
128
  }
110
- //# sourceMappingURL=parse-flatgeobuf.js.map
@@ -0,0 +1,13 @@
1
+ import type { LoaderOptions } from '@loaders.gl/loader-utils';
2
+ export 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,MAAM,MAAM,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"}
@@ -0,0 +1,2 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
@@ -1,4 +1,5 @@
1
- import { createLoaderWorker } from '@loaders.gl/loader-utils';
2
- import { FlatGeobufLoader } from '../index';
3
- createLoaderWorker(FlatGeobufLoader);
4
- //# sourceMappingURL=flatgeobuf-worker.js.map
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const loader_utils_1 = require("@loaders.gl/loader-utils");
4
+ const index_1 = require("../index");
5
+ (0, loader_utils_1.createLoaderWorker)(index_1.FlatGeobufLoader);
package/package.json CHANGED
@@ -1,14 +1,14 @@
1
1
  {
2
2
  "name": "@loaders.gl/flatgeobuf",
3
3
  "description": "Loader for FlatGeobuf",
4
- "version": "4.0.0-alpha.5",
4
+ "version": "4.0.0-alpha.7",
5
5
  "license": "MIT",
6
6
  "publishConfig": {
7
7
  "access": "public"
8
8
  },
9
9
  "repository": {
10
10
  "type": "git",
11
- "url": "https://github.com/uber-web/loaders.gl"
11
+ "url": "https://github.com/visgl/loaders.gl"
12
12
  },
13
13
  "keywords": [
14
14
  "geometry",
@@ -18,8 +18,8 @@
18
18
  "Mapbox Vector Tiles"
19
19
  ],
20
20
  "types": "dist/index.d.ts",
21
- "main": "dist/index.js",
22
- "module": "dist/index.js",
21
+ "main": "dist/es5/index.js",
22
+ "module": "dist/esm/index.js",
23
23
  "sideEffects": false,
24
24
  "files": [
25
25
  "src",
@@ -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": "4.0.0-alpha.1",
36
- "@loaders.gl/loader-utils": "4.0.0-alpha.5",
35
+ "@loaders.gl/gis": "4.0.0-alpha.7",
36
+ "@loaders.gl/loader-utils": "4.0.0-alpha.7",
37
37
  "@math.gl/proj4": "^3.3.1",
38
38
  "flatgeobuf": "3.6.5"
39
39
  },
40
- "gitHead": "7a71a54bdf1ddf985cc3af3db90b82e7fa97d025"
40
+ "gitHead": "afb59c4d8e5d8ebb9c28f111cb0c96c5527d0ffd"
41
41
  }
@@ -14,7 +14,10 @@ export const 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
 
@@ -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
- if (arrayBuffer.byteLength === 0) {
35
- return [];
36
- }
37
-
38
- if (options && options.gis && options.gis.format === 'binary') {
39
- return parseFlatGeobufToBinary(arrayBuffer, options);
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 arr = new Uint8Array(arrayBuffer);
50
- return deserializeGeneric(arr, binaryFromFeature);
61
+ const array = new Uint8Array(arrayBuffer);
62
+ return deserializeGeneric(array, binaryFromFeature);
51
63
  }
52
64
 
53
- function parseFlatGeobufToGeoJSON(arrayBuffer, options) {
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;
@@ -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
+ };
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/bundle.ts"],"names":["moduleExports","require","globalThis","loaders","module","exports","Object","assign"],"mappings":"AACA,MAAMA,aAAa,GAAGC,OAAO,CAAC,SAAD,CAA7B;;AACAC,UAAU,CAACC,OAAX,GAAqBD,UAAU,CAACC,OAAX,IAAsB,EAA3C;AACAC,MAAM,CAACC,OAAP,GAAiBC,MAAM,CAACC,MAAP,CAAcL,UAAU,CAACC,OAAzB,EAAkCH,aAAlC,CAAjB","sourcesContent":["// @ts-nocheck\nconst moduleExports = require('./index');\nglobalThis.loaders = globalThis.loaders || {};\nmodule.exports = Object.assign(globalThis.loaders, moduleExports);\n"],"file":"bundle.js"}
@@ -1 +0,0 @@
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;AAcP,OAAO,MAAMC,0BAAkC,GAAGX,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 }\n};\n\nexport const _typecheckFlatGeobufLoader: Loader = FlatGeobufLoader;\n"],"file":"flatgeobuf-loader.js"}
package/dist/index.js.map DELETED
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/index.ts"],"names":["FlatGeobufLoader","FlatGeobufWorkerLoader","parseFlatGeobuf","parseFlatGeobufInBatches","parse","arrayBuffer","options","parseSync","parseInBatchesFromStream","binary","_typecheckFlatGeobufLoader"],"mappings":"AACA,SAAQA,gBAAgB,IAAIC,sBAA5B,QAAyD,qBAAzD;AACA,SAAQC,eAAR,EAAyBC,wBAAzB,QAAwD,wBAAxD;AAEA,SAAQF,sBAAR;AAEA,OAAO,MAAMD,gBAAgB,GAAG,EAC9B,GAAGC,sBAD2B;AAE9BG,EAAAA,KAAK,EAAE,OAAOC,WAAP,EAAoBC,OAApB,KAAgCJ,eAAe,CAACG,WAAD,EAAcC,OAAd,CAFxB;AAG9BC,EAAAA,SAAS,EAAEL,eAHmB;AAI9BM,EAAAA,wBAAwB,EAAEL,wBAJI;AAK9BM,EAAAA,MAAM,EAAE;AALsB,CAAzB;AAQP,OAAO,MAAMC,0BAA4C,GAAGV,gBAArD","sourcesContent":["import type {LoaderWithParser} from '@loaders.gl/loader-utils';\nimport {FlatGeobufLoader as FlatGeobufWorkerLoader} from './flatgeobuf-loader';\nimport {parseFlatGeobuf, parseFlatGeobufInBatches} from './lib/parse-flatgeobuf';\n\nexport {FlatGeobufWorkerLoader};\n\nexport const FlatGeobufLoader = {\n ...FlatGeobufWorkerLoader,\n parse: async (arrayBuffer, options) => parseFlatGeobuf(arrayBuffer, options),\n parseSync: parseFlatGeobuf,\n parseInBatchesFromStream: parseFlatGeobufInBatches,\n binary: true\n};\n\nexport const _typecheckFlatGeobufLoader: LoaderWithParser = FlatGeobufLoader;\n"],"file":"index.js"}
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../../src/lib/binary-geometries.ts"],"names":["GeometryType","parsePoint","geometry","xy","xyArray","z","zArray","positions","blitArrays","parseLines","ends","endsArray","Array","from","length","unshift","pathIndices","value","Uint16Array","size","parsePolygons","primitivePolygonIndices","polygonIndices","parseMultiPolygons","parsedParts","nPositions","nPrimitivePolygonIndices","nPolygonIndices","i","partsLength","part","parts","polygon","push","concatPositions","Float64Array","concatPrimitivePolygonIndices","Uint32Array","concatPolygonIndices","positionCounter","primitivePolygonIndicesCounter","polygonIndicesCounter","positionSize","parsedPart","set","subarray","map","x","Error","totalLength","xyz","fromGeometry","type","Point","MultiPoint","LineString","MultiLineString","Polygon","MultiPolygon"],"mappings":"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","sourcesContent":["import {GeometryType} from 'flatgeobuf/lib/cjs/header_generated';\n\n// Parse Point to flat array\nfunction parsePoint(geometry) {\n const xy = geometry.xyArray();\n const z = geometry.zArray();\n const positions = blitArrays(xy, z);\n return {positions};\n}\n\nfunction parseLines(geometry) {\n const xy = geometry.xyArray();\n const z = geometry.zArray();\n const positions = blitArrays(xy, z);\n\n // If endsArray is null, a single LineString. Otherwise, contains the end\n // indices of each part of the MultiLineString. geometry.endsArray() omits the\n // initial 0 that we have in our internal format.\n const ends = (geometry.endsArray() && Array.from(geometry.endsArray())) || [xy.length / 2];\n ends.unshift(0);\n\n const pathIndices = {value: new Uint16Array(ends), size: 1};\n\n return {\n positions,\n pathIndices\n };\n}\n\nfunction parsePolygons(geometry) {\n const xy = geometry.xyArray();\n const z = geometry.zArray();\n const positions = blitArrays(xy, z);\n\n // If endsArray is null, a simple Polygon with no inner rings. Otherwise,\n // contains the end indices of each ring of the Polygon. geometry.endsArray()\n // omits the initial 0 that we have in our internal format.\n const ends = (geometry.endsArray() && Array.from(geometry.endsArray())) || [xy.length / 2];\n ends.unshift(0);\n\n const primitivePolygonIndices = {value: new Uint16Array(ends), size: 1};\n const polygonIndices = {value: new Uint16Array([0, xy.length / 2]), size: 1};\n\n return {\n positions,\n primitivePolygonIndices,\n polygonIndices\n };\n}\n\n// eslint-disable-next-line max-statements\nfunction parseMultiPolygons(geometry) {\n // Create arrays for each geometry part, then concatenate\n const parsedParts: any[] = [];\n let nPositions = 0;\n let nPrimitivePolygonIndices = 1;\n let nPolygonIndices = 1;\n\n for (let i = 0; i < geometry.partsLength(); i++) {\n const part = geometry.parts(i);\n const polygon = parsePolygons(part);\n\n nPositions += polygon.positions.value.length;\n nPrimitivePolygonIndices += polygon.primitivePolygonIndices.value.length - 1;\n nPolygonIndices += polygon.polygonIndices.value.length - 1;\n\n parsedParts.push(polygon);\n }\n\n const concatPositions = new Float64Array(nPositions);\n const concatPrimitivePolygonIndices = new Uint32Array(nPrimitivePolygonIndices);\n const concatPolygonIndices = new Uint32Array(nPolygonIndices);\n\n let positionCounter = 0;\n let primitivePolygonIndicesCounter = 1;\n let polygonIndicesCounter = 1;\n\n // Assumes all parts of the multipolygon have the same size\n const positionSize = parsedParts[0].positions.size;\n\n for (const parsedPart of parsedParts) {\n concatPositions.set(parsedPart.positions.value, positionCounter * positionSize);\n\n // For indices, need to add positionCounter so that position indices are\n // correct in the concatenated positions\n concatPrimitivePolygonIndices.set(\n // eslint-disable-next-line\n parsedPart.primitivePolygonIndices.value.subarray(1).map((x) => x + positionCounter),\n primitivePolygonIndicesCounter\n );\n concatPolygonIndices.set(\n // eslint-disable-next-line\n parsedPart.polygonIndices.value.subarray(1).map((x) => x + positionCounter),\n polygonIndicesCounter\n );\n\n positionCounter += parsedPart.positions.value.length / positionSize;\n primitivePolygonIndicesCounter += parsedPart.primitivePolygonIndices.value.length - 1;\n polygonIndicesCounter += parsedPart.polygonIndices.value.length - 1;\n }\n\n return {\n positions: {value: concatPositions, size: positionSize},\n primitivePolygonIndices: {value: concatPrimitivePolygonIndices, size: 1},\n polygonIndices: {value: concatPolygonIndices, size: 1}\n };\n}\n\n// Combine xy and z arrays\nfunction blitArrays(xy, z) {\n if (!z) {\n return {value: xy, size: 2};\n }\n\n if (z.length * 2 !== xy.length) {\n throw new Error('Z array must be half XY array\\'s length');\n }\n const totalLength = xy.length + z.length;\n\n const xyz = new Float64Array(totalLength);\n for (let i = 0; i < xy.length / 2; i++) {\n xyz[i * 3 + 0] = xy[i * 2 + 0];\n xyz[i * 3 + 1] = xy[i * 2 + 1];\n xyz[i * 3 + 2] = z[i];\n }\n return {value: xyz, size: 3};\n}\n\nexport function fromGeometry(geometry, type) {\n switch (type) {\n case GeometryType.Point:\n case GeometryType.MultiPoint:\n return parsePoint(geometry);\n case GeometryType.LineString:\n case GeometryType.MultiLineString:\n return parseLines(geometry);\n case GeometryType.Polygon:\n return parsePolygons(geometry);\n case GeometryType.MultiPolygon:\n return parseMultiPolygons(geometry);\n default:\n throw new Error(`Unimplemented geometry type: ${type}`);\n }\n}\n"],"file":"binary-geometries.js"}
@@ -1 +0,0 @@
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","byteLength","gis","format","parseFlatGeobufToBinary","parseFlatGeobufToGeoJSON","arr","Uint8Array","reproject","_targetCrs","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';\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, options) {\n if (arrayBuffer.byteLength === 0) {\n return [];\n }\n\n if (options && options.gis && options.gis.format === 'binary') {\n return parseFlatGeobufToBinary(arrayBuffer, options);\n }\n\n return parseFlatGeobufToGeoJSON(arrayBuffer, options);\n}\n\nfunction parseFlatGeobufToBinary(arrayBuffer, options) {\n // TODO: reproject binary features\n // const {reproject = false, _targetCrs = 'WGS84'} = (options && options.gis) || {};\n\n const arr = new Uint8Array(arrayBuffer);\n return deserializeGeneric(arr, binaryFromFeature);\n}\n\nfunction parseFlatGeobufToGeoJSON(arrayBuffer, options) {\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) {\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) {\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) {\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"}
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../../src/workers/flatgeobuf-worker.ts"],"names":["createLoaderWorker","FlatGeobufLoader"],"mappings":"AAAA,SAAQA,kBAAR,QAAiC,0BAAjC;AACA,SAAQC,gBAAR,QAA+B,UAA/B;AAEAD,kBAAkB,CAACC,gBAAD,CAAlB","sourcesContent":["import {createLoaderWorker} from '@loaders.gl/loader-utils';\nimport {FlatGeobufLoader} from '../index';\n\ncreateLoaderWorker(FlatGeobufLoader);\n"],"file":"flatgeobuf-worker.js"}