s2maps-gpu
Version:
S2 Maps GPU - An open source, high-performance, and GPU-accelerated map engine for rendering large-scale, interactive maps.
105 lines (104 loc) • 3.04 kB
TypeScript
import type { Compression } from '../../index.js';
/** 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;
}
/**
* Describe the type of tiles stored in the archive.
* 0 is unknown/other, 1 is a vector tile spec.
*/
export declare const TileType: {
/** unknown/other. */
readonly Unknown: 0;
/** Vector tiles. */
readonly Pbf: 1;
/** Image tiles. */
readonly Png: 2;
/** Image tiles. */
readonly Jpeg: 3;
/** Image tiles. */
readonly Webp: 4;
/** Image tiles. */
readonly Avif: 5;
};
/**
* Enum representing a tile types stored in the archive.
* 0 = unknown type
* 1 = PBF
* 2 = PNG
* 3 = JPEG
* 4 = WEBP
* 5 = AVIF
*/
export type TileType = (typeof TileType)[keyof typeof TileType];
/**
* 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;