@developmentseed/deck.gl-geotiff 0.1.0-beta.6 → 0.1.0

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 (51) hide show
  1. package/dist/cog-layer.d.ts +107 -9
  2. package/dist/cog-layer.d.ts.map +1 -1
  3. package/dist/cog-layer.js +122 -95
  4. package/dist/cog-layer.js.map +1 -1
  5. package/dist/cog-tile-matrix-set.d.ts +2 -1
  6. package/dist/cog-tile-matrix-set.d.ts.map +1 -1
  7. package/dist/cog-tile-matrix-set.js +20 -23
  8. package/dist/cog-tile-matrix-set.js.map +1 -1
  9. package/dist/ellipsoids.d.ts +1 -1
  10. package/dist/ellipsoids.js +1 -1
  11. package/dist/geotiff/geotiff.d.ts +59 -0
  12. package/dist/geotiff/geotiff.d.ts.map +1 -0
  13. package/dist/geotiff/geotiff.js +146 -0
  14. package/dist/geotiff/geotiff.js.map +1 -0
  15. package/dist/geotiff/index.d.ts +1 -0
  16. package/dist/geotiff/index.d.ts.map +1 -0
  17. package/dist/geotiff/index.js +2 -0
  18. package/dist/geotiff/index.js.map +1 -0
  19. package/dist/geotiff/render-pipeline.d.ts +13 -0
  20. package/dist/geotiff/render-pipeline.d.ts.map +1 -0
  21. package/dist/geotiff/render-pipeline.js +149 -0
  22. package/dist/geotiff/render-pipeline.js.map +1 -0
  23. package/dist/geotiff/texture.d.ts +14 -0
  24. package/dist/geotiff/texture.d.ts.map +1 -0
  25. package/dist/geotiff/texture.js +134 -0
  26. package/dist/geotiff/texture.js.map +1 -0
  27. package/dist/geotiff/types.d.ts +34 -0
  28. package/dist/geotiff/types.d.ts.map +1 -0
  29. package/dist/geotiff/types.js +18 -0
  30. package/dist/geotiff/types.js.map +1 -0
  31. package/dist/geotiff-layer.d.ts +42 -3
  32. package/dist/geotiff-layer.d.ts.map +1 -1
  33. package/dist/geotiff-layer.js +21 -7
  34. package/dist/geotiff-layer.js.map +1 -1
  35. package/dist/geotiff-reprojection.d.ts +5 -11
  36. package/dist/geotiff-reprojection.d.ts.map +1 -1
  37. package/dist/geotiff-reprojection.js +8 -37
  38. package/dist/geotiff-reprojection.js.map +1 -1
  39. package/dist/index.d.ts +6 -4
  40. package/dist/index.d.ts.map +1 -1
  41. package/dist/index.js +4 -2
  42. package/dist/index.js.map +1 -1
  43. package/dist/proj.d.ts +24 -0
  44. package/dist/proj.d.ts.map +1 -0
  45. package/dist/proj.js +46 -0
  46. package/dist/proj.js.map +1 -0
  47. package/package.json +10 -15
  48. package/dist/geotiff.d.ts +0 -31
  49. package/dist/geotiff.d.ts.map +0 -1
  50. package/dist/geotiff.js +0 -70
  51. package/dist/geotiff.js.map +0 -1
@@ -1,11 +1,59 @@
1
- import type { CompositeLayerProps, UpdateParameters } from "@deck.gl/core";
1
+ import type { CompositeLayerProps, Layer, LayersList, UpdateParameters } from "@deck.gl/core";
2
2
  import { CompositeLayer } from "@deck.gl/core";
3
+ import type { _Tile2DHeader as Tile2DHeader, TileLayerProps, _TileLoadProps as TileLoadProps } from "@deck.gl/geo-layers";
3
4
  import { TileLayer } from "@deck.gl/geo-layers";
4
- import type { TileMatrixSet } from "@developmentseed/deck.gl-raster";
5
+ import type { RasterModule, TileMatrixSet } from "@developmentseed/deck.gl-raster";
5
6
  import type { ReprojectionFns } from "@developmentseed/raster-reproject";
