geotiff 3.0.2 → 3.0.4-beta.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 (279) hide show
  1. package/dist-browser/geotiff.js +3 -3
  2. package/dist-browser/geotiff.js.map +1 -1
  3. package/dist-module/compression/basedecoder.d.ts +30 -4
  4. package/dist-module/compression/basedecoder.d.ts.map +1 -1
  5. package/dist-module/compression/basedecoder.js +22 -1
  6. package/dist-module/compression/basedecoder.js.map +1 -0
  7. package/dist-module/compression/deflate.d.ts +2 -1
  8. package/dist-module/compression/deflate.d.ts.map +1 -1
  9. package/dist-module/compression/deflate.js +2 -0
  10. package/dist-module/compression/deflate.js.map +1 -0
  11. package/dist-module/compression/index.d.ts +14 -22
  12. package/dist-module/compression/index.d.ts.map +1 -1
  13. package/dist-module/compression/index.js +36 -25
  14. package/dist-module/compression/index.js.map +1 -0
  15. package/dist-module/compression/jpeg.d.ts +55 -15
  16. package/dist-module/compression/jpeg.d.ts.map +1 -1
  17. package/dist-module/compression/jpeg.js +187 -16
  18. package/dist-module/compression/jpeg.js.map +1 -0
  19. package/dist-module/compression/lerc.d.ts +11 -1
  20. package/dist-module/compression/lerc.d.ts.map +1 -1
  21. package/dist-module/compression/lerc.js +16 -4
  22. package/dist-module/compression/lerc.js.map +1 -0
  23. package/dist-module/compression/lzw.d.ts +2 -1
  24. package/dist-module/compression/lzw.d.ts.map +1 -1
  25. package/dist-module/compression/lzw.js +29 -1
  26. package/dist-module/compression/lzw.js.map +1 -0
  27. package/dist-module/compression/packbits.d.ts +2 -1
  28. package/dist-module/compression/packbits.d.ts.map +1 -1
  29. package/dist-module/compression/packbits.js +2 -0
  30. package/dist-module/compression/packbits.js.map +1 -0
  31. package/dist-module/compression/raw.d.ts +2 -1
  32. package/dist-module/compression/raw.d.ts.map +1 -1
  33. package/dist-module/compression/raw.js +2 -0
  34. package/dist-module/compression/raw.js.map +1 -0
  35. package/dist-module/compression/webimage.d.ts +2 -1
  36. package/dist-module/compression/webimage.d.ts.map +1 -1
  37. package/dist-module/compression/webimage.js +5 -0
  38. package/dist-module/compression/webimage.js.map +1 -0
  39. package/dist-module/compression/zstd.d.ts +4 -2
  40. package/dist-module/compression/zstd.d.ts.map +1 -1
  41. package/dist-module/compression/zstd.js +3 -1
  42. package/dist-module/compression/zstd.js.map +1 -0
  43. package/dist-module/dataslice.d.ts +78 -22
  44. package/dist-module/dataslice.d.ts.map +1 -1
  45. package/dist-module/dataslice.js +57 -1
  46. package/dist-module/dataslice.js.map +1 -0
  47. package/dist-module/dataview64.d.ts +71 -14
  48. package/dist-module/dataview64.d.ts.map +1 -1
  49. package/dist-module/dataview64.js +58 -1
  50. package/dist-module/dataview64.js.map +1 -0
  51. package/dist-module/geotiff.d.ts +61 -12
  52. package/dist-module/geotiff.d.ts.map +1 -1
  53. package/dist-module/geotiff.js +73 -14
  54. package/dist-module/geotiff.js.map +1 -0
  55. package/dist-module/geotiffimage.d.ts +41 -15
  56. package/dist-module/geotiffimage.d.ts.map +1 -1
  57. package/dist-module/geotiffimage.js +132 -52
  58. package/dist-module/geotiffimage.js.map +1 -0
  59. package/dist-module/geotiffwriter.d.ts +28 -1
  60. package/dist-module/geotiffwriter.d.ts.map +1 -1
  61. package/dist-module/geotiffwriter.js +206 -84
  62. package/dist-module/geotiffwriter.js.map +1 -0
  63. package/dist-module/globals.d.ts +912 -92
  64. package/dist-module/globals.d.ts.map +1 -1
  65. package/dist-module/globals.js +201 -227
  66. package/dist-module/globals.js.map +1 -0
  67. package/dist-module/imagefiledirectory.d.ts +72 -19
  68. package/dist-module/imagefiledirectory.d.ts.map +1 -1
  69. package/dist-module/imagefiledirectory.js +51 -26
  70. package/dist-module/imagefiledirectory.js.map +1 -0
  71. package/dist-module/logging.d.ts +36 -10
  72. package/dist-module/logging.d.ts.map +1 -1
  73. package/dist-module/logging.js +16 -2
  74. package/dist-module/logging.js.map +1 -0
  75. package/dist-module/pool.d.ts +15 -8
  76. package/dist-module/pool.d.ts.map +1 -1
  77. package/dist-module/pool.js +11 -3
  78. package/dist-module/pool.js.map +1 -0
  79. package/dist-module/predictor.d.ts +10 -1
  80. package/dist-module/predictor.d.ts.map +1 -1
  81. package/dist-module/predictor.js +19 -0
  82. package/dist-module/predictor.js.map +1 -0
  83. package/dist-module/resample.d.ts.map +1 -1
  84. package/dist-module/resample.js +12 -0
  85. package/dist-module/resample.js.map +1 -0
  86. package/dist-module/rgb.js +1 -0
  87. package/dist-module/rgb.js.map +1 -0
  88. package/dist-module/source/arraybuffer.d.ts +7 -4
  89. package/dist-module/source/arraybuffer.d.ts.map +1 -1
  90. package/dist-module/source/arraybuffer.js +15 -1
  91. package/dist-module/source/arraybuffer.js.map +1 -0
  92. package/dist-module/source/basesource.d.ts +11 -6
  93. package/dist-module/source/basesource.d.ts.map +1 -1
  94. package/dist-module/source/basesource.js +7 -4
  95. package/dist-module/source/basesource.js.map +1 -0
  96. package/dist-module/source/blockedsource.d.ts +2 -2
  97. package/dist-module/source/blockedsource.d.ts.map +1 -1
  98. package/dist-module/source/blockedsource.js +8 -5
  99. package/dist-module/source/blockedsource.js.map +1 -0
  100. package/dist-module/source/client/base.d.ts +8 -7
  101. package/dist-module/source/client/base.d.ts.map +1 -1
  102. package/dist-module/source/client/base.js +7 -5
  103. package/dist-module/source/client/base.js.map +1 -0
  104. package/dist-module/source/client/fetch.d.ts +6 -2
  105. package/dist-module/source/client/fetch.d.ts.map +1 -1
  106. package/dist-module/source/client/fetch.js +7 -2
  107. package/dist-module/source/client/fetch.js.map +1 -0
  108. package/dist-module/source/client/http.d.ts +27 -5
  109. package/dist-module/source/client/http.d.ts.map +1 -1
  110. package/dist-module/source/client/http.js +16 -2
  111. package/dist-module/source/client/http.js.map +1 -0
  112. package/dist-module/source/client/xhr.d.ts +22 -3
  113. package/dist-module/source/client/xhr.d.ts.map +1 -1
  114. package/dist-module/source/client/xhr.js +12 -2
  115. package/dist-module/source/client/xhr.js.map +1 -0
  116. package/dist-module/source/file.d.ts +8 -5
  117. package/dist-module/source/file.d.ts.map +1 -1
  118. package/dist-module/source/file.js +40 -8
  119. package/dist-module/source/file.js.map +1 -0
  120. package/dist-module/source/filereader.d.ts +12 -4
  121. package/dist-module/source/filereader.d.ts.map +1 -1
  122. package/dist-module/source/filereader.js +15 -2
  123. package/dist-module/source/filereader.js.map +1 -0
  124. package/dist-module/source/httputils.d.ts +16 -9
  125. package/dist-module/source/httputils.d.ts.map +1 -1
  126. package/dist-module/source/httputils.js +19 -12
  127. package/dist-module/source/httputils.js.map +1 -0
  128. package/dist-module/source/remote.d.ts.map +1 -1
  129. package/dist-module/source/remote.js +19 -7
  130. package/dist-module/source/remote.js.map +1 -0
  131. package/dist-module/utils.d.ts +36 -41
  132. package/dist-module/utils.d.ts.map +1 -1
  133. package/dist-module/utils.js +17 -12
  134. package/dist-module/utils.js.map +1 -0
  135. package/dist-module/worker/create.js +1 -1
  136. package/dist-module/worker/create.js.map +1 -0
  137. package/dist-module/worker/decoder.d.ts +2 -0
  138. package/dist-module/worker/decoder.d.ts.map +1 -0
  139. package/dist-module/worker/decoder.js +21 -0
  140. package/dist-module/worker/decoder.js.map +1 -0
  141. package/dist-node/compression/basedecoder.d.ts +30 -4
  142. package/dist-node/compression/basedecoder.d.ts.map +1 -1
  143. package/dist-node/compression/basedecoder.js +22 -1
  144. package/dist-node/compression/basedecoder.js.map +1 -1
  145. package/dist-node/compression/deflate.d.ts +2 -1
  146. package/dist-node/compression/deflate.d.ts.map +1 -1
  147. package/dist-node/compression/deflate.js +2 -0
  148. package/dist-node/compression/deflate.js.map +1 -1
  149. package/dist-node/compression/index.d.ts +14 -22
  150. package/dist-node/compression/index.d.ts.map +1 -1
  151. package/dist-node/compression/index.js +36 -25
  152. package/dist-node/compression/index.js.map +1 -1
  153. package/dist-node/compression/jpeg.d.ts +55 -16
  154. package/dist-node/compression/jpeg.d.ts.map +1 -1
  155. package/dist-node/compression/jpeg.js +187 -16
  156. package/dist-node/compression/jpeg.js.map +1 -1
  157. package/dist-node/compression/lerc.d.ts +11 -1
  158. package/dist-node/compression/lerc.d.ts.map +1 -1
  159. package/dist-node/compression/lerc.js +16 -4
  160. package/dist-node/compression/lerc.js.map +1 -1
  161. package/dist-node/compression/lzw.d.ts +2 -1
  162. package/dist-node/compression/lzw.d.ts.map +1 -1
  163. package/dist-node/compression/lzw.js +29 -1
  164. package/dist-node/compression/lzw.js.map +1 -1
  165. package/dist-node/compression/packbits.d.ts +2 -1
  166. package/dist-node/compression/packbits.d.ts.map +1 -1
  167. package/dist-node/compression/packbits.js +2 -0
  168. package/dist-node/compression/packbits.js.map +1 -1
  169. package/dist-node/compression/raw.d.ts +2 -1
  170. package/dist-node/compression/raw.d.ts.map +1 -1
  171. package/dist-node/compression/raw.js +2 -0
  172. package/dist-node/compression/raw.js.map +1 -1
  173. package/dist-node/compression/webimage.d.ts +2 -2
  174. package/dist-node/compression/webimage.d.ts.map +1 -1
  175. package/dist-node/compression/webimage.js +5 -0
  176. package/dist-node/compression/webimage.js.map +1 -1
  177. package/dist-node/compression/zstd.d.ts +2 -1
  178. package/dist-node/compression/zstd.d.ts.map +1 -1
  179. package/dist-node/compression/zstd.js +3 -1
  180. package/dist-node/compression/zstd.js.map +1 -1
  181. package/dist-node/dataslice.d.ts +78 -22
  182. package/dist-node/dataslice.d.ts.map +1 -1
  183. package/dist-node/dataslice.js +57 -1
  184. package/dist-node/dataslice.js.map +1 -1
  185. package/dist-node/dataview64.d.ts +71 -14
  186. package/dist-node/dataview64.d.ts.map +1 -1
  187. package/dist-node/dataview64.js +58 -1
  188. package/dist-node/dataview64.js.map +1 -1
  189. package/dist-node/geotiff.d.ts +61 -12
  190. package/dist-node/geotiff.d.ts.map +1 -1
  191. package/dist-node/geotiff.js +75 -15
  192. package/dist-node/geotiff.js.map +1 -1
  193. package/dist-node/geotiffimage.d.ts +41 -15
  194. package/dist-node/geotiffimage.d.ts.map +1 -1
  195. package/dist-node/geotiffimage.js +132 -52
  196. package/dist-node/geotiffimage.js.map +1 -1
  197. package/dist-node/geotiffwriter.d.ts +28 -1
  198. package/dist-node/geotiffwriter.d.ts.map +1 -1
  199. package/dist-node/geotiffwriter.js +206 -84
  200. package/dist-node/geotiffwriter.js.map +1 -1
  201. package/dist-node/globals.d.ts +910 -90
  202. package/dist-node/globals.d.ts.map +1 -1
  203. package/dist-node/globals.js +202 -228
  204. package/dist-node/globals.js.map +1 -1
  205. package/dist-node/imagefiledirectory.d.ts +72 -19
  206. package/dist-node/imagefiledirectory.d.ts.map +1 -1
  207. package/dist-node/imagefiledirectory.js +51 -26
  208. package/dist-node/imagefiledirectory.js.map +1 -1
  209. package/dist-node/logging.d.ts +36 -10
  210. package/dist-node/logging.d.ts.map +1 -1
  211. package/dist-node/logging.js +16 -2
  212. package/dist-node/logging.js.map +1 -1
  213. package/dist-node/pool.d.ts +15 -8
  214. package/dist-node/pool.d.ts.map +1 -1
  215. package/dist-node/pool.js +11 -3
  216. package/dist-node/pool.js.map +1 -1
  217. package/dist-node/predictor.d.ts +10 -1
  218. package/dist-node/predictor.d.ts.map +1 -1
  219. package/dist-node/predictor.js +19 -0
  220. package/dist-node/predictor.js.map +1 -1
  221. package/dist-node/resample.d.ts.map +1 -1
  222. package/dist-node/resample.js +12 -0
  223. package/dist-node/resample.js.map +1 -1
  224. package/dist-node/rgb.js +1 -0
  225. package/dist-node/rgb.js.map +1 -1
  226. package/dist-node/source/arraybuffer.d.ts +7 -4
  227. package/dist-node/source/arraybuffer.d.ts.map +1 -1
  228. package/dist-node/source/arraybuffer.js +15 -1
  229. package/dist-node/source/arraybuffer.js.map +1 -1
  230. package/dist-node/source/basesource.d.ts +11 -6
  231. package/dist-node/source/basesource.d.ts.map +1 -1
  232. package/dist-node/source/basesource.js +7 -4
  233. package/dist-node/source/basesource.js.map +1 -1
  234. package/dist-node/source/blockedsource.d.ts +2 -2
  235. package/dist-node/source/blockedsource.d.ts.map +1 -1
  236. package/dist-node/source/blockedsource.js +8 -5
  237. package/dist-node/source/blockedsource.js.map +1 -1
  238. package/dist-node/source/client/base.d.ts +8 -7
  239. package/dist-node/source/client/base.d.ts.map +1 -1
  240. package/dist-node/source/client/base.js +7 -5
  241. package/dist-node/source/client/base.js.map +1 -1
  242. package/dist-node/source/client/fetch.d.ts +5 -2
  243. package/dist-node/source/client/fetch.d.ts.map +1 -1
  244. package/dist-node/source/client/fetch.js +7 -2
  245. package/dist-node/source/client/fetch.js.map +1 -1
  246. package/dist-node/source/client/http.d.ts +22 -4
  247. package/dist-node/source/client/http.d.ts.map +1 -1
  248. package/dist-node/source/client/http.js +16 -2
  249. package/dist-node/source/client/http.js.map +1 -1
  250. package/dist-node/source/client/xhr.d.ts +23 -3
  251. package/dist-node/source/client/xhr.d.ts.map +1 -1
  252. package/dist-node/source/client/xhr.js +12 -2
  253. package/dist-node/source/client/xhr.js.map +1 -1
  254. package/dist-node/source/file.d.ts +8 -5
  255. package/dist-node/source/file.d.ts.map +1 -1
  256. package/dist-node/source/file.js +40 -8
  257. package/dist-node/source/file.js.map +1 -1
  258. package/dist-node/source/filereader.d.ts +12 -4
  259. package/dist-node/source/filereader.d.ts.map +1 -1
  260. package/dist-node/source/filereader.js +15 -2
  261. package/dist-node/source/filereader.js.map +1 -1
  262. package/dist-node/source/httputils.d.ts +16 -9
  263. package/dist-node/source/httputils.d.ts.map +1 -1
  264. package/dist-node/source/httputils.js +19 -12
  265. package/dist-node/source/httputils.js.map +1 -1
  266. package/dist-node/source/remote.d.ts.map +1 -1
  267. package/dist-node/source/remote.js +19 -7
  268. package/dist-node/source/remote.js.map +1 -1
  269. package/dist-node/utils.d.ts +9 -8
  270. package/dist-node/utils.d.ts.map +1 -1
  271. package/dist-node/utils.js +17 -12
  272. package/dist-node/utils.js.map +1 -1
  273. package/dist-node/worker/create.js +1 -1
  274. package/dist-node/worker/create.js.map +1 -1
  275. package/dist-node/worker/decoder.d.ts +2 -0
  276. package/dist-node/worker/decoder.d.ts.map +1 -0
  277. package/dist-node/worker/decoder.js +24 -0
  278. package/dist-node/worker/decoder.js.map +1 -0
  279. package/package.json +5 -3
