@loaders.gl/flatgeobuf 3.3.0-alpha.5 → 3.3.0-alpha.6

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.
@@ -1,23 +1,23 @@
1
+
1
2
  import { Proj4Projection } from '@math.gl/proj4';
2
3
  import { transformGeoJsonCoords } from '@loaders.gl/gis';
3
4
  import { deserialize as deserializeGeoJson } from 'flatgeobuf/lib/cjs/geojson';
4
5
  import { deserialize as deserializeGeneric } from 'flatgeobuf/lib/cjs/generic';
5
6
  import { parseProperties as parsePropertiesBinary } from 'flatgeobuf/lib/cjs/generic/feature';
6
7
  import { fromGeometry as binaryFromGeometry } from './binary-geometries';
7
-
8
8
  function binaryFromFeature(feature, header) {
9
9
  const geometry = feature.geometry();
10
+
10
11
  const geometryType = header.geometryType || geometry.type();
11
12
  const parsedGeometry = binaryFromGeometry(geometry, geometryType);
12
13
  parsedGeometry.properties = parsePropertiesBinary(feature, header.columns);
14
+
13
15
  return parsedGeometry;
14
16
  }
15
17
 
16
18
  export function parseFlatGeobuf(arrayBuffer, options) {
17
19
  var _options$gis, _options$flatgeobuf;
18
-
19
20
  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
21
  switch (shape) {
22
22
  case 'geojson-row-table':
23
23
  {
@@ -27,34 +27,28 @@ export function parseFlatGeobuf(arrayBuffer, options) {
27
27
  };
28
28
  return table;
29
29
  }
30
-
31
30
  case 'columnar-table':
32
31
  return {
33
32
  shape: 'columnar-table',
34
33
  data: parseFlatGeobufToBinary(arrayBuffer, options)
35
34
  };
36
-
37
35
  case 'geojson':
38
36
  return parseFlatGeobufToGeoJSON(arrayBuffer, options);
39
-
40
37
  case 'binary':
41
38
  return parseFlatGeobufToBinary(arrayBuffer, options);
42
-
43
39
  default:
44
40
  throw new Error(shape);
45
41
  }
46
42
  }
47
-
48
43
  function parseFlatGeobufToBinary(arrayBuffer, options) {
44
+
49
45
  const array = new Uint8Array(arrayBuffer);
50
46
  return deserializeGeneric(array, binaryFromFeature);
51
47
  }
52
-
53
48
  function parseFlatGeobufToGeoJSON(arrayBuffer, options) {
54
49
  if (arrayBuffer.byteLength === 0) {
55
50
  return [];
56
51
  }
57
-
58
52
  const {
59
53
  reproject = false,
60
54
  _targetCrs = 'WGS84'
@@ -68,20 +62,18 @@ function parseFlatGeobufToGeoJSON(arrayBuffer, options) {
68
62
  });
69
63
  const crs = headerMeta && headerMeta.crs;
70
64
  let projection;
71
-
72
65
  if (reproject && crs) {
73
66
  try {
74
67
  projection = new Proj4Projection({
75
68
  from: crs.wkt,
76
69
  to: _targetCrs
77
70
  });
78
- } catch (e) {}
71
+ } catch (e) {
72
+ }
79
73
  }
80
-
81
74
  if (projection) {
82
75
  return transformGeoJsonCoords(features, coords => projection.project(coords));
83
76
  }
84
-
85
77
  return features;
86
78
  }
87
79
 
@@ -89,11 +81,10 @@ export function parseFlatGeobufInBatches(stream, options) {
89
81
  if (options && options.gis && options.gis.format === 'binary') {
90
82
  return parseFlatGeobufInBatchesToBinary(stream, options);
91
83
  }
92
-
93
84
  return parseFlatGeobufInBatchesToGeoJSON(stream, options);
94
85
  }
95
-
96
86
  function parseFlatGeobufInBatchesToBinary(stream, options) {
87
+
97
88
  const iterator = deserializeGeneric(stream, binaryFromFeature);
98
89
  return iterator;
99
90
  }
@@ -109,21 +100,17 @@ async function* parseFlatGeobufInBatchesToGeoJSON(stream, options) {
109
100
  });
110
101
  let projection;
111
102
  let firstRecord = true;
