@developmentseed/geotiff 0.3.0-beta.3 → 0.3.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 (80) hide show
  1. package/README.md +64 -0
  2. package/dist/array.d.ts +12 -27
  3. package/dist/array.d.ts.map +1 -1
  4. package/dist/array.js.map +1 -1
  5. package/dist/codecs/lerc.d.ts +2 -2
  6. package/dist/codecs/lerc.d.ts.map +1 -1
  7. package/dist/codecs/lerc.js +23 -2
  8. package/dist/codecs/lerc.js.map +1 -1
  9. package/dist/codecs/lzw.d.ts.map +1 -1
  10. package/dist/codecs/lzw.js +2 -1
  11. package/dist/codecs/lzw.js.map +1 -1
  12. package/dist/codecs/predictor.d.ts +1 -2
  13. package/dist/codecs/predictor.d.ts.map +1 -1
  14. package/dist/codecs/predictor.js +1 -2
  15. package/dist/codecs/predictor.js.map +1 -1
  16. package/dist/codecs/utils.d.ts +2 -0
  17. package/dist/codecs/utils.d.ts.map +1 -0
  18. package/dist/codecs/utils.js +11 -0
  19. package/dist/codecs/utils.js.map +1 -0
  20. package/dist/codecs/zstd.d.ts +2 -0
  21. package/dist/codecs/zstd.d.ts.map +1 -0
  22. package/dist/codecs/zstd.js +7 -0
  23. package/dist/codecs/zstd.js.map +1 -0
  24. package/dist/decode.d.ts +32 -6
  25. package/dist/decode.d.ts.map +1 -1
  26. package/dist/decode.js +35 -15
  27. package/dist/decode.js.map +1 -1
  28. package/dist/fetch.d.ts +6 -2
  29. package/dist/fetch.d.ts.map +1 -1
  30. package/dist/fetch.js +178 -34
  31. package/dist/fetch.js.map +1 -1
  32. package/dist/gdal-metadata.d.ts +17 -0
  33. package/dist/gdal-metadata.d.ts.map +1 -0
  34. package/dist/gdal-metadata.js +59 -0
  35. package/dist/gdal-metadata.js.map +1 -0
  36. package/dist/geotiff.d.ts +91 -11
  37. package/dist/geotiff.d.ts.map +1 -1
  38. package/dist/geotiff.js +140 -43
  39. package/dist/geotiff.js.map +1 -1
  40. package/dist/ifd.d.ts +8 -8
  41. package/dist/ifd.d.ts.map +1 -1
  42. package/dist/ifd.js +21 -13
  43. package/dist/ifd.js.map +1 -1
  44. package/dist/index.d.ts +6 -3
  45. package/dist/index.d.ts.map +1 -1
  46. package/dist/index.js +2 -1
  47. package/dist/index.js.map +1 -1
  48. package/dist/overview.d.ts +33 -3
  49. package/dist/overview.d.ts.map +1 -1
  50. package/dist/overview.js +35 -2
  51. package/dist/overview.js.map +1 -1
  52. package/dist/pool/pool.d.ts +71 -0
  53. package/dist/pool/pool.d.ts.map +1 -0
  54. package/dist/pool/pool.js +100 -0
  55. package/dist/pool/pool.js.map +1 -0
  56. package/dist/pool/worker.d.ts +23 -0
  57. package/dist/pool/worker.d.ts.map +1 -0
  58. package/dist/pool/worker.js +37 -0
  59. package/dist/pool/worker.js.map +1 -0
  60. package/dist/pool/wrapper.d.ts +37 -0
  61. package/dist/pool/wrapper.d.ts.map +1 -0
  62. package/dist/pool/wrapper.js +46 -0
  63. package/dist/pool/wrapper.js.map +1 -0
  64. package/dist/tile-matrix-set.d.ts.map +1 -1
  65. package/dist/tile-matrix-set.js +12 -12
  66. package/dist/tile-matrix-set.js.map +1 -1
  67. package/dist/transform.d.ts +7 -0
  68. package/dist/transform.d.ts.map +1 -1
  69. package/dist/transform.js +40 -1
  70. package/dist/transform.js.map +1 -1
  71. package/package.json +18 -12
  72. package/dist/api.d.ts +0 -34
  73. package/dist/api.d.ts.map +0 -1
  74. package/dist/api.js +0 -84
  75. package/dist/api.js.map +0 -1
  76. package/dist/decode/api.d.ts +0 -28
  77. package/dist/decode/api.d.ts.map +0 -1
  78. package/dist/decode/api.js +0 -80
  79. package/dist/decode/api.js.map +0 -1
  80. package/dist/tsconfig.tsbuildinfo +0 -1
package/dist/geotiff.js CHANGED
@@ -1,34 +1,48 @@
1
- import { SourceCache } from "@chunkd/middleware";
2
- import { SourceChunk } from "@chunkd/middleware/build/src/middleware/chunk.js";
1
+ import { SourceCache, SourceChunk } from "@chunkd/middleware";
3
2
  import { SourceView } from "@chunkd/source";
4
3
  import { SourceHttp } from "@chunkd/source-http";
5
4
  import { SourceMemory } from "@chunkd/source-memory";
6
5
  import { Photometric, SubFileType, Tiff, TiffTag } from "@cogeotiff/core";
7
6
  import { crsFromGeoKeys } from "./crs.js";
8
7
  import { fetchTile } from "./fetch.js";
8
+ import { parseGDALMetadata } from "./gdal-metadata.js";
9
9
  import { extractGeoKeyDirectory, prefetchTags } from "./ifd.js";
10
10
  import { Overview } from "./overview.js";
11
- import { index, xy } from "./transform.js";
11
+ import { createTransform, index, xy } from "./transform.js";
12
12
  /**
13
- * A higher-level GeoTIFF abstraction built on @cogeotiff/core.
13
+ * A high-level GeoTIFF abstraction built on
14
+ * {@link https://github.com/blacha/cogeotiff | @cogeotiff/core}'s `Tiff` and
15
+ * `TiffImage` classes.
14
16
  *
15
- * Separates data IFDs from mask IFDs, pairs them by resolution level,
16
- * and exposes sorted overviews. Mirrors the Python async-geotiff API.
17
+ * This class separates data IFDs from mask IFDs, pairs them by resolution
18
+ * level, and exposes sorted overviews. Intentionally mirrors the Python
19
+ * {@link https://github.com/developmentseed/async-geotiff | async-geotiff} API
20
+ * as closely as possible.
17
21
  *
18
- * Construct via `GeoTIFF.open(source)` or `GeoTIFF.fromTiff(tiff)`.
22
+ * Construct via {@link GeoTIFF.fromUrl}, {@link GeoTIFF.fromArrayBuffer},
23
+ * {@link GeoTIFF.open} or {@link GeoTIFF.fromTiff}.
24
+ *
25
+ * @see {@link Overview} for reduced-resolution overview images.
19
26
  */
