UNPKG

geotiff

Version:

GeoTIFF image decoding in JavaScript

1,071 lines 33.5 kB
/** @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