@loaders.gl/flatgeobuf 4.0.0-alpha.9 → 4.0.0-beta.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 +19 -16
- package/dist/es5/flatgeobuf-loader.js +6 -5
- package/dist/es5/flatgeobuf-loader.js.map +1 -1
- package/dist/es5/index.js +0 -3
- package/dist/es5/index.js.map +1 -1
- package/dist/es5/lib/parse-flatgeobuf.js +14 -10
- package/dist/es5/lib/parse-flatgeobuf.js.map +1 -1
- package/dist/esm/flatgeobuf-loader.js +5 -3
- package/dist/esm/flatgeobuf-loader.js.map +1 -1
- package/dist/esm/index.js +0 -1
- package/dist/esm/index.js.map +1 -1
- package/dist/esm/lib/parse-flatgeobuf.js +14 -10
- package/dist/esm/lib/parse-flatgeobuf.js.map +1 -1
- package/dist/flatgeobuf-loader.d.ts +11 -15
- package/dist/flatgeobuf-loader.d.ts.map +1 -1
- package/dist/flatgeobuf-worker.js +26 -16
- package/dist/index.d.ts +2 -24
- package/dist/index.d.ts.map +1 -1
- package/dist/lib/parse-flatgeobuf.d.ts +3 -6
- package/dist/lib/parse-flatgeobuf.d.ts.map +1 -1
- package/package.json +4 -4
- package/src/flatgeobuf-loader.ts +18 -6
- package/src/index.ts +3 -3
- package/src/lib/parse-flatgeobuf.ts +30 -15
- package/dist/bundle.js +0 -5
- package/dist/es5/lib/types.js +0 -2
- package/dist/es5/lib/types.js.map +0 -1
- package/dist/esm/lib/types.js +0 -2
- package/dist/esm/lib/types.js.map +0 -1
- package/dist/flatgeobuf-loader.js +0 -23
- package/dist/index.js +0 -14
- package/dist/lib/binary-geometries.js +0 -120
- package/dist/lib/parse-flatgeobuf.js +0 -128
- package/dist/lib/types.d.ts +0 -13
- package/dist/lib/types.d.ts.map +0 -1
- package/dist/lib/types.js +0 -2
- package/dist/workers/flatgeobuf-worker.js +0 -5
- package/src/lib/types.ts +0 -13
package/dist/dist.min.js
CHANGED
|
@@ -45,7 +45,10 @@
|
|
|
45
45
|
category: "geometry",
|
|
46
46
|
options: {
|
|
47
47
|
flatgeobuf: {
|
|
48
|
-
shape: "geojson"
|
|
48
|
+
shape: "geojson-table"
|
|
49
|
+
},
|
|
50
|
+
gis: {
|
|
51
|
+
reproject: false
|
|
49
52
|
}
|
|
50
53
|
}
|
|
51
54
|
};
|
|
@@ -6107,7 +6110,7 @@
|
|
|
6107
6110
|
});
|
|
6108
6111
|
}
|
|
6109
6112
|
function isCoord(array) {
|
|
6110
|
-
return Number.isFinite(array[0]) && Number.isFinite(array[1]);
|
|
6113
|
+
return Array.isArray(array) && Number.isFinite(array[0]) && Number.isFinite(array[1]);
|
|
6111
6114
|
}
|
|
6112
6115
|
var init_transform2 = __esm({
|
|
6113
6116
|
"../gis/src/lib/transform.ts"() {
|
|
@@ -9427,35 +9430,37 @@
|
|
|
9427
9430
|
function parseFlatGeobuf(arrayBuffer, options) {
|
|
9428
9431
|
const shape = options?.gis?.format || options?.flatgeobuf?.shape;
|
|
9429
9432
|
switch (shape) {
|
|
9430
|
-
case "geojson
|
|
9433
|
+
case "geojson":
|
|
9434
|
+
case "geojson-table": {
|
|
9435
|
+
const features = parseFlatGeobufToGeoJSON(arrayBuffer, options);
|
|
9431
9436
|
const table = {
|
|
9432
|
-
shape: "geojson-
|
|
9433
|
-
|
|
9437
|
+
shape: "geojson-table",
|
|
9438
|
+
type: "FeatureCollection",
|
|
9439
|
+
features
|
|
9434
9440
|
};
|
|
9435
9441
|
return table;
|
|
9436
9442
|
}
|
|
9437
9443
|
case "columnar-table":
|
|
9438
|
-
|
|
9439
|
-
|
|
9440
|
-
return parseFlatGeobufToGeoJSON(arrayBuffer, options);
|
|
9444
|
+
const binary = parseFlatGeobufToBinary(arrayBuffer, options);
|
|
9445
|
+
return { shape: "columnar-table", data: binary };
|
|
9441
9446
|
case "binary":
|
|
9442
9447
|
return parseFlatGeobufToBinary(arrayBuffer, options);
|
|
9443
9448
|
default:
|
|
9444
9449
|
throw new Error(shape);
|
|
9445
9450
|
}
|
|
9446
9451
|
}
|
|
9447
|
-
function parseFlatGeobufToBinary(arrayBuffer, options) {
|
|
9452
|
+
function parseFlatGeobufToBinary(arrayBuffer, options = {}) {
|
|
9448
9453
|
const array = new Uint8Array(arrayBuffer);
|
|
9449
9454
|
return (0, import_generic.deserialize)(array, binaryFromFeature);
|
|
9450
9455
|
}
|
|
9451
|
-
function parseFlatGeobufToGeoJSON(arrayBuffer, options) {
|
|
9456
|
+
function parseFlatGeobufToGeoJSON(arrayBuffer, options = {}) {
|
|
9452
9457
|
if (arrayBuffer.byteLength === 0) {
|
|
9453
9458
|
return [];
|
|
9454
9459
|
}
|
|
9455
9460
|
const { reproject = false, _targetCrs = "WGS84" } = options && options.gis || {};
|
|
9456
9461
|
const arr = new Uint8Array(arrayBuffer);
|
|
9457
9462
|
let headerMeta;
|
|
9458
|
-
const { features } = (0, import_geojson.deserialize)(arr,
|
|
9463
|
+
const { features } = (0, import_geojson.deserialize)(arr, void 0, (header) => {
|
|
9459
9464
|
headerMeta = header;
|
|
9460
9465
|
});
|
|
9461
9466
|
const crs = headerMeta && headerMeta.crs;
|
|
@@ -9484,7 +9489,7 @@
|
|
|
9484
9489
|
async function* parseFlatGeobufInBatchesToGeoJSON(stream, options) {
|
|
9485
9490
|
const { reproject = false, _targetCrs = "WGS84" } = options && options.gis || {};
|
|
9486
9491
|
let headerMeta;
|
|
9487
|
-
const iterator = (0, import_geojson.deserialize)(stream,
|
|
9492
|
+
const iterator = (0, import_geojson.deserialize)(stream, void 0, (header) => {
|
|
9488
9493
|
headerMeta = header;
|
|
9489
9494
|
});
|
|
9490
9495
|
let projection;
|
|
@@ -9520,10 +9525,9 @@
|
|
|
9520
9525
|
var src_exports = {};
|
|
9521
9526
|
__export(src_exports, {
|
|
9522
9527
|
FlatGeobufLoader: () => FlatGeobufLoader2,
|
|
9523
|
-
FlatGeobufWorkerLoader: () => FlatGeobufLoader
|
|
9524
|
-
_typecheckFlatGeobufLoader: () => _typecheckFlatGeobufLoader
|
|
9528
|
+
FlatGeobufWorkerLoader: () => FlatGeobufLoader
|
|
9525
9529
|
});
|
|
9526
|
-
var FlatGeobufLoader2
|
|
9530
|
+
var FlatGeobufLoader2;
|
|
9527
9531
|
var init_src2 = __esm({
|
|
9528
9532
|
"src/index.ts"() {
|
|
9529
9533
|
init_flatgeobuf_loader();
|
|
@@ -9535,7 +9539,6 @@
|
|
|
9535
9539
|
parseInBatchesFromStream: parseFlatGeobufInBatches,
|
|
9536
9540
|
binary: true
|
|
9537
9541
|
};
|
|
9538
|
-
_typecheckFlatGeobufLoader = FlatGeobufLoader2;
|
|
9539
9542
|
}
|
|
9540
9543
|
});
|
|
9541
9544
|
|
|
@@ -3,8 +3,8 @@
|
|
|
3
3
|
Object.defineProperty(exports, "__esModule", {
|
|
4
4
|
value: true
|
|
5
5
|
});
|
|
6
|
-
exports.
|
|
7
|
-
var VERSION = typeof "4.0.0-
|
|
6
|
+
exports.FlatGeobufLoader = void 0;
|
|
7
|
+
var VERSION = typeof "4.0.0-beta.2" !== 'undefined' ? "4.0.0-beta.2" : 'latest';
|
|
8
8
|
var FlatGeobufLoader = {
|
|
9
9
|
id: 'flatgeobuf',
|
|
10
10
|
name: 'FlatGeobuf',
|
|
@@ -16,11 +16,12 @@ var FlatGeobufLoader = {
|
|
|
16
16
|
category: 'geometry',
|
|
17
17
|
options: {
|
|
18
18
|
flatgeobuf: {
|
|
19
|
-
shape: 'geojson'
|
|
19
|
+
shape: 'geojson-table'
|
|
20
|
+
},
|
|
21
|
+
gis: {
|
|
22
|
+
reproject: false
|
|
20
23
|
}
|
|
21
24
|
}
|
|
22
25
|
};
|
|
23
26
|
exports.FlatGeobufLoader = FlatGeobufLoader;
|
|
24
|
-
var _typecheckFlatGeobufLoader = FlatGeobufLoader;
|
|
25
|
-
exports._typecheckFlatGeobufLoader = _typecheckFlatGeobufLoader;
|
|
26
27
|
//# sourceMappingURL=flatgeobuf-loader.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"flatgeobuf-loader.js","names":["VERSION","FlatGeobufLoader","id","name","module","version","worker","extensions","mimeTypes","category","options","flatgeobuf","shape","
|
|
1
|
+
{"version":3,"file":"flatgeobuf-loader.js","names":["VERSION","FlatGeobufLoader","id","name","module","version","worker","extensions","mimeTypes","category","options","flatgeobuf","shape","gis","reproject","exports"],"sources":["../../src/flatgeobuf-loader.ts"],"sourcesContent":["import type {Loader, LoaderOptions} 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 type FlatGeobufLoaderOptions = LoaderOptions & {\n flatgeobuf?: {\n shape?: 'geojson-table' | 'columnar-table' | 'geojson-table' | 'geojson' | 'binary';\n };\n gis?: {\n reproject?: boolean;\n _targetCrs?: string;\n /** @deprecated Use options.flatgeobuf.shape */\n format?: never;\n };\n};\n\nexport const FlatGeobufLoader: Loader<any, any, FlatGeobufLoaderOptions> = {\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 shape: 'geojson-table'\n },\n gis: {\n reproject: false\n }\n }\n};\n"],"mappings":";;;;;;AAIA,IAAMA,OAAO,GAAG,qBAAkB,KAAK,WAAW,oBAAiB,QAAQ;AAcpE,IAAMC,gBAA2D,GAAG;EACzEC,EAAE,EAAE,YAAY;EAChBC,IAAI,EAAE,YAAY;EAClBC,MAAM,EAAE,YAAY;EACpBC,OAAO,EAAEL,OAAO;EAChBM,MAAM,EAAE,IAAI;EACZC,UAAU,EAAE,CAAC,KAAK,CAAC;EACnBC,SAAS,EAAE,CAAC,0BAA0B,CAAC;EACvCC,QAAQ,EAAE,UAAU;EACpBC,OAAO,EAAE;IACPC,UAAU,EAAE;MACVC,KAAK,EAAE;IACT,CAAC;IACDC,GAAG,EAAE;MACHC,SAAS,EAAE;IACb;EACF;AACF,CAAC;AAACC,OAAA,CAAAd,gBAAA,GAAAA,gBAAA"}
|
package/dist/es5/index.js
CHANGED
|
@@ -11,7 +11,6 @@ Object.defineProperty(exports, "FlatGeobufWorkerLoader", {
|
|
|
11
11
|
return _flatgeobufLoader.FlatGeobufLoader;
|
|
12
12
|
}
|
|
13
13
|
});
|
|
14
|
-
exports._typecheckFlatGeobufLoader = void 0;
|
|
15
14
|
var _regenerator = _interopRequireDefault(require("@babel/runtime/regenerator"));
|
|
16
15
|
var _asyncToGenerator2 = _interopRequireDefault(require("@babel/runtime/helpers/asyncToGenerator"));
|
|
17
16
|
var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
|
|
@@ -42,6 +41,4 @@ var FlatGeobufLoader = _objectSpread(_objectSpread({}, _flatgeobufLoader.FlatGeo
|
|
|
42
41
|
binary: true
|
|
43
42
|
});
|
|
44
43
|
exports.FlatGeobufLoader = FlatGeobufLoader;
|
|
45
|
-
var _typecheckFlatGeobufLoader = FlatGeobufLoader;
|
|
46
|
-
exports._typecheckFlatGeobufLoader = _typecheckFlatGeobufLoader;
|
|
47
44
|
//# sourceMappingURL=index.js.map
|
package/dist/es5/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","names":["_flatgeobufLoader","require","_parseFlatgeobuf","ownKeys","object","enumerableOnly","keys","Object","getOwnPropertySymbols","symbols","filter","sym","getOwnPropertyDescriptor","enumerable","push","apply","_objectSpread","target","i","arguments","length","source","forEach","key","_defineProperty2","default","getOwnPropertyDescriptors","defineProperties","defineProperty","FlatGeobufLoader","FlatGeobufWorkerLoader","parse","_parse","_asyncToGenerator2","_regenerator","mark","_callee","arrayBuffer","options","wrap","_callee$","_context","prev","next","abrupt","parseFlatGeobuf","stop","_x","_x2","parseSync","parseInBatchesFromStream","parseFlatGeobufInBatches","binary","exports"
|
|
1
|
+
{"version":3,"file":"index.js","names":["_flatgeobufLoader","require","_parseFlatgeobuf","ownKeys","object","enumerableOnly","keys","Object","getOwnPropertySymbols","symbols","filter","sym","getOwnPropertyDescriptor","enumerable","push","apply","_objectSpread","target","i","arguments","length","source","forEach","key","_defineProperty2","default","getOwnPropertyDescriptors","defineProperties","defineProperty","FlatGeobufLoader","FlatGeobufWorkerLoader","parse","_parse","_asyncToGenerator2","_regenerator","mark","_callee","arrayBuffer","options","wrap","_callee$","_context","prev","next","abrupt","parseFlatGeobuf","stop","_x","_x2","parseSync","parseInBatchesFromStream","parseFlatGeobufInBatches","binary","exports"],"sources":["../../src/index.ts"],"sourcesContent":["import type {LoaderWithParser} from '@loaders.gl/loader-utils';\nimport type {FlatGeobufLoaderOptions} from './flatgeobuf-loader';\nimport {FlatGeobufLoader as FlatGeobufWorkerLoader} from './flatgeobuf-loader';\nimport {parseFlatGeobuf, parseFlatGeobufInBatches} from './lib/parse-flatgeobuf';\n\nexport {FlatGeobufWorkerLoader};\n\nexport const FlatGeobufLoader: LoaderWithParser<any, any, FlatGeobufLoaderOptions> = {\n ...FlatGeobufWorkerLoader,\n parse: async (arrayBuffer, options) => parseFlatGeobuf(arrayBuffer, options),\n parseSync: parseFlatGeobuf,\n // @ts-expect-error this is a stream parser not an async iterator parser\n parseInBatchesFromStream: parseFlatGeobufInBatches,\n binary: true\n};\n"],"mappings":";;;;;;;;;;;;;;;;AAEA,IAAAA,iBAAA,GAAAC,OAAA;AACA,IAAAC,gBAAA,GAAAD,OAAA;AAAiF,SAAAE,QAAAC,MAAA,EAAAC,cAAA,QAAAC,IAAA,GAAAC,MAAA,CAAAD,IAAA,CAAAF,MAAA,OAAAG,MAAA,CAAAC,qBAAA,QAAAC,OAAA,GAAAF,MAAA,CAAAC,qBAAA,CAAAJ,MAAA,GAAAC,cAAA,KAAAI,OAAA,GAAAA,OAAA,CAAAC,MAAA,WAAAC,GAAA,WAAAJ,MAAA,CAAAK,wBAAA,CAAAR,MAAA,EAAAO,GAAA,EAAAE,UAAA,OAAAP,IAAA,CAAAQ,IAAA,CAAAC,KAAA,CAAAT,IAAA,EAAAG,OAAA,YAAAH,IAAA;AAAA,SAAAU,cAAAC,MAAA,aAAAC,CAAA,MAAAA,CAAA,GAAAC,SAAA,CAAAC,MAAA,EAAAF,CAAA,UAAAG,MAAA,WAAAF,SAAA,CAAAD,CAAA,IAAAC,SAAA,CAAAD,CAAA,QAAAA,CAAA,OAAAf,OAAA,CAAAI,MAAA,CAAAc,MAAA,OAAAC,OAAA,WAAAC,GAAA,QAAAC,gBAAA,CAAAC,OAAA,EAAAR,MAAA,EAAAM,GAAA,EAAAF,MAAA,CAAAE,GAAA,SAAAhB,MAAA,CAAAmB,yBAAA,GAAAnB,MAAA,CAAAoB,gBAAA,CAAAV,MAAA,EAAAV,MAAA,CAAAmB,yBAAA,CAAAL,MAAA,KAAAlB,OAAA,CAAAI,MAAA,CAAAc,MAAA,GAAAC,OAAA,WAAAC,GAAA,IAAAhB,MAAA,CAAAqB,cAAA,CAAAX,MAAA,EAAAM,GAAA,EAAAhB,MAAA,CAAAK,wBAAA,CAAAS,MAAA,EAAAE,GAAA,iBAAAN,MAAA;AAI1E,IAAMY,gBAAqE,GAAAb,aAAA,CAAAA,aAAA,KAC7Ec,kCAAsB;EACzBC,KAAK;IAAA,IAAAC,MAAA,OAAAC,kBAAA,CAAAR,OAAA,EAAAS,YAAA,CAAAT,OAAA,CAAAU,IAAA,CAAE,SAAAC,QAAOC,WAAW,EAAEC,OAAO;MAAA,OAAAJ,YAAA,CAAAT,OAAA,CAAAc,IAAA,UAAAC,SAAAC,QAAA;QAAA,kBAAAA,QAAA,CAAAC,IAAA,GAAAD,QAAA,CAAAE,IAAA;UAAA;YAAA,OAAAF,QAAA,CAAAG,MAAA,WAAK,IAAAC,gCAAe,EAACR,WAAW,EAAEC,OAAO,CAAC;UAAA;UAAA;YAAA,OAAAG,QAAA,CAAAK,IAAA;QAAA;MAAA,GAAAV,OAAA;IAAA;IAAA,SAAAL,MAAAgB,EAAA,EAAAC,GAAA;MAAA,OAAAhB,MAAA,CAAAjB,KAAA,OAAAI,SAAA;IAAA;IAAA,OAAAY,KAAA;EAAA;EAC5EkB,SAAS,EAAEJ,gCAAe;EAE1BK,wBAAwB,EAAEC,yCAAwB;EAClDC,MAAM,EAAE;AAAI,EACb;AAACC,OAAA,CAAAxB,gBAAA,GAAAA,gBAAA"}
|
|
@@ -28,32 +28,36 @@ function parseFlatGeobuf(arrayBuffer, options) {
|
|
|
28
28
|
var _options$gis, _options$flatgeobuf;
|
|
29
29
|
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);
|
|
30
30
|
switch (shape) {
|
|
31
|
-
case 'geojson
|
|
31
|
+
case 'geojson':
|
|
32
|
+
case 'geojson-table':
|
|
32
33
|
{
|
|
34
|
+
var features = parseFlatGeobufToGeoJSON(arrayBuffer, options);
|
|
33
35
|
var table = {
|
|
34
|
-
shape: 'geojson-
|
|
35
|
-
|
|
36
|
+
shape: 'geojson-table',
|
|
37
|
+
type: 'FeatureCollection',
|
|
38
|
+
features: features
|
|
36
39
|
};
|
|
37
40
|
return table;
|
|
38
41
|
}
|
|
39
42
|
case 'columnar-table':
|
|
43
|
+
var binary = parseFlatGeobufToBinary(arrayBuffer, options);
|
|
40
44
|
return {
|
|
41
45
|
shape: 'columnar-table',
|
|
42
|
-
data:
|
|
46
|
+
data: binary
|
|
43
47
|
};
|
|
44
|
-
case 'geojson':
|
|
45
|
-
return parseFlatGeobufToGeoJSON(arrayBuffer, options);
|
|
46
48
|
case 'binary':
|
|
47
49
|
return parseFlatGeobufToBinary(arrayBuffer, options);
|
|
48
50
|
default:
|
|
49
51
|
throw new Error(shape);
|
|
50
52
|
}
|
|
51
53
|
}
|
|
52
|
-
function parseFlatGeobufToBinary(arrayBuffer
|
|
54
|
+
function parseFlatGeobufToBinary(arrayBuffer) {
|
|
55
|
+
var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
|
|
53
56
|
var array = new Uint8Array(arrayBuffer);
|
|
54
57
|
return (0, _generic.deserialize)(array, binaryFromFeature);
|
|
55
58
|
}
|
|
56
|
-
function parseFlatGeobufToGeoJSON(arrayBuffer
|
|
59
|
+
function parseFlatGeobufToGeoJSON(arrayBuffer) {
|
|
60
|
+
var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
|
|
57
61
|
if (arrayBuffer.byteLength === 0) {
|
|
58
62
|
return [];
|
|
59
63
|
}
|
|
@@ -64,7 +68,7 @@ function parseFlatGeobufToGeoJSON(arrayBuffer, options) {
|
|
|
64
68
|
_targetCrs = _ref$_targetCrs === void 0 ? 'WGS84' : _ref$_targetCrs;
|
|
65
69
|
var arr = new Uint8Array(arrayBuffer);
|
|
66
70
|
var headerMeta;
|
|
67
|
-
var _deserializeGeoJson = (0, _geojson.deserialize)(arr,
|
|
71
|
+
var _deserializeGeoJson = (0, _geojson.deserialize)(arr, undefined, function (header) {
|
|
68
72
|
headerMeta = header;
|
|
69
73
|
}),
|
|
70
74
|
features = _deserializeGeoJson.features;
|
|
@@ -105,7 +109,7 @@ function _parseFlatGeobufInBatchesToGeoJSON() {
|
|
|
105
109
|
while (1) switch (_context.prev = _context.next) {
|
|
106
110
|
case 0:
|
|
107
111
|
_ref2 = options && options.gis || {}, _ref2$reproject = _ref2.reproject, reproject = _ref2$reproject === void 0 ? false : _ref2$reproject, _ref2$_targetCrs = _ref2._targetCrs, _targetCrs = _ref2$_targetCrs === void 0 ? 'WGS84' : _ref2$_targetCrs;
|
|
108
|
-
iterator = (0, _geojson.deserialize)(stream,
|
|
112
|
+
iterator = (0, _geojson.deserialize)(stream, undefined, function (header) {
|
|
109
113
|
headerMeta = header;
|
|
110
114
|
});
|
|
111
115
|
firstRecord = true;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"parse-flatgeobuf.js","names":["_proj","require","_gis","_geojson","_generic","_feature","_binaryGeometries","_asyncIterator","iterable","method","async","sync","retry","Symbol","asyncIterator","iterator","call","AsyncFromSyncIterator","TypeError","s","AsyncFromSyncIteratorContinuation","r","Object","Promise","reject","done","resolve","value","then","n","next","prototype","apply","arguments","return","_return","ret","throw","_throw","thr","binaryFromFeature","feature","header","geometry","geometryType","type","parsedGeometry","binaryFromGeometry","properties","parsePropertiesBinary","columns","parseFlatGeobuf","arrayBuffer","options","_options$gis","_options$flatgeobuf","shape","gis","format","flatgeobuf","table","data","parseFlatGeobufToGeoJSON","parseFlatGeobufToBinary","Error","array","Uint8Array","deserializeGeneric","byteLength","_ref","_ref$reproject","reproject","_ref$_targetCrs","_targetCrs","arr","headerMeta","_deserializeGeoJson","deserializeGeoJson","features","crs","projection","Proj4Projection","from","wkt","to","e","transformGeoJsonCoords","coords","project","parseFlatGeobufInBatches","stream","parseFlatGeobufInBatchesToBinary","parseFlatGeobufInBatchesToGeoJSON","_x","_x2","_parseFlatGeobufInBatchesToGeoJSON","_wrapAsyncGenerator2","default","_regenerator","mark","_callee","_ref2","_ref2$reproject","_ref2$_targetCrs","firstRecord","_iteratorAbruptCompletion","_didIteratorError","_iteratorError","_iterator","_step","wrap","_callee$","_context","prev","_awaitAsyncGenerator2","sent","t0","finish","stop"],"sources":["../../../src/lib/parse-flatgeobuf.ts"],"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"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"parse-flatgeobuf.js","names":["_proj","require","_gis","_geojson","_generic","_feature","_binaryGeometries","_asyncIterator","iterable","method","async","sync","retry","Symbol","asyncIterator","iterator","call","AsyncFromSyncIterator","TypeError","s","AsyncFromSyncIteratorContinuation","r","Object","Promise","reject","done","resolve","value","then","n","next","prototype","apply","arguments","return","_return","ret","throw","_throw","thr","binaryFromFeature","feature","header","geometry","geometryType","type","parsedGeometry","binaryFromGeometry","properties","parsePropertiesBinary","columns","parseFlatGeobuf","arrayBuffer","options","_options$gis","_options$flatgeobuf","shape","gis","format","flatgeobuf","features","parseFlatGeobufToGeoJSON","table","binary","parseFlatGeobufToBinary","data","Error","length","undefined","array","Uint8Array","deserializeGeneric","byteLength","_ref","_ref$reproject","reproject","_ref$_targetCrs","_targetCrs","arr","headerMeta","_deserializeGeoJson","deserializeGeoJson","crs","projection","Proj4Projection","from","wkt","to","e","transformGeoJsonCoords","coords","project","parseFlatGeobufInBatches","stream","parseFlatGeobufInBatchesToBinary","parseFlatGeobufInBatchesToGeoJSON","_x","_x2","_parseFlatGeobufInBatchesToGeoJSON","_wrapAsyncGenerator2","default","_regenerator","mark","_callee","_ref2","_ref2$reproject","_ref2$_targetCrs","firstRecord","_iteratorAbruptCompletion","_didIteratorError","_iteratorError","_iterator","_step","wrap","_callee$","_context","prev","_awaitAsyncGenerator2","sent","t0","finish","stop"],"sources":["../../../src/lib/parse-flatgeobuf.ts"],"sourcesContent":["import {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 type {FlatGeobufLoaderOptions} from '../flatgeobuf-loader';\nimport type {GeoJSONTable, Feature, Table} from '@loaders.gl/schema';\nimport {fromGeometry as binaryFromGeometry} from './binary-geometries';\n// import {Feature} from 'flatgeobuf/lib/cjs/feature_generated';\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 // @ts-expect-error this looks wrong\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(\n arrayBuffer: ArrayBuffer,\n options?: FlatGeobufLoaderOptions\n): Table {\n const shape = options?.gis?.format || options?.flatgeobuf?.shape;\n\n switch (shape) {\n case 'geojson':\n case 'geojson-table': {\n const features = parseFlatGeobufToGeoJSON(arrayBuffer, options);\n const table: GeoJSONTable = {\n shape: 'geojson-table',\n type: 'FeatureCollection',\n features\n };\n return table;\n }\n\n case 'columnar-table': // binary + some JS arrays\n const binary = parseFlatGeobufToBinary(arrayBuffer, options);\n // @ts-expect-error\n return {shape: 'columnar-table', data: binary};\n\n case 'binary':\n // @ts-expect-error\n return parseFlatGeobufToBinary(arrayBuffer, options);\n\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 // @ts-expect-error this looks wrong\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 // @ts-expect-error this looks wrong\n const {features} = deserializeGeoJson(arr, undefined, (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 // @ts-expect-error\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, undefined, (header) => {\n headerMeta = header;\n });\n\n let projection;\n let firstRecord = true;\n // @ts-expect-error this looks wrong\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"],"mappings":"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"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
const VERSION = typeof "4.0.0-
|
|
1
|
+
const VERSION = typeof "4.0.0-beta.2" !== 'undefined' ? "4.0.0-beta.2" : 'latest';
|
|
2
2
|
export const FlatGeobufLoader = {
|
|
3
3
|
id: 'flatgeobuf',
|
|
4
4
|
name: 'FlatGeobuf',
|
|
@@ -10,9 +10,11 @@ export const FlatGeobufLoader = {
|
|
|
10
10
|
category: 'geometry',
|
|
11
11
|
options: {
|
|
12
12
|
flatgeobuf: {
|
|
13
|
-
shape: 'geojson'
|
|
13
|
+
shape: 'geojson-table'
|
|
14
|
+
},
|
|
15
|
+
gis: {
|
|
16
|
+
reproject: false
|
|
14
17
|
}
|
|
15
18
|
}
|
|
16
19
|
};
|
|
17
|
-
export const _typecheckFlatGeobufLoader = FlatGeobufLoader;
|
|
18
20
|
//# sourceMappingURL=flatgeobuf-loader.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"flatgeobuf-loader.js","names":["VERSION","FlatGeobufLoader","id","name","module","version","worker","extensions","mimeTypes","category","options","flatgeobuf","shape","
|
|
1
|
+
{"version":3,"file":"flatgeobuf-loader.js","names":["VERSION","FlatGeobufLoader","id","name","module","version","worker","extensions","mimeTypes","category","options","flatgeobuf","shape","gis","reproject"],"sources":["../../src/flatgeobuf-loader.ts"],"sourcesContent":["import type {Loader, LoaderOptions} 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 type FlatGeobufLoaderOptions = LoaderOptions & {\n flatgeobuf?: {\n shape?: 'geojson-table' | 'columnar-table' | 'geojson-table' | 'geojson' | 'binary';\n };\n gis?: {\n reproject?: boolean;\n _targetCrs?: string;\n /** @deprecated Use options.flatgeobuf.shape */\n format?: never;\n };\n};\n\nexport const FlatGeobufLoader: Loader<any, any, FlatGeobufLoaderOptions> = {\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 shape: 'geojson-table'\n },\n gis: {\n reproject: false\n }\n }\n};\n"],"mappings":"AAIA,MAAMA,OAAO,GAAG,qBAAkB,KAAK,WAAW,oBAAiB,QAAQ;AAc3E,OAAO,MAAMC,gBAA2D,GAAG;EACzEC,EAAE,EAAE,YAAY;EAChBC,IAAI,EAAE,YAAY;EAClBC,MAAM,EAAE,YAAY;EACpBC,OAAO,EAAEL,OAAO;EAChBM,MAAM,EAAE,IAAI;EACZC,UAAU,EAAE,CAAC,KAAK,CAAC;EACnBC,SAAS,EAAE,CAAC,0BAA0B,CAAC;EACvCC,QAAQ,EAAE,UAAU;EACpBC,OAAO,EAAE;IACPC,UAAU,EAAE;MACVC,KAAK,EAAE;IACT,CAAC;IACDC,GAAG,EAAE;MACHC,SAAS,EAAE;IACb;EACF;AACF,CAAC"}
|
package/dist/esm/index.js
CHANGED
package/dist/esm/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","names":["FlatGeobufLoader","FlatGeobufWorkerLoader","parseFlatGeobuf","parseFlatGeobufInBatches","parse","arrayBuffer","options","parseSync","parseInBatchesFromStream","binary"
|
|
1
|
+
{"version":3,"file":"index.js","names":["FlatGeobufLoader","FlatGeobufWorkerLoader","parseFlatGeobuf","parseFlatGeobufInBatches","parse","arrayBuffer","options","parseSync","parseInBatchesFromStream","binary"],"sources":["../../src/index.ts"],"sourcesContent":["import type {LoaderWithParser} from '@loaders.gl/loader-utils';\nimport type {FlatGeobufLoaderOptions} from './flatgeobuf-loader';\nimport {FlatGeobufLoader as FlatGeobufWorkerLoader} from './flatgeobuf-loader';\nimport {parseFlatGeobuf, parseFlatGeobufInBatches} from './lib/parse-flatgeobuf';\n\nexport {FlatGeobufWorkerLoader};\n\nexport const FlatGeobufLoader: LoaderWithParser<any, any, FlatGeobufLoaderOptions> = {\n ...FlatGeobufWorkerLoader,\n parse: async (arrayBuffer, options) => parseFlatGeobuf(arrayBuffer, options),\n parseSync: parseFlatGeobuf,\n // @ts-expect-error this is a stream parser not an async iterator parser\n parseInBatchesFromStream: parseFlatGeobufInBatches,\n binary: true\n};\n"],"mappings":"AAEA,SAAQA,gBAAgB,IAAIC,sBAAsB,QAAO,qBAAqB;AAC9E,SAAQC,eAAe,EAAEC,wBAAwB,QAAO,wBAAwB;AAEhF,SAAQF,sBAAsB;AAE9B,OAAO,MAAMD,gBAAqE,GAAG;EACnF,GAAGC,sBAAsB;EACzBG,KAAK,EAAE,MAAAA,CAAOC,WAAW,EAAEC,OAAO,KAAKJ,eAAe,CAACG,WAAW,EAAEC,OAAO,CAAC;EAC5EC,SAAS,EAAEL,eAAe;EAE1BM,wBAAwB,EAAEL,wBAAwB;EAClDM,MAAM,EAAE;AACV,CAAC"}
|
|
@@ -15,32 +15,36 @@ export function parseFlatGeobuf(arrayBuffer, options) {
|
|
|
15
15
|
var _options$gis, _options$flatgeobuf;
|
|
16
16
|
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);
|
|
17
17
|
switch (shape) {
|
|
18
|
-
case 'geojson
|
|
18
|
+
case 'geojson':
|
|
19
|
+
case 'geojson-table':
|
|
19
20
|
{
|
|
21
|
+
const features = parseFlatGeobufToGeoJSON(arrayBuffer, options);
|
|
20
22
|
const table = {
|
|
21
|
-
shape: 'geojson-
|
|
22
|
-
|
|
23
|
+
shape: 'geojson-table',
|
|
24
|
+
type: 'FeatureCollection',
|
|
25
|
+
features
|
|
23
26
|
};
|
|
24
27
|
return table;
|
|
25
28
|
}
|
|
26
29
|
case 'columnar-table':
|
|
30
|
+
const binary = parseFlatGeobufToBinary(arrayBuffer, options);
|
|
27
31
|
return {
|
|
28
32
|
shape: 'columnar-table',
|
|
29
|
-
data:
|
|
33
|
+
data: binary
|
|
30
34
|
};
|
|
31
|
-
case 'geojson':
|
|
32
|
-
return parseFlatGeobufToGeoJSON(arrayBuffer, options);
|
|
33
35
|
case 'binary':
|
|
34
36
|
return parseFlatGeobufToBinary(arrayBuffer, options);
|
|
35
37
|
default:
|
|
36
38
|
throw new Error(shape);
|
|
37
39
|
}
|
|
38
40
|
}
|
|
39
|
-
function parseFlatGeobufToBinary(arrayBuffer
|
|
41
|
+
function parseFlatGeobufToBinary(arrayBuffer) {
|
|
42
|
+
let options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
|
|
40
43
|
const array = new Uint8Array(arrayBuffer);
|
|
41
44
|
return deserializeGeneric(array, binaryFromFeature);
|
|
42
45
|
}
|
|
43
|
-
function parseFlatGeobufToGeoJSON(arrayBuffer
|
|
46
|
+
function parseFlatGeobufToGeoJSON(arrayBuffer) {
|
|
47
|
+
let options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
|
|
44
48
|
if (arrayBuffer.byteLength === 0) {
|
|
45
49
|
return [];
|
|
46
50
|
}
|
|
@@ -52,7 +56,7 @@ function parseFlatGeobufToGeoJSON(arrayBuffer, options) {
|
|
|
52
56
|
let headerMeta;
|
|
53
57
|
const {
|
|
54
58
|
features
|
|
55
|
-
} = deserializeGeoJson(arr,
|
|
59
|
+
} = deserializeGeoJson(arr, undefined, header => {
|
|
56
60
|
headerMeta = header;
|
|
57
61
|
});
|
|
58
62
|
const crs = headerMeta && headerMeta.crs;
|
|
@@ -86,7 +90,7 @@ async function* parseFlatGeobufInBatchesToGeoJSON(stream, options) {
|
|
|
86
90
|
_targetCrs = 'WGS84'
|
|
87
91
|
} = options && options.gis || {};
|
|
88
92
|
let headerMeta;
|
|
89
|
-
const iterator = deserializeGeoJson(stream,
|
|
93
|
+
const iterator = deserializeGeoJson(stream, undefined, header => {
|
|
90
94
|
headerMeta = header;
|
|
91
95
|
});
|
|
92
96
|
let projection;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"parse-flatgeobuf.js","names":["Proj4Projection","transformGeoJsonCoords","deserialize","deserializeGeoJson","deserializeGeneric","parseProperties","parsePropertiesBinary","fromGeometry","binaryFromGeometry","binaryFromFeature","feature","header","geometry","geometryType","type","parsedGeometry","properties","columns","parseFlatGeobuf","arrayBuffer","options","_options$gis","_options$flatgeobuf","shape","gis","format","flatgeobuf","
|
|
1
|
+
{"version":3,"file":"parse-flatgeobuf.js","names":["Proj4Projection","transformGeoJsonCoords","deserialize","deserializeGeoJson","deserializeGeneric","parseProperties","parsePropertiesBinary","fromGeometry","binaryFromGeometry","binaryFromFeature","feature","header","geometry","geometryType","type","parsedGeometry","properties","columns","parseFlatGeobuf","arrayBuffer","options","_options$gis","_options$flatgeobuf","shape","gis","format","flatgeobuf","features","parseFlatGeobufToGeoJSON","table","binary","parseFlatGeobufToBinary","data","Error","arguments","length","undefined","array","Uint8Array","byteLength","reproject","_targetCrs","arr","headerMeta","crs","projection","from","wkt","to","e","coords","project","parseFlatGeobufInBatches","stream","parseFlatGeobufInBatchesToBinary","parseFlatGeobufInBatchesToGeoJSON","iterator","firstRecord"],"sources":["../../../src/lib/parse-flatgeobuf.ts"],"sourcesContent":["import {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 type {FlatGeobufLoaderOptions} from '../flatgeobuf-loader';\nimport type {GeoJSONTable, Feature, Table} from '@loaders.gl/schema';\nimport {fromGeometry as binaryFromGeometry} from './binary-geometries';\n// import {Feature} from 'flatgeobuf/lib/cjs/feature_generated';\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 // @ts-expect-error this looks wrong\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(\n arrayBuffer: ArrayBuffer,\n options?: FlatGeobufLoaderOptions\n): Table {\n const shape = options?.gis?.format || options?.flatgeobuf?.shape;\n\n switch (shape) {\n case 'geojson':\n case 'geojson-table': {\n const features = parseFlatGeobufToGeoJSON(arrayBuffer, options);\n const table: GeoJSONTable = {\n shape: 'geojson-table',\n type: 'FeatureCollection',\n features\n };\n return table;\n }\n\n case 'columnar-table': // binary + some JS arrays\n const binary = parseFlatGeobufToBinary(arrayBuffer, options);\n // @ts-expect-error\n return {shape: 'columnar-table', data: binary};\n\n case 'binary':\n // @ts-expect-error\n return parseFlatGeobufToBinary(arrayBuffer, options);\n\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 // @ts-expect-error this looks wrong\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 // @ts-expect-error this looks wrong\n const {features} = deserializeGeoJson(arr, undefined, (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 // @ts-expect-error\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, undefined, (header) => {\n headerMeta = header;\n });\n\n let projection;\n let firstRecord = true;\n // @ts-expect-error this looks wrong\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"],"mappings":"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"}
|
|
@@ -1,18 +1,14 @@
|
|
|
1
|
-
import type { Loader } from '@loaders.gl/loader-utils';
|
|
2
|
-
export
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
options: {
|
|
12
|
-
flatgeobuf: {
|
|
13
|
-
shape: string;
|
|
14
|
-
};
|
|
1
|
+
import type { Loader, LoaderOptions } from '@loaders.gl/loader-utils';
|
|
2
|
+
export type FlatGeobufLoaderOptions = LoaderOptions & {
|
|
3
|
+
flatgeobuf?: {
|
|
4
|
+
shape?: 'geojson-table' | 'columnar-table' | 'geojson-table' | 'geojson' | 'binary';
|
|
5
|
+
};
|
|
6
|
+
gis?: {
|
|
7
|
+
reproject?: boolean;
|
|
8
|
+
_targetCrs?: string;
|
|
9
|
+
/** @deprecated Use options.flatgeobuf.shape */
|
|
10
|
+
format?: never;
|
|
15
11
|
};
|
|
16
12
|
};
|
|
17
|
-
export declare const
|
|
13
|
+
export declare const FlatGeobufLoader: Loader<any, any, FlatGeobufLoaderOptions>;
|
|
18
14
|
//# sourceMappingURL=flatgeobuf-loader.d.ts.map
|
|
@@ -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;
|
|
1
|
+
{"version":3,"file":"flatgeobuf-loader.d.ts","sourceRoot":"","sources":["../src/flatgeobuf-loader.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAC,MAAM,EAAE,aAAa,EAAC,MAAM,0BAA0B,CAAC;AAMpE,MAAM,MAAM,uBAAuB,GAAG,aAAa,GAAG;IACpD,UAAU,CAAC,EAAE;QACX,KAAK,CAAC,EAAE,eAAe,GAAG,gBAAgB,GAAG,eAAe,GAAG,SAAS,GAAG,QAAQ,CAAC;KACrF,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,KAAK,CAAC;KAChB,CAAC;CACH,CAAC;AAEF,eAAO,MAAM,gBAAgB,EAAE,MAAM,CAAC,GAAG,EAAE,GAAG,EAAE,uBAAuB,CAiBtE,CAAC"}
|