@deck.gl/geo-layers 8.9.18 → 8.10.0-alpha.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/package.json CHANGED
@@ -2,7 +2,7 @@
2
2
  "name": "@deck.gl/geo-layers",
3
3
  "description": "deck.gl layers supporting geospatial use cases and GIS formats",
4
4
  "license": "MIT",
5
- "version": "8.9.18",
5
+ "version": "8.10.0-alpha.1",
6
6
  "publishConfig": {
7
7
  "access": "public"
8
8
  },
@@ -44,7 +44,7 @@
44
44
  "@math.gl/culling": "^3.6.2",
45
45
  "@math.gl/web-mercator": "^3.6.2",
46
46
  "@types/geojson": "^7946.0.8",
47
- "h3-js": "^3.7.0",
47
+ "h3-js": "^4.1.0",
48
48
  "long": "^3.2.0"
49
49
  },
50
50
  "peerDependencies": {
@@ -55,5 +55,5 @@
55
55
  "@loaders.gl/core": "^3.4.2",
56
56
  "@luma.gl/core": "^8.0.0"
57
57
  },
58
- "gitHead": "e581cda7ad4df20fb3706023d64216e07ac78692"
58
+ "gitHead": "8a3793449f88140ad1e16da7a190d192904629eb"
59
59
  }
@@ -1,4 +1,4 @@
1
- import {h3SetToMultiPolygon, H3IndexInput} from 'h3-js';
1
+ import {cellsToMultiPolygon, H3IndexInput} from 'h3-js';
2
2
 
3
3
  import {AccessorFunction, createIterable, UpdateParameters, DefaultProps} from '@deck.gl/core';
4
4
  import {default as H3HexagonLayer} from './h3-hexagon-layer';