6
- import type { GeoTIFF, GeoTIFFImage, Pool } from "geotiff";
7
- export interface COGLayerProps extends CompositeLayerProps {
8
- geotiff: GeoTIFF;
7
+ import type { Device } from "@luma.gl/core";
8
+ import type { BaseClient, GeoTIFF, GeoTIFFImage, Pool } from "geotiff";
9
+ import type { TextureDataT } from "./geotiff/render-pipeline.js";
10
+ import type { GeoKeysParser, ProjectionInfo } from "./proj.js";
11
+ /**
12
+ * Minimum interface that **must** be returned from getTileData.
13
+ */
14
+ export type MinimalDataT = {
15
+ height: number;
16
+ width: number;
17
+ };
18
+ export type DefaultDataT = MinimalDataT & {
19
+ texture: ImageData;
20
+ };
21
+ /** Options passed to `getTileData`. */
22
+ export type GetTileDataOptions = {
23
+ /** The luma.gl Device */
24
+ device: Device;
25
+ /** the subset to read data from in pixels. */
26
+ window?: [number, number, number, number];
27
+ /** An AbortSignal that may be signalled if the request is to be aborted */
28
+ signal?: AbortSignal;
29
+ /** The decoder pool to use. */
30
+ pool: Pool;
31
+ };
32
+ type GetTileDataResult<DataT> = {
33
+ data: DataT;
34
+ forwardTransform: ReprojectionFns["forwardTransform"];
35
+ inverseTransform: ReprojectionFns["inverseTransform"];
36
+ };
37
+ export interface COGLayerProps<DataT extends MinimalDataT = DefaultDataT> extends CompositeLayerProps {
38
+ /**
39
+ * GeoTIFF input.
40
+ *
41
+ * - URL string pointing to a COG
42
+ * - ArrayBuffer containing the COG data
43
+ * - Blob containing the COG data
44
+ * - An instance of GeoTIFF.js's GeoTIFF class
45
+ * - An instance of GeoTIFF.js's BaseClient for custom fetching
46
+ */
47
+ geotiff: GeoTIFF | string | ArrayBuffer | Blob | BaseClient;
48
+ /**
49
+ * A function callback for parsing GeoTIFF geo keys to a Proj4 compatible
50
+ * definition.
51
+ *
52
+ * By default, uses epsg.io to resolve EPSG codes found in the GeoTIFF.
53
+ * Alternatively, you may want to use `geotiff-geokeys-to-proj4`, which is
54
+ * more extensive but adds 1.5MB to your bundle size.
55
+ */
56
+ geoKeysParser?: GeoKeysParser;
9
57
  /**
10
58
  * GeoTIFF.js Pool for decoding image chunks.
11
59
  *
@@ -19,6 +67,26 @@ export interface COGLayerProps extends CompositeLayerProps {
19
67
  * @default 0.125
20
68
  */
21
69
  maxError?: number;
70
+ /**
71
+ * User-defined method to load data for a tile.
72
+ *
73
+ * The default implementation loads an RGBA image using geotiff.js's readRGB
74
+ * method, returning an ImageData object.
75
+ *
76
+ * For more customizability, you can also return a Texture object from
77
+ * luma.gl, along with optional custom shaders for the RasterLayer.
78
+ */
79
+ getTileData?: (image: GeoTIFFImage, options: GetTileDataOptions) => Promise<DataT>;
80
+ /**
81
+ * User-defined method to render data for a tile.
82
+ *
83
+ * This receives the data returned by getTileData and must return a render
84
+ * pipeline.
85
+ *
86
+ * The default implementation returns an object with a `texture` property,
87
+ * assuming that this texture is already renderable.
88
+ */
89
+ renderTile: (data: DataT) => ImageData | RasterModule[];
22
90
  /**
23
91
  * Enable debug visualization showing the triangulation mesh
24
92
  * @default false
@@ -29,25 +97,55 @@ export interface COGLayerProps extends CompositeLayerProps {
29
97
  * @default 0.5
30
98
  */
31
99
  debugOpacity?: number;
100
+ /**
101
+ * Called when the GeoTIFF metadata has been loaded and parsed.
102
+ *
103
+ * @param {GeoTIFF} geotiff
104
+ * @param {ProjectionInfo} projection
105
+ */
106
+ onGeoTIFFLoad?: (geotiff: GeoTIFF, options: {
107
+ projection: ProjectionInfo;
108
+ /**
109
+ * Bounds of the image in geographic coordinates (WGS84) [minLon, minLat,
110
+ * maxLon, maxLat]
111
+ */
112
+ geographicBounds: {
113
+ west: number;
114
+ south: number;
115
+ east: number;
116
+ north: number;
117
+ };
118
+ }) => void;
32
119
  }
33
120
  /**
34
121
  * COGLayer renders a COG using a tiled approach with reprojection.
35
122
  */
36
- export declare class COGLayer extends CompositeLayer<COGLayerProps> {
123
+ export declare class COGLayer<DataT extends MinimalDataT = DefaultDataT> extends CompositeLayer<COGLayerProps<DataT>> {
37
124
  static layerName: string;
38
- static defaultProps: {
39
- maxError: number;
40
- };
125
+ static defaultProps: Partial<COGLayerProps<DefaultDataT>>;
41
126
  state: {
42
127
  forwardReproject?: ReprojectionFns["forwardReproject"];
43
128
  inverseReproject?: ReprojectionFns["inverseReproject"];
44
129
  metadata?: TileMatrixSet;
45
130
  images?: GeoTIFFImage[];
131
+ defaultGetTileData?: COGLayerProps<TextureDataT>["getTileData"];
132
+ defaultRenderTile?: COGLayerProps<TextureDataT>["renderTile"];
46
133
  };
47
134
  initializeState(): void;
48
135
  updateState(params: UpdateParameters<this>): void;
49
136
  _parseGeoTIFF(): Promise<void>;
137
+ /**
138
+ * Inner callback passed in to the underlying TileLayer's `getTileData`.
139
+ */
140
+ _getTileData(tile: TileLoadProps, images: GeoTIFFImage[], metadata: TileMatrixSet): Promise<GetTileDataResult<DataT>>;
141
+ _renderSubLayers(props: TileLayerProps<GetTileDataResult<DataT>> & {
142
+ id: string;
143
+ data?: GetTileDataResult<DataT>;
144
+ _offset: number;
145
+ tile: Tile2DHeader<GetTileDataResult<DataT>>;
146
+ }, metadata: TileMatrixSet, forwardReproject: ReprojectionFns["forwardReproject"], inverseReproject: ReprojectionFns["inverseReproject"]): Layer | LayersList | null;
50
147
  renderTileLayer(metadata: TileMatrixSet, forwardReproject: ReprojectionFns["forwardReproject"], inverseReproject: ReprojectionFns["inverseReproject"], images: GeoTIFFImage[]): TileLayer;
51
148
  renderLayers(): TileLayer<any, {}> | null;
52
149
  }
150
+ export {};
53
151
  //# sourceMappingURL=cog-layer.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"cog-layer.d.ts","sourceRoot":"","sources":["../src/cog-layer.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,mBAAmB,EAEnB,gBAAgB,EACjB,MAAM,eAAe,CAAC;AACvB,OAAO,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AAC/C,OAAO,EAAE,SAAS,EAAE,MAAM,qBAAqB,CAAC;AAGhD,OAAO,KAAK,EAEV,aAAa,EACd,MAAM,iCAAiC,CAAC;AACzC,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,mCAAmC,CAAC;AACzE,OAAO,KAAK,EAAE,OAAO,EAAE,YAAY,EAAE,IAAI,EAAE,MAAM,SAAS,CAAC;AAe3D,MAAM,WAAW,aAAc,SAAQ,mBAAmB;IACxD,OAAO,EAAE,OAAO,CAAC;IAEjB;;;;;OAKG;IACH,IAAI,CAAC,EAAE,IAAI,CAAC;IAEZ;;;;OAIG;IACH,QAAQ,CAAC,EAAE,MAAM,CAAC;IAElB;;;OAGG;IACH,KAAK,CAAC,EAAE,OAAO,CAAC;IAEhB;;;OAGG;IACH,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB;AAMD;;GAEG;AACH,qBAAa,QAAS,SAAQ,cAAc,CAAC,aAAa,CAAC;IACzD,OAAgB,SAAS,SAAc;IACvC,OAAgB,YAAY;;MAAgB;IAEpC,KAAK,EAAE;QACb,gBAAgB,CAAC,EAAE,eAAe,CAAC,kBAAkB,CAAC,CAAC;QACvD,gBAAgB,CAAC,EAAE,eAAe,CAAC,kBAAkB,CAAC,CAAC;QACvD,QAAQ,CAAC,EAAE,aAAa,CAAC;QACzB,MAAM,CAAC,EAAE,YAAY,EAAE,CAAC;KACzB,CAAC;IAEO,eAAe,IAAI,IAAI;IAIvB,WAAW,CAAC,MAAM,EAAE,gBAAgB,CAAC,IAAI,CAAC;IAa7C,aAAa,IAAI,OAAO,CAAC,IAAI,CAAC;IAiCpC,eAAe,CACb,QAAQ,EAAE,aAAa,EACvB,gBAAgB,EAAE,eAAe,CAAC,kBAAkB,CAAC,EACrD,gBAAgB,EAAE,eAAe,CAAC,kBAAkB,CAAC,EACrD,MAAM,EAAE,YAAY,EAAE,GACrB,SAAS;IA8IZ,YAAY;CAiBb"}
1
+ {"version":3,"file":"cog-layer.d.ts","sourceRoot":"","sources":["../src/cog-layer.ts"],"names":[],"mappings":"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"}
package/dist/cog-layer.js CHANGED
@@ -4,11 +4,14 @@ import { PathLayer } from "@deck.gl/layers";
4
4
  import { RasterLayer, RasterTileset2D } from "@developmentseed/deck.gl-raster";
5
5
  import proj4 from "proj4";
6
6
  import { parseCOGTileMatrixSet } from "./cog-tile-matrix-set.js";
7
- import { fromGeoTransform, getGeoTIFFProjection, } from "./geotiff-reprojection.js";
8
- import { defaultPool, loadRgbImage } from "./geotiff.js";
9
- const DEFAULT_MAX_ERROR = 0.125;
7
+ import { defaultPool, fetchGeoTIFF, getGeographicBounds, } from "./geotiff/geotiff.js";
8
+ import { inferRenderPipeline } from "./geotiff/render-pipeline.js";
9
+ import { fromGeoTransform } from "./geotiff-reprojection.js";
10
+ import { epsgIoGeoKeyParser } from "./proj.js";
10
11
  const defaultProps = {
11
- maxError: DEFAULT_MAX_ERROR,
12
+ geoKeysParser: epsgIoGeoKeyParser,
13
+ debug: false,
14
+ debugOpacity: 0.5,
12
15
  };
13
16
  /**
14
17
  * COGLayer renders a COG using a tiled approach with reprojection.
@@ -28,30 +31,138 @@ export class COGLayer extends CompositeLayer {
28
31
  }
29
32
  }
30
33
  async _parseGeoTIFF() {
31
- const { geotiff } = this.props;
32
- const metadata = await parseCOGTileMatrixSet(geotiff);
34
+ const geotiff = await fetchGeoTIFF(this.props.geotiff);
35
+ const geoKeysParser = this.props.geoKeysParser;
36
+ const metadata = await parseCOGTileMatrixSet(geotiff, geoKeysParser);
33
37
  const image = await geotiff.getImage();
34
38
  const imageCount = await geotiff.getImageCount();
35
39
  const images = [];
36
40
  for (let imageIdx = 0; imageIdx < imageCount; imageIdx++) {
37
41
  images.push(await geotiff.getImage(imageIdx));
38
42
  }
39
- const sourceProjection = await getGeoTIFFProjection(image);
43
+ const sourceProjection = await geoKeysParser(image.getGeoKeys());
40
44
  if (!sourceProjection) {
41
45
  throw new Error("Could not determine source projection from GeoTIFF geo keys");
42
46
  }
43
- const converter = proj4(sourceProjection, "EPSG:4326");
47
+ const converter = proj4(sourceProjection.def, "EPSG:4326");
44
48
  const forwardReproject = (x, y) => converter.forward([x, y], false);
45
49
  const inverseReproject = (x, y) => converter.inverse([x, y], false);
50
+ if (this.props.onGeoTIFFLoad) {
51
+ const geographicBounds = getGeographicBounds(image, converter);
52
+ this.props.onGeoTIFFLoad(geotiff, {
53
+ projection: sourceProjection,
54
+ geographicBounds,
55
+ });
56
+ }
57
+ const { getTileData: defaultGetTileData, renderTile: defaultRenderTile } = inferRenderPipeline(image.fileDirectory, this.context.device);
46
58
  this.setState({
47
59
  metadata,
48
60
  forwardReproject,
49
61
  inverseReproject,
50
62
  images,
63
+ defaultGetTileData,
64
+ defaultRenderTile,
65
+ });
66
+ }
67
+ /**
68
+ * Inner callback passed in to the underlying TileLayer's `getTileData`.
69
+ */
70
+ async _getTileData(tile, images, metadata) {
71
+ const { signal } = tile;
72
+ const { x, y, z } = tile.index;
73
+ // Select overview image
74
+ const geotiffImage = images[images.length - 1 - z];
75
+ const imageHeight = geotiffImage.getHeight();
76
+ const imageWidth = geotiffImage.getWidth();
77
+ const tileMatrix = metadata.tileMatrices[z];
78
+ const { tileWidth, tileHeight } = tileMatrix;
79
+ const tileGeotransform = computeTileGeotransform(x, y, tileMatrix);
80
+ const { forwardTransform, inverseTransform } = fromGeoTransform(tileGeotransform);
81
+ const window = [
82
+ x * tileWidth,
83
+ y * tileHeight,
84
+ Math.min((x + 1) * tileWidth, imageWidth),
85
+ Math.min((y + 1) * tileHeight, imageHeight),
86
+ ];
87
+ const getTileData = this.props.getTileData || this.state.defaultGetTileData;
88
+ const data = await getTileData(geotiffImage, {
89
+ device: this.context.device,
90
+ window,
91
+ signal,
92
+ pool: this.props.pool || defaultPool(),
51
93
  });
94
+ return {
95
+ // @ts-expect-error type mismatch when using provided getTileData
96
+ data,
97
+ forwardTransform,
98
+ inverseTransform,
99
+ };
100
+ }
101
+ _renderSubLayers(
102
+ // TODO: it would be nice to have a cleaner type here
103
+ // this is copy-pasted from the upstream tile layer definition for props.
104
+ props, metadata, forwardReproject, inverseReproject) {
105
+ const { maxError, debug, debugOpacity } = this.props;
106
+ const { tile } = props;
107
+ if (!props.data) {
108
+ return null;
109
+ }
110
+ const { data, forwardTransform, inverseTransform } = props.data;
111
+ const layers = [];
112
+ if (data) {
113
+ const { height, width } = data;
114
+ const renderTile = this.props.renderTile || this.state.defaultRenderTile;
115
+ layers.push(new RasterLayer({
116
+ id: `${props.id}-raster`,
117
+ width,
118
+ height,
119
+ renderPipeline: renderTile(data),
120
+ maxError,
121
+ reprojectionFns: {
122
+ forwardTransform,
123
+ inverseTransform,
124
+ forwardReproject,
125
+ inverseReproject,
126
+ },
127
+ debug,
128
+ debugOpacity,
129
+ }));
130
+ }
131
+ if (debug) {
132
+ // Get projected bounds from tile data
133
+ // getTileMetadata returns data that includes projectedBounds
134
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
135
+ const projectedBounds = tile?.projectedBounds;
136
+ if (!projectedBounds || !metadata) {
137
+ return [];
138
+ }
139
+ // Project bounds from image CRS to WGS84
140
+ const { topLeft, topRight, bottomLeft, bottomRight } = projectedBounds;
141
+ const topLeftWgs84 = metadata.projectToWgs84(topLeft);
142
+ const topRightWgs84 = metadata.projectToWgs84(topRight);
143
+ const bottomRightWgs84 = metadata.projectToWgs84(bottomRight);
144
+ const bottomLeftWgs84 = metadata.projectToWgs84(bottomLeft);
145
+ // Create a closed path around the tile bounds
146
+ const path = [
147
+ topLeftWgs84,
148
+ topRightWgs84,
149
+ bottomRightWgs84,
150
+ bottomLeftWgs84,
151
+ topLeftWgs84, // Close the path
152
+ ];
153
+ layers.push(new PathLayer({
154
+ id: `${tile.id}-bounds`,
155
+ data: [{ path }],
156
+ getPath: (d) => d.path,
157
+ getColor: [255, 0, 0, 255], // Red
158
+ getWidth: 2,
159
+ widthUnits: "pixels",
160
+ pickable: false,
161
+ }));
162
+ }
163
+ return layers;
52
164
  }
53
165
  renderTileLayer(metadata, forwardReproject, inverseReproject, images) {
54
- const { maxError, debug = false, debugOpacity = 0.5 } = this.props;
55
166
  // Create a factory class that wraps COGTileset2D with the metadata
56
167
  class RasterTileset2DFactory extends RasterTileset2D {
57
168
  constructor(opts) {
@@ -61,92 +172,8 @@ export class COGLayer extends CompositeLayer {
61
172
  return new TileLayer({
62
173
  id: `cog-tile-layer-${this.id}`,
63
174
  TilesetClass: RasterTileset2DFactory,
64
- getTileData: async (tile) => {
65
- const { signal } = tile;
66
- const { x, y, z } = tile.index;
67
- // Select overview image
68
- const geotiffImage = images[images.length - 1 - z];
69
- const imageHeight = geotiffImage.getHeight();
70
- const imageWidth = geotiffImage.getWidth();
71
- const tileMatrix = metadata.tileMatrices[z];
72
- const { tileWidth, tileHeight } = tileMatrix;
73
- const tileGeotransform = computeTileGeotransform(x, y, tileMatrix);
74
- const { pixelToInputCRS, inputCRSToPixel } = fromGeoTransform(tileGeotransform);
75
- const window = [
76
- x * tileWidth,
77
- y * tileHeight,
78
- Math.min((x + 1) * tileWidth, imageWidth),
79
- Math.min((y + 1) * tileHeight, imageHeight),
80
- ];
81
- const { imageData, height, width } = await loadRgbImage(geotiffImage, {
82
- window,
83
- signal,
84
- pool: this.props.pool || defaultPool(),
85
- });
86
- return {
87
- image: imageData,
88
- height,
89
- width,
90
- pixelToInputCRS,
91
- inputCRSToPixel,
92
- };
93
- },
94
- renderSubLayers: (props) => {
95
- const { tile, data } = props;
96
- const layers = [];
97
- if (data) {
98
- const { image, height, width, pixelToInputCRS, inputCRSToPixel, } = data;
99
- const rasterLayer = new RasterLayer({
100
- id: `${props.id}-raster`,
101
- width,
102
- height,
103
- texture: image,
104
- maxError,
105
- reprojectionFns: {
106
- pixelToInputCRS,
107
- inputCRSToPixel,
108
- forwardReproject,
109
- inverseReproject,
110
- },
111
- debug,
112
- debugOpacity,
113
- });
114
- layers.push(rasterLayer);
115
- }
116
- if (debug) {
117
- // Get projected bounds from tile data
118
- // getTileMetadata returns data that includes projectedBounds
119
- // eslint-disable-next-line @typescript-eslint/no-explicit-any
120
- const projectedBounds = tile?.projectedBounds;
121
- if (!projectedBounds || !metadata) {
122
- return [];
123
- }
124
- // Project bounds from image CRS to WGS84
125
- const { topLeft, topRight, bottomLeft, bottomRight } = projectedBounds;
126
- const topLeftWgs84 = metadata.projectToWgs84(topLeft);
127
- const topRightWgs84 = metadata.projectToWgs84(topRight);
128
- const bottomRightWgs84 = metadata.projectToWgs84(bottomRight);
129
- const bottomLeftWgs84 = metadata.projectToWgs84(bottomLeft);
130
- // Create a closed path around the tile bounds
131
- const path = [
132
- topLeftWgs84,
133
- topRightWgs84,
134
- bottomRightWgs84,
135
- bottomLeftWgs84,
136
- topLeftWgs84, // Close the path
137
- ];
138
- layers.push(new PathLayer({
139
- id: `${tile.id}-bounds`,
140
- data: [{ path }],
141
- getPath: (d) => d.path,
142
- getColor: [255, 0, 0, 255], // Red
143
- getWidth: 2,
144
- widthUnits: "pixels",
145
- pickable: false,
146
- }));
147
- }
148
- return layers;
149
- },
175
+ getTileData: async (tile) => this._getTileData(tile, images, metadata),
176
+ renderSubLayers: (props) => this._renderSubLayers(props, metadata, forwardReproject, inverseReproject),
150
177
  });
151
178
  }
152
179
  renderLayers() {
@@ -1 +1 @@
1
- {"version":3,"file":"cog-layer.js","sourceRoot":"","sources":["../src/cog-layer.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"cog-layer.js","sourceRoot":"","sources":["../src/cog-layer.ts"],"names":[],"mappings":"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"}
@@ -1,5 +1,6 @@
1
1
  import type { TileMatrixSet } from "@developmentseed/deck.gl-raster";
2
2
  import type { GeoTIFF } from "geotiff";
3
+ import type { GeoKeysParser } from "./proj";
3
4
  /**
4
5
  *
5
6
  * Ported from Vincent's work here:
@@ -7,5 +8,5 @@ import type { GeoTIFF } from "geotiff";
7
8
  *
8
9
  * @return {TileMatrixSet}[return description]
9
10
  */
10
- export declare function parseCOGTileMatrixSet(tiff: GeoTIFF): Promise<TileMatrixSet>;
11
+ export declare function parseCOGTileMatrixSet(tiff: GeoTIFF, geoKeysParser: GeoKeysParser): Promise<TileMatrixSet>;
11
12
  //# sourceMappingURL=cog-tile-matrix-set.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"cog-tile-matrix-set.d.ts","sourceRoot":"","sources":["../src/cog-tile-matrix-set.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAEV,aAAa,EAEd,MAAM,iCAAiC,CAAC;AACzC,OAAO,KAAK,EAAE,OAAO,EAAgB,MAAM,SAAS,CAAC;AAarD;;;;;;GAMG;AACH,wBAAsB,qBAAqB,CACzC,IAAI,EAAE,OAAO,GACZ,OAAO,CAAC,aAAa,CAAC,CA0FxB"}
1
+ {"version":3,"file":"cog-tile-matrix-set.d.ts","sourceRoot":"","sources":["../src/cog-tile-matrix-set.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAEV,aAAa,EAEd,MAAM,iCAAiC,CAAC;AACzC,OAAO,KAAK,EAAE,OAAO,EAAgB,MAAM,SAAS,CAAC;AAIrD,OAAO,KAAK,EAAE,aAAa,EAAoC,MAAM,QAAQ,CAAC;AAM9E;;;;;;GAMG;AACH,wBAAsB,qBAAqB,CACzC,IAAI,EAAE,OAAO,EACb,aAAa,EAAE,aAAa,GAC3B,OAAO,CAAC,aAAa,CAAC,CAyFxB"}
@@ -1,6 +1,6 @@
1
- import { extractGeotransform, getGeoTIFFProjection, } from "./geotiff-reprojection";
2
1
  import proj4 from "proj4";
3
2
  import Ellipsoid from "./ellipsoids.js";
3
+ import { extractGeotransform } from "./geotiff-reprojection";
4
4
  // 0.28 mm per pixel
5
5
  // https://docs.ogc.org/is/17-083r4/17-083r4.html#toc15
6
6
  const SCREEN_PIXEL_SIZE = 0.00028;
@@ -11,7 +11,7 @@ const SCREEN_PIXEL_SIZE = 0.00028;
11
11
  *
12
12
  * @return {TileMatrixSet}[return description]
13
13
  */
14
- export async function parseCOGTileMatrixSet(tiff) {
14
+ export async function parseCOGTileMatrixSet(tiff, geoKeysParser) {
15
15
  const fullResImage = await tiff.getImage();
16
16
  if (!fullResImage.isTiled) {
17
17
  throw new Error("COG TileMatrixSet requires a tiled GeoTIFF");
@@ -20,13 +20,12 @@ export async function parseCOGTileMatrixSet(tiff) {
20
20
  const bbox = fullResImage.getBoundingBox();
21
21
  const fullImageWidth = fullResImage.getWidth();
22
22
  const fullImageHeight = fullResImage.getHeight();
23
- const crs = await getGeoTIFFProjection(fullResImage);
23
+ const crs = await geoKeysParser(fullResImage.getGeoKeys());
24
24
  if (crs === null) {
25
25
  throw new Error("Could not determine coordinate reference system from GeoTIFF geo keys");
26
26
  }
27
- const parsedCrs = parseCrs(crs);
28
- const projectToWgs84 = proj4(crs, "EPSG:4326").forward;
29
- const projectTo3857 = proj4(crs, "EPSG:3857").forward;
27
+ const projectToWgs84 = proj4(crs.def, "EPSG:4326").forward;
28
+ const projectTo3857 = proj4(crs.def, "EPSG:3857").forward;
30
29
  const boundingBox = {
31
30
  lowerLeft: [bbox[0], bbox[1]],
32
31
  upperRight: [bbox[2], bbox[3]],
@@ -43,7 +42,8 @@ export async function parseCOGTileMatrixSet(tiff) {
43
42
  {
44
43
  // Set as highest resolution / finest level
45
44
  id: String(imageCount - 1),
46
- scaleDenominator: (cellSize * metersPerUnit(parsedCrs)) / SCREEN_PIXEL_SIZE,
45
+ scaleDenominator: (cellSize * metersPerUnit(crs.parsed, crs.coordinatesUnits)) /
46
+ SCREEN_PIXEL_SIZE,
47
47
  cellSize,
48
48
  pointOfOrigin: [transform[2], transform[5]],
49
49
  tileWidth: fullResImage.getTileWidth(),
@@ -65,7 +65,7 @@ export async function parseCOGTileMatrixSet(tiff) {
65
65
  fullWidth: fullImageWidth,
66
66
  fullHeight: fullImageHeight,
67
67
  baseTransform: transform,
68
- parsedCrs,
68
+ crs,
69
69
  });
70
70
  tileMatrices.push(tileMatrix);
71
71
  }
@@ -89,10 +89,15 @@ export async function parseCOGTileMatrixSet(tiff) {
89
89
  * > If the CRS uses meters as units of measure for the horizontal dimensions,
90
90
  * > then metersPerUnit=1; if it has degrees, then metersPerUnit=2pa/360
91
91
  * > (a is the Earth maximum radius of the ellipsoid).
92
+ *
93
+ * If `crsUnit` is provided, it takes precedence over the unit defined in the
94
+ * CRS. This exists because sometimes the parsed CRS from
95
+ * `geotiff-geokeys-to-proj4` doesn't have a unit defined.
92
96
  */
93
97
  // https://github.com/developmentseed/morecantile/blob/7c95a11c491303700d6e33e9c1607f2719584dec/morecantile/utils.py#L67-L90
94
- function metersPerUnit(parsedCrs) {
95
- switch (parsedCrs.units) {
98
+ function metersPerUnit(parsedCrs, crsUnit) {
99
+ const unit = crsUnit || parsedCrs.units;
100
+ switch (unit) {
96
101
  case "metre":
97
102
  case "meter":
98
103
  case "meters":
@@ -102,17 +107,17 @@ function metersPerUnit(parsedCrs) {
102
107
  case "US survey foot":
103
108
  return 1200 / 3937;
104
109
  }
105
- if (parsedCrs.units === "degree") {
110
+ if (unit === "degree") {
106
111
  // 2 * π * ellipsoid semi-major-axis / 360
107
112
  const { a } = Ellipsoid[parsedCrs.ellps];
108
113
  return (2 * Math.PI * a) / 360;
109
114
  }
110
- throw new Error(`Unsupported CRS units: ${parsedCrs.units}`);
115
+ throw new Error(`Unsupported CRS units: ${unit}`);
111
116
  }
112
117
  /**
113
118
  * Create tile matrix for COG overview
114
119
  */
115
- function createOverviewTileMatrix({ id, image, fullWidth, baseTransform, parsedCrs, }) {
120
+ function createOverviewTileMatrix({ id, image, fullWidth, baseTransform, crs, }) {
116
121
  const width = image.getWidth();
117
122
  const height = image.getHeight();
118
123
  // For now, just use scaleX
@@ -136,7 +141,8 @@ function createOverviewTileMatrix({ id, image, fullWidth, baseTransform, parsedC
136
141
  const tileHeight = image.getTileHeight();
137
142
  return {
138
143
  id,
139
- scaleDenominator: (cellSize * metersPerUnit(parsedCrs)) / SCREEN_PIXEL_SIZE,
144
+ scaleDenominator: (cellSize * metersPerUnit(crs.parsed, crs.coordinatesUnits)) /
145
+ SCREEN_PIXEL_SIZE,
140
146
  cellSize,
141
147
  pointOfOrigin: [geotransform[2], geotransform[5]],
142
148
  tileWidth,
@@ -146,15 +152,6 @@ function createOverviewTileMatrix({ id, image, fullWidth, baseTransform, parsedC
146
152
  geotransform,
147
153
  };
148
154
  }
149
- function parseCrs(crs) {
150
- // If you pass proj4.defs a projjson, it doesn't parse it; it just returns the
151
- // input.
152
- //
153
- // Instead, you need to assign it to an alias and then retrieve it.
154
- const key = "__deck.gl-geotiff-internal__";
155
- proj4.defs(key, crs);
156
- return proj4.defs(key);
157
- }
158
155
  function computeWgs84BoundingBox(boundingBox, projectToWgs84) {
159
156
  const lowerLeftWgs84 = projectToWgs84(boundingBox.lowerLeft);
160
157
  const lowerRightWgs84 = projectToWgs84([
@@ -1 +1 @@
1
- {"version":3,"file":"cog-tile-matrix-set.js","sourceRoot":"","sources":["../src/cog-tile-matrix-set.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"cog-tile-matrix-set.js","sourceRoot":"","sources":["../src/cog-tile-matrix-set.ts"],"names":[],"mappings":"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"}
@@ -1,7 +1,7 @@
1
1
  /**
2
2
  * Vendored and edited from proj4.js.
3
3
  *
4
- * In the implementation of metersPerUnit while generated a COG TileMatrixSet,
4
+ * In the implementation of metersPerUnit while generating a COG TileMatrixSet,
5
5
  * we need to know the size of the semi major axis in the case the CRS is in
6
6
  * degrees.
7
7
  *
@@ -1,7 +1,7 @@
1
1
  /**
2
2
  * Vendored and edited from proj4.js.
3
3
  *
4
- * In the implementation of metersPerUnit while generated a COG TileMatrixSet,
4
+ * In the implementation of metersPerUnit while generating a COG TileMatrixSet,
5
5
  * we need to know the size of the semi major axis in the case the CRS is in
6
6
  * degrees.
7
7
  *