geotiff
Version:
GeoTIFF image decoding in JavaScript
1,071 lines • 33.5 kB
TypeScript
/** @typedef {fieldTypeSizes[keyof typeof fieldTypeSizes]} FieldTypeSize */
/**
* Get the byte size for a given field type.
* @param {FieldType} fieldType The TIFF field type constant
* @returns {number} The size in bytes
* @throws {RangeError} If the field type is invalid
*/
export function getFieldTypeSize(fieldType: FieldType): number;
/**
* Registers a new field tag
* @param {number} tag the numeric tiff tag
* @param {string} name the name of the tag that will be reported in the IFD
* @param {keyof fieldTypes|number|undefined} type the tags data type
* @param {Boolean} isArray whether the tag is an array
* @param {boolean} [eager=false] whether to eagerly fetch deferred fields.
* When false (default), tags are loaded lazily on-demand.
* When true, all tags are loaded immediately during parsing.
*/
export function registerTag(tag: number, name: string, type: ("BYTE" | "ASCII" | "SHORT" | "LONG" | "RATIONAL" | "SBYTE" | "UNDEFINED" | "SSHORT" | "SLONG" | "SRATIONAL" | "FLOAT" | "DOUBLE" | "IFD" | "LONG8" | "SLONG8" | "IFD8") | number | undefined, isArray?: boolean, eager?: boolean): void;
/**
* @param {number|string} tagIdentifier The field tag ID or name
* @returns {number} the resolved tag ID
*/
export function resolveTag(tagIdentifier: number | string): number;
/**
* @param {number|string} tagIdentifier The field tag ID or name
* @returns {{ tag: number, name: string, type: string|number|undefined, isArray: boolean, eager: boolean }} the tag definition
*/
export function getTag(tagIdentifier: number | string): {
tag: number;
name: string;
type: string | number | undefined;
isArray: boolean;
eager: boolean;
};
export namespace fieldTypes {
let BYTE: 1;
let ASCII: 2;
let SHORT: 3;
let LONG: 4;
let RATIONAL: 5;
let SBYTE: 6;
let UNDEFINED: 7;
let SSHORT: 8;
let SLONG: 9;
let SRATIONAL: 10;
let FLOAT: 11;
let DOUBLE: 12;
let IFD: 13;
let LONG8: 16;
let SLONG8: 17;
let IFD8: 18;
}
/** @typedef {keyof fieldTypes} FieldTypeName */
/** @typedef {fieldTypes[keyof typeof fieldTypes]} FieldType */
/** @typedef {Record<FieldTypeName, number>} FieldTypeSizes */
export const fieldTypeSizes: {
readonly 1: 1;
readonly 2: 1;
readonly 6: 1;
readonly 7: 1;
readonly 3: 2;
readonly 8: 2;
readonly 4: 4;
readonly 9: 4;
readonly 11: 4;
readonly 13: 4;
readonly 5: 8;
readonly 10: 8;
readonly 12: 8;
readonly 16: 8;
readonly 17: 8;
readonly 18: 8;
};
export namespace tagDictionary {
namespace NewSubfileType {
export let tag: 254;
import type = fieldTypes.LONG;
export { type };
export let eager: true;
}
namespace SubfileType {
let tag_1: 255;
export { tag_1 as tag };
import type_1 = fieldTypes.SHORT;
export { type_1 as type };
let eager_1: true;
export { eager_1 as eager };
}
namespace ImageWidth {
let tag_2: 256;
export { tag_2 as tag };
import type_2 = fieldTypes.SHORT;
export { type_2 as type };
let eager_2: true;
export { eager_2 as eager };
}
namespace ImageLength {
let tag_3: 257;
export { tag_3 as tag };
import type_3 = fieldTypes.SHORT;
export { type_3 as type };
let eager_3: true;
export { eager_3 as eager };
}
namespace BitsPerSample {
let tag_4: 258;
export { tag_4 as tag };
import type_4 = fieldTypes.SHORT;
export { type_4 as type };
export let isArray: true;
let eager_4: true;
export { eager_4 as eager };
}
namespace Compression {
let tag_5: 259;
export { tag_5 as tag };
import type_5 = fieldTypes.SHORT;
export { type_5 as type };
let eager_5: true;
export { eager_5 as eager };
}
namespace PhotometricInterpretation {
let tag_6: 262;
export { tag_6 as tag };
import type_6 = fieldTypes.SHORT;
export { type_6 as type };
let eager_6: true;
export { eager_6 as eager };
}
namespace Threshholding {
let tag_7: 263;
export { tag_7 as tag };
import type_7 = fieldTypes.SHORT;
export { type_7 as type };
}
namespace CellWidth {
let tag_8: 264;
export { tag_8 as tag };
import type_8 = fieldTypes.SHORT;
export { type_8 as type };
}
namespace CellLength {
let tag_9: 265;
export { tag_9 as tag };
import type_9 = fieldTypes.SHORT;
export { type_9 as type };
}
namespace FillOrder {
let tag_10: 266;
export { tag_10 as tag };
import type_10 = fieldTypes.SHORT;
export { type_10 as type };
}
namespace DocumentName {
let tag_11: 269;
export { tag_11 as tag };
import type_11 = fieldTypes.ASCII;
export { type_11 as type };
}
namespace ImageDescription {
let tag_12: 270;
export { tag_12 as tag };
import type_12 = fieldTypes.ASCII;
export { type_12 as type };
}
namespace Make {
let tag_13: 271;
export { tag_13 as tag };
import type_13 = fieldTypes.ASCII;
export { type_13 as type };
}
namespace Model {
let tag_14: 272;
export { tag_14 as tag };
import type_14 = fieldTypes.ASCII;
export { type_14 as type };
}
namespace StripOffsets {
let tag_15: 273;
export { tag_15 as tag };
import type_15 = fieldTypes.SHORT;
export { type_15 as type };
let isArray_1: true;
export { isArray_1 as isArray };
}
namespace Orientation {
let tag_16: 274;
export { tag_16 as tag };
import type_16 = fieldTypes.SHORT;
export { type_16 as type };
}
namespace SamplesPerPixel {
let tag_17: 277;
export { tag_17 as tag };
import type_17 = fieldTypes.SHORT;
export { type_17 as type };
let eager_7: true;
export { eager_7 as eager };
}
namespace RowsPerStrip {
let tag_18: 278;
export { tag_18 as tag };
import type_18 = fieldTypes.SHORT;
export { type_18 as type };
let eager_8: true;
export { eager_8 as eager };
}
namespace StripByteCounts {
let tag_19: 279;
export { tag_19 as tag };
import type_19 = fieldTypes.LONG;
export { type_19 as type };
let isArray_2: true;
export { isArray_2 as isArray };
}
namespace MinSampleValue {
let tag_20: 280;
export { tag_20 as tag };
import type_20 = fieldTypes.SHORT;
export { type_20 as type };
let isArray_3: true;
export { isArray_3 as isArray };
}
namespace MaxSampleValue {
let tag_21: 281;
export { tag_21 as tag };
import type_21 = fieldTypes.SHORT;
export { type_21 as type };
let isArray_4: true;
export { isArray_4 as isArray };
}
namespace XResolution {
let tag_22: 282;
export { tag_22 as tag };
import type_22 = fieldTypes.RATIONAL;
export { type_22 as type };
}
namespace YResolution {
let tag_23: 283;
export { tag_23 as tag };
import type_23 = fieldTypes.RATIONAL;
export { type_23 as type };
}
namespace PlanarConfiguration {
let tag_24: 284;
export { tag_24 as tag };
import type_24 = fieldTypes.SHORT;
export { type_24 as type };
let eager_9: true;
export { eager_9 as eager };
}
namespace PageName {
let tag_25: 285;
export { tag_25 as tag };
import type_25 = fieldTypes.ASCII;
export { type_25 as type };
}
namespace XPosition {
let tag_26: 286;
export { tag_26 as tag };
import type_26 = fieldTypes.RATIONAL;
export { type_26 as type };
}
namespace YPosition {
let tag_27: 287;
export { tag_27 as tag };
import type_27 = fieldTypes.RATIONAL;
export { type_27 as type };
}
namespace FreeOffsets {
let tag_28: 288;
export { tag_28 as tag };
import type_28 = fieldTypes.LONG;
export { type_28 as type };
}
namespace FreeByteCounts {
let tag_29: 289;
export { tag_29 as tag };
import type_29 = fieldTypes.LONG;
export { type_29 as type };
}
namespace GrayResponseUnit {
let tag_30: 290;
export { tag_30 as tag };
import type_30 = fieldTypes.SHORT;
export { type_30 as type };
}
namespace GrayResponseCurve {
let tag_31: 291;
export { tag_31 as tag };
import type_31 = fieldTypes.SHORT;
export { type_31 as type };
let isArray_5: true;
export { isArray_5 as isArray };
}
namespace T4Options {
let tag_32: 292;
export { tag_32 as tag };
import type_32 = fieldTypes.LONG;
export { type_32 as type };
}
namespace T6Options {
let tag_33: 293;
export { tag_33 as tag };
import type_33 = fieldTypes.LONG;
export { type_33 as type };
}
namespace ResolutionUnit {
let tag_34: 296;
export { tag_34 as tag };
import type_34 = fieldTypes.SHORT;
export { type_34 as type };
}
namespace PageNumber {
let tag_35: 297;
export { tag_35 as tag };
import type_35 = fieldTypes.SHORT;
export { type_35 as type };
let isArray_6: true;
export { isArray_6 as isArray };
}
namespace TransferFunction {
let tag_36: 301;
export { tag_36 as tag };
import type_36 = fieldTypes.SHORT;
export { type_36 as type };
let isArray_7: true;
export { isArray_7 as isArray };
}
namespace Software {
let tag_37: 305;
export { tag_37 as tag };
import type_37 = fieldTypes.ASCII;
export { type_37 as type };
}
namespace DateTime {
let tag_38: 306;
export { tag_38 as tag };
import type_38 = fieldTypes.ASCII;
export { type_38 as type };
}
namespace Artist {
let tag_39: 315;
export { tag_39 as tag };
import type_39 = fieldTypes.ASCII;
export { type_39 as type };
}
namespace HostComputer {
let tag_40: 316;
export { tag_40 as tag };
import type_40 = fieldTypes.ASCII;
export { type_40 as type };
}
namespace Predictor {
let tag_41: 317;
export { tag_41 as tag };
import type_41 = fieldTypes.SHORT;
export { type_41 as type };
}
namespace WhitePoint {
let tag_42: 318;
export { tag_42 as tag };
import type_42 = fieldTypes.RATIONAL;
export { type_42 as type };
let isArray_8: true;
export { isArray_8 as isArray };
}
namespace PrimaryChromaticities {
let tag_43: 319;
export { tag_43 as tag };
import type_43 = fieldTypes.RATIONAL;
export { type_43 as type };
let isArray_9: true;
export { isArray_9 as isArray };
}
namespace ColorMap {
let tag_44: 320;
export { tag_44 as tag };
import type_44 = fieldTypes.SHORT;
export { type_44 as type };
let isArray_10: true;
export { isArray_10 as isArray };
}
namespace HalftoneHints {
let tag_45: 321;
export { tag_45 as tag };
import type_45 = fieldTypes.SHORT;
export { type_45 as type };
let isArray_11: true;
export { isArray_11 as isArray };
}
namespace TileWidth {
let tag_46: 322;
export { tag_46 as tag };
import type_46 = fieldTypes.SHORT;
export { type_46 as type };
let eager_10: true;
export { eager_10 as eager };
}
namespace TileLength {
let tag_47: 323;
export { tag_47 as tag };
import type_47 = fieldTypes.SHORT;
export { type_47 as type };
let eager_11: true;
export { eager_11 as eager };
}
namespace TileOffsets {
let tag_48: 324;
export { tag_48 as tag };
import type_48 = fieldTypes.LONG;
export { type_48 as type };
let isArray_12: true;
export { isArray_12 as isArray };
}
namespace TileByteCounts {
let tag_49: 325;
export { tag_49 as tag };
import type_49 = fieldTypes.SHORT;
export { type_49 as type };
let isArray_13: true;
export { isArray_13 as isArray };
}
namespace InkSet {
let tag_50: 332;
export { tag_50 as tag };
import type_50 = fieldTypes.SHORT;
export { type_50 as type };
}
namespace InkNames {
let tag_51: 333;
export { tag_51 as tag };
import type_51 = fieldTypes.ASCII;
export { type_51 as type };
}
namespace NumberOfInks {
let tag_52: 334;
export { tag_52 as tag };
import type_52 = fieldTypes.SHORT;
export { type_52 as type };
}
namespace DotRange {
let tag_53: 336;
export { tag_53 as tag };
import type_53 = fieldTypes.BYTE;
export { type_53 as type };
let isArray_14: true;
export { isArray_14 as isArray };
}
namespace TargetPrinter {
let tag_54: 337;
export { tag_54 as tag };
import type_54 = fieldTypes.ASCII;
export { type_54 as type };
}
namespace ExtraSamples {
let tag_55: 338;
export { tag_55 as tag };
import type_55 = fieldTypes.BYTE;
export { type_55 as type };
let isArray_15: true;
export { isArray_15 as isArray };
let eager_12: true;
export { eager_12 as eager };
}
namespace SampleFormat {
let tag_56: 339;
export { tag_56 as tag };
import type_56 = fieldTypes.SHORT;
export { type_56 as type };
let isArray_16: true;
export { isArray_16 as isArray };
let eager_13: true;
export { eager_13 as eager };
}
namespace SMinSampleValue {
let tag_57: 340;
export { tag_57 as tag };
let isArray_17: true;
export { isArray_17 as isArray };
}
namespace SMaxSampleValue {
let tag_58: 341;
export { tag_58 as tag };
let isArray_18: true;
export { isArray_18 as isArray };
}
namespace TransferRange {
let tag_59: 342;
export { tag_59 as tag };
import type_57 = fieldTypes.SHORT;
export { type_57 as type };
let isArray_19: true;
export { isArray_19 as isArray };
}
namespace JPEGProc {
let tag_60: 512;
export { tag_60 as tag };
import type_58 = fieldTypes.SHORT;
export { type_58 as type };
}
namespace JPEGInterchangeFormat {
let tag_61: 513;
export { tag_61 as tag };
import type_59 = fieldTypes.LONG;
export { type_59 as type };
}
namespace JPEGInterchangeFormatLngth {
let tag_62: 514;
export { tag_62 as tag };
import type_60 = fieldTypes.LONG;
export { type_60 as type };
}
namespace JPEGRestartInterval {
let tag_63: 515;
export { tag_63 as tag };
import type_61 = fieldTypes.SHORT;
export { type_61 as type };
}
namespace JPEGLosslessPredictors {
let tag_64: 517;
export { tag_64 as tag };
import type_62 = fieldTypes.SHORT;
export { type_62 as type };
let isArray_20: true;
export { isArray_20 as isArray };
}
namespace JPEGPointTransforms {
let tag_65: 518;
export { tag_65 as tag };
import type_63 = fieldTypes.SHORT;
export { type_63 as type };
let isArray_21: true;
export { isArray_21 as isArray };
}
namespace JPEGQTables {
let tag_66: 519;
export { tag_66 as tag };
import type_64 = fieldTypes.LONG;
export { type_64 as type };
let isArray_22: true;
export { isArray_22 as isArray };
}
namespace JPEGDCTables {
let tag_67: 520;
export { tag_67 as tag };
import type_65 = fieldTypes.LONG;
export { type_65 as type };
let isArray_23: true;
export { isArray_23 as isArray };
}
namespace JPEGACTables {
let tag_68: 521;
export { tag_68 as tag };
import type_66 = fieldTypes.LONG;
export { type_66 as type };
let isArray_24: true;
export { isArray_24 as isArray };
}
namespace YCbCrCoefficients {
let tag_69: 529;
export { tag_69 as tag };
import type_67 = fieldTypes.RATIONAL;
export { type_67 as type };
let isArray_25: true;
export { isArray_25 as isArray };
}
namespace YCbCrSubSampling {
let tag_70: 530;
export { tag_70 as tag };
import type_68 = fieldTypes.SHORT;
export { type_68 as type };
let isArray_26: true;
export { isArray_26 as isArray };
}
namespace YCbCrPositioning {
let tag_71: 531;
export { tag_71 as tag };
import type_69 = fieldTypes.SHORT;
export { type_69 as type };
}
namespace ReferenceBlackWhite {
let tag_72: 532;
export { tag_72 as tag };
import type_70 = fieldTypes.LONG;
export { type_70 as type };
let isArray_27: true;
export { isArray_27 as isArray };
}
namespace Copyright {
let tag_73: 33432;
export { tag_73 as tag };
import type_71 = fieldTypes.ASCII;
export { type_71 as type };
}
namespace BadFaxLines {
let tag_74: 326;
export { tag_74 as tag };
}
namespace CleanFaxData {
let tag_75: 327;
export { tag_75 as tag };
}
namespace ClipPath {
let tag_76: 343;
export { tag_76 as tag };
}
namespace ConsecutiveBadFaxLines {
let tag_77: 328;
export { tag_77 as tag };
}
namespace Decode {
let tag_78: 433;
export { tag_78 as tag };
}
namespace DefaultImageColor {
let tag_79: 434;
export { tag_79 as tag };
}
namespace Indexed {
let tag_80: 346;
export { tag_80 as tag };
}
namespace JPEGTables {
let tag_81: 347;
export { tag_81 as tag };
let isArray_28: true;
export { isArray_28 as isArray };
let eager_14: true;
export { eager_14 as eager };
}
namespace StripRowCounts {
let tag_82: 559;
export { tag_82 as tag };
let isArray_29: true;
export { isArray_29 as isArray };
}
namespace SubIFDs {
let tag_83: 330;
export { tag_83 as tag };
let isArray_30: true;
export { isArray_30 as isArray };
}
namespace XClipPathUnits {
let tag_84: 344;
export { tag_84 as tag };
}
namespace YClipPathUnits {
let tag_85: 345;
export { tag_85 as tag };
}
namespace ApertureValue {
let tag_86: 37378;
export { tag_86 as tag };
}
namespace ColorSpace {
let tag_87: 40961;
export { tag_87 as tag };
}
namespace DateTimeDigitized {
let tag_88: 36868;
export { tag_88 as tag };
}
namespace DateTimeOriginal {
let tag_89: 36867;
export { tag_89 as tag };
}
namespace ExifIFD {
let tag_90: 34665;
export { tag_90 as tag };
export let name: "Exif IFD";
import type_72 = fieldTypes.LONG;
export { type_72 as type };
}
namespace ExifVersion {
let tag_91: 36864;
export { tag_91 as tag };
}
namespace ExposureTime {
let tag_92: 33434;
export { tag_92 as tag };
}
namespace FileSource {
let tag_93: 41728;
export { tag_93 as tag };
}
namespace Flash {
let tag_94: 37385;
export { tag_94 as tag };
}
namespace FlashpixVersion {
let tag_95: 40960;
export { tag_95 as tag };
}
namespace FNumber {
let tag_96: 33437;
export { tag_96 as tag };
}
namespace ImageUniqueID {
let tag_97: 42016;
export { tag_97 as tag };
}
namespace LightSource {
let tag_98: 37384;
export { tag_98 as tag };
}
namespace MakerNote {
let tag_99: 37500;
export { tag_99 as tag };
}
namespace ShutterSpeedValue {
let tag_100: 37377;
export { tag_100 as tag };
}
namespace UserComment {
let tag_101: 37510;
export { tag_101 as tag };
}
namespace IPTC {
let tag_102: 33723;
export { tag_102 as tag };
}
namespace CZ_LSMINFO {
let tag_103: 34412;
export { tag_103 as tag };
}
namespace ICCProfile {
let tag_104: 34675;
export { tag_104 as tag };
let name_1: "ICC Profile";
export { name_1 as name };
}
namespace XMP {
let tag_105: 700;
export { tag_105 as tag };
}
namespace GDAL_METADATA {
let tag_106: 42112;
export { tag_106 as tag };
}
namespace GDAL_NODATA {
let tag_107: 42113;
export { tag_107 as tag };
import type_73 = fieldTypes.ASCII;
export { type_73 as type };
let eager_15: true;
export { eager_15 as eager };
}
namespace Photoshop {
let tag_108: 34377;
export { tag_108 as tag };
}
namespace ModelPixelScale {
let tag_109: 33550;
export { tag_109 as tag };
import type_74 = fieldTypes.DOUBLE;
export { type_74 as type };
let isArray_31: true;
export { isArray_31 as isArray };
let eager_16: true;
export { eager_16 as eager };
}
namespace ModelTiepoint {
let tag_110: 33922;
export { tag_110 as tag };
import type_75 = fieldTypes.DOUBLE;
export { type_75 as type };
let isArray_32: true;
export { isArray_32 as isArray };
let eager_17: true;
export { eager_17 as eager };
}
namespace ModelTransformation {
let tag_111: 34264;
export { tag_111 as tag };
import type_76 = fieldTypes.DOUBLE;
export { type_76 as type };
let isArray_33: true;
export { isArray_33 as isArray };
let eager_18: true;
export { eager_18 as eager };
}
namespace GeoKeyDirectory {
let tag_112: 34735;
export { tag_112 as tag };
import type_77 = fieldTypes.SHORT;
export { type_77 as type };
let isArray_34: true;
export { isArray_34 as isArray };
let eager_19: true;
export { eager_19 as eager };
}
namespace GeoDoubleParams {
let tag_113: 34736;
export { tag_113 as tag };
import type_78 = fieldTypes.DOUBLE;
export { type_78 as type };
let isArray_35: true;
export { isArray_35 as isArray };
let eager_20: true;
export { eager_20 as eager };
}
namespace GeoAsciiParams {
let tag_114: 34737;
export { tag_114 as tag };
import type_79 = fieldTypes.ASCII;
export { type_79 as type };
let eager_21: true;
export { eager_21 as eager };
}
namespace LercParameters {
let tag_115: 50674;
export { tag_115 as tag };
let eager_22: true;
export { eager_22 as eager };
}
}
/** @typedef {keyof typeof tagDictionary} TagName */
/** @typedef {typeof tagDictionary[keyof typeof tagDictionary]['tag']} Tag */
/**
* @typedef {Extract<keyof typeof tagDictionary,
* { [K in keyof typeof tagDictionary]: (typeof tagDictionary)[K] extends { eager: true }
* ? K : never }[keyof typeof tagDictionary]>} EagerTagName
*/
/**
* @typedef {Extract<Tag, { [K in keyof typeof tagDictionary]: (typeof tagDictionary)[K] extends { eager: true }
* ? (typeof tagDictionary)[K]['tag'] : never }[keyof typeof tagDictionary]>} EagerTag
*/
/** @typedef {Extract<typeof tagDictionary[keyof typeof tagDictionary], {type: any}>['type']} TagType */
/**
* @template {number} T
* @typedef {T extends 2 ? string : number} GeoTiffPrimitive
*/
/**
* @template {TagName} T
* @typedef {typeof tagDictionary[T]} TagDef
*/
/**
* @typedef {{
* 1: number;
* 2: string;
* 3: number;
* 4: number;
* 5: number;
* 6: number;
* 7: ArrayBuffer;
* 8: number;
* 9: number;
* 10: number;
* 11: number;
* 12: number;
* 16: number;
* 17: number;
* 18: number;
* }} FieldTypeMap
*/
/**
* @template {TagName} T
* @typedef {TagDef<T> extends { isArray: true }
* ? (TagDef<T> extends { type: typeof fieldTypes.DOUBLE } ? number[] :
* TagDef<T> extends { type: typeof fieldTypes.ASCII } ? string[] :
* TagDef<T> extends { type: typeof fieldTypes.BYTE | typeof fieldTypes.SBYTE | typeof fieldTypes.UNDEFINED }
* ? Uint8Array | Int8Array :
* (number[] | TypedArray))
* : (TagDef<T> extends { type: keyof FieldTypeMap } ? FieldTypeMap[TagDef<T>['type']] : any)} TagValue
*/
/**
* Maps tag names to their numeric values
* @type {Record<string, number>}
*/
export const tags: Record<string, number>;
/**
* Maps tag numbers to their definitions
* @type {Record<number, { tag: number, name: string, type: string|number|undefined, isArray: boolean, eager: boolean }>}
*/
export const tagDefinitions: Record<number, {
tag: number;
name: string;
type: string | number | undefined;
isArray: boolean;
eager: boolean;
}>;
export const fieldTagTypes: {
256: string;
257: string;
258: string;
259: string;
262: string;
270: string;
271: string;
272: string;
273: string;
274: string;
277: string;
278: string;
279: string;
282: string;
283: string;
284: string;
286: string;
287: string;
296: string;
297: string;
305: string;
306: string;
315: string;
338: string;
339: string;
513: string;
514: string;
1024: string;
1025: string;
1026: string;
2048: string;
2049: string;
2052: string;
2054: string;
2057: string;
2059: string;
2060: string;
3072: string;
3073: string;
3076: string;
4096: string;
4097: string;
4099: string;
33432: string;
33550: string;
33922: string;
34264: string;
34665: string;
34735: string;
34736: string;
34737: string;
42113: string;
};
export namespace photometricInterpretations {
let WhiteIsZero: number;
let BlackIsZero: number;
let RGB: number;
let Palette: number;
let TransparencyMask: number;
let CMYK: number;
let YCbCr: number;
let CIELab: number;
let ICCLab: number;
}
export namespace ExtraSamplesValues {
let Unspecified: number;
let Assocalpha: number;
let Unassalpha: number;
}
export namespace LercParameters {
let Version: number;
let AddCompression: number;
}
export namespace LercAddCompression {
let None: number;
let Deflate: number;
let Zstandard: number;
}
export const geoKeyNames: {
readonly 1024: "GTModelTypeGeoKey";
readonly 1025: "GTRasterTypeGeoKey";
readonly 1026: "GTCitationGeoKey";
readonly 2048: "GeographicTypeGeoKey";
readonly 2049: "GeogCitationGeoKey";
readonly 2050: "GeogGeodeticDatumGeoKey";
readonly 2051: "GeogPrimeMeridianGeoKey";
readonly 2052: "GeogLinearUnitsGeoKey";
readonly 2053: "GeogLinearUnitSizeGeoKey";
readonly 2054: "GeogAngularUnitsGeoKey";
readonly 2055: "GeogAngularUnitSizeGeoKey";
readonly 2056: "GeogEllipsoidGeoKey";
readonly 2057: "GeogSemiMajorAxisGeoKey";
readonly 2058: "GeogSemiMinorAxisGeoKey";
readonly 2059: "GeogInvFlatteningGeoKey";
readonly 2060: "GeogAzimuthUnitsGeoKey";
readonly 2061: "GeogPrimeMeridianLongGeoKey";
readonly 2062: "GeogTOWGS84GeoKey";
readonly 3072: "ProjectedCSTypeGeoKey";
readonly 3073: "PCSCitationGeoKey";
readonly 3074: "ProjectionGeoKey";
readonly 3075: "ProjCoordTransGeoKey";
readonly 3076: "ProjLinearUnitsGeoKey";
readonly 3077: "ProjLinearUnitSizeGeoKey";
readonly 3078: "ProjStdParallel1GeoKey";
readonly 3079: "ProjStdParallel2GeoKey";
readonly 3080: "ProjNatOriginLongGeoKey";
readonly 3081: "ProjNatOriginLatGeoKey";
readonly 3082: "ProjFalseEastingGeoKey";
readonly 3083: "ProjFalseNorthingGeoKey";
readonly 3084: "ProjFalseOriginLongGeoKey";
readonly 3085: "ProjFalseOriginLatGeoKey";
readonly 3086: "ProjFalseOriginEastingGeoKey";
readonly 3087: "ProjFalseOriginNorthingGeoKey";
readonly 3088: "ProjCenterLongGeoKey";
readonly 3089: "ProjCenterLatGeoKey";
readonly 3090: "ProjCenterEastingGeoKey";
readonly 3091: "ProjCenterNorthingGeoKey";
readonly 3092: "ProjScaleAtNatOriginGeoKey";
readonly 3093: "ProjScaleAtCenterGeoKey";
readonly 3094: "ProjAzimuthAngleGeoKey";
readonly 3095: "ProjStraightVertPoleLongGeoKey";
readonly 3096: "ProjRectifiedGridAngleGeoKey";
readonly 4096: "VerticalCSTypeGeoKey";
readonly 4097: "VerticalCitationGeoKey";
readonly 4098: "VerticalDatumGeoKey";
readonly 4099: "VerticalUnitsGeoKey";
};
/** @typedef {geoKeyNames[keyof typeof geoKeyNames]} GeoKeyName */
/**
* @type {Record<GeoKeyName, number>}
*/
export const geoKeys: Record<GeoKeyName, number>;
export type FieldTypeSize = 4 | 2 | 8 | 1;
export type FieldTypeName = "BYTE" | "ASCII" | "SHORT" | "LONG" | "RATIONAL" | "SBYTE" | "UNDEFINED" | "SSHORT" | "SLONG" | "SRATIONAL" | "FLOAT" | "DOUBLE" | "IFD" | "LONG8" | "SLONG8" | "IFD8";
export type FieldType = 4 | 2 | 7 | 8 | 1 | 3 | 5 | 6 | 9 | 10 | 11 | 12 | 13 | 16 | 17 | 18;
export type FieldTypeSizes = Record<FieldTypeName, number>;
export type TagDictionaryEntry = {
tag: number;
name?: string | undefined;
type?: number | undefined;
isArray?: boolean | undefined;
eager?: boolean | undefined;
};
export type TagName = keyof typeof tagDictionary;
export type Tag = (typeof tagDictionary)[keyof typeof tagDictionary]["tag"];
export type EagerTagName = Extract<keyof typeof tagDictionary, { [K in keyof typeof tagDictionary]: (typeof tagDictionary)[K] extends {
eager: true;
} ? K : never; }[keyof typeof tagDictionary]>;
export type EagerTag = Extract<Tag, { [K in keyof typeof tagDictionary]: (typeof tagDictionary)[K] extends {
eager: true;
} ? (typeof tagDictionary)[K]["tag"] : never; }[keyof typeof tagDictionary]>;
export type TagType = Extract<(typeof tagDictionary)[keyof typeof tagDictionary], {
type: any;
}>["type"];
export type GeoTiffPrimitive<T extends number> = T extends 2 ? string : number;
export type TagDef<T extends TagName> = (typeof tagDictionary)[T];
export type FieldTypeMap = {
1: number;
2: string;
3: number;
4: number;
5: number;
6: number;
7: ArrayBuffer;
8: number;
9: number;
10: number;
11: number;
12: number;
16: number;
17: number;
18: number;
};
export type TagValue<T extends TagName> = TagDef<T> extends {
isArray: true;
} ? (TagDef<T> extends {
type: typeof fieldTypes.DOUBLE;
} ? number[] : TagDef<T> extends {
type: typeof fieldTypes.ASCII;
} ? string[] : TagDef<T> extends {
type: typeof fieldTypes.BYTE | typeof fieldTypes.SBYTE | typeof fieldTypes.UNDEFINED;
} ? Uint8Array | Int8Array : (number[] | TypedArray)) : (TagDef<T> extends {
type: keyof FieldTypeMap;
} ? FieldTypeMap[TagDef<T>["type"]] : any);
export type GeoKeyName = "GTModelTypeGeoKey" | "GTRasterTypeGeoKey" | "GTCitationGeoKey" | "GeographicTypeGeoKey" | "GeogCitationGeoKey" | "GeogGeodeticDatumGeoKey" | "GeogPrimeMeridianGeoKey" | "GeogLinearUnitsGeoKey" | "GeogLinearUnitSizeGeoKey" | "GeogAngularUnitsGeoKey" | "GeogAngularUnitSizeGeoKey" | "GeogEllipsoidGeoKey" | "GeogSemiMajorAxisGeoKey" | "GeogSemiMinorAxisGeoKey" | "GeogInvFlatteningGeoKey" | "GeogAzimuthUnitsGeoKey" | "GeogPrimeMeridianLongGeoKey" | "GeogTOWGS84GeoKey" | "ProjectedCSTypeGeoKey" | "PCSCitationGeoKey" | "ProjectionGeoKey" | "ProjCoordTransGeoKey" | "ProjLinearUnitsGeoKey" | "ProjLinearUnitSizeGeoKey" | "ProjStdParallel1GeoKey" | "ProjStdParallel2GeoKey" | "ProjNatOriginLongGeoKey" | "ProjNatOriginLatGeoKey" | "ProjFalseEastingGeoKey" | "ProjFalseNorthingGeoKey" | "ProjFalseOriginLongGeoKey" | "ProjFalseOriginLatGeoKey" | "ProjFalseOriginEastingGeoKey" | "ProjFalseOriginNorthingGeoKey" | "ProjCenterLongGeoKey" | "ProjCenterLatGeoKey" | "ProjCenterEastingGeoKey" | "ProjCenterNorthingGeoKey" | "ProjScaleAtNatOriginGeoKey" | "ProjScaleAtCenterGeoKey" | "ProjAzimuthAngleGeoKey" | "ProjStraightVertPoleLongGeoKey" | "ProjRectifiedGridAngleGeoKey" | "VerticalCSTypeGeoKey" | "VerticalCitationGeoKey" | "VerticalDatumGeoKey" | "VerticalUnitsGeoKey";
import type { TypedArray } from './geotiff.js';
//# sourceMappingURL=globals.d.ts.map