{"library":"quadbin","title":"Quadbin Spatial Index Utilities","description":"The `quadbin` library (version 0.4.2) provides essential utility functions for working with the Quadbin spatial index, a hierarchical geospatial indexing system developed by CARTO. Quadbins represent map cells using 64-bit integers, offering a distinct approach compared to variable-length indexing systems like Quadkey. This TypeScript-first library emphasizes performance and type safety, making it suitable for geospatial data processing in Node.js environments (requiring Node.js >=18). It's primarily used in WebGL and visualization contexts for efficient spatial queries and data aggregation. The library's main differentiator is its use of JavaScript's `BigInt` type for quadbin indices, which necessitates explicit conversion functions like `bigIntToHex` and `hexToBigInt` when serializing or deserializing data (e.g., for JSON). While specific release cadences aren't strictly defined, the package receives active maintenance, with recent dependency updates reflecting ongoing support.","language":"javascript","status":"active","last_verified":"Sun Apr 19","install":{"commands":["npm install quadbin"],"cli":null},"imports":["import { tileToCell } from 'quadbin';","import { cellToTile } from 'quadbin';","import { bigIntToHex, hexToBigInt } from 'quadbin';"],"auth":{"required":false,"env_vars":[]},"quickstart":{"code":"import { tileToCell, cellToTile, bigIntToHex, hexToBigInt } from 'quadbin';\n\n// Example: Convert an XYZ tile to a Quadbin BigInt\nconst zoom = 10;\nconst x = 325;\nconst y = 373;\n\nconst tile = { x, y, z: zoom };\nconst quadbinBigInt = tileToCell(tile);\n\nconsole.log(`Tile {z: ${zoom}, x: ${x}, y: ${y}} converts to Quadbin BigInt: ${quadbinBigInt}n`);\n\n// Quadbin BigInts cannot be directly serialized to JSON. Convert to hex string.\nconst quadbinHexString = bigIntToHex(quadbinBigInt);\nconsole.log(`Quadbin BigInt as hex string for JSON: ${quadbinHexString}n`);\n\n// To use the hex string back in the library, convert it back to BigInt.\nconst restoredQuadbinBigInt = hexToBigInt(quadbinHexString);\nconsole.log(`Restored Quadbin BigInt from hex string: ${restoredQuadbinBigInt}n`);\n\n// Convert the Quadbin BigInt back to an XYZ tile\nconst convertedTile = cellToTile(restoredQuadbinBigInt);\n\nconsole.log(`Quadbin BigInt ${restoredQuadbinBigInt} converts back to Tile: {z: ${convertedTile.z}, x: ${convertedTile.x}, y: ${convertedTile.y}}`);\n\n// Verify the conversion\nif (convertedTile.z === zoom && convertedTile.x === x && convertedTile.y === y) {\n  console.log('\\nConversion successful and consistent!');\n} else {\n  console.error('\\nConversion resulted in a different tile!');\n}","lang":"typescript","description":"Demonstrates converting an XYZ tile to a Quadbin BigInt, handling JSON serialization via hex strings, and converting back.","tag":null,"tag_description":null,"last_tested":null,"results":[]},"compatibility":null}