A JavaScript library that wraps GDAL for geospatial data processing directly in the browser using WebAssembly.
Loam is a JavaScript library that provides a wrapper for GDAL (Geospatial Data Abstraction Library) to run in web browsers using WebAssembly. It allows developers to perform geospatial data processing—such as format conversion, reprojection, rasterization, and dataset analysis—directly on the client side without needing server-side GDAL installations. This enables building fully-featured GIS applications that operate entirely in the browser.
Web developers and GIS engineers building browser-based geospatial applications that require client-side processing of raster (e.g., GeoTIFF, PNG, JPEG) and vector (e.g., Shapefiles, GeoJSON) data formats.
Developers choose Loam because it brings the extensive, battle-tested functionality of GDAL to the browser, eliminating server dependencies for common geospatial tasks. Its lazy evaluation chain and Web Worker architecture ensure performance doesn't block the UI, making it ideal for interactive web mapping and data processing tools.
Javascript wrapper for GDAL in the browser
Open-Awesome is built by the community, for the community. Submit a project, suggest an awesome list, or help improve the catalog on GitHub.
Brings GDAL's robust geospatial processing to web browsers via WebAssembly, enabling format conversion, reprojection, and rasterization without server dependencies. (Evidence: README states it runs GDAL core functionality in browser using compiled WebAssembly.)
Chains operations like convert(), warp(), and rasterize() with lazy evaluation, optimizing performance by delaying computation until dataset properties are accessed. (Evidence: API documentation specifies lazy evaluation for methods like GDALDataset.convert().)
Uses a separate Web Worker to handle heavy computations, preventing UI freezes and improving application responsiveness. (Evidence: README highlights Web Worker integration for handling tasks without blocking the main thread.)
Provides methods to access detailed dataset metadata, including dimensions, band statistics, coordinate systems, and affine transforms, mirroring GDAL's capabilities. (Evidence: Functions like width(), wkt(), and bandStatistics() are documented in the API.)
Requires manual handling of WebAssembly files (gdal.js, gdal.wasm, gdal.data) as static assets, with limited build tool support, increasing setup complexity. (Evidence: Installation section details copying or symlinking files into public directories for frameworks like Create React App.)
Only supports TIFF, PNG, and JPEG raster formats by default; other formats may require custom GDAL builds, reducing out-of-the-box versatility. (Evidence: README notes GDAL is compiled with support for these specific formats in the loam.open() description.)
WebAssembly modules are large (several megabytes uncompressed), causing noticeable latency during initialization unless pre-loaded, impacting user experience. (Evidence: initialize() function documentation warns about large asset sizes and suggests pre-fetching.)