@@ -1,6 +1,8 @@
1
1
  /** @module geotiffimage */
2
2
  import { getFloat16 } from '@petamoriken/float16';
3
+ // @ts-expect-error
3
4
  import getAttribute from 'xml-utils/get-attribute'; // eslint-disable-line import/extensions
5
+ // @ts-expect-error
4
6
  import findTagsByName from 'xml-utils/find-tags-by-name'; // eslint-disable-line import/extensions
5
7
  import { photometricInterpretations, ExtraSamplesValues } from './globals.js';
6
8
  import { fromWhiteIsZero, fromBlackIsZero, fromPalette, fromCMYK, fromYCbCr, fromCIELab } from './rgb.js';
@@ -10,6 +12,12 @@ import { resample, resampleInterleaved } from './resample.js';
10
12
  /** @import {ReadRasterResult} from "./geotiff" */
11
13
  /** @import {ReadRastersOptions} from "./geotiff" */
12
14
  /** @import {ReadRGBOptions} from "./geotiff" */
15
+ /**
16
+ * @param {Array<number>|TypedArray} array
17
+ * @param {number} start
18
+ * @param {number} end
19
+ * @returns {number}
20
+ */
13
21
  function sum(array, start, end) {
14
22
  let s = 0;
15
23
  for (let i = start; i < end; ++i) {
@@ -17,37 +25,46 @@ function sum(array, start, end) {
17
25
  }
18
26
  return s;
19
27
  }
20
- function arrayForType(format, bitsPerSample, size) {
28
+ /**
29
+ * @param {1|2|3} format
30
+ * @param {number} bitsPerSample
31
+ * @param {number|ArrayBufferLike} sizeOrData
32
+ * @returns {TypedArray}
33
+ */
34
+ function arrayForType(format, bitsPerSample, sizeOrData) {
35
+ let TypedArrayConstructor;
21
36
  switch (format) {
22
37
  case 1: // unsigned integer data
23
38
  if (bitsPerSample <= 8) {
24
- return new Uint8Array(size);
39
+ TypedArrayConstructor = Uint8Array;
25
40
  }
26
41
  else if (bitsPerSample <= 16) {
27
- return new Uint16Array(size);
42
+ TypedArrayConstructor = Uint16Array;
28
43
  }
29
44
  else if (bitsPerSample <= 32) {
30
- return new Uint32Array(size);
45
+ TypedArrayConstructor = Uint32Array;
31
46
  }
32
47
  break;
33
48
  case 2: // twos complement signed integer data
34
49
  if (bitsPerSample === 8) {
35
- return new Int8Array(size);
50
+ TypedArrayConstructor = Int8Array;
36
51
  }
37
52
  else if (bitsPerSample === 16) {
38
- return new Int16Array(size);
53
+ TypedArrayConstructor = Int16Array;
39
54
  }
40
55
  else if (bitsPerSample === 32) {
41
- return new Int32Array(size);
56
+ TypedArrayConstructor = Int32Array;
42
57
  }
43
58
  break;
44
59
  case 3: // floating point data
45
60
  switch (bitsPerSample) {
46
61
  case 16:
47
62
  case 32:
48
- return new Float32Array(size);
63
+ TypedArrayConstructor = Float32Array;
64
+ break;
49
65
  case 64:
50
- return new Float64Array(size);
66
+ TypedArrayConstructor = Float64Array;
67
+ break;
51
68
  default:
52
69
  break;
53
70
  }
@@ -55,8 +72,21 @@ function arrayForType(format, bitsPerSample, size) {
55
72
  default:
56
73
  break;
57
74
  }
75
+ if (TypedArrayConstructor) {
76
+ if (typeof sizeOrData === 'number') {
77
+ return new TypedArrayConstructor(sizeOrData);
78
+ }
79
+ else if (sizeOrData instanceof ArrayBuffer) {
80
+ return new TypedArrayConstructor(sizeOrData);
81
+ }
82
+ }
58
83
  throw Error('Unsupported data format/bitsPerSample');
59
84
  }
85
+ /**
86
+ * @param {1|2|3} format
87
+ * @param {number} bitsPerSample
88
+ * @returns {boolean}
89
+ */
60
90
  function needsNormalization(format, bitsPerSample) {
61
91
  if ((format === 1 || format === 2) && bitsPerSample <= 32 && bitsPerSample % 8 === 0) {
62
92
  return false;
@@ -66,6 +96,16 @@ function needsNormalization(format, bitsPerSample) {
66
96
  }
67
97
  return true;
68
98
  }
99
+ /**
100
+ * @param {ArrayBufferLike} inBuffer
101
+ * @param {1|2|3} format
102
+ * @param {1|2} planarConfiguration
103
+ * @param {number} samplesPerPixel
104
+ * @param {number} bitsPerSample
105
+ * @param {number} tileWidth
106
+ * @param {number} tileHeight
107
+ * @returns {ArrayBufferLike}
108
+ */
69
109
  function normalizeArray(inBuffer, format, planarConfiguration, samplesPerPixel, bitsPerSample, tileWidth, tileHeight) {
70
110
  // const inByteArray = new Uint8Array(inBuffer);
71
111
  const view = new DataView(inBuffer);
@@ -158,7 +198,8 @@ class GeoTIFFImage {
158
198
  constructor(fileDirectory, littleEndian, cache, source) {
159
199
  this.fileDirectory = fileDirectory;
160
200
  this.littleEndian = littleEndian;
161
- this.tiles = cache ? {} : null;
201
+ /** @type {Array<Promise<ArrayBufferLike>>|null} */
202
+ this.tiles = cache ? [] : null;
162
203
  this.isTiled = !fileDirectory.hasTag('StripOffsets');
163
204
  const planarConfiguration = fileDirectory.getValue('PlanarConfiguration') ?? 1;
164
205
  if (planarConfiguration !== 1 && planarConfiguration !== 2) {
@@ -187,29 +228,28 @@ class GeoTIFFImage {
187
228
  * @returns {Number} the width of the image
188
229
  */
189
230
  getWidth() {
190
- return this.fileDirectory.getValue('ImageWidth');
231
+ return this.fileDirectory.getValue('ImageWidth') || 0;
191
232
  }
192
233
  /**
193
234
  * Returns the height of the image.
194
235
  * @returns {Number} the height of the image
195
236
  */
196
237
  getHeight() {
197
- return this.fileDirectory.getValue('ImageLength');
238
+ return this.fileDirectory.getValue('ImageLength') || 0;
198
239
  }
199
240
  /**
200
241
  * Returns the number of samples per pixel.
201
242
  * @returns {Number} the number of samples per pixel
202
243
  */
203
244
  getSamplesPerPixel() {
204
- return this.fileDirectory.hasTag('SamplesPerPixel')
205
- ? this.fileDirectory.getValue('SamplesPerPixel') : 1;
245
+ return this.fileDirectory.getValue('SamplesPerPixel') || 1;
206
246
  }
207
247
  /**
208
248
  * Returns the width of each tile.
209
249
  * @returns {Number} the width of each tile
210
250
  */
211
251
  getTileWidth() {
212
- return this.isTiled ? this.fileDirectory.getValue('TileWidth') : this.getWidth();
252
+ return this.isTiled ? (this.fileDirectory.getValue('TileWidth') || 0) : this.getWidth();
213
253
  }
214
254
  /**
215
255
  * Returns the height of each tile.
@@ -217,16 +257,21 @@ class GeoTIFFImage {
217
257
  */
218
258
  getTileHeight() {
219
259
  if (this.isTiled) {
220
- return this.fileDirectory.getValue('TileLength');
260
+ return this.fileDirectory.getValue('TileLength') || 0;
221
261
  }
222
- if (this.fileDirectory.hasTag('RowsPerStrip')) {
223
- return Math.min(this.fileDirectory.getValue('RowsPerStrip'), this.getHeight());
262
+ const rowsPerStrip = this.fileDirectory.getValue('RowsPerStrip');
263
+ if (rowsPerStrip) {
264
+ return Math.min(rowsPerStrip, this.getHeight());
224
265
  }
225
266
  return this.getHeight();
226
267
  }
227
268
  getBlockWidth() {
228
269
  return this.getTileWidth();
229
270
  }
271
+ /**
272
+ * @param {number} y
273
+ * @returns {number}
274
+ */
230
275
  getBlockHeight(y) {
231
276
  if (this.isTiled || (y + 1) * this.getTileHeight() <= this.getHeight()) {
232
277
  return this.getTileHeight();
@@ -243,22 +288,32 @@ class GeoTIFFImage {
243
288
  getBytesPerPixel() {
244
289
  let bytes = 0;
245
290
  // this is a short list, so we assume this is already loaded
246
- for (let i = 0; i < this.fileDirectory.getValue('BitsPerSample').length; ++i) {
291
+ const bitsPerSample = this.fileDirectory.getValue('BitsPerSample') || [];
292
+ for (let i = 0; i < bitsPerSample.length; ++i) {
247
293
  bytes += this.getSampleByteSize(i);
248
294
  }
249
295
  return bytes;
250
296
  }
297
+ /**
298
+ * @param {number} i
299
+ * @returns {number}
300
+ */
251
301
  getSampleByteSize(i) {
252
- const bitsPerSample = this.fileDirectory.getValue('BitsPerSample');
302
+ const bitsPerSample = this.fileDirectory.getValue('BitsPerSample') || [];
253
303
  if (i >= bitsPerSample.length) {
254
304
  throw new RangeError(`Sample index ${i} is out of range.`);
255
305
  }
256
306
  return Math.ceil(bitsPerSample[i] / 8);
257
307
  }
308
+ /**
309
+ * @param {number} sampleIndex
310
+ * @returns {(this: DataView, byteOffset: number, littleEndian: boolean) => number}
311
+ */
258
312
  getReaderForSample(sampleIndex) {
259
- const format = this.fileDirectory.hasTag('SampleFormat')
260
- ? this.fileDirectory.getValue('SampleFormat')[sampleIndex] : 1;
261
- const bitsPerSample = this.fileDirectory.getValue('BitsPerSample')[sampleIndex];
313
+ const sampleFormat = this.fileDirectory.getValue('SampleFormat');
314
+ const format = sampleFormat
315
+ ? sampleFormat[sampleIndex] : 1;
316
+ const bitsPerSample = (this.fileDirectory.getValue('BitsPerSample') || [])[sampleIndex];
262
317
  switch (format) {
263
318
  case 1: // unsigned integer data
264
319
  if (bitsPerSample <= 8) {
@@ -302,16 +357,22 @@ class GeoTIFFImage {
302
357
  throw Error('Unsupported data format/bitsPerSample');
303
358
  }
304
359
  getSampleFormat(sampleIndex = 0) {
305
- return this.fileDirectory.hasTag('SampleFormat')
306
- ? this.fileDirectory.getValue('SampleFormat')[sampleIndex] : 1;
360
+ const sampleFormat = this.fileDirectory.getValue('SampleFormat');
361
+ return sampleFormat ? sampleFormat[sampleIndex] : 1;
307
362
  }
308
363
  getBitsPerSample(sampleIndex = 0) {
309
- return this.fileDirectory.getValue('BitsPerSample')[sampleIndex];
364
+ const bitsPerSample = this.fileDirectory.getValue('BitsPerSample');
365
+ return bitsPerSample ? bitsPerSample[sampleIndex] : 0;
310
366
  }
311
- getArrayForSample(sampleIndex, size) {
312
- const format = this.getSampleFormat(sampleIndex);
367
+ /**
368
+ * @param {number} sampleIndex
369
+ * @param {number|ArrayBufferLike} sizeOrData
370
+ * @returns {TypedArray}
371
+ */
372
+ getArrayForSample(sampleIndex, sizeOrData) {
373
+ const format = /** @type {1|2|3} */ (this.getSampleFormat(sampleIndex));
313
374
  const bitsPerSample = this.getBitsPerSample(sampleIndex);
314
- return arrayForType(format, bitsPerSample, size);
375
+ return arrayForType(format, bitsPerSample, sizeOrData);
315
376
  }
316
377
  /**
317
378
  * Returns the decoded strip or tile.
@@ -321,7 +382,7 @@ class GeoTIFFImage {
321
382
  * @param {DecoderWorker|import("./geotiff").BaseDecoder} poolOrDecoder the decoder or decoder pool
322
383
  * @param {AbortSignal} [signal] An AbortSignal that may be signalled if the request is
323
384
  * to be aborted
324
- * @returns {Promise.<{x: number, y: number, sample: number, data: ArrayBuffer}>} the decoded strip or tile
385
+ * @returns {Promise.<{x: number, y: number, sample: number, data: ArrayBufferLike}>} the decoded strip or tile
325
386
  */
326
387
  async getTileOrStrip(x, y, sample, poolOrDecoder, signal) {
327
388
  const numTilesPerRow = Math.ceil(this.getWidth() / this.getTileWidth());
@@ -340,12 +401,12 @@ class GeoTIFFImage {
340
401
  let offset;
341
402
  let byteCount;
342
403
  if (this.isTiled) {
343
- offset = await this.fileDirectory.loadValueIndexed('TileOffsets', index);
344
- byteCount = await this.fileDirectory.loadValueIndexed('TileByteCounts', index);
404
+ offset = Number(await this.fileDirectory.loadValueIndexed('TileOffsets', index));
405
+ byteCount = Number(await this.fileDirectory.loadValueIndexed('TileByteCounts', index));
345
406
  }
346
407
  else {
347
- offset = await this.fileDirectory.loadValueIndexed('StripOffsets', index);
348
- byteCount = await this.fileDirectory.loadValueIndexed('StripByteCounts', index);
408
+ offset = Number(await this.fileDirectory.loadValueIndexed('StripOffsets', index));
409
+ byteCount = Number(await this.fileDirectory.loadValueIndexed('StripByteCounts', index));
349
410
  }
350
411
  if (byteCount === 0) {
351
412
  const nPixels = this.getBlockHeight(y) * this.getTileWidth();
@@ -361,7 +422,7 @@ class GeoTIFFImage {
361
422
  // resolve each request by potentially applying array normalization
362
423
  request = (async () => {
363
424
  let data = await poolOrDecoder.decode(slice);
364
- const sampleFormat = this.getSampleFormat();
425
+ const sampleFormat = /** @type {1|2|3} */ (this.getSampleFormat());
365
426
  const bitsPerSample = this.getBitsPerSample();
366
427
  if (needsNormalization(sampleFormat, bitsPerSample)) {
367
428
  data = normalizeArray(data, sampleFormat, this.planarConfiguration, this.getSamplesPerPixel(), bitsPerSample, this.getTileWidth(), this.getBlockHeight(y));
@@ -383,8 +444,8 @@ class GeoTIFFImage {
383
444
  /**
384
445
  * Internal read function.
385
446
  * @private
386
- * @param {Array} imageWindow The image window in pixel coordinates
387
- * @param {Array} samples The selected samples (0-based indices)
447
+ * @param {Array<number>} imageWindow The image window in pixel coordinates
448
+ * @param {Array<number>} samples The selected samples (0-based indices)
388
449
  * @param {TypedArray|TypedArray[]} valueArrays The array(s) to write into
389
450
  * @param {boolean|undefined} interleave Whether or not to write in an interleaved manner
390
451
  * @param {DecoderWorker|import("./geotiff").BaseDecoder} poolOrDecoder the decoder or decoder pool
@@ -406,11 +467,17 @@ class GeoTIFFImage {
406
467
  const maxYTile = Math.min(Math.ceil(imageWindow[3] / tileHeight), Math.ceil(imageHeight / tileHeight));
407
468
  const windowWidth = imageWindow[2] - imageWindow[0];
408
469
  let bytesPerPixel = this.getBytesPerPixel();
470
+ /** @type {Array<number>} */
409
471
  const srcSampleOffsets = [];
472
+ /** @type {Array<(this: DataView, byteOffset: number, littleEndian: boolean) => number>} */
410
473
  const sampleReaders = [];
411
474
  for (let i = 0; i < samples.length; ++i) {
412
475
  if (this.planarConfiguration === 1) {
413
- srcSampleOffsets.push(sum(await this.fileDirectory.loadValue('BitsPerSample'), 0, samples[i]) / 8);
476
+ const bitsPerSample = await this.fileDirectory.loadValue('BitsPerSample');
477
+ if (typeof bitsPerSample !== 'object') {
478
+ throw new Error('Expected BitsPerSample to be an array or typed array.');
479
+ }
480
+ srcSampleOffsets.push(sum(bitsPerSample, 0, samples[i]) / 8);
414
481
  }
415
482
  else {
416
483
  srcSampleOffsets.push(0);
@@ -459,7 +526,7 @@ class GeoTIFFImage {
459
526
  }
460
527
  else {
461
528
  windowCoordinate = ((y + firstLine - imageWindow[1]) * windowWidth) + x + firstCol - imageWindow[0];
462
- valueArrays[si][windowCoordinate] = value;
529
+ /** @type {TypedArray} */ (valueArrays[si])[windowCoordinate] = value;
463
530
  }
464
531
  }
465
532
  }
@@ -548,9 +615,14 @@ class GeoTIFFImage {
548
615
  /** @type {TypedArray|TypedArray[]} */
549
616
  let valueArrays;
550
617
  if (interleave) {
551
- const format = this.fileDirectory.hasTag('SampleFormat')
552
- ? Math.max.apply(null, this.fileDirectory.getValue('SampleFormat')) : 1;
553
- const bitsPerSample = Math.max.apply(null, this.fileDirectory.getValue('BitsPerSample'));
618
+ const { fileDirectory } = this;
619
+ const format = fileDirectory.hasTag('SampleFormat')
620
+ ? Math.max.apply(null, Array.from(fileDirectory.getValue('SampleFormat'))) : 1;
621
+ if (format !== 1 && format !== 2 && format !== 3) {
622
+ throw new Error('Unsupported sample format for interleaved data. Must be 1, 2, or 3.');
623
+ }
624
+ const bitsPerSample = fileDirectory.hasTag('BitsPerSample')
625
+ ? Math.max.apply(null, Array.from(fileDirectory.getValue('BitsPerSample'))) : 8;
554
626
  valueArrays = arrayForType(format, bitsPerSample, numPixels * samples.length);
555
627
  if (fillValue) {
556
628
  if (Array.isArray(fillValue)) {
@@ -621,9 +693,11 @@ class GeoTIFFImage {
621
693
  const pi = this.fileDirectory.getValue('PhotometricInterpretation');
622
694
  if (pi === photometricInterpretations.RGB) {
623
695
  let s = [0, 1, 2];
624
- if ((!(this.fileDirectory.getValue('ExtraSamples') === ExtraSamplesValues.Unspecified)) && enableAlpha) {
696
+ const extraSamples = this.fileDirectory.getValue('ExtraSamples');
697
+ if (extraSamples && extraSamples[0] !== ExtraSamplesValues.Unspecified && enableAlpha) {
625
698
  s = [];
626
- for (let i = 0; i < this.fileDirectory.getValue('BitsPerSample').length; i += 1) {
699
+ const bitsPerSample = this.fileDirectory.getValue('BitsPerSample') || [];
700
+ for (let i = 0; i < bitsPerSample.length; i += 1) {
627
701
  s.push(i);
628
702
  }
629
703
  }
@@ -678,7 +752,7 @@ class GeoTIFFImage {
678
752
  data = fromBlackIsZero(raster, max);
679
753
  break;
680
754
  case photometricInterpretations.Palette:
681
- data = fromPalette(raster, await fileDirectory.loadValue('ColorMap'));
755
+ data = fromPalette(raster, /** @type {Uint16Array} */ (await fileDirectory.loadValue('ColorMap')));
682
756
  break;
683
757
  case photometricInterpretations.CMYK:
684
758
  data = fromCMYK(raster);
@@ -712,13 +786,16 @@ class GeoTIFFImage {
712
786
  }
713
787
  /**
714
788
  * Returns an array of tiepoints.
715
- * @returns {Promise<Object[]>}
789
+ * @returns {Promise<Array<{i: number, j: number, k: number, x: number, y: number, z: number}>>} the tiepoints
716
790
  */
717
791
  async getTiePoints() {
718
792
  if (!this.fileDirectory.hasTag('ModelTiepoint')) {
719
793
  return [];
720
794
  }
721
795
  const modelTiePoint = await this.fileDirectory.loadValue('ModelTiepoint');
796
+ if (typeof modelTiePoint !== 'object') {
797
+ throw new Error('Expected ModelTiepoint to be an array or typed array.');
798
+ }
722
799
  const tiePoints = [];
723
800
  for (let i = 0; i < modelTiePoint.length; i += 6) {
724
801
  tiePoints.push({
@@ -739,14 +816,16 @@ class GeoTIFFImage {
739
816
  * Otherwise only metadata specific to the provided sample will be returned.
740
817
  *
741
818
  * @param {number|null} [sample=null] The sample index.
742
- * @returns {Promise<Object>}
819
+ * @returns {Promise<Record<string, unknown>|null>} The GDAL metadata items
743
820
  */
744
821
  async getGDALMetadata(sample = null) {
822
+ /** @type {Record<string, unknown>} */
745
823
  const metadata = {};
746
824
  if (!this.fileDirectory.hasTag('GDAL_METADATA')) {
747
825
  return null;
748
826
  }
749
827
  const string = await this.fileDirectory.loadValue('GDAL_METADATA');
828
+ /** @type {Array<{inner: unknown}>} */
750
829
  let items = findTagsByName(string, 'Item');
751
830
  if (sample === null) {
752
831
  items = items.filter((item) => getAttribute(item, 'sample') === undefined);
@@ -765,10 +844,10 @@ class GeoTIFFImage {
765
844
  * @returns {number|null}
766
845
  */
767
846
  getGDALNoData() {
768
- if (!this.fileDirectory.hasTag('GDAL_NODATA')) {
847
+ const string = this.fileDirectory.getValue('GDAL_NODATA');
848
+ if (!string) {
769
849
  return null;
770
850
  }
771
- const string = this.fileDirectory.getValue('GDAL_NODATA');
772
851
  return Number(string.substring(0, string.length - 1));
773
852
  }
774
853
  /**
@@ -857,9 +936,9 @@ class GeoTIFFImage {
857
936
  getBoundingBox(tilegrid = false) {
858
937
  const height = this.getHeight();
859
938
  const width = this.getWidth();
860
- if (this.fileDirectory.hasTag('ModelTransformation') && !tilegrid) {
861
- // eslint-disable-next-line no-unused-vars
862
- const [a, b, c, d, e, f, g, h] = this.fileDirectory.getValue('ModelTransformation');
939
+ const modelTransformation = this.fileDirectory.getValue('ModelTransformation');
940
+ if (modelTransformation && !tilegrid) {
941
+ const [a, b, , d, e, f, , h] = modelTransformation;
863
942
  const corners = [
864
943
  [0, 0],
865
944
  [0, height],
@@ -896,3 +975,4 @@ class GeoTIFFImage {
896
975
  }
897
976
  }
898
977
  export default GeoTIFFImage;
978
+ //# sourceMappingURL=geotiffimage.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"geotiffimage.js","sourceRoot":"","sources":["../src/geotiffimage.js"],"names":[],"mappings":"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"}
@@ -1,2 +1,29 @@
1
- export function writeGeotiff(data: any, metadata: any): ArrayBuffer;
1
+ /**
2
+ * @param {Array<number>|Array<Array<Array<number>>>|import('./geotiff.js').TypedArray} data
3
+ * @param {GeotiffWriterMetadata} metadata
4
+ * @returns {ArrayBuffer}
5
+ */
6
+ export function writeGeotiff(data: Array<number> | Array<Array<Array<number>>> | import("./geotiff.js").TypedArray, metadata: GeotiffWriterMetadata): ArrayBuffer;
7
+ export type Read = (buff: Uint8Array, p: number) => number;
8
+ export type BinBE = {
9
+ nextZero: (data: Uint8Array, o: number) => number;
10
+ readUshort: Read;
11
+ readShort: Read;
12
+ readInt: Read;
13
+ readUint: Read;
14
+ readASCII: (buff: Uint8Array, p: number, l: Array<number>) => string;
15
+ readFloat: Read;
16
+ readDouble: Read;
17
+ writeUshort: (buff: Uint8Array, p: number, n: number) => void;
18
+ writeUint: (buff: Uint8Array, p: number, n: number) => void;
19
+ writeASCII: (buff: Uint8Array, p: number, s: string) => void;
20
+ ui8: Uint8Array;
21
+ fl64: Float64Array;
22
+ fl32: Float32Array;
23
+ ui32: Uint32Array;
24
+ i32: Int32Array;
25
+ i16: Int16Array;
26
+ writeDouble: (buff: Uint8Array, p: number, n: number) => void;
27
+ };
28
+ import type { GeotiffWriterMetadata } from './geotiff.js';
2
29
  //# sourceMappingURL=geotiffwriter.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"geotiffwriter.d.ts","sourceRoot":"","sources":["../src/geotiffwriter.js"],"names":[],"mappings":"AAyUA,oEAsNC"}
1
+ {"version":3,"file":"geotiffwriter.d.ts","sourceRoot":"","sources":["../src/geotiffwriter.js"],"names":[],"mappings":"AAiaA;;;;GAIG;AACH,mCAJW,KAAK,CAAC,MAAM,CAAC,GAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,GAAC,OAAO,cAAc,EAAE,UAAU,YAC3E,qBAAqB,GACnB,WAAW,CAsPvB;mBA9oBa,CAAC,IAAI,EAAE,UAAU,EAAE,CAAC,EAAE,MAAM,KAAK,MAAM;;cAevC,CAAC,IAAI,EAAE,UAAU,EAAE,CAAC,EAAE,MAAM,KAAK,MAAM;gBACvC,IAAI;eACJ,IAAI;aACJ,IAAI;cACJ,IAAI;eACJ,CAAC,IAAI,EAAE,UAAU,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,KAAK,CAAC,MAAM,CAAC,KAAK,MAAM;eACzD,IAAI;gBACJ,IAAI;iBACJ,CAAC,IAAI,EAAE,UAAU,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,KAAK,IAAI;eAChD,CAAC,IAAI,EAAE,UAAU,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,KAAK,IAAI;gBAChD,CAAC,IAAI,EAAE,UAAU,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,KAAK,IAAI;SAChD,UAAU;UACV,YAAY;UACZ,YAAY;UACZ,WAAW;SACX,UAAU;SACV,UAAU;iBACV,CAAC,IAAI,EAAE,UAAU,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,KAAK,IAAI;;2CAlCrB,cAAc"}