s2-tools
Version:
A collection of geospatial tools primarily designed for WGS84, Web Mercator, and S2.
121 lines • 3.58 kB
TypeScript
/** A tile, in the format of ZXY. */
export type FlatTile = [zoom: number, x: number, y: number];
/** PMTiles v3 directory entry. */
export interface Entry {
tileID: number;
offset: number;
length: number;
runLength: number;
}
/**
* Enum representing a compression algorithm used.
* 0 = unknown compression, for if you must use a different or unspecified algorithm.
* 1 = no compression.
* 2 = gzip
* 3 = brotli
* 4 = zstd
*/
export declare enum Compression {
/** unknown compression, for if you must use a different or unspecified algorithm. */
Unknown = 0,
/** no compression. */
None = 1,
/** gzip. */
Gzip = 2,
/** brotli. */
Brotli = 3,
/** zstd. */
Zstd = 4
}
/**
* Provide a decompression implementation that acts on `buf` and returns decompressed data.
*
* Should use the native DecompressionStream on browsers, zlib on node.
* Should throw if the compression algorithm is not supported.
*/
export type DecompressFunc = (buf: Uint8Array, compression: Compression) => Promise<Uint8Array>;
/**
* Describe the type of tiles stored in the archive.
* 0 is unknown/other, 1 is a vector tile spec.
*/
export declare enum TileType {
/** unknown/other. */
Unknown = 0,
/** Vector tiles. */
Pbf = 1,
/** Image tiles. */
Png = 2,
/** Image tiles. */
Jpeg = 3,
/** Image tiles. */
Webp = 4,
/** Image tiles. */
Avif = 5
}
/**
* PMTiles v3 header storing basic archive-level information.
*/
export interface Header {
specVersion: number;
rootDirectoryOffset: number;
rootDirectoryLength: number;
jsonMetadataOffset: number;
jsonMetadataLength: number;
leafDirectoryOffset: number;
leafDirectoryLength?: number;
tileDataOffset: number;
tileDataLength?: number;
numAddressedTiles: number;
numTileEntries: number;
numTileContents: number;
clustered: boolean;
internalCompression: Compression;
tileCompression: Compression;
tileType: TileType;
minZoom: number;
maxZoom: number;
etag?: string;
}
export declare const HEADER_SIZE_BYTES = 127;
export declare const ROOT_SIZE = 16384;
/**
* Convert Z,X,Y to a Hilbert TileID.
* @param zoom - the zoom level
* @param x - the x coordinate
* @param y - the y coordinate
* @returns - the Hilbert encoded TileID
*/
export declare function zxyToTileID(zoom: number, x: number, y: number): number;
/**
* Convert a Hilbert TileID to Z,X,Y.
* @param i - the encoded tile ID
* @returns - the decoded Z,X,Y
*/
export declare function tileIDToZxy(i: number): FlatTile;
/**
* Low-level function for looking up a TileID or leaf directory inside a directory.
* @param entries - the directory entries
* @param tileID - the tile ID
* @returns the entry associated with the tile, or null if not found
*/
export declare function findTile(entries: Entry[], tileID: number): Entry | null;
/**
* Parse raw header bytes into a Header object.
* @param bytes - the raw header bytes
* @returns the parsed header
*/
export declare function bytesToHeader(bytes: Uint8Array): Header;
/**
* Deserialize a directory from a Uint8Array.
* @param buffer - the buffer to deserialize
* @returns - the deserialized entries
*/
export declare function deserializeDir(buffer: Uint8Array): Entry[];
/**
* Get a 64-bit number from a DataView
* @param dv - a DataView
* @param offset - the offset in the DataView
* @returns - the decoded 64-bit number
*/
export declare function getUint64(dv: DataView, offset: number): number;
//# sourceMappingURL=pmtiles.d.ts.map