@cogeotiff/core 8.1.1 → 9.0.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +31 -0
- package/README.md +45 -7
- package/build/__benchmark__/cog.read.benchmark.js +5 -5
- package/build/__benchmark__/cog.read.benchmark.js.map +1 -1
- package/build/__benchmark__/source.file.js +1 -1
- package/build/__benchmark__/source.file.js.map +1 -1
- package/build/__benchmark__/source.memory.d.ts +3 -0
- package/build/__benchmark__/source.memory.js +13 -0
- package/build/__benchmark__/source.memory.js.map +1 -1
- package/build/__test__/cog.image.test.js +14 -9
- package/build/__test__/cog.image.test.js.map +1 -1
- package/build/__test__/cog.read.test.js +42 -17
- package/build/__test__/cog.read.test.js.map +1 -1
- package/build/__test__/example.js +2 -2
- package/build/__test__/example.js.map +1 -1
- package/build/const/index.d.ts +1 -1
- package/build/const/index.js +1 -1
- package/build/const/index.js.map +1 -1
- package/build/const/tiff.mime.d.ts +11 -5
- package/build/const/tiff.mime.js +27 -14
- package/build/const/tiff.mime.js.map +1 -1
- package/build/const/tiff.tag.id.d.ts +603 -41
- package/build/const/tiff.tag.id.js +479 -50
- package/build/const/tiff.tag.id.js.map +1 -1
- package/build/const/tiff.tag.value.js +1 -1
- package/build/const/tiff.tag.value.js.map +1 -1
- package/build/index.d.ts +6 -5
- package/build/index.js +6 -4
- package/build/index.js.map +1 -1
- package/build/read/tiff.gdal.d.ts +1 -1
- package/build/read/tiff.gdal.js +1 -1
- package/build/read/tiff.gdal.js.map +1 -1
- package/build/read/tiff.ifd.config.js +1 -1
- package/build/read/tiff.ifd.config.js.map +1 -1
- package/build/read/tiff.tag.d.ts +3 -0
- package/build/read/tiff.tag.factory.d.ts +5 -5
- package/build/read/tiff.tag.factory.js +22 -13
- package/build/read/tiff.tag.factory.js.map +1 -1
- package/build/read/tiff.value.reader.d.ts +1 -1
- package/build/read/tiff.value.reader.js.map +1 -1
- package/build/{cog.tiff.d.ts → tiff.d.ts} +12 -10
- package/build/{cog.tiff.image.d.ts → tiff.image.d.ts} +69 -27
- package/build/{cog.tiff.image.js → tiff.image.js} +125 -82
- package/build/tiff.image.js.map +1 -0
- package/build/{cog.tiff.js → tiff.js} +19 -11
- package/build/tiff.js.map +1 -0
- package/build/util/bytes.d.ts +4 -2
- package/build/util/bytes.js +5 -2
- package/build/util/bytes.js.map +1 -1
- package/package.json +2 -2
- package/src/__benchmark__/cog.read.benchmark.ts +6 -5
- package/src/__benchmark__/source.file.ts +2 -1
- package/src/__benchmark__/source.memory.ts +10 -0
- package/src/__test__/cog.image.test.ts +17 -9
- package/src/__test__/cog.read.test.ts +53 -18
- package/src/__test__/example.ts +3 -2
- package/src/const/index.ts +1 -1
- package/src/const/tiff.mime.ts +28 -14
- package/src/const/tiff.tag.id.ts +758 -131
- package/src/const/tiff.tag.value.ts +16 -16
- package/src/index.ts +20 -5
- package/src/read/tiff.gdal.ts +1 -1
- package/src/read/tiff.ifd.config.ts +1 -1
- package/src/read/tiff.tag.factory.ts +33 -17
- package/src/read/tiff.tag.ts +3 -0
- package/src/read/tiff.value.reader.ts +1 -1
- package/src/{cog.tiff.image.ts → tiff.image.ts} +137 -92
- package/src/{cog.tiff.ts → tiff.ts} +22 -17
- package/src/util/bytes.ts +5 -1
- package/build/cog.tiff.image.js.map +0 -1
- package/build/cog.tiff.js.map +0 -1
package/build/index.d.ts
CHANGED
|
@@ -1,12 +1,13 @@
|
|
|
1
|
-
export { CogTiff } from './cog.tiff.js';
|
|
2
|
-
export { CogTiffImage } from './cog.tiff.image.js';
|
|
3
1
|
export { TiffEndian } from './const/tiff.endian.js';
|
|
4
|
-
export { TiffCompression, TiffMimeType } from './const/tiff.mime.js';
|
|
5
|
-
export { TiffTagGeo,
|
|
2
|
+
export { TiffCompressionMimeType as TiffCompression, TiffMimeType } from './const/tiff.mime.js';
|
|
3
|
+
export { TiffTag, TiffTagGeo, TiffTagGeoType, TiffTagType } from './const/tiff.tag.id.js';
|
|
6
4
|
export { TiffTagValueType } from './const/tiff.tag.value.js';
|
|
7
5
|
export { TiffVersion } from './const/tiff.version.js';
|
|
8
|
-
export { TagInline, TagLazy, TagOffset
|
|
6
|
+
export { Tag, TagInline, TagLazy, TagOffset } from './read/tiff.tag.js';
|
|
9
7
|
export { getTiffTagSize } from './read/tiff.value.reader.js';
|
|
10
8
|
export { Source } from './source.js';
|
|
9
|
+
export { TiffImage } from './tiff.image.js';
|
|
10
|
+
export { Tiff } from './tiff.js';
|
|
11
11
|
export { toHex } from './util/util.hex.js';
|
|
12
12
|
export type { BoundingBox, Point, Size, Vector } from './vector.js';
|
|
13
|
+
export { AngularUnit, Compression, LinearUnit, ModelTypeCode, OldSubFileType, Orientation, Photometric, PlanarConfiguration, RasterTypeKey, SampleFormat, SubFileType, } from './const/tiff.tag.id.js';
|
package/build/index.js
CHANGED
|
@@ -1,10 +1,12 @@
|
|
|
1
|
-
export { CogTiff } from './cog.tiff.js';
|
|
2
|
-
export { CogTiffImage } from './cog.tiff.image.js';
|
|
3
1
|
export { TiffEndian } from './const/tiff.endian.js';
|
|
4
|
-
export { TiffCompression, TiffMimeType } from './const/tiff.mime.js';
|
|
5
|
-
export {
|
|
2
|
+
export { TiffCompressionMimeType as TiffCompression, TiffMimeType } from './const/tiff.mime.js';
|
|
3
|
+
export { TiffTag, TiffTagGeo } from './const/tiff.tag.id.js';
|
|
6
4
|
export { TiffTagValueType } from './const/tiff.tag.value.js';
|
|
7
5
|
export { TiffVersion } from './const/tiff.version.js';
|
|
8
6
|
export { getTiffTagSize } from './read/tiff.value.reader.js';
|
|
7
|
+
export { TiffImage } from './tiff.image.js';
|
|
8
|
+
export { Tiff } from './tiff.js';
|
|
9
9
|
export { toHex } from './util/util.hex.js';
|
|
10
|
+
// Tag value constants
|
|
11
|
+
export { AngularUnit, Compression, LinearUnit, ModelTypeCode, OldSubFileType, Orientation, Photometric, PlanarConfiguration, RasterTypeKey, SampleFormat, SubFileType, } from './const/tiff.tag.id.js';
|
|
10
12
|
//# sourceMappingURL=index.js.map
|
package/build/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,wBAAwB,CAAC;AACpD,OAAO,EAAE,uBAAuB,IAAI,eAAe,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AAChG,OAAO,EAAE,OAAO,EAAE,UAAU,EAA+B,MAAM,wBAAwB,CAAC;AAC1F,OAAO,EAAE,gBAAgB,EAAE,MAAM,2BAA2B,CAAC;AAC7D,OAAO,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAC;AAEtD,OAAO,EAAE,cAAc,EAAE,MAAM,6BAA6B,CAAC;AAE7D,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAC5C,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACjC,OAAO,EAAE,KAAK,EAAE,MAAM,oBAAoB,CAAC;AAG3C,sBAAsB;AACtB,OAAO,EACL,WAAW,EACX,WAAW,EACX,UAAU,EACV,aAAa,EACb,cAAc,EACd,WAAW,EACX,WAAW,EACX,mBAAmB,EACnB,aAAa,EACb,YAAY,EACZ,WAAW,GACZ,MAAM,wBAAwB,CAAC"}
|
|
@@ -18,7 +18,7 @@ export declare enum GhostOptionTileLeader {
|
|
|
18
18
|
* GDAL has made a ghost set of options for Tiff files
|
|
19
19
|
* this class represents the optimizations that GDAL has applied
|
|
20
20
|
*/
|
|
21
|
-
export declare class
|
|
21
|
+
export declare class TiffGhostOptions {
|
|
22
22
|
options: Map<string, string>;
|
|
23
23
|
/**
|
|
24
24
|
* Has GDAL optimized this tiff
|
package/build/read/tiff.gdal.js
CHANGED
|
@@ -21,7 +21,7 @@ export var GhostOptionTileLeader;
|
|
|
21
21
|
* GDAL has made a ghost set of options for Tiff files
|
|
22
22
|
* this class represents the optimizations that GDAL has applied
|
|
23
23
|
*/
|
|
24
|
-
export class
|
|
24
|
+
export class TiffGhostOptions {
|
|
25
25
|
constructor() {
|
|
26
26
|
Object.defineProperty(this, "options", {
|
|
27
27
|
enumerable: true,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tiff.gdal.js","sourceRoot":"","sources":["../../src/read/tiff.gdal.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAE5C,MAAM,CAAN,IAAY,WAQX;AARD,WAAY,WAAW;IACrB,2EAA4D,CAAA;IAC5D,gCAAiB,CAAA;IACjB,yCAA0B,CAAA;IAC1B,2CAA4B,CAAA;IAC5B,6CAA8B,CAAA;IAC9B,sEAAuD,CAAA;IACvD,2EAA4D,CAAA;AAC9D,CAAC,EARW,WAAW,KAAX,WAAW,QAQtB;AAED,MAAM,CAAN,IAAY,oBAEX;AAFD,WAAY,oBAAoB;IAC9B,8CAAsB,CAAA;AACxB,CAAC,EAFW,oBAAoB,KAApB,oBAAoB,QAE/B;AAED,MAAM,CAAN,IAAY,qBAEX;AAFD,WAAY,qBAAqB;IAC/B,iDAAwB,CAAA;AAC1B,CAAC,EAFW,qBAAqB,KAArB,qBAAqB,QAEhC;AAED;;;GAGG;AACH,MAAM,OAAO,
|
|
1
|
+
{"version":3,"file":"tiff.gdal.js","sourceRoot":"","sources":["../../src/read/tiff.gdal.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAE5C,MAAM,CAAN,IAAY,WAQX;AARD,WAAY,WAAW;IACrB,2EAA4D,CAAA;IAC5D,gCAAiB,CAAA;IACjB,yCAA0B,CAAA;IAC1B,2CAA4B,CAAA;IAC5B,6CAA8B,CAAA;IAC9B,sEAAuD,CAAA;IACvD,2EAA4D,CAAA;AAC9D,CAAC,EARW,WAAW,KAAX,WAAW,QAQtB;AAED,MAAM,CAAN,IAAY,oBAEX;AAFD,WAAY,oBAAoB;IAC9B,8CAAsB,CAAA;AACxB,CAAC,EAFW,oBAAoB,KAApB,oBAAoB,QAE/B;AAED,MAAM,CAAN,IAAY,qBAEX;AAFD,WAAY,qBAAqB;IAC/B,iDAAwB,CAAA;AAC1B,CAAC,EAFW,qBAAqB,KAArB,qBAAqB,QAEhC;AAED;;;GAGG;AACH,MAAM,OAAO,gBAAgB;IAA7B;QACE;;;;mBAA+B,IAAI,GAAG,EAAE;WAAC;IA2D3C,CAAC;IAzDC;;OAEG;IACH,IAAI,cAAc;QAChB,IAAI,IAAI,CAAC,QAAQ;YAAE,OAAO,KAAK,CAAC;QAChC,OAAO,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,WAAW,CAAC,MAAM,CAAC,KAAK,kBAAkB,CAAC;IACrE,CAAC;IAED;;OAEG;IACH,IAAI,QAAQ;QACV,OAAO,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,WAAW,CAAC,wBAAwB,CAAC,KAAK,KAAK,CAAC;IAC1E,CAAC;IAED;;;OAGG;IACH,OAAO,CAAC,KAAe,EAAE,MAAc,EAAE,SAAiB;QACxD,IAAI,GAAG,GAAG,EAAE,CAAC;QACb,IAAI,KAAK,GAAG,EAAE,CAAC;QACf,IAAI,QAAQ,GAAG,KAAK,CAAC;QACrB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,SAAS,EAAE,CAAC,EAAE,EAAE,CAAC;YACnC,MAAM,QAAQ,GAAG,KAAK,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;YAC5C,IAAI,QAAQ,KAAK,CAAC;gBAAE,MAAM;YAE1B,MAAM,IAAI,GAAG,MAAM,CAAC,YAAY,CAAC,QAAQ,CAAC,CAAC;YAC3C,IAAI,IAAI,KAAK,IAAI,EAAE,CAAC;gBAClB,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,EAAE,EAAE,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC;gBAC3C,GAAG,GAAG,EAAE,CAAC;gBACT,KAAK,GAAG,EAAE,CAAC;gBACX,QAAQ,GAAG,KAAK,CAAC;YACnB,CAAC;iBAAM,IAAI,IAAI,KAAK,GAAG,EAAE,CAAC;gBACxB,QAAQ,GAAG,IAAI,CAAC;YAClB,CAAC;iBAAM,CAAC;gBACN,IAAI,QAAQ;oBAAE,KAAK,IAAI,IAAI,CAAC;;oBACvB,GAAG,IAAI,IAAI,CAAC;YACnB,CAAC;QACH,CAAC;IACH,CAAC;IAED;;OAEG;IACH,IAAI,kBAAkB;QACpB,QAAQ,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,WAAW,CAAC,WAAW,CAAC,EAAE,CAAC;YAClD,KAAK,qBAAqB,CAAC,MAAM;gBAC/B,OAAO,QAAQ,CAAC,MAAM,CAAC;YACzB;gBACE,OAAO,IAAI,CAAC;QAChB,CAAC;IACH,CAAC;IAED,IAAI,iBAAiB;QACnB,OAAO,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,WAAW,CAAC,0BAA0B,CAAC,KAAK,KAAK,CAAC;IAC5E,CAAC;CACF"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tiff.ifd.config.js","sourceRoot":"","sources":["../../src/read/tiff.ifd.config.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"tiff.ifd.config.js","sourceRoot":"","sources":["../../src/read/tiff.ifd.config.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,0BAA0B,CAAC;AACvD,OAAO,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAE5C,MAAM,CAAC,MAAM,aAAa,GAAkB;IAC1C,OAAO,EAAE,WAAW,CAAC,IAAI;IACzB,OAAO,EAAE,QAAQ,CAAC,MAAM;IACxB,MAAM,EAAE,QAAQ,CAAC,MAAM;IACvB;;;;;;OAMG;IACH,GAAG,EAAE,QAAQ,CAAC,MAAM,GAAG,QAAQ,CAAC,MAAM,GAAG,CAAC,GAAG,QAAQ,CAAC,MAAM;CAC7D,CAAC;AAEF,MAAM,CAAC,MAAM,gBAAgB,GAAkB;IAC7C,OAAO,EAAE,WAAW,CAAC,OAAO;IAC5B,4BAA4B;IAC5B,OAAO,EAAE,QAAQ,CAAC,MAAM;IACxB,sBAAsB;IACtB,MAAM,EAAE,QAAQ,CAAC,MAAM;IAEvB;;;;;;OAMG;IACH,GAAG,EAAE,QAAQ,CAAC,MAAM,GAAG,QAAQ,CAAC,MAAM,GAAG,CAAC,GAAG,QAAQ,CAAC,MAAM;CAC7D,CAAC;AAaF,MAAM,CAAC,MAAM,YAAY,GAAG;IAC1B,CAAC,WAAW,CAAC,OAAO,CAAC,EAAE,gBAAgB;IACvC,CAAC,WAAW,CAAC,IAAI,CAAC,EAAE,aAAa;CAClC,CAAC"}
|
package/build/read/tiff.tag.d.ts
CHANGED
|
@@ -6,6 +6,8 @@ export type Tag<T = unknown> = TagLazy<T> | TagInline<T> | TagOffset;
|
|
|
6
6
|
export interface TagBase {
|
|
7
7
|
/** Id of the Tag */
|
|
8
8
|
id: TiffTag;
|
|
9
|
+
/** Name of the tiff tag */
|
|
10
|
+
name: string;
|
|
9
11
|
/** Offset in bytes to where this tag was read from */
|
|
10
12
|
tagOffset: number;
|
|
11
13
|
/** Number of values */
|
|
@@ -24,6 +26,7 @@ export interface TagLazy<T> extends TagBase {
|
|
|
24
26
|
/** Tiff tag that's value is inside the IFD and is already read */
|
|
25
27
|
export interface TagInline<T> extends TagBase {
|
|
26
28
|
type: 'inline';
|
|
29
|
+
/** Value of the tag */
|
|
27
30
|
value: T;
|
|
28
31
|
}
|
|
29
32
|
/** Tiff tag that is a list of offsets this can be partially read */
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { Tiff } from '../tiff.js';
|
|
2
2
|
import { DataViewOffset } from './data.view.offset.js';
|
|
3
3
|
import { Tag, TagLazy, TagOffset } from './tiff.tag.js';
|
|
4
4
|
/**
|
|
@@ -10,13 +10,13 @@ import { Tag, TagLazy, TagOffset } from './tiff.tag.js';
|
|
|
10
10
|
* @param view Bytes to read from
|
|
11
11
|
* @param offset Offset in the dataview to read a tag
|
|
12
12
|
*/
|
|
13
|
-
export declare function createTag(tiff:
|
|
13
|
+
export declare function createTag(tiff: Tiff, view: DataViewOffset, offset: number): Tag<unknown>;
|
|
14
14
|
/** Fetch the value from a {@link TagLazy} tag */
|
|
15
|
-
export declare function fetchLazy<T>(tag: TagLazy<T>, tiff:
|
|
15
|
+
export declare function fetchLazy<T>(tag: TagLazy<T>, tiff: Tiff): Promise<T>;
|
|
16
16
|
/**
|
|
17
17
|
* Fetch all the values from a {@link TagOffset}
|
|
18
18
|
*/
|
|
19
|
-
export declare function fetchAllOffsets(tiff:
|
|
19
|
+
export declare function fetchAllOffsets(tiff: Tiff, tag: TagOffset): Promise<number[]>;
|
|
20
20
|
export declare function setBytes(tag: TagOffset, view: DataViewOffset): void;
|
|
21
21
|
/** Partially fetch the values of a {@link TagOffset} and return the value for the offset */
|
|
22
|
-
export declare function getValueAt(tiff:
|
|
22
|
+
export declare function getValueAt(tiff: Tiff, tag: TagOffset, index: number): Promise<number>;
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { TiffTag } from '../const/tiff.tag.id.js';
|
|
1
|
+
import { TiffTag, TiffTagConvertArray } from '../const/tiff.tag.id.js';
|
|
2
2
|
import { TiffTagValueType } from '../const/tiff.tag.value.js';
|
|
3
3
|
import { getUint, getUint64 } from '../util/bytes.js';
|
|
4
4
|
import { hasBytes } from './data.view.offset.js';
|
|
@@ -34,11 +34,17 @@ function readTagValue(fieldType, bytes, offset, isLittleEndian) {
|
|
|
34
34
|
throw new Error(`Unknown read type "${fieldType}" "${TiffTagValueType[fieldType]}"`);
|
|
35
35
|
}
|
|
36
36
|
}
|
|
37
|
-
function readValue(tiff, bytes, offset, type, count) {
|
|
37
|
+
function readValue(tiff, tagId, bytes, offset, type, count) {
|
|
38
38
|
const typeSize = getTiffTagSize(type);
|
|
39
39
|
const dataLength = count * typeSize;
|
|
40
|
-
if (count === 1)
|
|
41
|
-
|
|
40
|
+
if (count === 1) {
|
|
41
|
+
const val = readTagValue(type, bytes, offset, tiff.isLittleEndian);
|
|
42
|
+
// Force some single values to be arrays eg BitsPerSample
|
|
43
|
+
// makes it easier to not check for number | number[]
|
|
44
|
+
if (tagId && TiffTagConvertArray[tagId])
|
|
45
|
+
return [val];
|
|
46
|
+
return val;
|
|
47
|
+
}
|
|
42
48
|
switch (type) {
|
|
43
49
|
case TiffTagValueType.Ascii:
|
|
44
50
|
return String.fromCharCode.apply(null, new Uint8Array(bytes.buffer, offset, dataLength - 1));
|
|
@@ -66,8 +72,8 @@ export function createTag(tiff, view, offset) {
|
|
|
66
72
|
const dataLength = dataTypeSize * dataCount;
|
|
67
73
|
// Tag value is inline read the value
|
|
68
74
|
if (dataLength <= tiff.ifdConfig.pointer) {
|
|
69
|
-
const value = readValue(tiff, view, offset + 4 + tiff.ifdConfig.pointer, dataType, dataCount);
|
|
70
|
-
return { type: 'inline', id: tagId, count: dataCount, value, dataType, tagOffset: offset };
|
|
75
|
+
const value = readValue(tiff, tagId, view, offset + 4 + tiff.ifdConfig.pointer, dataType, dataCount);
|
|
76
|
+
return { type: 'inline', id: tagId, name: TiffTag[tagId], count: dataCount, value, dataType, tagOffset: offset };
|
|
71
77
|
}
|
|
72
78
|
const dataOffset = getUint(view, offset + 4 + tiff.ifdConfig.pointer, tiff.ifdConfig.pointer, tiff.isLittleEndian);
|
|
73
79
|
switch (tagId) {
|
|
@@ -78,6 +84,7 @@ export function createTag(tiff, view, offset) {
|
|
|
78
84
|
const tag = {
|
|
79
85
|
type: 'offset',
|
|
80
86
|
id: tagId,
|
|
87
|
+
name: TiffTag[tagId],
|
|
81
88
|
count: dataCount,
|
|
82
89
|
dataType,
|
|
83
90
|
dataOffset,
|
|
@@ -92,10 +99,10 @@ export function createTag(tiff, view, offset) {
|
|
|
92
99
|
}
|
|
93
100
|
// If we already have the bytes in the view read them in
|
|
94
101
|
if (hasBytes(view, dataOffset, dataLength)) {
|
|
95
|
-
const value = readValue(tiff, view, dataOffset - view.sourceOffset, dataType, dataCount);
|
|
96
|
-
return { type: 'inline', id: tagId, count: dataCount, value, dataType, tagOffset: offset };
|
|
102
|
+
const value = readValue(tiff, tagId, view, dataOffset - view.sourceOffset, dataType, dataCount);
|
|
103
|
+
return { type: 'inline', id: tagId, name: TiffTag[tagId], count: dataCount, value, dataType, tagOffset: offset };
|
|
97
104
|
}
|
|
98
|
-
return { type: 'lazy', id: tagId, count: dataCount, dataOffset, dataType, tagOffset: offset };
|
|
105
|
+
return { type: 'lazy', id: tagId, name: TiffTag[tagId], count: dataCount, dataOffset, dataType, tagOffset: offset };
|
|
99
106
|
}
|
|
100
107
|
/** Fetch the value from a {@link TagLazy} tag */
|
|
101
108
|
export async function fetchLazy(tag, tiff) {
|
|
@@ -105,7 +112,7 @@ export async function fetchLazy(tag, tiff) {
|
|
|
105
112
|
const dataLength = dataTypeSize * tag.count;
|
|
106
113
|
const bytes = await tiff.source.fetch(tag.dataOffset, dataLength);
|
|
107
114
|
const view = new DataView(bytes);
|
|
108
|
-
tag.value = readValue(tiff, view, 0, tag.dataType, tag.count);
|
|
115
|
+
tag.value = readValue(tiff, tag.id, view, 0, tag.dataType, tag.count);
|
|
109
116
|
return tag.value;
|
|
110
117
|
}
|
|
111
118
|
/**
|
|
@@ -118,7 +125,7 @@ export async function fetchAllOffsets(tiff, tag) {
|
|
|
118
125
|
tag.view = new DataView(bytes);
|
|
119
126
|
tag.view.sourceOffset = tag.dataOffset;
|
|
120
127
|
}
|
|
121
|
-
tag.value = readValue(tiff, tag.view, 0, tag.dataType, tag.count);
|
|
128
|
+
tag.value = readValue(tiff, tag.id, tag.view, 0, tag.dataType, tag.count);
|
|
122
129
|
tag.isLoaded = true;
|
|
123
130
|
return tag.value;
|
|
124
131
|
}
|
|
@@ -138,11 +145,13 @@ export async function getValueAt(tiff, tag, index) {
|
|
|
138
145
|
if (tag.view == null) {
|
|
139
146
|
const bytes = await tiff.source.fetch(tag.dataOffset + index * dataTypeSize, dataTypeSize);
|
|
140
147
|
const view = new DataView(bytes);
|
|
141
|
-
|
|
148
|
+
// Skip type conversion to array by using undefined tiff tag id
|
|
149
|
+
const value = readValue(tiff, undefined, view, 0, tag.dataType, 1);
|
|
142
150
|
tag.value[index] = value;
|
|
143
151
|
return value;
|
|
144
152
|
}
|
|
145
|
-
|
|
153
|
+
// Skip type conversion to array by using undefined tiff tag id
|
|
154
|
+
const value = readValue(tiff, undefined, tag.view, index * dataTypeSize, tag.dataType, 1);
|
|
146
155
|
tag.value[index] = value;
|
|
147
156
|
return value;
|
|
148
157
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tiff.tag.factory.js","sourceRoot":"","sources":["../../src/read/tiff.tag.factory.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"tiff.tag.factory.js","sourceRoot":"","sources":["../../src/read/tiff.tag.factory.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tiff.value.reader.js","sourceRoot":"","sources":["../../src/read/tiff.value.reader.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"tiff.value.reader.js","sourceRoot":"","sources":["../../src/read/tiff.value.reader.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,4BAA4B,CAAC;AAG9D,MAAM,UAAU,cAAc,CAAC,SAA2B;IACxD,QAAQ,SAAS,EAAE,CAAC;QAClB,KAAK,gBAAgB,CAAC,KAAK,CAAC;QAC5B,KAAK,gBAAgB,CAAC,KAAK,CAAC;QAC5B,KAAK,gBAAgB,CAAC,IAAI,CAAC;QAC3B,KAAK,gBAAgB,CAAC,SAAS;YAC7B,OAAO,CAAC,CAAC;QACX,KAAK,gBAAgB,CAAC,MAAM,CAAC;QAC7B,KAAK,gBAAgB,CAAC,KAAK;YACzB,OAAO,CAAC,CAAC;QACX,KAAK,gBAAgB,CAAC,MAAM,CAAC;QAC7B,KAAK,gBAAgB,CAAC,KAAK,CAAC;QAC5B,KAAK,gBAAgB,CAAC,OAAO;YAC3B,OAAO,CAAC,CAAC;QACX,KAAK,gBAAgB,CAAC,QAAQ,CAAC;QAC/B,KAAK,gBAAgB,CAAC,cAAc,CAAC;QACrC,KAAK,gBAAgB,CAAC,OAAO,CAAC;QAC9B,KAAK,gBAAgB,CAAC,MAAM,CAAC;QAC7B,KAAK,gBAAgB,CAAC,KAAK,CAAC;QAC5B,KAAK,gBAAgB,CAAC,IAAI;YACxB,OAAO,CAAC,CAAC;QACX;YACE,MAAM,IAAI,KAAK,CAAC,qBAAqB,SAAS,EAAE,CAAC,CAAC;IACtD,CAAC;AACH,CAAC"}
|
|
@@ -1,9 +1,11 @@
|
|
|
1
|
-
import { CogTiffImage } from './cog.tiff.image.js';
|
|
2
1
|
import { TiffVersion } from './const/tiff.version.js';
|
|
3
|
-
import {
|
|
2
|
+
import { TiffGhostOptions } from './read/tiff.gdal.js';
|
|
4
3
|
import { TiffIfdConfig } from './read/tiff.ifd.config.js';
|
|
5
4
|
import { Source } from './source.js';
|
|
6
|
-
|
|
5
|
+
import { TiffImage } from './tiff.image.js';
|
|
6
|
+
export declare class Tiff {
|
|
7
|
+
/** Read 16KB blocks at a time */
|
|
8
|
+
static DefaultReadSize: number;
|
|
7
9
|
/** Read 16KB blocks at a time */
|
|
8
10
|
defaultReadSize: number;
|
|
9
11
|
/** Where this cog is fetching its data from */
|
|
@@ -11,9 +13,9 @@ export declare class CogTiff {
|
|
|
11
13
|
/** Big or small Tiff */
|
|
12
14
|
version: TiffVersion;
|
|
13
15
|
/** List of images, o is the base image */
|
|
14
|
-
images:
|
|
16
|
+
images: TiffImage[];
|
|
15
17
|
/** Ghost header options */
|
|
16
|
-
options?:
|
|
18
|
+
options?: TiffGhostOptions;
|
|
17
19
|
/** Configuration for the size of the IFD */
|
|
18
20
|
ifdConfig: TiffIfdConfig;
|
|
19
21
|
/** Is the tiff being read is little Endian */
|
|
@@ -22,18 +24,18 @@ export declare class CogTiff {
|
|
|
22
24
|
isInitialized: boolean;
|
|
23
25
|
private _initPromise?;
|
|
24
26
|
constructor(source: Source);
|
|
25
|
-
/** Create a
|
|
26
|
-
static create(source: Source): Promise<
|
|
27
|
+
/** Create a tiff and initialize it by reading the tiff headers */
|
|
28
|
+
static create(source: Source): Promise<Tiff>;
|
|
27
29
|
/**
|
|
28
|
-
* Initialize the
|
|
30
|
+
* Initialize the tiff loading in the header and all image headers
|
|
29
31
|
*/
|
|
30
|
-
init(): Promise<
|
|
32
|
+
init(): Promise<Tiff>;
|
|
31
33
|
/**
|
|
32
34
|
* Find a image which has a resolution similar to the provided resolution
|
|
33
35
|
*
|
|
34
36
|
* @param resolution resolution to find
|
|
35
37
|
*/
|
|
36
|
-
getImageByResolution(resolution: number):
|
|
38
|
+
getImageByResolution(resolution: number): TiffImage;
|
|
37
39
|
/** Read the Starting header and all Image headers from the source */
|
|
38
40
|
private readHeader;
|
|
39
41
|
/**
|
|
@@ -1,14 +1,14 @@
|
|
|
1
|
-
import { CogTiff } from './cog.tiff.js';
|
|
2
1
|
import { TiffMimeType } from './const/tiff.mime.js';
|
|
3
|
-
import { TiffTag, TiffTagGeo } from './const/tiff.tag.id.js';
|
|
4
|
-
import { Tag, TagOffset } from './read/tiff.tag.js';
|
|
2
|
+
import { Compression, TiffTag, TiffTagGeo, TiffTagGeoType, TiffTagType } from './const/tiff.tag.id.js';
|
|
3
|
+
import { Tag, TagInline, TagOffset } from './read/tiff.tag.js';
|
|
4
|
+
import { Tiff } from './tiff.js';
|
|
5
5
|
import { BoundingBox, Size } from './vector.js';
|
|
6
6
|
/** Invalid EPSG code */
|
|
7
7
|
export declare const InvalidProjectionCode = 32767;
|
|
8
8
|
/**
|
|
9
9
|
* Number of tiles used inside this image
|
|
10
10
|
*/
|
|
11
|
-
export interface
|
|
11
|
+
export interface TiffImageTileCount {
|
|
12
12
|
/** Number of tiles on the x axis */
|
|
13
13
|
x: number;
|
|
14
14
|
/** Number of tiles on the y axis */
|
|
@@ -19,15 +19,13 @@ export declare const ImportantTags: Set<TiffTag>;
|
|
|
19
19
|
/**
|
|
20
20
|
* Size of a individual tile
|
|
21
21
|
*/
|
|
22
|
-
export interface
|
|
22
|
+
export interface TiffImageTileSize {
|
|
23
23
|
/** Tile width (pixels) */
|
|
24
24
|
width: number;
|
|
25
25
|
/** Tile height (pixels) */
|
|
26
26
|
height: number;
|
|
27
27
|
}
|
|
28
|
-
export declare class
|
|
29
|
-
/** All IFD tags that have been read for the image */
|
|
30
|
-
tags: Map<TiffTag, Tag>;
|
|
28
|
+
export declare class TiffImage {
|
|
31
29
|
/**
|
|
32
30
|
* Id of the tif image, generally the image index inside the tif
|
|
33
31
|
* where 0 is the root image, and every sub image is +1
|
|
@@ -36,12 +34,14 @@ export declare class CogTiffImage {
|
|
|
36
34
|
*/
|
|
37
35
|
id: number;
|
|
38
36
|
/** Reference to the TIFF that owns this image */
|
|
39
|
-
tiff:
|
|
37
|
+
tiff: Tiff;
|
|
40
38
|
/** Has loadGeoTiffTags been called */
|
|
41
39
|
isGeoTagsLoaded: boolean;
|
|
42
40
|
/** Sub tags stored in TiffTag.GeoKeyDirectory */
|
|
43
|
-
tagsGeo: Map<TiffTagGeo, string | number>;
|
|
44
|
-
|
|
41
|
+
tagsGeo: Map<TiffTagGeo, string | number | number[]>;
|
|
42
|
+
/** All IFD tags that have been read for the image */
|
|
43
|
+
tags: Map<TiffTag, Tag>;
|
|
44
|
+
constructor(tiff: Tiff, id: number, tags: Map<TiffTag, Tag>);
|
|
45
45
|
/**
|
|
46
46
|
* Force loading of important tags if they have not already been loaded
|
|
47
47
|
*
|
|
@@ -49,18 +49,40 @@ export declare class CogTiffImage {
|
|
|
49
49
|
*/
|
|
50
50
|
init(loadGeoTags?: boolean): Promise<void>;
|
|
51
51
|
/**
|
|
52
|
-
* Get the value of a TiffTag if it has been loaded, null otherwise
|
|
52
|
+
* Get the value of a TiffTag if it has been loaded, null otherwise.
|
|
53
|
+
*
|
|
54
|
+
* If the value is not loaded use {@link TiffImage.fetch} to load the value
|
|
55
|
+
* Or use {@link TiffImage.has} to check if the tag exists
|
|
56
|
+
*
|
|
53
57
|
*
|
|
54
|
-
* if the value is not loaded @see {CogTiffImage.fetch}
|
|
55
58
|
* @returns value if loaded, null otherwise
|
|
56
59
|
*/
|
|
57
|
-
value<T>(tag:
|
|
60
|
+
value<T extends keyof TiffTagType>(tag: T): TiffTagType[T] | null;
|
|
58
61
|
/**
|
|
59
|
-
*
|
|
62
|
+
* Does the tag exist
|
|
60
63
|
*
|
|
61
|
-
* @
|
|
64
|
+
* @example
|
|
65
|
+
* ```typescript
|
|
66
|
+
* img.has(TiffTag.ImageWidth) // true
|
|
67
|
+
* ```
|
|
68
|
+
*
|
|
69
|
+
* @param tag Tag to check
|
|
70
|
+
* @returns true if the tag exists, false otherwise
|
|
62
71
|
*/
|
|
63
|
-
|
|
72
|
+
has<T extends keyof TiffTagType>(tag: T): boolean;
|
|
73
|
+
/**
|
|
74
|
+
* Load a tag.
|
|
75
|
+
*
|
|
76
|
+
* If it is not currently loaded, fetch the required data for the tag.
|
|
77
|
+
*
|
|
78
|
+
* @example
|
|
79
|
+
* ```typescript
|
|
80
|
+
* await img.fetch(TiffTag.ImageWidth) // 512 (px)
|
|
81
|
+
* ```
|
|
82
|
+
*
|
|
83
|
+
* @param tag tag to fetch
|
|
84
|
+
*/
|
|
85
|
+
fetch<T extends keyof TiffTagType>(tag: T): Promise<TiffTagType[T] | null>;
|
|
64
86
|
/**
|
|
65
87
|
* Get the associated TiffTagGeo
|
|
66
88
|
*
|
|
@@ -70,13 +92,20 @@ export declare class CogTiffImage {
|
|
|
70
92
|
* ```
|
|
71
93
|
* @throws if {@link loadGeoTiffTags} has not been called
|
|
72
94
|
*/
|
|
73
|
-
valueGeo(tag:
|
|
95
|
+
valueGeo<T extends keyof TiffTagGeoType>(tag: T): TiffTagGeoType[T] | null;
|
|
74
96
|
/**
|
|
75
|
-
* Load
|
|
97
|
+
* Load and parse the GDAL_NODATA Tifftag
|
|
76
98
|
*
|
|
77
|
-
* @
|
|
99
|
+
* @throws if the tag is not loaded
|
|
100
|
+
* @returns null if the tag does not exist
|
|
78
101
|
*/
|
|
79
|
-
|
|
102
|
+
get noData(): number | null;
|
|
103
|
+
/**
|
|
104
|
+
* Load and unpack the GeoKeyDirectory
|
|
105
|
+
*
|
|
106
|
+
* @see {TiffTag.GeoKeyDirectory}
|
|
107
|
+
*/
|
|
108
|
+
loadGeoTiffTags(): Promise<void>;
|
|
80
109
|
/**
|
|
81
110
|
* Get the origin point for the image
|
|
82
111
|
*
|
|
@@ -91,6 +120,12 @@ export declare class CogTiffImage {
|
|
|
91
120
|
* @returns [x,y,z] pixel scale
|
|
92
121
|
*/
|
|
93
122
|
get resolution(): [number, number, number];
|
|
123
|
+
/**
|
|
124
|
+
* Is this image a reduced size image
|
|
125
|
+
* @see {@link TiffTag.SubFileType}
|
|
126
|
+
* @returns true if SubFileType is Reduces image, false otherwise
|
|
127
|
+
*/
|
|
128
|
+
get isSubImage(): boolean;
|
|
94
129
|
/**
|
|
95
130
|
* Bounding box of the image
|
|
96
131
|
*
|
|
@@ -100,7 +135,7 @@ export declare class CogTiffImage {
|
|
|
100
135
|
/**
|
|
101
136
|
* Get the compression used by the tile
|
|
102
137
|
*
|
|
103
|
-
* @see {@link
|
|
138
|
+
* @see {@link TiffCompressionMimeType}
|
|
104
139
|
*
|
|
105
140
|
* @returns Compression type eg webp
|
|
106
141
|
*/
|
|
@@ -108,6 +143,8 @@ export declare class CogTiffImage {
|
|
|
108
143
|
/**
|
|
109
144
|
* Attempt to read the EPSG Code from TiffGeoTags
|
|
110
145
|
*
|
|
146
|
+
* looks at both TiffTagGeo.ProjectionGeoKey and TiffTagGeo.ProjectedCRSGeoKey
|
|
147
|
+
*
|
|
111
148
|
* @returns EPSG Code if it exists
|
|
112
149
|
*/
|
|
113
150
|
get epsg(): number | null;
|
|
@@ -124,11 +161,11 @@ export declare class CogTiffImage {
|
|
|
124
161
|
/**
|
|
125
162
|
* Get size of individual tiles
|
|
126
163
|
*/
|
|
127
|
-
get tileSize():
|
|
164
|
+
get tileSize(): TiffImageTileSize;
|
|
128
165
|
/**
|
|
129
166
|
* Number of tiles used to create this image
|
|
130
167
|
*/
|
|
131
|
-
get tileCount():
|
|
168
|
+
get tileCount(): TiffImageTileCount;
|
|
132
169
|
/**
|
|
133
170
|
* Get the pointer to where the tiles start in the Tiff file
|
|
134
171
|
*
|
|
@@ -136,7 +173,7 @@ export declare class CogTiffImage {
|
|
|
136
173
|
*
|
|
137
174
|
* @returns file offset to where the tiffs are stored
|
|
138
175
|
*/
|
|
139
|
-
get tileOffset(): TagOffset
|
|
176
|
+
get tileOffset(): TagOffset | TagInline<number[]>;
|
|
140
177
|
/**
|
|
141
178
|
* Get the number of strip's inside this tiff
|
|
142
179
|
*
|
|
@@ -158,9 +195,13 @@ export declare class CogTiffImage {
|
|
|
158
195
|
bytes: ArrayBuffer;
|
|
159
196
|
} | null>;
|
|
160
197
|
/** The jpeg header is stored in the IFD, read the JPEG header and adjust the byte array to include it */
|
|
161
|
-
|
|
198
|
+
getJpegHeader(bytes: ArrayBuffer): ArrayBuffer;
|
|
162
199
|
/** Read image bytes at the given offset */
|
|
163
|
-
|
|
200
|
+
getBytes(offset: number, byteCount: number): Promise<{
|
|
201
|
+
mimeType: TiffMimeType;
|
|
202
|
+
bytes: ArrayBuffer;
|
|
203
|
+
compression: Compression;
|
|
204
|
+
} | null>;
|
|
164
205
|
/**
|
|
165
206
|
* Load a tile into a ArrayBuffer
|
|
166
207
|
*
|
|
@@ -172,6 +213,7 @@ export declare class CogTiffImage {
|
|
|
172
213
|
getTile(x: number, y: number): Promise<{
|
|
173
214
|
mimeType: TiffMimeType;
|
|
174
215
|
bytes: ArrayBuffer;
|
|
216
|
+
compression: Compression;
|
|
175
217
|
} | null>;
|
|
176
218
|
/**
|
|
177
219
|
* Does this tile exist in the tiff and does it actually have a value
|