20
27
  export class GeoTIFF {
21
28
  /**
22
29
  * Reduced-resolution overview levels, sorted finest-to-coarsest.
23
30
  *
24
- * Does not include the full-resolution image — use `fetchTile` / methods
25
- * on the GeoTIFF instance itself for that.
31
+ * Does not include the full-resolution image — use {@link fetchTile} on the
32
+ * GeoTIFF instance itself for that.
26
33
  */
27
34
  overviews;
28
35
  /** A cached CRS value. */
29
36
  _crs;
30
37
  /** Cached TIFF tags that are pre-fetched when opening the GeoTIFF. */
31
38
  cachedTags;
39
+ /** The data source used for fetching tile data.
40
+ *
41
+ * This is typically the raw source (e.g. HTTP or memory) rather than a
42
+ * layered source with caching and chunking, to avoid unnecessary copying of
43
+ * tile data through cache layers.
44
+ */
45
+ dataSource;
32
46
  /** The underlying Tiff instance. */
33
47
  tiff;
34
48
  /** The primary (full-resolution) TiffImage. */
@@ -37,30 +51,43 @@ export class GeoTIFF {
37
51
  maskImage;
38
52
  /** The GeoKeyDirectory of the primary IFD. */
39
53
  gkd;
40
- constructor(tiff, image, maskImage, gkd, overviews, cachedTags) {
54
+ /** Parsed GDALMetadata tag, if present. */
55
+ gdalMetadata;
56
+ constructor(tiff, image, maskImage, gkd, overviews, cachedTags, dataSource, gdalMetadata) {
41
57
  this.tiff = tiff;
42
58
  this.image = image;
43
59
  this.maskImage = maskImage;
44
60
  this.gkd = gkd;
45
61
  this.overviews = overviews;
46
62
  this.cachedTags = cachedTags;
63
+ this.dataSource = dataSource;
64
+ this.gdalMetadata = gdalMetadata;
47
65
  }
48
66
  /**
49
67
  * Open a GeoTIFF from a @cogeotiff/core Source.
50
68
  *
51
69
  * This creates and initialises the underlying Tiff, then classifies IFDs.
70
+ *
71
+ * @param options.dataSource A source for fetching tile data. This is separate from the source used to construct the TIFF to allow for separate caching implementations.
72
+ * @param options.headerSource The source used to construct the TIFF. This is typically a layered source with caching and chunking, to optimise access to TIFF tags and IFDs.
73
+ * @param options.prefetch Number of bytes to prefetch when reading TIFF tags and IFDs. Defaults to 32KB, which is enough for most tags and small IFDs. Increase if you have many tags or large IFDs.
52
74
  */
53
- static async open(source) {
54
- const tiff = await Tiff.create(source);
55
- return GeoTIFF.fromTiff(tiff);
75
+ static async open(options) {
76
+ const { dataSource, headerSource, prefetch = 32 * 1024 } = options;
77
+ const tiff = await Tiff.create(headerSource, {
78
+ defaultReadSize: prefetch,
79
+ });
80
+ return GeoTIFF.fromTiff(tiff, dataSource);
56
81
  }
57
82
  /**
58
83
  * Create a GeoTIFF from an already-initialised Tiff instance.
59
84
  *
60
85
  * All IFDs are walked; mask IFDs are matched to data IFDs by matching
61
86
  * (width, height). Overviews are sorted from finest to coarsest resolution.
87
+ *
88
+ * @param dataSource A source for fetching tile data. This is separate from the source used to construct the TIFF to allow for separate caching implementations.
62
89
  */
63
- static async fromTiff(tiff) {
90
+ static async fromTiff(tiff, dataSource) {
64
91
  const images = tiff.images;
65
92
  if (images.length === 0) {
66
93
  throw new Error("TIFF does not contain any IFDs");
@@ -97,29 +124,72 @@ export class GeoTIFF {
97
124
  return sb.width * sb.height - sa.width * sa.height;
98
125
  });
99
126
  const cachedTags = await prefetchTags(primaryImage);
127
+ const gdalMetadata = parseGDALMetadata(cachedTags.gdalMetadata, {
128
+ count: cachedTags.samplesPerPixel,
129
+ });
100
130
  // Two-phase construction: create the GeoTIFF first (with empty overviews),
101
131
  // then build Overviews that reference back to it.
102
- const geotiff = new GeoTIFF(tiff, primaryImage, primaryMask, gkd, [], cachedTags);
132
+ const geotiff = new GeoTIFF(tiff, primaryImage, primaryMask, gkd, [], cachedTags, dataSource, gdalMetadata);
103
133
  const overviews = dataEntries.map(([key, dataImage]) => {
104
134
  const maskImage = maskIFDs.get(key) ?? null;
105
- return new Overview(geotiff, gkd, dataImage, maskImage, cachedTags);
135
+ return new Overview(geotiff, gkd, dataImage, maskImage, cachedTags, dataSource);
106
136
  });
107
137
  // Mutate the readonly field — safe here because we're still in the factory.
108
138
  geotiff.overviews = overviews;
109
139
  return geotiff;
110
140
  }
141
+ /**
142
+ * Create a GeoTIFF from an ArrayBuffer containing the entire file.
143
+ *
144
+ * This is a convenience method that wraps the ArrayBuffer in a memory source
145
+ * and calls {@link GeoTIFF.open}. For large files, consider using
146
+ * {@link GeoTIFF.fromUrl} or {@link GeoTIFF.open} with a chunked HTTP source
147
+ * to avoid loading the entire file into memory at once.
148
+ *
149
+ * @param input The ArrayBuffer containing the GeoTIFF file data.
150
+ * @returns A Promise that resolves to a GeoTIFF instance.
151
+ */
111
152
  static async fromArrayBuffer(input) {
112
153
  const source = new SourceMemory("memory://input.tif", input);
113
- return await GeoTIFF.open(source);
154
+ return await GeoTIFF.open({
155
+ dataSource: source,
156
+ headerSource: source,
157
+ });
114
158
  }
115
- static async fromUrl(url, { chunkSize = 32 * 1024, cacheSize = 1024 * 1024 * 1024, } = {}) {
159
+ /**
160
+ * Create a new GeoTIFF from a URL.
161
+ *
162
+ * @param url The URL of the GeoTIFF to open.
163
+ * @param options Optional parameters for chunk size and cache size.
164
+ * @param options.chunkSize The minimum size for each request made to the source while reading header metadata. Defaults to 32KB.
165
+ * @param options.cacheSize The size of the cache for recently accessed header chunks. Currently no caching is applied to data fetches. Defaults to 1MB.
166
+ * @returns A Promise that resolves to a GeoTIFF instance.
167
+ */
168
+ static async fromUrl(url, { chunkSize = 32 * 1024, cacheSize = 1024 * 1024, } = {}) {
169
+ // Bypass Chrome disk cache, which serializes multiple range requests to the
170
+ // same URL.
171
+ // https://www.chromium.org/developers/design-documents/network-stack/http-cache/
172
+ // > The cache implements a single writer - multiple reader lock so that
173
+ // > only one network request for the same resource is in flight at any
174
+ // > given time.
175
+ const source = new SourceHttp(url, {
176
+ cache: "public, no-store, s-maxage=86400",
177
+ });
178
+ // Figure out optimal defaults in light of
179
+ // https://github.com/blacha/cogeotiff/issues/1431
180
+ // Defaulting to 32KB chunks is too small for tile data.
181
+ // https://github.com/developmentseed/deck.gl-raster/issues/294
116
182
  // read files in chunks
117
183
  const chunk = new SourceChunk({ size: chunkSize });
118
- // 1MB cache for recently accessed chunks
184
+ // 10MB cache for recently accessed chunks
119
185
  const cache = new SourceCache({ size: cacheSize });
120
- const source = new SourceHttp(url);
121
186
  const view = new SourceView(source, [chunk, cache]);
122
- return await GeoTIFF.open(view);
187
+ return await GeoTIFF.open({
188
+ // Use raw source for tile data to avoid unnecessary copying through the
189
+ // cache and chunk layers.
190
+ dataSource: source,
191
+ headerSource: view,
192
+ });
123
193
  }
124
194
  // ── Properties from the primary image ─────────────────────────────────
125
195
  /**
@@ -144,6 +214,10 @@ export class GeoTIFF {
144
214
  get height() {
145
215
  return this.image.size.height;
146
216
  }
217
+ /** The number of tiles in the x and y directions */
218
+ get tileCount() {
219
+ return this.image.tileCount;
220
+ }
147
221
  /** Tile width in pixels. */
148
222
  get tileWidth() {
149
223
  return this.image.tileSize.width;
@@ -152,7 +226,7 @@ export class GeoTIFF {
152
226
  get tileHeight() {
153
227
  return this.image.tileSize.height;
154
228
  }
155
- /** The NoData value, or null if not set. */
229
+ /** The no data value, or null if not set. */
156
230
  get nodata() {
157
231
  return this.image.noData;
158
232
  }
@@ -160,6 +234,34 @@ export class GeoTIFF {
160
234
  get isTiled() {
161
235
  return this.image.isTiled();
162
236
  }
237
+ /**
238
+ * The pre-existing statistics for each band, if available.
239
+ *
240
+ * Extracted from the GDALMetadata TIFF tag; never computed on demand.
241
+ * Keys are **1-based** band indices to match GDAL's convention.
242
+ *
243
+ * Returns `null` if no statistics are stored in the file.
244
+ */
245
+ get storedStats() {
246
+ const stats = this.gdalMetadata?.bandStatistics;
247
+ return stats && stats.size > 0 ? stats : null;
248
+ }
249
+ /**
250
+ * The offset for each band (0-indexed), defaulting to 0.
251
+ *
252
+ * Extracted from the GDALMetadata TIFF tag.
253
+ */
254
+ get offsets() {
255
+ return this.gdalMetadata?.offsets ?? Array(this.count).fill(0);
256
+ }
257
+ /**
258
+ * The scale for each band (0-indexed), defaulting to 1.
259
+ *
260
+ * Extracted from the GDALMetadata TIFF tag.
261
+ */
262
+ get scales() {
263
+ return this.gdalMetadata?.scales ?? Array(this.count).fill(1);
264
+ }
163
265
  /** Number of bands (samples per pixel). */
164
266
  get count() {
165
267
  return this.image.value(TiffTag.SamplesPerPixel) ?? 1;
@@ -172,29 +274,24 @@ export class GeoTIFF {
172
274
  * Return the dataset's georeferencing transformation matrix.
173
275
  */
174
276
  get transform() {
175
- const origin = this.image.origin;
176
- const resolution = this.image.resolution;
177
- // Check for rotation via ModelTransformation.
178
- // This tag is pre-fetched by @cogeotiff/core during initialization,
179
- // so value() is safe to call synchronously.
180
- const modelTransformation = this.image.value(TiffTag.ModelTransformation);
181
- let b = 0; // row rotation
182
- let d = 0; // column rotation
183
- if (modelTransformation != null && modelTransformation.length >= 16) {
184
- b = modelTransformation[1];
185
- d = modelTransformation[4];
186
- }
187
- return [
188
- resolution[0], // a: pixel width (x per col)
189
- b, // b: row rotation
190
- origin[0], // c: x origin
191
- d, // d: column rotation
192
- resolution[1], // e: pixel height (negative = north-up)
193
- origin[1], // f: y origin
194
- ];
277
+ const { modelPixelScale, modelTiepoint, modelTransformation } = this.cachedTags;
278
+ return createTransform({
279
+ modelTiepoint,
280
+ modelPixelScale,
281
+ modelTransformation,
282
+ rasterType: this.gkd.rasterType,
283
+ });
195
284
  }
196
285
  // Mixins
197
- /** Fetch a single tile from the full-resolution image. */
286
+ /** Fetch a single tile from the full-resolution image.
287
+ *
288
+ * @param x The tile column index (0-based).
289
+ * @param y The tile row index (0-based).
290
+ * @param options Optional parameters for fetching the tile.
291
+ * @param options.boundless Whether to clip tiles that are partially outside the image bounds. When `true`, no clipping is applied. Defaults to `true`.
292
+ * @param options.pool An optional {@link DecoderPool} for decoding the tile data. If not provided, a new decoder will be created for each tile.
293
+ * @param options.signal An optional {@link AbortSignal} to cancel the fetch request.
294
+ */
198
295
  async fetchTile(x, y, options = {}) {
199
296
  return await fetchTile(this, x, y, options);
200
297
  }
@@ -1 +1 @@
1
- {"version":3,"file":"geotiff.js","sourceRoot":"","sources":["../src/geotiff.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"geotiff.js","sourceRoot":"","sources":["../src/geotiff.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AAC9D,OAAO,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAC;AAC5C,OAAO,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC;AACjD,OAAO,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAC;AAErD,OAAO,EAAE,WAAW,EAAE,WAAW,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,iBAAiB,CAAC;AAG1E,OAAO,EAAE,cAAc,EAAE,MAAM,UAAU,CAAC;AAC1C,OAAO,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AAEvC,OAAO,EAAE,iBAAiB,EAAE,MAAM,oBAAoB,CAAC;AAEvD,OAAO,EAAE,sBAAsB,EAAE,YAAY,EAAE,MAAM,UAAU,CAAC;AAChE,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AAGzC,OAAO,EAAE,eAAe,EAAE,KAAK,EAAE,EAAE,EAAE,MAAM,gBAAgB,CAAC;AAE5D;;;;;;;;;;;;;;GAcG;AACH,MAAM,OAAO,OAAO;IAClB;;;;;OAKG;IACM,SAAS,CAAa;IAE/B,0BAA0B;IAClB,IAAI,CAAqB;IAEjC,sEAAsE;IAC7D,UAAU,CAAa;IAEhC;;;;;OAKG;IACM,UAAU,CAAwB;IAE3C,oCAAoC;IAC3B,IAAI,CAAO;IAEpB,+CAA+C;IACtC,KAAK,CAAY;IAE1B,2DAA2D;IAClD,SAAS,CAAmB;IAErC,8CAA8C;IACrC,GAAG,CAAkB;IAE9B,2CAA2C;IAClC,YAAY,CAAsB;IAE3C,YACE,IAAU,EACV,KAAgB,EAChB,SAA2B,EAC3B,GAAoB,EACpB,SAAqB,EACrB,UAAsB,EACtB,UAAiC,EACjC,YAAiC;QAEjC,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;QACjB,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;QACnB,IAAI,CAAC,SAAS,GAAG,SAAS,CAAC;QAC3B,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC;QACf,IAAI,CAAC,SAAS,GAAG,SAAS,CAAC;QAC3B,IAAI,CAAC,UAAU,GAAG,UAAU,CAAC;QAC7B,IAAI,CAAC,UAAU,GAAG,UAAU,CAAC;QAC7B,IAAI,CAAC,YAAY,GAAG,YAAY,CAAC;IACnC,CAAC;IAED;;;;;;;;OAQG;IACH,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,OAIjB;QACC,MAAM,EAAE,UAAU,EAAE,YAAY,EAAE,QAAQ,GAAG,EAAE,GAAG,IAAI,EAAE,GAAG,OAAO,CAAC;QACnE,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,YAAY,EAAE;YAC3C,eAAe,EAAE,QAAQ;SAC1B,CAAC,CAAC;QACH,OAAO,OAAO,CAAC,QAAQ,CAAC,IAAI,EAAE,UAAU,CAAC,CAAC;IAC5C,CAAC;IAED;;;;;;;OAOG;IACH,MAAM,CAAC,KAAK,CAAC,QAAQ,CACnB,IAAU,EACV,UAAiC;QAEjC,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC;QAC3B,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACxB,MAAM,IAAI,KAAK,CAAC,gCAAgC,CAAC,CAAC;QACpD,CAAC;QAED,gDAAgD;QAChD,4HAA4H;QAC5H,MAAM,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAE3D,MAAM,YAAY,GAAG,MAAM,CAAC,CAAC,CAAE,CAAC;QAChC,MAAM,GAAG,GAAG,sBAAsB,CAAC,YAAY,CAAC,CAAC;QAEjD,8DAA8D;QAC9D,2BAA2B;QAC3B,MAAM,QAAQ,GAAG,IAAI,GAAG,EAAqB,CAAC;QAC9C,MAAM,QAAQ,GAAG,IAAI,GAAG,EAAqB,CAAC;QAE9C,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;YACvC,MAAM,KAAK,GAAG,MAAM,CAAC,CAAC,CAAE,CAAC;YACzB,MAAM,IAAI,GAAG,KAAK,CAAC,IAAI,CAAC;YACxB,MAAM,GAAG,GAAG,GAAG,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC;YAE3C,IAAI,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC;gBACrB,QAAQ,CAAC,GAAG,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;YAC3B,CAAC;iBAAM,CAAC;gBACN,QAAQ,CAAC,GAAG,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;YAC3B,CAAC;QACH,CAAC;QAED,iCAAiC;QACjC,MAAM,UAAU,GAAG,GAAG,YAAY,CAAC,IAAI,CAAC,KAAK,IAAI,YAAY,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC;QAC5E,MAAM,WAAW,GAAG,QAAQ,CAAC,GAAG,CAAC,UAAU,CAAC,IAAI,IAAI,CAAC;QAErD,qEAAqE;QACrE,6BAA6B;QAC7B,MAAM,WAAW,GAAG,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,OAAO,EAAE,CAAC,CAAC;QACnD,WAAW,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE;YACxB,MAAM,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;YACrB,MAAM,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;YACrB,OAAO,EAAE,CAAC,KAAK,GAAG,EAAE,CAAC,MAAM,GAAG,EAAE,CAAC,KAAK,GAAG,EAAE,CAAC,MAAM,CAAC;QACrD,CAAC,CAAC,CAAC;QAEH,MAAM,UAAU,GAAG,MAAM,YAAY,CAAC,YAAY,CAAC,CAAC;QACpD,MAAM,YAAY,GAAG,iBAAiB,CAAC,UAAU,CAAC,YAAY,EAAE;YAC9D,KAAK,EAAE,UAAU,CAAC,eAAe;SAClC,CAAC,CAAC;QAEH,2EAA2E;QAC3E,kDAAkD;QAClD,MAAM,OAAO,GAAG,IAAI,OAAO,CACzB,IAAI,EACJ,YAAY,EACZ,WAAW,EACX,GAAG,EACH,EAAE,EACF,UAAU,EACV,UAAU,EACV,YAAY,CACb,CAAC;QAEF,MAAM,SAAS,GAAe,WAAW,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,EAAE,SAAS,CAAC,EAAE,EAAE;YACjE,MAAM,SAAS,GAAG,QAAQ,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,IAAI,CAAC;YAC5C,OAAO,IAAI,QAAQ,CACjB,OAAO,EACP,GAAG,EACH,SAAS,EACT,SAAS,EACT,UAAU,EACV,UAAU,CACX,CAAC;QACJ,CAAC,CAAC,CAAC;QAEH,4EAA4E;QAC3E,OAAqC,CAAC,SAAS,GAAG,SAAS,CAAC;QAE7D,OAAO,OAAO,CAAC;IACjB,CAAC;IAED;;;;;;;;;;OAUG;IACH,MAAM,CAAC,KAAK,CAAC,eAAe,CAAC,KAAkB;QAC7C,MAAM,MAAM,GAAG,IAAI,YAAY,CAAC,oBAAoB,EAAE,KAAK,CAAC,CAAC;QAC7D,OAAO,MAAM,OAAO,CAAC,IAAI,CAAC;YACxB,UAAU,EAAE,MAAM;YAClB,YAAY,EAAE,MAAM;SACrB,CAAC,CAAC;IACL,CAAC;IAED;;;;;;;;OAQG;IACH,MAAM,CAAC,KAAK,CAAC,OAAO,CAClB,GAAiB,EACjB,EACE,SAAS,GAAG,EAAE,GAAG,IAAI,EACrB,SAAS,GAAG,IAAI,GAAG,IAAI,MACuB,EAAE;QAElD,4EAA4E;QAC5E,YAAY;QACZ,iFAAiF;QACjF,wEAAwE;QACxE,uEAAuE;QACvE,gBAAgB;QAChB,MAAM,MAAM,GAAG,IAAI,UAAU,CAAC,GAAG,EAAE;YACjC,KAAK,EAAE,kCAAkC;SAC1C,CAAC,CAAC;QAEH,0CAA0C;QAC1C,kDAAkD;QAClD,wDAAwD;QACxD,+DAA+D;QAE/D,uBAAuB;QACvB,MAAM,KAAK,GAAG,IAAI,WAAW,CAAC,EAAE,IAAI,EAAE,SAAS,EAAE,CAAC,CAAC;QACnD,0CAA0C;QAC1C,MAAM,KAAK,GAAG,IAAI,WAAW,CAAC,EAAE,IAAI,EAAE,SAAS,EAAE,CAAC,CAAC;QAEnD,MAAM,IAAI,GAAG,IAAI,UAAU,CAAC,MAAM,EAAE,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC,CAAC;QAEpD,OAAO,MAAM,OAAO,CAAC,IAAI,CAAC;YACxB,wEAAwE;YACxE,0BAA0B;YAC1B,UAAU,EAAE,MAAM;YAClB,YAAY,EAAE,IAAI;SACnB,CAAC,CAAC;IACL,CAAC;IAED,yEAAyE;IAEzE;;;;;;;OAOG;IACH,IAAI,GAAG;QACL,IAAI,IAAI,CAAC,IAAI,KAAK,SAAS,EAAE,CAAC;YAC5B,IAAI,CAAC,IAAI,GAAG,cAAc,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QACvC,CAAC;QACD,OAAO,IAAI,CAAC,IAAI,CAAC;IACnB,CAAC;IAED,6BAA6B;IAC7B,IAAI,KAAK;QACP,OAAO,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC;IAC/B,CAAC;IAED,8BAA8B;IAC9B,IAAI,MAAM;QACR,OAAO,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC;IAChC,CAAC;IAED,oDAAoD;IACpD,IAAI,SAAS;QACX,OAAO,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC;IAC9B,CAAC;IAED,4BAA4B;IAC5B,IAAI,SAAS;QACX,OAAO,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC;IACnC,CAAC;IAED,6BAA6B;IAC7B,IAAI,UAAU;QACZ,OAAO,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,MAAM,CAAC;IACpC,CAAC;IAED,6CAA6C;IAC7C,IAAI,MAAM;QACR,OAAO,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC;IAC3B,CAAC;IAED,0CAA0C;IAC1C,IAAI,OAAO;QACT,OAAO,IAAI,CAAC,KAAK,CAAC,OAAO,EAAE,CAAC;IAC9B,CAAC;IAED;;;;;;;OAOG;IACH,IAAI,WAAW;QACb,MAAM,KAAK,GAAG,IAAI,CAAC,YAAY,EAAE,cAAc,CAAC;QAChD,OAAO,KAAK,IAAI,KAAK,CAAC,IAAI,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC;IAChD,CAAC;IAED;;;;OAIG;IACH,IAAI,OAAO;QACT,OAAO,IAAI,CAAC,YAAY,EAAE,OAAO,IAAI,KAAK,CAAS,IAAI,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IACzE,CAAC;IAED;;;;OAIG;IACH,IAAI,MAAM;QACR,OAAO,IAAI,CAAC,YAAY,EAAE,MAAM,IAAI,KAAK,CAAS,IAAI,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IACxE,CAAC;IAED,2CAA2C;IAC3C,IAAI,KAAK;QACP,OAAO,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,OAAO,CAAC,eAAe,CAAC,IAAI,CAAC,CAAC;IACxD,CAAC;IAED,wDAAwD;IACxD,IAAI,IAAI;QACN,OAAO,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC;IACzB,CAAC;IAED;;OAEG;IACH,IAAI,SAAS;QACX,MAAM,EAAE,eAAe,EAAE,aAAa,EAAE,mBAAmB,EAAE,GAC3D,IAAI,CAAC,UAAU,CAAC;QAClB,OAAO,eAAe,CAAC;YACrB,aAAa;YACb,eAAe;YACf,mBAAmB;YACnB,UAAU,EAAE,IAAI,CAAC,GAAG,CAAC,UAAU;SAChC,CAAC,CAAC;IACL,CAAC;IAED,SAAS;IAET;;;;;;;;OAQG;IACH,KAAK,CAAC,SAAS,CACb,CAAS,EACT,CAAS,EACT,UAII,EAAE;QAEN,OAAO,MAAM,SAAS,CAAC,IAAI,EAAE,CAAC,EAAE,CAAC,EAAE,OAAO,CAAC,CAAC;IAC9C,CAAC;IAED,kBAAkB;IAElB;;;;;;;;OAQG;IACH,KAAK,CACH,CAAS,EACT,CAAS,EACT,KAA4B,IAAI,CAAC,KAAK;QAEtC,OAAO,KAAK,CAAC,IAAI,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC;IAC/B,CAAC;IAED;;;;;;;OAOG;IACH,EAAE,CACA,GAAW,EACX,GAAW,EACX,SAA+C,QAAQ;QAEvD,OAAO,EAAE,CAAC,IAAI,EAAE,GAAG,EAAE,GAAG,EAAE,MAAM,CAAC,CAAC;IACpC,CAAC;CACF;AAED;;;;;GAKG;AACH,MAAM,UAAU,SAAS,CAAC,KAAgB;IACxC,MAAM,WAAW,GAAG,KAAK,CAAC,KAAK,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC;IACrD,MAAM,WAAW,GAAG,KAAK,CAAC,KAAK,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC;IAErD,OAAO,CACL,WAAW,KAAK,IAAI;QACpB,CAAC,WAAW,GAAG,WAAW,CAAC,IAAI,CAAC,KAAK,CAAC;QACtC,WAAW,KAAK,WAAW,CAAC,IAAI,CACjC,CAAC;AACJ,CAAC"}
package/dist/ifd.d.ts CHANGED
@@ -1,17 +1,15 @@
1
1
  import type { TiffImage, TiffTagGeoType, TiffTagType } from "@cogeotiff/core";
2
- import { TiffTag, TiffTagGeo } from "@cogeotiff/core";
3
- export declare enum Predictor {
4
- None = 1,
5
- /** Horizontal differencing */
6
- Horizontal = 2,
7
- /** Floating point */
8
- FloatingPoint = 3
9
- }
2
+ import { Predictor, TiffTag, TiffTagGeo } from "@cogeotiff/core";
10
3
  /** Subset of TIFF tags that we pre-fetch for easier visualization. */
11
4
  export interface CachedTags {
12
5
  bitsPerSample: Uint16Array;
13
6
  colorMap?: Uint16Array;
14
7
  compression: TiffTagType[TiffTag.Compression];
8
+ gdalMetadata: TiffTagType[TiffTag.GdalMetadata] | null;
9
+ lercParameters: TiffTagType[TiffTag.LercParameters] | null;
10
+ modelTiepoint: TiffTagType[TiffTag.ModelTiePoint] | null;
11
+ modelPixelScale: TiffTagType[TiffTag.ModelPixelScale] | null;
12
+ modelTransformation: TiffTagType[TiffTag.ModelTransformation] | null;
15
13
  nodata: number | null;
16
14
  photometric: TiffTagType[TiffTag.Photometric];
17
15
  /** https://web.archive.org/web/20240329145322/https://www.awaresystems.be/imaging/tiff/tifftags/photometricinterpretation.html */
@@ -19,6 +17,8 @@ export interface CachedTags {
19
17
  predictor: Predictor;
20
18
  sampleFormat: TiffTagType[TiffTag.SampleFormat];
21
19
  samplesPerPixel: TiffTagType[TiffTag.SamplesPerPixel];
20
+ tileByteCounts: TiffTagType[TiffTag.TileByteCounts] | null;
21
+ tileOffsets: TiffTagType[TiffTag.TileOffsets] | null;
22
22
  }
23
23
  /** Pre-fetch TIFF tags for easier visualization. */
24
24
  export declare function prefetchTags(image: TiffImage): Promise<CachedTags>;
package/dist/ifd.d.ts.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"ifd.d.ts","sourceRoot":"","sources":["../src/ifd.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"ifd.d.ts","sourceRoot":"","sources":["../src/ifd.ts"],"names":[],"mappings":"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"}
package/dist/ifd.js CHANGED
@@ -1,13 +1,4 @@
1
- import { SampleFormat, TiffTag, TiffTagGeo } from "@cogeotiff/core";
2
- // TODO: use upstream: https://github.com/blacha/cogeotiff/pull/1412
3
- export var Predictor;
4
- (function (Predictor) {
5
- Predictor[Predictor["None"] = 1] = "None";
6
- /** Horizontal differencing */
7
- Predictor[Predictor["Horizontal"] = 2] = "Horizontal";
8
- /** Floating point */
9
- Predictor[Predictor["FloatingPoint"] = 3] = "FloatingPoint";
10
- })(Predictor || (Predictor = {}));
1
+ import { Predictor, SampleFormat, TiffTag, TiffTagGeo } from "@cogeotiff/core";
11
2
  /** Pre-fetch TIFF tags for easier visualization. */
12
3
  export async function prefetchTags(image) {
13
4
  // Compression is pre-fetched in init
@@ -15,15 +6,25 @@ export async function prefetchTags(image) {
15
6
  if (compression === null) {
16
7
  throw new Error("Compression tag should always exist.");
17
8
  }
18
- const nodata = image.noData;
19
- const [bitsPerSample, colorMap, photometric, planarConfiguration, predictor, sampleFormat, samplesPerPixel,] = await Promise.all([
9
+ const [bitsPerSample, colorMap, gdalNoData, gdalMetadata, lercParameters, modelPixelScale, modelTiepoint, modelTransformation, photometric, planarConfiguration, predictor, sampleFormat, samplesPerPixel, tileByteCounts, tileOffsets,] = await Promise.all([
20
10
  image.fetch(TiffTag.BitsPerSample),
21
11
  image.fetch(TiffTag.ColorMap),
12
+ image.fetch(TiffTag.GdalNoData),
13
+ image.fetch(TiffTag.GdalMetadata),
14
+ image.fetch(TiffTag.LercParameters),
15
+ image.fetch(TiffTag.ModelPixelScale),
16
+ image.fetch(TiffTag.ModelTiePoint),
17
+ image.fetch(TiffTag.ModelTransformation),
22
18
  image.fetch(TiffTag.Photometric),
23
19
  image.fetch(TiffTag.PlanarConfiguration),
24
20
  image.fetch(TiffTag.Predictor),
25
21
  image.fetch(TiffTag.SampleFormat),
26
22
  image.fetch(TiffTag.SamplesPerPixel),
23
+ // Pre-fetch tile offsets and byte counts. If we don't prefetch them,
24
+ // TiffImage.getTileSize will have to fetch them for each tile, which
25
+ // results in many redundant requests.
26
+ image.fetch(TiffTag.TileByteCounts),
27
+ image.fetch(TiffTag.TileOffsets),
27
28
  ]);
28
29
  const missingTag = (tagName) => {
29
30
  throw new Error(`${tagName} tag should always exist.`);
@@ -44,7 +45,12 @@ export async function prefetchTags(image) {
44
45
  bitsPerSample: new Uint16Array(bitsPerSample),
45
46
  colorMap: colorMap ? new Uint16Array(colorMap) : undefined,
46
47
  compression,
47
- nodata,
48
+ gdalMetadata,
49
+ lercParameters,
50
+ modelTiepoint,
51
+ modelPixelScale,
52
+ modelTransformation,
53
+ nodata: gdalNoData !== null ? Number(gdalNoData) : null,
48
54
  photometric,
49
55
  planarConfiguration,
50
56
  predictor: predictor ?? Predictor.None,
@@ -52,6 +58,8 @@ export async function prefetchTags(image) {
52
58
  // https://web.archive.org/web/20240329145340/https://www.awaresystems.be/imaging/tiff/tifftags/sampleformat.html
53
59
  sampleFormat: sampleFormat ?? [SampleFormat.Uint],
54
60
  samplesPerPixel,
61
+ tileByteCounts,
62
+ tileOffsets,
55
63
  };
56
64
  }
57
65
  export function extractGeoKeyDirectory(image) {
package/dist/ifd.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"ifd.js","sourceRoot":"","sources":["../src/ifd.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"ifd.js","sourceRoot":"","sources":["../src/ifd.ts"],"names":[],"mappings":"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"}
package/dist/index.d.ts CHANGED
@@ -1,10 +1,13 @@
1
- export type { RasterArray } from "./array.js";
1
+ export type { RasterArray, RasterArrayBandSeparate, RasterArrayBase, RasterArrayPixelInterleaved, RasterTypedArray, } from "./array.js";
2
2
  export { parseColormap } from "./colormap.js";
3
3
  export type { ProjJson } from "./crs.js";
4
- export type { DecodedPixels, Decoder, DecoderMetadata } from "./decode.js";
5
- export { decode, registry } from "./decode.js";
4
+ export type { DecodedBandSeparate, DecodedPixelInterleaved, DecodedPixels, Decoder, DecoderMetadata, } from "./decode.js";
5
+ export { DECODER_REGISTRY } from "./decode.js";
6
6
  export { GeoTIFF } from "./geotiff.js";
7
+ export type { CachedTags, GeoKeyDirectory } from "./ifd.js";
7
8
  export { Overview } from "./overview.js";
9
+ export type { DecoderPoolOptions } from "./pool/pool.js";
10
+ export { DecoderPool, defaultDecoderPool } from "./pool/pool.js";
8
11
  export type { Tile } from "./tile.js";
9
12
  export { generateTileMatrixSet } from "./tile-matrix-set.js";
10
13
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,YAAY,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAC9C,OAAO,EAAE,aAAa,EAAE,MAAM,eAAe,CAAC;AAC9C,YAAY,EAAE,QAAQ,EAAE,MAAM,UAAU,CAAC;AACzC,YAAY,EAAE,aAAa,EAAE,OAAO,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAC3E,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AAC/C,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AACvC,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AACzC,YAAY,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACtC,OAAO,EAAE,qBAAqB,EAAE,MAAM,sBAAsB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,YAAY,EACV,WAAW,EACX,uBAAuB,EACvB,eAAe,EACf,2BAA2B,EAC3B,gBAAgB,GACjB,MAAM,YAAY,CAAC;AACpB,OAAO,EAAE,aAAa,EAAE,MAAM,eAAe,CAAC;AAC9C,YAAY,EAAE,QAAQ,EAAE,MAAM,UAAU,CAAC;AACzC,YAAY,EACV,mBAAmB,EACnB,uBAAuB,EACvB,aAAa,EACb,OAAO,EACP,eAAe,GAChB,MAAM,aAAa,CAAC;AACrB,OAAO,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC;AAC/C,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AACvC,YAAY,EAAE,UAAU,EAAE,eAAe,EAAE,MAAM,UAAU,CAAC;AAC5D,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AACzC,YAAY,EAAE,kBAAkB,EAAE,MAAM,gBAAgB,CAAC;AACzD,OAAO,EAAE,WAAW,EAAE,kBAAkB,EAAE,MAAM,gBAAgB,CAAC;AACjE,YAAY,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACtC,OAAO,EAAE,qBAAqB,EAAE,MAAM,sBAAsB,CAAC"}
package/dist/index.js CHANGED
@@ -1,6 +1,7 @@
1
1
  export { parseColormap } from "./colormap.js";
2
- export { decode, registry } from "./decode.js";
2
+ export { DECODER_REGISTRY } from "./decode.js";
3
3
  export { GeoTIFF } from "./geotiff.js";
4
4
  export { Overview } from "./overview.js";
5
+ export { DecoderPool, defaultDecoderPool } from "./pool/pool.js";
5
6
  export { generateTileMatrixSet } from "./tile-matrix-set.js";
6
7
  //# sourceMappingURL=index.js.map
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,aAAa,EAAE,MAAM,eAAe,CAAC;AAG9C,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AAC/C,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AACvC,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AAEzC,OAAO,EAAE,qBAAqB,EAAE,MAAM,sBAAsB,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAOA,OAAO,EAAE,aAAa,EAAE,MAAM,eAAe,CAAC;AAS9C,OAAO,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC;AAC/C,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AAEvC,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AAEzC,OAAO,EAAE,WAAW,EAAE,kBAAkB,EAAE,MAAM,gBAAgB,CAAC;AAEjE,OAAO,EAAE,qBAAqB,EAAE,MAAM,sBAAsB,CAAC"}
@@ -1,8 +1,9 @@
1
- import type { TiffImage } from "@cogeotiff/core";
1
+ import type { Source, TiffImage, TiffImageTileCount } from "@cogeotiff/core";
2
2
  import type { Affine } from "@developmentseed/affine";
3
3
  import type { ProjJson } from "./crs.js";
4
4
  import type { GeoTIFF } from "./geotiff.js";
5
5
  import type { CachedTags, GeoKeyDirectory } from "./ifd.js";
6
+ import type { DecoderPool } from "./pool/pool.js";
6
7
  import type { Tile } from "./tile.js";
7
8
  /**
8
9
  * A single resolution level of a GeoTIFF — either the full-resolution image
@@ -11,6 +12,8 @@ import type { Tile } from "./tile.js";
11
12
  */
12
13
  export declare class Overview {
13
14
  readonly cachedTags: CachedTags;
15
+ /** The data source used for fetching tile data. */
16
+ readonly dataSource: Pick<Source, "fetch">;
14
17
  /** A reference to the parent GeoTIFF object. */
15
18
  readonly geotiff: GeoTIFF;
16
19
  /** The GeoKeyDirectory of the primary IFD. */
@@ -19,17 +22,44 @@ export declare class Overview {
19
22
  readonly image: TiffImage;
20
23
  /** The IFD for the mask associated with this overview level, if any. */
21
24
  readonly maskImage: TiffImage | null;
22
- constructor(geotiff: GeoTIFF, gkd: GeoKeyDirectory, image: TiffImage, maskImage: TiffImage | null, cachedTags: CachedTags);
25
+ constructor(geotiff: GeoTIFF, gkd: GeoKeyDirectory, image: TiffImage, maskImage: TiffImage | null, cachedTags: CachedTags, dataSource: Pick<Source, "fetch">);
26
+ /**
27
+ * The CRS parsed from the GeoKeyDirectory.
28
+ *
29
+ * Returns an EPSG code (number) for EPSG-coded CRSes, or a PROJJSON object
30
+ * for user-defined CRSes. The result is cached after the first access.
31
+ *
32
+ * See also {@link GeoTIFF.epsg} for the EPSG code directly from the TIFF tags.
33
+ */
23
34
  get crs(): number | ProjJson;
35
+ /** Image height in pixels. */
24
36
  get height(): number;
37
+ /** The no data value, or null if not set. */
25
38
  get nodata(): number | null;
39
+ /** The number of tiles in the x and y directions */
40
+ get tileCount(): TiffImageTileCount;
41
+ /** Tile height in pixels. */
26
42
  get tileHeight(): number;
43
+ /** Tile width in pixels. */
27
44
  get tileWidth(): number;
45
+ /**
46
+ * Return the dataset's georeferencing transformation matrix.
47
+ */
28
48
  get transform(): Affine;
49
+ /** Image width in pixels. */
29
50
  get width(): number;
30
- /** Fetch a single tile from the full-resolution image. */
51
+ /** Fetch a single tile from the full-resolution image.
52
+ *
53
+ * @param x The tile column index (0-based).
54
+ * @param y The tile row index (0-based).
55
+ * @param options Optional parameters for fetching the tile.
56
+ * @param options.boundless Whether to clip tiles that are partially outside the image bounds. When `true`, no clipping is applied. Defaults to `true`.
57
+ * @param options.pool An optional {@link DecoderPool} for decoding the tile data. If not provided, a new decoder will be created for each tile.
58
+ * @param options.signal An optional {@link AbortSignal} to cancel the fetch request.
59
+ */
31
60
  fetchTile(x: number, y: number, options?: {
32
61
  boundless?: boolean;
62
+ pool?: DecoderPool;
33
63
  signal?: AbortSignal;
34
64
  }): Promise<Tile>;
35
65
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"overview.d.ts","sourceRoot":"","sources":["../src/overview.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AACjD,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,yBAAyB,CAAC;AAEtD,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,UAAU,CAAC;AAEzC,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AAC5C,OAAO,KAAK,EAAE,UAAU,EAAE,eAAe,EAAE,MAAM,UAAU,CAAC;AAC5D,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAGtC;;;;GAIG;AACH,qBAAa,QAAQ;IACnB,QAAQ,CAAC,UAAU,EAAE,UAAU,CAAC;IAEhC,gDAAgD;IAChD,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAC;IAE1B,8CAA8C;IAC9C,QAAQ,CAAC,GAAG,EAAE,eAAe,CAAC;IAE9B,8CAA8C;IAC9C,QAAQ,CAAC,KAAK,EAAE,SAAS,CAAC;IAE1B,wEAAwE;IACxE,QAAQ,CAAC,SAAS,EAAE,SAAS,GAAG,IAAI,CAAQ;gBAG1C,OAAO,EAAE,OAAO,EAChB,GAAG,EAAE,eAAe,EACpB,KAAK,EAAE,SAAS,EAChB,SAAS,EAAE,SAAS,GAAG,IAAI,EAC3B,UAAU,EAAE,UAAU;IASxB,IAAI,GAAG,IAAI,MAAM,GAAG,QAAQ,CAE3B;IAED,IAAI,MAAM,IAAI,MAAM,CAEnB;IAED,IAAI,MAAM,IAAI,MAAM,GAAG,IAAI,CAE1B;IAED,IAAI,UAAU,IAAI,MAAM,CAEvB;IAED,IAAI,SAAS,IAAI,MAAM,CAEtB;IAED,IAAI,SAAS,IAAI,MAAM,CAKtB;IAED,IAAI,KAAK,IAAI,MAAM,CAElB;IAED,0DAA0D;IACpD,SAAS,CACb,CAAC,EAAE,MAAM,EACT,CAAC,EAAE,MAAM,EACT,OAAO,GAAE;QAAE,SAAS,CAAC,EAAE,OAAO,CAAC;QAAC,MAAM,CAAC,EAAE,WAAW,CAAA;KAAO,GAC1D,OAAO,CAAC,IAAI,CAAC;IAIhB;;;;;;;;OAQG;IACH,KAAK,CACH,CAAC,EAAE,MAAM,EACT,CAAC,EAAE,MAAM,EACT,EAAE,GAAE,CAAC,CAAC,EAAE,MAAM,KAAK,MAAmB,GACrC,CAAC,MAAM,EAAE,MAAM,CAAC;IAInB;;;;;;;OAOG;IACH,EAAE,CACA,GAAG,EAAE,MAAM,EACX,GAAG,EAAE,MAAM,EACX,MAAM,GAAE,QAAQ,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAe,GACtD,CAAC,MAAM,EAAE,MAAM,CAAC;CAGpB"}
1
+ {"version":3,"file":"overview.d.ts","sourceRoot":"","sources":["../src/overview.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,SAAS,EAAE,kBAAkB,EAAE,MAAM,iBAAiB,CAAC;AAC7E,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,yBAAyB,CAAC;AAEtD,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,UAAU,CAAC;AAEzC,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AAC5C,OAAO,KAAK,EAAE,UAAU,EAAE,eAAe,EAAE,MAAM,UAAU,CAAC;AAC5D,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAClD,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAGtC;;;;GAIG;AACH,qBAAa,QAAQ;IACnB,QAAQ,CAAC,UAAU,EAAE,UAAU,CAAC;IAEhC,mDAAmD;IACnD,QAAQ,CAAC,UAAU,EAAE,IAAI,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAE3C,gDAAgD;IAChD,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAC;IAE1B,8CAA8C;IAC9C,QAAQ,CAAC,GAAG,EAAE,eAAe,CAAC;IAE9B,8CAA8C;IAC9C,QAAQ,CAAC,KAAK,EAAE,SAAS,CAAC;IAE1B,wEAAwE;IACxE,QAAQ,CAAC,SAAS,EAAE,SAAS,GAAG,IAAI,CAAQ;gBAG1C,OAAO,EAAE,OAAO,EAChB,GAAG,EAAE,eAAe,EACpB,KAAK,EAAE,SAAS,EAChB,SAAS,EAAE,SAAS,GAAG,IAAI,EAC3B,UAAU,EAAE,UAAU,EACtB,UAAU,EAAE,IAAI,CAAC,MAAM,EAAE,OAAO,CAAC;IAUnC;;;;;;;OAOG;IACH,IAAI,GAAG,IAAI,MAAM,GAAG,QAAQ,CAE3B;IAED,8BAA8B;IAC9B,IAAI,MAAM,IAAI,MAAM,CAEnB;IAED,6CAA6C;IAC7C,IAAI,MAAM,IAAI,MAAM,GAAG,IAAI,CAE1B;IAED,oDAAoD;IACpD,IAAI,SAAS,IAAI,kBAAkB,CAElC;IAED,6BAA6B;IAC7B,IAAI,UAAU,IAAI,MAAM,CAEvB;IAED,4BAA4B;IAC5B,IAAI,SAAS,IAAI,MAAM,CAEtB;IAED;;OAEG;IACH,IAAI,SAAS,IAAI,MAAM,CAKtB;IAED,6BAA6B;IAC7B,IAAI,KAAK,IAAI,MAAM,CAElB;IAED;;;;;;;;OAQG;IACG,SAAS,CACb,CAAC,EAAE,MAAM,EACT,CAAC,EAAE,MAAM,EACT,OAAO,GAAE;QACP,SAAS,CAAC,EAAE,OAAO,CAAC;QACpB,IAAI,CAAC,EAAE,WAAW,CAAC;QACnB,MAAM,CAAC,EAAE,WAAW,CAAC;KACjB,GACL,OAAO,CAAC,IAAI,CAAC;IAQhB;;;;;;;;OAQG;IACH,KAAK,CACH,CAAC,EAAE,MAAM,EACT,CAAC,EAAE,MAAM,EACT,EAAE,GAAE,CAAC,CAAC,EAAE,MAAM,KAAK,MAAmB,GACrC,CAAC,MAAM,EAAE,MAAM,CAAC;IAInB;;;;;;;OAOG;IACH,EAAE,CACA,GAAG,EAAE,MAAM,EACX,GAAG,EAAE,MAAM,EACX,MAAM,GAAE,QAAQ,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAe,GACtD,CAAC,MAAM,EAAE,MAAM,CAAC;CAGpB"}