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
@@ -9,15 +9,42 @@ exports.writeGeotiff = writeGeotiff;
9
9
  */
10
10
  const globals_js_1 = require("./globals.js");
11
11
  const utils_js_1 = require("./utils.js");
12
+ /** @import {GeotiffWriterMetadata} from './geotiff.js' */
13
+ /** @typedef {(buff: Uint8Array, p: number) => number} Read */
12
14
  const tagName2Code = globals_js_1.tags;
13
15
  const geoKeyName2Code = (0, utils_js_1.invert)(globals_js_1.geoKeyNames);
16
+ /** @type {Record<number|string, keyof fieldTagTypes>} */
14
17
  const name2code = {};
15
18
  (0, utils_js_1.assign)(name2code, tagName2Code);
16
19
  (0, utils_js_1.assign)(name2code, geoKeyName2Code);
17
20
  const typeName2byte = globals_js_1.fieldTypes;
18
21
  // config variables
19
22
  const numBytesInIfd = 1000;
23
+ /**
24
+ * @typedef {Object} BinBE
25
+ * @property {(data: Uint8Array, o: number) => number} nextZero
26
+ * @property {Read} readUshort
27
+ * @property {Read} readShort
28
+ * @property {Read} readInt
29
+ * @property {Read} readUint
30
+ * @property {(buff: Uint8Array, p: number, l: Array<number>) => string} readASCII
31
+ * @property {Read} readFloat
32
+ * @property {Read} readDouble
33
+ * @property {(buff: Uint8Array, p: number, n: number) => void} writeUshort
34
+ * @property {(buff: Uint8Array, p: number, n: number) => void} writeUint
35
+ * @property {(buff: Uint8Array, p: number, s: string) => void} writeASCII
36
+ * @property {Uint8Array} ui8
37
+ * @property {Float64Array} fl64
38
+ * @property {Float32Array} fl32
39
+ * @property {Uint32Array} ui32
40
+ * @property {Int32Array} i32
41
+ * @property {Int16Array} i16
42
+ * @property {(buff: Uint8Array, p: number, n: number) => void} writeDouble
43
+ */
44
+ const ui8 = new Uint8Array(8);
45
+ /** @type {BinBE} */
20
46
  const _binBE = {
47
+ /** @type {Read} */
21
48
  nextZero: (data, o) => {
22
49
  let oincr = o;
23
50
  while (data[oincr] !== 0) {
@@ -25,15 +52,18 @@ const _binBE = {
25
52
  }
26
53
  return oincr;
27
54
  },
55
+ /** @type {Read} */
28
56
  readUshort: (buff, p) => {
29
57
  return (buff[p] << 8) | buff[p + 1];
30
58
  },
59
+ /** @type {Read} */
31
60
  readShort: (buff, p) => {
32
61
  const a = _binBE.ui8;
33
62
  a[0] = buff[p + 1];
34
63
  a[1] = buff[p + 0];
35
64
  return _binBE.i16[0];
36
65
  },
66
+ /** @type {Read} */
37
67
  readInt: (buff, p) => {
38
68
  const a = _binBE.ui8;
39
69
  a[0] = buff[p + 3];
@@ -42,6 +72,7 @@ const _binBE = {
42
72
  a[3] = buff[p + 0];
43
73
  return _binBE.i32[0];
44
74
  },
75
+ /** @type {Read} */
45
76
  readUint: (buff, p) => {
46
77
  const a = _binBE.ui8;
47
78
  a[0] = buff[p + 3];
@@ -50,9 +81,16 @@ const _binBE = {
50
81
  a[3] = buff[p + 0];
51
82
  return _binBE.ui32[0];
52
83
  },
84
+ /**
85
+ * @param {Uint8Array} buff
86
+ * @param {number} p
87
+ * @param {Array<number>} l
88
+ * @returns {string}
89
+ */
53
90
  readASCII: (buff, p, l) => {
54
91
  return l.map((i) => String.fromCharCode(buff[p + i])).join('');
55
92
  },
93
+ /** @type {Read} */
56
94
  readFloat: (buff, p) => {
57
95
  const a = _binBE.ui8;
58
96
  (0, utils_js_1.times)(4, (i) => {
@@ -60,6 +98,7 @@ const _binBE = {
60
98
  });
61
99
  return _binBE.fl32[0];
62
100
  },
101
+ /** @type {Read} */
63
102
  readDouble: (buff, p) => {
64
103
  const a = _binBE.ui8;
65
104
  (0, utils_js_1.times)(8, (i) => {
@@ -67,50 +106,74 @@ const _binBE = {
67
106
  });
68
107
  return _binBE.fl64[0];
69
108
  },
109
+ /**
110
+ * @param {Uint8Array} buff
111
+ * @param {number} p
112
+ * @param {number} n
113
+ */
70
114
  writeUshort: (buff, p, n) => {
71
115
  buff[p] = (n >> 8) & 255;
72
116
  buff[p + 1] = n & 255;
73
117
  },
118
+ /**
119
+ * @param {Uint8Array} buff
120
+ * @param {number} p
121
+ * @param {number} n
122
+ */
74
123
  writeUint: (buff, p, n) => {
75
124
  buff[p] = (n >> 24) & 255;
76
125
  buff[p + 1] = (n >> 16) & 255;
77
126
  buff[p + 2] = (n >> 8) & 255;
78
127
  buff[p + 3] = (n >> 0) & 255;
79
128
  },
129
+ /**
130
+ * @param {Uint8Array} buff
131
+ * @param {number} p
132
+ * @param {string} s
133
+ */
80
134
  writeASCII: (buff, p, s) => {
81
135
  (0, utils_js_1.times)(s.length, (i) => {
82
136
  buff[p + i] = s.charCodeAt(i);
83
137
  });
84
138
  },
85
- ui8: new Uint8Array(8),
86
- };
87
- _binBE.fl64 = new Float64Array(_binBE.ui8.buffer);
88
- _binBE.writeDouble = (buff, p, n) => {
89
- _binBE.fl64[0] = n;
90
- (0, utils_js_1.times)(8, (i) => {
91
- buff[p + i] = _binBE.ui8[7 - i];
92
- });
139
+ ui8,
140
+ fl64: new Float64Array(ui8.buffer),
141
+ fl32: new Float32Array(ui8.buffer),
142
+ ui32: new Uint32Array(ui8.buffer),
143
+ i32: new Int32Array(ui8.buffer),
144
+ i16: new Int16Array(ui8.buffer),
145
+ /**
146
+ * @param {Uint8Array} buff
147
+ * @param {number} p
148
+ * @param {number} n
149
+ */
150
+ writeDouble: (buff, p, n) => {
151
+ _binBE.fl64[0] = n;
152
+ (0, utils_js_1.times)(8, (i) => {
153
+ buff[p + i] = _binBE.ui8[7 - i];
154
+ });
155
+ },
93
156
  };
157
+ /**
158
+ * @param {BinBE} bin
159
+ * @param {Uint8Array} data
160
+ * @param {number} _offset
161
+ * @param {Record<keyof fieldTagTypes, any>} ifd
162
+ * @returns {[number, number]}
163
+ */
94
164
  const _writeIFD = (bin, data, _offset, ifd) => {
95
165
  let offset = _offset;
96
- const keys = Object.keys(ifd).filter((key) => {
166
+ const keys = /** @type {Array<keyof fieldTagTypes>} */ (Object.keys(ifd).filter((key) => {
97
167
  return key !== undefined && key !== null && key !== 'undefined';
98
- });
168
+ }).map(Number));
99
169
  bin.writeUshort(data, offset, keys.length);
100
170
  offset += 2;
101
171
  let eoff = offset + (12 * keys.length) + 4;
102
172
  for (const key of keys) {
103
- let tag = null;
104
- if (typeof key === 'number') {
105
- tag = key;
106
- }
107
- else if (typeof key === 'string') {
108
- tag = parseInt(key, 10);
109
- }
110
- const typeName = globals_js_1.fieldTagTypes[tag];
173
+ const typeName = /** @type {keyof typeName2byte} */ (globals_js_1.fieldTagTypes[key]);
111
174
  const typeNum = typeName2byte[typeName];
112
175
  if (typeName == null || typeName === undefined || typeof typeName === 'undefined') {
113
- throw new Error(`unknown type of tag: ${tag}`);
176
+ throw new Error(`unknown type of tag: ${key}`);
114
177
  }
115
178
  let val = ifd[key];
116
179
  if (val === undefined) {
@@ -123,7 +186,7 @@ const _writeIFD = (bin, data, _offset, ifd) => {
123
186
  val += '\u0000';
124
187
  }
125
188
  const num = val.length;
126
- bin.writeUshort(data, offset, tag);
189
+ bin.writeUshort(data, offset, key);
127
190
  offset += 2;
128
191
  bin.writeUshort(data, offset, typeNum);
129
192
  offset += 2;
@@ -167,6 +230,10 @@ const _writeIFD = (bin, data, _offset, ifd) => {
167
230
  }
168
231
  return [offset, eoff];
169
232
  };
233
+ /**
234
+ * @param {Array<Record<keyof fieldTagTypes, unknown>>} ifds
235
+ * @returns {ArrayBuffer}
236
+ */
170
237
  const encodeIfds = (ifds) => {
171
238
  const data = new Uint8Array(numBytesInIfd);
172
239
  let offset = 4;
@@ -198,6 +265,13 @@ const encodeIfds = (ifds) => {
198
265
  }
199
266
  return result.buffer;
200
267
  };
268
+ /**
269
+ * @param {Array<number>|import('./geotiff.js').TypedArray} values
270
+ * @param {number} width
271
+ * @param {number} height
272
+ * @param {GeotiffWriterMetadata} metadata
273
+ * @returns {ArrayBuffer}
274
+ */
201
275
  const encodeImage = (values, width, height, metadata) => {
202
276
  if (height === undefined || height === null) {
203
277
  throw new Error(`you passed into encodeImage a width of type ${height}`);
@@ -205,6 +279,7 @@ const encodeImage = (values, width, height, metadata) => {
205
279
  if (width === undefined || width === null) {
206
280
  throw new Error(`you passed into encodeImage a width of type ${width}`);
207
281
  }
282
+ /** @type {Record<number|string, Array<number|string>|number|string|undefined>} */
208
283
  const ifd = {
209
284
  256: [width], // ImageWidth
210
285
  257: [height], // ImageLength
@@ -215,20 +290,19 @@ const encodeImage = (values, width, height, metadata) => {
215
290
  if (metadata) {
216
291
  for (const i in metadata) {
217
292
  if (metadata.hasOwnProperty(i)) {
218
- ifd[i] = metadata[i];
293
+ ifd[i] = metadata[ /** @type {keyof GeotiffWriterMetadata} */(i)];
219
294
  }
220
295
  }
221
296
  }
222
297
  const prfx = new Uint8Array(encodeIfds([ifd]));
223
- const samplesPerPixel = ifd[globals_js_1.tags.SamplesPerPixel];
224
- const dataType = values.constructor.name;
298
+ const dataType = /** @type {keyof typeMap} */ (values.constructor.name);
225
299
  const TypedArray = utils_js_1.typeMap[dataType];
226
300
  // default for Float64
227
301
  let elementSize = 8;
228
302
  if (TypedArray) {
229
303
  elementSize = TypedArray.BYTES_PER_ELEMENT;
230
304
  }
231
- const data = new Uint8Array(numBytesInIfd + (values.length * elementSize * samplesPerPixel));
305
+ const data = new Uint8Array(numBytesInIfd + (values.length * elementSize));
232
306
  (0, utils_js_1.times)(prfx.length, (i) => {
233
307
  data[i] = prfx[i];
234
308
  });
@@ -262,7 +336,13 @@ const encodeImage = (values, width, height, metadata) => {
262
336
  });
263
337
  return data.buffer;
264
338
  };
339
+ /**
340
+ * @template T
341
+ * @param {Record<number|string, T>} input
342
+ * @returns {Record<number|string, T>}
343
+ */
265
344
  const convertToTids = (input) => {
345
+ /** @type {Record<number|string, T>} */
266
346
  const result = {};
267
347
  for (const key in input) {
268
348
  if (key !== 'StripOffsets') {
@@ -274,38 +354,63 @@ const convertToTids = (input) => {
274
354
  }
275
355
  return result;
276
356
  };
357
+ /**
358
+ * @template T
359
+ * @param {T} input
360
+ * @returns {T extends any[] ? T : T[]}
361
+ */
277
362
  const toArray = (input) => {
278
363
  if (Array.isArray(input)) {
279
- return input;
364
+ return /** @type {T extends any[] ? T : T[]} */ (input);
280
365
  }
281
- return [input];
366
+ return /** @type {T extends any[] ? T : T[]} */ ([input]);
367
+ };
368
+ /** @type {Partial<GeotiffWriterMetadata>} */
369
+ const metadataDefaults = {
370
+ Compression: 1, // no compression
371
+ PlanarConfiguration: 1,
372
+ ExtraSamples: 0,
282
373
  };
283
- const metadataDefaults = [
284
- ['Compression', 1], // no compression
285
- ['PlanarConfiguration', 1],
286
- ['ExtraSamples', 0],
287
- ];
374
+ /**
375
+ * @param {Array<number>|Array<Array<Array<number>>>|import('./geotiff.js').TypedArray} data
376
+ * @param {GeotiffWriterMetadata} metadata
377
+ * @returns {ArrayBuffer}
378
+ */
288
379
  function writeGeotiff(data, metadata) {
289
380
  const isFlattened = typeof data[0] === 'number';
381
+ /** @type {number} */
290
382
  let height;
383
+ /** @type {number} */
291
384
  let numBands;
385
+ /** @type {number} */
292
386
  let width;
387
+ /** @type {Array<number>} */
293
388
  let flattenedValues;
294
389
  if (isFlattened) {
295
- height = metadata.height || metadata.ImageLength;
296
- width = metadata.width || metadata.ImageWidth;
297
- numBands = data.length / (height * width);
298
- flattenedValues = data;
390
+ const arrayFlat = /** @type {Array<number>} */ (data);
391
+ const metaHeight = metadata.height || metadata.ImageLength;
392
+ if (metaHeight === undefined || typeof metaHeight !== 'number') {
393
+ throw new Error('height is required to be a number in metadata if data is a flat array');
394
+ }
395
+ height = metaHeight;
396
+ const metaWidth = metadata.width || metadata.ImageWidth;
397
+ if (metaWidth === undefined || typeof metaWidth !== 'number') {
398
+ throw new Error('width is required to be a number in metadata if data is a flat array');
399
+ }
400
+ width = metaWidth;
401
+ numBands = arrayFlat.length / (height * width);
402
+ flattenedValues = arrayFlat;
299
403
  }
300
404
  else {
301
- numBands = data.length;
302
- height = data[0].length;
303
- width = data[0][0].length;
405
+ const array3d = /** @type {Array<Array<Array<number>>>} */ (data);
406
+ numBands = array3d.length;
407
+ height = array3d[0].length;
408
+ width = array3d[0][0].length;
304
409
  flattenedValues = [];
305
410
  (0, utils_js_1.times)(height, (rowIndex) => {
306
411
  (0, utils_js_1.times)(width, (columnIndex) => {
307
412
  (0, utils_js_1.times)(numBands, (bandIndex) => {
308
- flattenedValues.push(data[bandIndex][rowIndex][columnIndex]);
413
+ flattenedValues.push(array3d[bandIndex][rowIndex][columnIndex]);
309
414
  });
310
415
  });
311
416
  });
@@ -322,36 +427,42 @@ function writeGeotiff(data, metadata) {
322
427
  }
323
428
  metadata.BitsPerSample = (0, utils_js_1.times)(numBands, () => bitsPerSample);
324
429
  }
325
- metadataDefaults.forEach((tag) => {
326
- const key = tag[0];
327
- if (!metadata[key]) {
328
- const value = tag[1];
329
- metadata[key] = value;
330
- }
331
- });
430
+ const finalMetadata = metadata;
431
+ if (!('Compression' in finalMetadata)) {
432
+ finalMetadata.Compression = metadataDefaults.Compression;
433
+ }
434
+ if (!('PlanarConfiguration' in finalMetadata)) {
435
+ finalMetadata.PlanarConfiguration = metadataDefaults.PlanarConfiguration;
436
+ }
437
+ if (!('ExtraSamples' in finalMetadata)) {
438
+ finalMetadata.ExtraSamples = metadataDefaults.ExtraSamples;
439
+ }
332
440
  // The color space of the image data.
333
441
  // 1=black is zero and 2=RGB.
334
- if (!metadata.PhotometricInterpretation) {
335
- metadata.PhotometricInterpretation = metadata.BitsPerSample.length === 3 ? 2 : 1;
442
+ if (!finalMetadata.PhotometricInterpretation) {
443
+ if (!Array.isArray(finalMetadata.BitsPerSample)) {
444
+ throw new Error('BitsPerSample must be an array when PhotometricInterpretation is not provided');
445
+ }
446
+ finalMetadata.PhotometricInterpretation = finalMetadata.BitsPerSample.length === 3 ? 2 : 1;
336
447
  }
337
448
  // The number of components per pixel.
338
- if (!metadata.SamplesPerPixel) {
339
- metadata.SamplesPerPixel = [numBands];
449
+ if (!finalMetadata.SamplesPerPixel) {
450
+ finalMetadata.SamplesPerPixel = [numBands];
340
451
  }
341
- if (!metadata.StripByteCounts) {
452
+ if (!finalMetadata.StripByteCounts) {
342
453
  // we are only writing one strip
343
454
  // default for Float64
344
455
  let elementSize = 8;
345
456
  if (ArrayBuffer.isView(flattenedValues)) {
346
457
  elementSize = Object.getPrototypeOf(flattenedValues).BYTES_PER_ELEMENT;
347
458
  }
348
- metadata.StripByteCounts = [numBands * elementSize * height * width];
459
+ finalMetadata.StripByteCounts = [numBands * elementSize * height * width];
349
460
  }
350
- if (!metadata.ModelPixelScale && !metadata.ModelTransformation) {
461
+ if (!finalMetadata.ModelPixelScale && !finalMetadata.ModelTransformation) {
351
462
  // assumes raster takes up exactly the whole globe
352
- metadata.ModelPixelScale = [360 / width, 180 / height, 0];
463
+ finalMetadata.ModelPixelScale = [360 / width, 180 / height, 0];
353
464
  }
354
- if (!metadata.SampleFormat) {
465
+ if (!finalMetadata.SampleFormat) {
355
466
  let sampleFormat = 1;
356
467
  if ((0, utils_js_1.isTypedFloatArray)(flattenedValues)) {
357
468
  sampleFormat = 3;
@@ -362,49 +473,59 @@ function writeGeotiff(data, metadata) {
362
473
  if ((0, utils_js_1.isTypedUintArray)(flattenedValues)) {
363
474
  sampleFormat = 1;
364
475
  }
365
- metadata.SampleFormat = (0, utils_js_1.times)(numBands, () => sampleFormat);
476
+ finalMetadata.SampleFormat = (0, utils_js_1.times)(numBands, () => sampleFormat);
366
477
  }
367
478
  // if didn't pass in projection information, assume the popular 4326 "geographic projection"
368
- if (!metadata.hasOwnProperty('GeographicTypeGeoKey') && !metadata.hasOwnProperty('ProjectedCSTypeGeoKey')) {
369
- metadata.GeographicTypeGeoKey = 4326;
370
- if (!metadata.ModelTransformation) {
371
- metadata.ModelTiepoint = [0, 0, 0, -180, 90, 0]; // raster fits whole globe
479
+ if (!finalMetadata.hasOwnProperty('GeographicTypeGeoKey') && !finalMetadata.hasOwnProperty('ProjectedCSTypeGeoKey')) {
480
+ finalMetadata.GeographicTypeGeoKey = 4326;
481
+ if (!finalMetadata.ModelTransformation) {
482
+ finalMetadata.ModelTiepoint = [0, 0, 0, -180, 90, 0]; // raster fits whole globe
372
483
  }
373
- metadata.GeogCitationGeoKey = 'WGS 84';
374
- metadata.GTModelTypeGeoKey = 2;
484
+ finalMetadata.GeogCitationGeoKey = 'WGS 84';
485
+ finalMetadata.GTModelTypeGeoKey = 2;
375
486
  }
376
- const geoKeys = Object.keys(metadata)
487
+ const geoKeys = Object.keys(finalMetadata)
377
488
  .filter((key) => (0, utils_js_1.endsWith)(key, 'GeoKey'))
378
489
  .sort((a, b) => name2code[a] - name2code[b]);
379
490
  // If not provided, build GeoKeyDirectory as well as GeoAsciiParamsTag and GeoDoubleParamsTag
380
491
  // if GeoAsciiParams/GeoDoubleParams were passed in, we assume offsets are already correct
381
492
  // Spec http://geotiff.maptools.org/spec/geotiff2.4.html
382
- if (!metadata.GeoKeyDirectory) {
493
+ if (!finalMetadata.GeoKeyDirectory) {
383
494
  // Only build ASCII / DOUBLE params if not provided
384
- let geoAsciiParams = metadata.GeoAsciiParams || '';
495
+ let geoAsciiParams = finalMetadata.GeoAsciiParams || '';
496
+ if (typeof geoAsciiParams !== 'string') {
497
+ throw new Error('GeoAsciiParams must be a string if provided');
498
+ }
385
499
  let currentAsciiOffset = geoAsciiParams.length;
386
- const geoDoubleParams = metadata.GeoDoubleParams || [];
500
+ const geoDoubleParams = finalMetadata.GeoDoubleParams || [];
501
+ if (!Array.isArray(geoDoubleParams)) {
502
+ throw new Error('GeoDoubleParams must be an array if provided');
503
+ }
387
504
  let currentDoubleIndex = geoDoubleParams.length;
388
505
  // Since geoKeys already sorted and filtered, do a single pass to append to corresponding directory for SHORT/ASCII/DOUBLE
389
506
  const GeoKeyDirectory = [1, 1, 0, 0];
390
507
  let validKeys = 0;
391
508
  geoKeys.forEach((geoKey) => {
392
- const KeyID = Number(name2code[geoKey]);
509
+ const KeyID = name2code[geoKey];
393
510
  const tagType = globals_js_1.fieldTagTypes[KeyID];
394
- const val = metadata[geoKey];
511
+ const val = finalMetadata[ /** @type {keyof import('./geotiff.js').GeotiffWriterMetadata} */(geoKey)];
395
512
  if (val === undefined) {
396
513
  return;
397
514
  }
398
515
  let Count;
399
516
  let TIFFTagLocation;
517
+ /** @type {number} */
400
518
  let valueOffset;
401
519
  if (tagType === 'SHORT') {
402
520
  Count = 1;
403
521
  TIFFTagLocation = 0;
522
+ if (typeof val !== 'number') {
523
+ throw new Error(`GeoKey ${geoKey} with type SHORT must have a number value`);
524
+ }
404
525
  valueOffset = val;
405
526
  }
406
527
  else if (tagType === 'ASCII') {
407
- if (!metadata.GeoAsciiParams) {
528
+ if (!finalMetadata.GeoAsciiParams) {
408
529
  const valStr = `${val.toString()}\u0000`;
409
530
  TIFFTagLocation = Number(name2code.GeoAsciiParams); // 34737
410
531
  valueOffset = currentAsciiOffset;
@@ -417,15 +538,15 @@ function writeGeotiff(data, metadata) {
417
538
  }
418
539
  }
419
540
  else if (tagType === 'DOUBLE') {
420
- if (!metadata.GeoDoubleParams) {
541
+ if (!finalMetadata.GeoDoubleParams) {
421
542
  const arr = toArray(val);
422
543
  TIFFTagLocation = Number(name2code.GeoDoubleParams); // 34736
423
544
  valueOffset = currentDoubleIndex;
424
545
  Count = arr.length;
425
- arr.forEach((v) => {
546
+ for (const v of arr) {
426
547
  geoDoubleParams.push(Number(v));
427
548
  currentDoubleIndex++;
428
- });
549
+ }
429
550
  }
430
551
  else {
431
552
  return;
@@ -440,21 +561,21 @@ function writeGeotiff(data, metadata) {
440
561
  });
441
562
  // Write GeoKeyDirectory, GeoAsciiParams, GeoDoubleParams
442
563
  GeoKeyDirectory[3] = validKeys;
443
- metadata.GeoKeyDirectory = GeoKeyDirectory;
444
- if (!metadata.GeoAsciiParams && geoAsciiParams.length > 0) {
445
- metadata.GeoAsciiParams = geoAsciiParams;
564
+ finalMetadata.GeoKeyDirectory = GeoKeyDirectory;
565
+ if (!finalMetadata.GeoAsciiParams && geoAsciiParams.length > 0) {
566
+ finalMetadata.GeoAsciiParams = geoAsciiParams;
446
567
  }
447
- if (!metadata.GeoDoubleParams && geoDoubleParams.length > 0) {
448
- metadata.GeoDoubleParams = geoDoubleParams;
568
+ if (!finalMetadata.GeoDoubleParams && geoDoubleParams.length > 0) {
569
+ finalMetadata.GeoDoubleParams = geoDoubleParams;
449
570
  }
450
571
  }
451
572
  // cleanup original GeoKeys metadata, because stored in GeoKeyDirectory tag
452
573
  for (const geoKey of geoKeys) {
453
- if (metadata.hasOwnProperty(geoKey)) {
454
- delete metadata[geoKey];
574
+ if (finalMetadata.hasOwnProperty(geoKey)) {
575
+ delete finalMetadata[ /** @type {keyof import('./geotiff.js').GeotiffWriterMetadata} */(geoKey)];
455
576
  }
456
577
  }
457
- [
578
+ /** @type {const} */ ([
458
579
  'Compression',
459
580
  'ExtraSamples',
460
581
  'GeographicTypeGeoKey',
@@ -471,13 +592,14 @@ function writeGeotiff(data, metadata) {
471
592
  'XPosition',
472
593
  'YPosition',
473
594
  'RowsPerStrip',
474
- ].forEach((name) => {
475
- if (metadata[name]) {
476
- metadata[name] = toArray(metadata[name]);
595
+ ]).forEach((name) => {
596
+ if (finalMetadata[name]) {
597
+ finalMetadata[name] = toArray(finalMetadata[name]);
477
598
  }
478
599
  });
479
- const encodedMetadata = convertToTids(metadata);
600
+ const encodedMetadata = convertToTids(finalMetadata);
480
601
  const outputImage = encodeImage(flattenedValues, width, height, encodedMetadata);
481
602
  return outputImage;
482
603
  }
604
+ //# sourceMappingURL=geotiffwriter.js.map
483
605
  //# sourceMappingURL=geotiffwriter.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"geotiffwriter.js","sourceRoot":"","sources":["../dist-module/geotiffwriter.js"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"geotiffwriter.js","sourceRoot":"","sources":["../dist-module/geotiffwriter.js"],"names":[],"mappings":"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"}