@@ -45,7 +45,7 @@ export default class H3ClusterLayer<DataT = any, ExtraProps extends {} = {}> ext
45
45
  for (const object of iterable) {
46
46
  objectInfo.index++;
47
47
  const hexagons = getHexagons(object, objectInfo);
48
- const multiPolygon = h3SetToMultiPolygon(hexagons, true);
48
+ const multiPolygon = cellsToMultiPolygon(hexagons, true);
49
49
 
50
50
  for (const polygon of multiPolygon) {
51
51
  polygons.push(this.getSubLayerRow({polygon}, object, objectInfo.index));
@@ -1,11 +1,11 @@
1
1
  import {
2
- h3ToGeoBoundary,
3
- h3GetResolution,
4
- h3ToGeo,
5
- geoToH3,
6
- h3IsPentagon,
7
- h3Distance,
8
- edgeLength,
2
+ cellToBoundary,
3
+ getResolution,
4
+ cellToLatLng,
5
+ latLngToCell,
6
+ isPentagon,
7
+ gridDistance,
8
+ getHexagonEdgeLengthAvg,
9
9
  H3Index
10
10
  } from 'h3-js';
11
11
  import {lerp} from '@math.gl/core';
@@ -41,13 +41,13 @@ export function normalizeLongitudes(vertices: number[][], refLng?: number): void
41
41
 
42
42
  // scale polygon vertices w.r.t center (hexId)
43
43
  export function scalePolygon(hexId: H3Index, vertices: number[][], factor: number): void {
44
- const [lat, lng] = h3ToGeo(hexId);
44
+ const [lat, lng] = cellToLatLng(hexId);
45
45
  const actualCount = vertices.length;
46
46
 
47
47
  // normalize with respect to center
48
48
  normalizeLongitudes(vertices, lng);
49
49
 
50
- // `h3ToGeoBoundary` returns same array object for first and last vertex (closed polygon),
50
+ // `cellToBoundary` returns same array object for first and last vertex (closed polygon),
51
51
  // if so skip scaling the last vertex
52
52
  const vertexCount = vertices[0] === vertices[actualCount - 1] ? actualCount - 1 : actualCount;
53
53
  for (let i = 0; i < vertexCount; i++) {
@@ -58,12 +58,12 @@ export function scalePolygon(hexId: H3Index, vertices: number[][], factor: numbe
58
58
 
59
59
  function getHexagonCentroid(getHexagon, object, objectInfo) {
60
60
  const hexagonId = getHexagon(object, objectInfo);
61
- const [lat, lng] = h3ToGeo(hexagonId);
61
+ const [lat, lng] = cellToLatLng(hexagonId);
62
62
  return [lng, lat];
63
63
  }
64
64
 
65
65
  function h3ToPolygon(hexId: H3Index, coverage: number = 1): number[][] {
66
- const vertices = h3ToGeoBoundary(hexId, true);
66
+ const vertices = cellToBoundary(hexId, true);
67
67
 
68
68
  if (coverage !== 1) {
69
69
  // scale and normalize vertices w.r.t to center
@@ -199,7 +199,7 @@ export default class H3HexagonLayer<
199
199
  objectInfo.index++;
200
200
  const hexId = this.props.getHexagon(object, objectInfo);
201
201
  // Take the resolution of the first hex
202
- const hexResolution = h3GetResolution(hexId);
202
+ const hexResolution = getResolution(hexId);
203
203
  if (resolution < 0) {
204
204
  resolution = hexResolution;
205
205
  if (!this.props.highPrecision) break;
@@ -207,7 +207,7 @@ export default class H3HexagonLayer<
207
207
  hasMultipleRes = true;
208
208
  break;
209
209
  }
210
- if (h3IsPentagon(hexId)) {
210
+ if (isPentagon(hexId)) {
211
211
  hasPentagon = true;
212
212
  break;
213
213
  }
@@ -215,7 +215,7 @@ export default class H3HexagonLayer<
215
215
 
216
216
  return {
217
217
  resolution,
218
- edgeLengthKM: resolution >= 0 ? edgeLength(resolution, 'km') : 0,
218
+ edgeLengthKM: resolution >= 0 ? getHexagonEdgeLengthAvg(resolution, 'km') : 0,
219
219
  hasMultipleRes,
220
220
  hasPentagon
221
221
  };
@@ -245,23 +245,26 @@ export default class H3HexagonLayer<
245
245
  return;
246
246
  }
247
247
  const hex =
248
- this.props.centerHexagon || geoToH3(viewport.latitude, viewport.longitude, resolution);
248
+ this.props.centerHexagon || latLngToCell(viewport.latitude, viewport.longitude, resolution);
249
249
  if (centerHex === hex) {
250
250
  return;
251
251
  }
252
252
  if (centerHex) {
253
- const distance = h3Distance(centerHex, hex);
254
- // h3Distance returns a negative number if the distance could not be computed
255
- // due to the two indexes very far apart or on opposite sides of a pentagon.
256
- if (distance >= 0 && distance * edgeLengthKM < UPDATE_THRESHOLD_KM) {
257
- return;
253
+ try {
254
+ const distance = gridDistance(centerHex, hex);
255
+ if (distance * edgeLengthKM < UPDATE_THRESHOLD_KM) {
256
+ return;
257
+ }
258
+ } catch {
259
+ // gridDistance throws if the distance could not be computed
260
+ // due to the two indexes very far apart or on opposite sides of a pentagon.
258
261
  }
259
262
  }
260
263
 
261
264
  const {unitsPerMeter} = viewport.distanceScales;
262
265
 
263
266
  let vertices = h3ToPolygon(hex);
264
- const [centerLat, centerLng] = h3ToGeo(hex);
267
+ const [centerLat, centerLng] = cellToLatLng(hex);
265
268
 
266
269
  const [centerX, centerY] = viewport.projectFlat([centerLng, centerLat]);
267
270
  vertices = vertices.map(p => {
@@ -1 +1 @@
1
- {"version":3,"file":"h3-hexagon-layer.d.ts","sourceRoot":"","sources":["../../src/h3-layers/h3-hexagon-layer.ts"],"names":[],"mappings":"AAAA,OAAO,EAQL,OAAO,EACR,MAAM,OAAO,CAAC;AAEf,OAAO,EACL,gBAAgB,EAChB,cAAc,EAEd,KAAK,EACL,UAAU,EACV,gBAAgB,EAEhB,YAAY,EACb,MAAM,eAAe,CAAC;AACvB,OAAO,EAA4B,iBAAiB,EAAC,MAAM,iBAAiB,CAAC;AAQ7E,wBAAgB,mBAAmB,CAAC,QAAQ,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,CAAC,EAAE,MAAM,GAAG,IAAI,CAU/E;AAGD,wBAAgB,YAAY,CAAC,KAAK,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,EAAE,MAAM,GAAG,IAAI,CAcvF;AAqDD,iDAAiD;AACjD,oBAAY,mBAAmB,CAAC,KAAK,GAAG,GAAG,IAAI,oBAAoB,CAAC,KAAK,CAAC,GACxE,iBAAiB,CAAC,KAAK,CAAC,CAAC;AAE3B,wCAAwC;AACxC,aAAK,oBAAoB,CAAC,KAAK,IAAI;IACjC;;;OAGG;IACH,aAAa,CAAC,EAAE,OAAO,GAAG,MAAM,CAAC;IACjC;;;OAGG;IACH,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB;;OAEG;IACH,aAAa,CAAC,EAAE,OAAO,GAAG,IAAI,CAAC;IAC/B;;;;OAIG;IACH,UAAU,CAAC,EAAE,gBAAgB,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;IAC7C;;;OAGG;IACH,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB,CAAC;AAEF;;GAEG;AACH,MAAM,CAAC,OAAO,OAAO,cAAc,CACjC,KAAK,GAAG,GAAG,EACX,WAAW,SAAS,EAAE,GAAG,EAAE,CAC3B,SAAQ,cAAc,CAAC,WAAW,GAAG,QAAQ,CAAC,mBAAmB,CAAC,KAAK,CAAC,CAAC,CAAC;IAC1E,MAAM,CAAC,YAAY,yCAAgB;IACnC,MAAM,CAAC,SAAS,SAAoB;IAGpC,MAAM,CAAC,WAAW,aAAY;IAE9B,eAAe;IAQf,KAAK,EAAG;QACN,SAAS,CAAC,EAAE,OAAO,CAAC;QACpB,YAAY,EAAE,MAAM,CAAC;QACrB,cAAc,CAAC,EAAE,OAAO,CAAC;QACzB,WAAW,CAAC,EAAE,OAAO,CAAC;QACtB,UAAU,EAAE,MAAM,CAAC;QACnB,QAAQ,CAAC,EAAE,MAAM,EAAE,EAAE,CAAC;KACvB,CAAC;IAEF,iBAAiB,CAAC,EAAC,WAAW,EAAC,EAAE,gBAAgB,CAAC,IAAI,CAAC,GAAG,OAAO;IAMjE,WAAW,CAAC,EAAC,KAAK,EAAE,WAAW,EAAC,EAAE,gBAAgB,CAAC,IAAI,CAAC,GAAG,IAAI;IAa/D,OAAO,CAAC,qBAAqB;IAgC7B,OAAO,CAAC,uBAAuB;IAe/B,OAAO,CAAC,eAAe;IAuCvB,YAAY,IAAI,KAAK,GAAG,IAAI,GAAG,UAAU;IAIzC,OAAO,CAAC,gBAAgB;IAsDxB,OAAO,CAAC,mBAAmB;IA0B3B,OAAO,CAAC,kBAAkB;CAuB3B"}
1
+ {"version":3,"file":"h3-hexagon-layer.d.ts","sourceRoot":"","sources":["../../src/h3-layers/h3-hexagon-layer.ts"],"names":[],"mappings":"AAAA,OAAO,EAQL,OAAO,EACR,MAAM,OAAO,CAAC;AAEf,OAAO,EACL,gBAAgB,EAChB,cAAc,EAEd,KAAK,EACL,UAAU,EACV,gBAAgB,EAEhB,YAAY,EACb,MAAM,eAAe,CAAC;AACvB,OAAO,EAA4B,iBAAiB,EAAC,MAAM,iBAAiB,CAAC;AAQ7E,wBAAgB,mBAAmB,CAAC,QAAQ,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,CAAC,EAAE,MAAM,GAAG,IAAI,CAU/E;AAGD,wBAAgB,YAAY,CAAC,KAAK,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,EAAE,MAAM,GAAG,IAAI,CAcvF;AAqDD,iDAAiD;AACjD,oBAAY,mBAAmB,CAAC,KAAK,GAAG,GAAG,IAAI,oBAAoB,CAAC,KAAK,CAAC,GACxE,iBAAiB,CAAC,KAAK,CAAC,CAAC;AAE3B,wCAAwC;AACxC,aAAK,oBAAoB,CAAC,KAAK,IAAI;IACjC;;;OAGG;IACH,aAAa,CAAC,EAAE,OAAO,GAAG,MAAM,CAAC;IACjC;;;OAGG;IACH,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB;;OAEG;IACH,aAAa,CAAC,EAAE,OAAO,GAAG,IAAI,CAAC;IAC/B;;;;OAIG;IACH,UAAU,CAAC,EAAE,gBAAgB,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;IAC7C;;;OAGG;IACH,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB,CAAC;AAEF;;GAEG;AACH,MAAM,CAAC,OAAO,OAAO,cAAc,CACjC,KAAK,GAAG,GAAG,EACX,WAAW,SAAS,EAAE,GAAG,EAAE,CAC3B,SAAQ,cAAc,CAAC,WAAW,GAAG,QAAQ,CAAC,mBAAmB,CAAC,KAAK,CAAC,CAAC,CAAC;IAC1E,MAAM,CAAC,YAAY,yCAAgB;IACnC,MAAM,CAAC,SAAS,SAAoB;IAGpC,MAAM,CAAC,WAAW,aAAY;IAE9B,eAAe;IAQf,KAAK,EAAG;QACN,SAAS,CAAC,EAAE,OAAO,CAAC;QACpB,YAAY,EAAE,MAAM,CAAC;QACrB,cAAc,CAAC,EAAE,OAAO,CAAC;QACzB,WAAW,CAAC,EAAE,OAAO,CAAC;QACtB,UAAU,EAAE,MAAM,CAAC;QACnB,QAAQ,CAAC,EAAE,MAAM,EAAE,EAAE,CAAC;KACvB,CAAC;IAEF,iBAAiB,CAAC,EAAC,WAAW,EAAC,EAAE,gBAAgB,CAAC,IAAI,CAAC,GAAG,OAAO;IAMjE,WAAW,CAAC,EAAC,KAAK,EAAE,WAAW,EAAC,EAAE,gBAAgB,CAAC,IAAI,CAAC,GAAG,IAAI;IAa/D,OAAO,CAAC,qBAAqB;IAgC7B,OAAO,CAAC,uBAAuB;IAe/B,OAAO,CAAC,eAAe;IA0CvB,YAAY,IAAI,KAAK,GAAG,IAAI,GAAG,UAAU;IAIzC,OAAO,CAAC,gBAAgB;IAsDxB,OAAO,CAAC,mBAAmB;IA0B3B,OAAO,CAAC,kBAAkB;CAuB3B"}