112
-
113
103
  for await (const feature of iterator) {
114
104
  if (firstRecord) {
115
105
  const crs = headerMeta && headerMeta.crs;
116
-
117
106
  if (reproject && crs) {
118
107
  projection = new Proj4Projection({
119
108
  from: crs.wkt,
120
109
  to: _targetCrs
121
110
  });
122
111
  }
123
-
124
112
  firstRecord = false;
125
113
  }
126
-
127
114
  if (reproject && projection) {
128
115
  yield transformGeoJsonCoords([feature], coords => projection.project(coords));
129
116
  } else {
@@ -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","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"}
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","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"],"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 +1 @@
1
- {"version":3,"sources":[],"names":[],"mappings":"","sourcesContent":[],"file":"types.js"}
1
+ {"version":3,"file":"types.js","names":[],"sources":["../../../src/lib/types.ts"],"sourcesContent":["import type {LoaderOptions} from '@loaders.gl/loader-utils';\n\nexport type FlatGeobufLoaderOptions = LoaderOptions & {\n flatgeobuf?: {\n shape?: 'geojson-row-table' | 'columnar-table' | 'geojson' | 'binary';\n };\n gis?: {\n reproject?: boolean;\n _targetCrs?: string;\n /** @deprecated Use options.flatgeobuf.shape */\n format?: 'geojson-row-table' | 'columnar-table' | 'geojson' | 'binary';\n };\n};\n"],"mappings":""}
@@ -1 +1 @@
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"}
1
+ {"version":3,"file":"flatgeobuf-worker.js","names":["createLoaderWorker","FlatGeobufLoader"],"sources":["../../../src/workers/flatgeobuf-worker.ts"],"sourcesContent":["import {createLoaderWorker} from '@loaders.gl/loader-utils';\nimport {FlatGeobufLoader} from '../index';\n\ncreateLoaderWorker(FlatGeobufLoader);\n"],"mappings":"AAAA,SAAQA,kBAAkB,QAAO,0BAA0B;AAC3D,SAAQC,gBAAgB,QAAO,UAAU;AAEzCD,kBAAkB,CAACC,gBAAgB,CAAC"}
@@ -3394,8 +3394,23 @@
3394
3394
  return await parser(data, { ...options }, context, loader);
3395
3395
  }
3396
3396
 
3397
+ // ../../node_modules/@babel/runtime/helpers/esm/defineProperty.js
3398
+ function _defineProperty(obj, key, value) {
3399
+ if (key in obj) {
3400
+ Object.defineProperty(obj, key, {
3401
+ value,
3402
+ enumerable: true,
3403
+ configurable: true,
3404
+ writable: true
3405
+ });
3406
+ } else {
3407
+ obj[key] = value;
3408
+ }
3409
+ return obj;
3410
+ }
3411
+
3397
3412
  // src/flatgeobuf-loader.ts
3398
- var VERSION = true ? "3.3.0-alpha.5" : "latest";
3413
+ var VERSION = true ? "3.3.0-alpha.6" : "latest";
3399
3414
  var FlatGeobufLoader = {
3400
3415
  id: "flatgeobuf",
3401
3416
  name: "FlatGeobuf",
@@ -3621,7 +3636,7 @@
3621
3636
  var ENDED = -1;
3622
3637
  var whitespace = /\s/;
3623
3638
  var latin = /[A-Za-z]/;
3624
- var keyword = /[A-Za-z84]/;
3639
+ var keyword = /[A-Za-z84_]/;
3625
3640
  var endThings = /[,\]]/;
3626
3641
  var digets = /[\d\.E\-\+]/;
3627
3642
  function Parser(text) {
@@ -3919,15 +3934,14 @@
3919
3934
  if (wkt.AXIS) {
3920
3935
  var axisOrder = "";
3921
3936
  for (var i = 0, ii = wkt.AXIS.length; i < ii; ++i) {
3922
- var axis = wkt.AXIS[i];
3923
- var descriptor = axis[0].toLowerCase();
3924
- if (descriptor.indexOf("north") !== -1) {
3937
+ var axis = [wkt.AXIS[i][0].toLowerCase(), wkt.AXIS[i][1].toLowerCase()];
3938
+ if (axis[0].indexOf("north") !== -1 || (axis[0] === "y" || axis[0] === "lat") && axis[1] === "north") {
3925
3939
  axisOrder += "n";
3926
- } else if (descriptor.indexOf("south") !== -1) {
3940
+ } else if (axis[0].indexOf("south") !== -1 || (axis[0] === "y" || axis[0] === "lat") && axis[1] === "south") {
3927
3941
  axisOrder += "s";
3928
- } else if (descriptor.indexOf("east") !== -1) {
3942
+ } else if (axis[0].indexOf("east") !== -1 || (axis[0] === "x" || axis[0] === "lon") && axis[1] === "east") {
3929
3943
  axisOrder += "e";
3930
- } else if (descriptor.indexOf("west") !== -1) {
3944
+ } else if (axis[0].indexOf("west") !== -1 || (axis[0] === "x" || axis[0] === "lon") && axis[1] === "west") {
3931
3945
  axisOrder += "w";
3932
3946
  }
3933
3947
  }
@@ -4023,12 +4037,22 @@
4023
4037
  };
4024
4038
  var list = [
4025
4039
  ["standard_parallel_1", "Standard_Parallel_1"],
4040
+ ["standard_parallel_1", "Latitude of 1st standard parallel"],
4026
4041
  ["standard_parallel_2", "Standard_Parallel_2"],
4042
+ ["standard_parallel_2", "Latitude of 2nd standard parallel"],
4027
4043
  ["false_easting", "False_Easting"],
4044
+ ["false_easting", "False easting"],
4045
+ ["false-easting", "Easting at false origin"],
4028
4046
  ["false_northing", "False_Northing"],
4047
+ ["false_northing", "False northing"],
4048
+ ["false_northing", "Northing at false origin"],
4029
4049
  ["central_meridian", "Central_Meridian"],
4050
+ ["central_meridian", "Longitude of natural origin"],
4051
+ ["central_meridian", "Longitude of false origin"],
4030
4052
  ["latitude_of_origin", "Latitude_Of_Origin"],
4031
4053
  ["latitude_of_origin", "Central_Parallel"],
4054
+ ["latitude_of_origin", "Latitude of natural origin"],
4055
+ ["latitude_of_origin", "Latitude of false origin"],
4032
4056
  ["scale_factor", "Scale_Factor"],
4033
4057
  ["k0", "scale_factor"],
4034
4058
  ["latitude_of_center", "Latitude_Of_Center"],
@@ -8726,7 +8750,7 @@
8726
8750
  projs_default(core_default);
8727
8751
  var lib_default = core_default;
8728
8752
 
8729
- // node_modules/@math.gl/proj4/dist/esm/lib/proj4-projection.js
8753
+ // ../../node_modules/@math.gl/proj4/dist/esm/lib/proj4-projection.js
8730
8754
  var Proj4Projection = class {
8731
8755
  static defineProjectionAliases(aliases) {
8732
8756
  const aliasArray = [];
@@ -8739,12 +8763,19 @@
8739
8763
  from = "WGS84",
8740
8764
  to = "WGS84"
8741
8765
  }) {
8742
- const projection = lib_default(from, to);
8743
- if (!projection) {
8766
+ _defineProperty(this, "_projection", void 0);
8767
+ this._projection = lib_default(from, to);
8768
+ if (!this._projection) {
8744
8769
  throw new Error("Invalid projection");
8745
8770
  }
8746
- this.project = projection.forward;
8747
- this.unproject = projection.inverse;
8771
+ this.project = this.project.bind(this);
8772
+ this.unproject = this.unproject.bind(this);
8773
+ }
8774
+ project(coord) {
8775
+ return this._projection.forward(coord);
8776
+ }
8777
+ unproject(coord) {
8778
+ return this._projection.inverse(coord);
8748
8779
  }
8749
8780
  };
8750
8781
 
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.3.0-alpha.5",
4
+ "version": "3.3.0-alpha.6",
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": "3.3.0-alpha.5",
36
- "@loaders.gl/loader-utils": "3.3.0-alpha.5",
35
+ "@loaders.gl/gis": "3.3.0-alpha.6",
36
+ "@loaders.gl/loader-utils": "3.3.0-alpha.6",
37
37
  "@math.gl/proj4": "^3.3.1",
38
38
  "flatgeobuf": "3.6.5"
39
39
  },
40
- "gitHead": "d2df3bead97710c45fd2974cd51ecd7d5f7f5ea4"
40
+ "gitHead": "718a2998a26883247461ff05f01dcbef8d8c2417"
41
41
  }