What's New
v4.4 (in development)
Target Release Date: Q1 2025
See the v4.4 Roadmap for more details.
v4.3
Release Date: October 16, 2024
A minor release that includes:
- TypeScript - Typecript v5.6.
- Node.js - Node.js v20 is now the primary supported Node.js version.
- Loader/Writer APIs - Improved type inference for loader / writer options and return types.
DataSource
API Multi-step data loadingi mprovements.- Website - Live examples are now available for more loaders / formats.
- Examples - Migrated to React functional components. Minimized boilerplate code.
@loaders.gl/core
Loader
type inference improvements:load()
,parse()
,parseSync()
andparseInBatches()
now infer correct option and return types when an array of loaders is passed.Writer
type inference improvements:encode()
,encodeSync()
andencodeInBatches()
now infer correct option and data types matching the specified writer.createDataSource
- Create aDataSource
from a list ofSource
objects.selectSource
- Select the appropriateSource
from a list ofSource
objects.
@loaders.gl/mvt
TableTileSource
- Geospatial tables can now be vector tiled dynamically in the browser.
@loaders.gl/textures
Comp[ressedTextureLoader]
- Now supports mipmaps in KTX2 textures.
@loaders.gl/3d-tiles
- 3D Tiles 1.1 Writing
Tile3DWriter
now supports writing 3DTiles 1.1 - 3D Tiles 1.1 Extensions
EXT_mesh_features
andEXT_structural_metadata
are now supported.
@loaders.gl/tile-converter
- Removed 'extended SLPK' usage from the converter,
--slpk
is now a default behavior - Removed
slpk-extractor
tool - Added option
--egm=None
to disable egm conversion tile-conveter
source code has been converted to TypeScript
v4.2
Release Date: April 9, 2024
A minor release that includes:
- deck.gl v9: All website examples updated to deck.gl v9.
- TypeScript: Loader objects are typed via
as const satisfies
, preserving more type information. - TypeScript: Loaders with workers now declare the
workerUrl
field in their...LoaderOptions
types. - Build tooling: loaders.gl itself now builds ~10x faster via esbuild, and installs ~2x faster via yarn 4.
@loaders.gl/core
selectLoader()
- MIME type comparisons are now case insensitive.
@loaders.gl/pmtiles
PMTilesSource
- now usespmtiles
version 3.PMTilesSource
- Now refreshes the already loaded index if the underlying PMTiles file being loaded from is changed.
@loaders.gl/parquet
ParquetLoader
- Now supports the Zstandard compression if thezstd-codec
library is supplied (or pre-registered).ParquetLoader
- Many parquet files that previously failed to load now load correctly.GeoparquetLoader
- Improved support for largePolygons
andMultiPolygons
.
@loaders.gl/i3s
SLPKLoader
- Load from a local SLPK archive in the browser (Experimental).
@loaders.gl/3d-tiles
Tile3DLoader
- Ignores unknown Draco3D attributes such as FLOAT64, INT64 and UINT64, when loading from e.g..PNTS
files. See LAS to 3D Tiles conversion.
@loaders.gl/draco
DracoLoader
now ignores unsupported attributes such as FLOAT64, INT64, UINT64.DracoLoader
,DracoWriter
- Now uses draco3dv1.5.7
decoders.- Note: Still uses the draco3d
v1.4.1
encoder to avoid performance regression.
@loaders.gl/gltf
GLTFLoader
: Support models with more complex use ofKHR_texture_transform
extension.
@loaders.gl/las
LASLoader
: Memory leak plugged.
@loaders.gl/wms
WMSService
:getFeatureInfo()
now also supports querying WMS 1.3 services.
@loaders.gl/tile-converter
tile-converter
- Resume conversion from the last tile processed in case of an interruption.tile-converter
- Quiet mode.tile-converter
- Convert I3S to 3D Tiles from local SLPK file.
v4.1
Release Date: February 6, 2024
- Tooling upgrades: Typescript 5.3, vite 5.0, docusauraus 3.0
@loaders.gl/arrow
- Now requires
apache-arrow
versionv15.0.0
or later. - New
GeoArrowLoader
supports loading GeoArrow files. - New documentation for Arrow and GeoArrow formats.
@loaders.gl/flatgeobuf
- Loading flatgeobuf into a
GeoJSONTable
now extracts a Schema object from the flatgeobuf header, and uses it to infer the types of the columns in the table.
@loaders.gl/loader-utils
- Request Scheduling
RequestScheduler
now includes a 'debounceTime' option. When enabled, may reduce bandwidth usage and total loading time during interactive view transitions.
v4.0
Release Date: Oct 30, 2023
A major release that brings:
- Typed loaders - The
load()
andparse()
APIs now infer types from the supplied loader. - Writers - More writers for formats such as CSV, GeoJSON etc.
- File format documentation - articles describing the file formats supported by loaders.gl.
- Node.js v18 & v20 - Supports the current set of Node.js LTS releases.
@loaders.gl/pmtiles - NEW
- New
PMTilesSource
supports the PMTiles format. - New PMTiles example.
@loaders.gl/parquet
- The
ParquetLoader
now supports loading GeoParquet files. - New GeoParquet example.
@loaders.gl/mvt
- New
TileJSONLoader
adds supports for the TileJSON format.
@loaders.gl/csv
- New
CSVWriter
allows export of tables in CSV format. - Migration: The promise of parse() now returns
{ shape: string; data: [] }
instead of[]
, so you should add.data
to get the records.
@laoders.gl/json
- New
GeoJSONWriter
allows export of tables in GeoJSON format. - New
JSONWriter
allows export of tables in JSON format. - New
NDJSONWriter
allows export of tables in NDJSON format. - New
NDGeoJSONWriter
allows export of tables in NDGeoJSON format.
@loaders.gl/wkt
- New
WKTCRSLoader
(WKT Coordinate Reference System loader) - New
WKTCRSWriter
(WKT Coordinate Reference System writer) - New
TWKBLoader
(Tiny Well-Known Binary loader) - New
TWKBWriter
(Tiny Well-Known Binary writer) - New
HexWKBLoader
(Hex Well-Known Binary loader)
@loaders.gl/zip
ZipArchive
- now enables file-by-file reads from large zip archives without loading the entire archive into memory (in Node.js).- Supports hash-info generation from Zip Central Directory Headers. Used in I3S Archive format (SLPK) and 3D Tiles Archive format (3TZ).
@loaders.gl/gltf
- Support for EXT_mesh_features and EXT_mesh_features glTF extensions for 3D Tiles v1.1. This completes 3D Tiles datasets attribute load support (adding to the current EXT_feature_metadata support). Attribute data can be used for "feature picking" capabilities of i3s viewers.
@loaders.gl/3d-tiles
- 3D Tiles v1.1 Implicit Tiling
- 3D Tiles v1.1 attributes (via the new EXT_mesh_features and EXT_mesh_features glTF extensions).
- New 3tz loader to load 3D Tiles archive format. With this, 3D Tiles archives data can be browsed as a file system (using random access into 3tz files) in any loaders.gl-based app
@loaders.gl/arrow
- Now uses latest
apache-arrow
v13.
@loaders.gl/draco
- Decoders upgraded to draco3d
v1.5.6
.
@loaders.gl/geopackage
- Now uses latest
sql.js
v1.8.0.
@loaders.gl/core
fetchFile()
now supports fetching from local filesystem in Node.js
@loaders.gl/schema
- The loaders.gl schema and type system is serializable counterpart to the Apache Arrow schema and type system. This simplifies transferring schemas between workers.
@loaders.gl/crypto
- All hashes now accept an encoding parameter allowing the app to choose between
'hex'
and'base64'
encoding (rather than getting'base64'
by default).
@loaders.gl/i3s
- New SLPK-loader allows the load of SLPK files into a web app using loaders.gl (like i3s explorer)
- "Multiply" mode added to the existing "replace" mode for colourization by attribute for i3s datasets
@loaders.gl/loader-utils
- New functions that allow loaders to call sub-loaders with full type inference, without importing the core module.
parseWithContext()
,parseSyncWithContext()
andparseInBatchesWithContext()
loaders.gl/polyfills
- Polyfills now contains Node dependent code for other modules, minimizing the risk of Node.js-dependency related bundling complications when using other loaders.gl modules in the browser.
- Polyfills no longer installs
fetch
/Response
/Headers
polyfills under Node.js, instead leveraging the built-infetch()
support in Node.js v18+.
@loaders.gl/tile-converter
-
New command-line tools for working with I3S archive format (SLPK) files
i3s-server
- serve SLPKs as a local HTTP serverslpk-extractor
- extract an SLPK to a dataset that can be served viai3s-server
-
tile-converter
tool has been improved:- Offline Mode - offline conversion. No internet is required during the conversion process.
- RAM usage improvements
- Can now convert large I3S SLPKs (>2GB) to 3D Tiles.
-
3D TILES <-> I3S conversion improvements:
- Now converts S2 bounding volume 3DTILES_bounding_volume_S2 into Oriented Bounding Boxes format (OBB)
- Now converts non-indexed 3D TILES geometries
- Now reads 3DTiles archive format (.3tz) as input for conversion into I3S
-
Improved support for I3S archive format (SLPK)
- Hash generation for SLPKs without a hash
-
Pre-processing for conversion 3DTiles > I3S:
- Detect topology type (for example TRIANGLE and TRIANGLE_STRIP will pass further for conversion, POINT or TRIANGLE_FAN will notify this mesh type is not supported for conversion)
- Detect attributes classes for
EXT_feature_metadata
and forEXT_mesh_features
extensions. Choose a class to convert in CLI with arrow keys. - New tile-converter "--analyze" option for users to only run the analysis without running conversion afterwards
v3.4
Release Date: May 16, 2023.
For patch releases, see CHANGELOG.
General Improvements
- New website, built with docusaurus.
- Typescript upgraded to v5.0.
- Examples upgraded to React v18, deck.gl v8.9, react-map-gl v7.0.
@loaders.gl/core
- query strings - for loaders that need to pass their query strings to subloaders,
LoaderContext
now provides aqueryString
field.
@loaders.gl/bson (New module)
- New module supporting the BSON (Binary JSON) format.
BSONLoader
- loads BSON encoded binary data into a "JSON like" JavaScript structureBSONWriter
- writes a JSON like JavaScript structure into a BSON encoded binary data block.
@loaders.gl/images
ImageLoader
now supports for loading images in the AVIF image format.getSupportedImageTypes()
New function returns a list of MIME types of supported image formatsisImageFormatSupported()
New function tests if a specific image format is supported in the current environment (mainly required for WebP and AVIF).
@loaders.gl/gis
triangulate
parameter added togeojsonToBinary()
.
@loaders.gl/pcd
PCDLoader
now supports loadingintensity
andlabel
columns if present in the PCD file.
@loaders.gl/ply
PLYLoader
now supports custom attributes such asintensity
andconfidence
if present in the PLY file.
@loaders.gl/tiles
- Improved handling of query parameters for tilesets and subtiles.
- Preserves internal session URL parameter to support Google 3D Tiles.
@loaders.gl/wms
WMSService
- WMS version 1.3.0 is now the default. When connecting to older servers, version dependent parameters, coordinate conventions etc are remapped under the hood.
- HTTP Authentication:
loadOptions
now enables overriding fetch options, including supplying an HTTPAuthentication
header. - Transparent rendering: The
transparent
prop is now enabling requesting images that are transparent where there is no data. - Pre-specified parameters (
layers
,crs
etc) can now be specified during construction, no longer need to repeatedly pass them togetMap
etc methods.
WMSCapabilitiesLoader
- Now handles version 1.3.0, and when loading older capabilities, fields and parameters that have changed across WMS versions are automatically remapped to 1.3.0 equivalents (
CRS
vsSRS
etc). - Extracts more information (such as
version
,abstract
fields, layer bounding boxes, availabledimensions
(time etc) and flags (opaque
,queryable
,cascaded
), MIME types forexceptions
) etc.
- Now handles version 1.3.0, and when loading older capabilities, fields and parameters that have changed across WMS versions are automatically remapped to 1.3.0 equivalents (
CSWService
- New service supporting the CSW (Catalog Services for the Web) protocol.
- Enables applications to discover available services (including WMS).
WMSCapabilities
type has some breaking changes, please refer to the upgrade guide.
@loaders.gl/xml
HTMLLoader
- New minimal HTML loader, intended for small ad-hoc use cases such as extracting an error message or a link from a short HTML page.
@loaders.gl/tile-converter
- Support
TRIANGLE_STRIP
mesh topology type during 3DTiles -> I3S conversion
v3.3
Release Date: February 17, 2023.
For patch releases, see CHANGELOG.
General Improvements
- vite bundler - Most examples are now bundled with vite. vite is now an officially supported bundler for loaders.gl.
@loaders.gl/3d-tiles
- Limited support for 3D Tiles Next:
3DTILES_content_gltf
extension support (glTF 2.0 extensions support is enabled in 3d tiles archives).3DTILES_implicit_tiling
extension support (quick access to tiles by tile coordinates).
@loaders.gl/gltf
GLTFLoader
glTF extension support:- KHR_texture_transform - textures can now optionally be processed and removed during load by transforming UV coordinates. Useful if renderer or post processing stage does not have support for this extension.
@loaders.gl/draco
- Now uses the draco3d
v1.5.5
decoders - Note: Still uses the draco3d
v1.4.1
encoder to avoid performance regression.
@loaders.gl/wms (New module)
- New module for parsing WMS (Web Management Service) server responses:
WMSCapabilitiesLoader
@loaders.gl/xml (New module)
- New module for parsing XML (eXtensible Markup Language)
XMLLoader
@loaders.gl/tile-converter
- Now leverages Node.js workers to increase conversion speed.
- Limited support for converting
3D Tiles Next
source tilesets:KHR_texture_basisu
glTF extension support. Support of KTX2 textures.KHR_texture_transform
glTF extension support. Supported as input.EXT_feature_metadata
extension support. Support converting attributes from 3D Tiles Next to I3S.
- New conversion options:
split-nodes
- create multiple I3S nodes from one glTF file when the source glTF has multiple materials.instant-node-writing
- RAM usage management option. Keep JSON resources on disk instead of memory in cost of conversion speed.
v3.2
Release Date: May 12, 2022.
For patch releases, see CHANGELOG.
@loaders.gl/arrow
- ArrowLoader now recognizes recommended Arrow MIME types
application/vnd.apache.arrow.file
,application/vnd.apache.arrow.stream
.
@loaders.gl/json
GeoJSONLoader
NDJSONLoader
- Now supports JSONL, JSONSeq etc.NDGeoJSONLoader
- Now supports JSONL, JSONSeq etc.
@loaders.gl/geopackage
- The
GeopackageLoader
now supportstables
as well asgeojson
output data shapes, defaulting totables
. This is configurable viaoptions.gis.format
.
@loaders.gl/gltf
EXT_meshopt_compression
extension support.
@loaders.gl/terrain
- Fix winding order of "skirt" geometries, to prevent them from being incorrectly hidden by GPU face culling during rendering.
@loaders.gl/worker-utils
- Experimental support for Node.js workers.
@loaders.gl/wkb
- The
WKBWriter
supports options within awkb
key, instead of at the top level.
@loaders.gl/textures
- Upgrade
basis_universal
libraries to v1.16.3.
v3.1
Release Date: Dec 7, 2021.
For patch releases, see CHANGELOG.
@loaders.gl/textures
- Parse KTX2 with BasisLoader.
- New
KTX2BasisWriter
enables transcoding textures to basis (works both in browser and Node). - Upgrade
basis_universal
libraries to v1.15.
@loaders.gl/gltf
GTLTLoader
now decodes Basis super compressed textures if present (via theKHR_texture_basisu
glTF extension).
@loaders.gl/i3s
- Support KTX2-Basis textures.
@loaders.gl/json
- New
NDJSONLoader
which handles new-line delimited JSON files.
@loaders.gl/csv
CSVLoader
now recognizes TSV files via.tsv
file extension or thetext/tab-separated-values
MIME type.
@loaders.gl/flatgeobuf
- The experimental
FlatgeobufLoader
is now documented.
@loaders.gl/parquet NEW
- New experimental
ParquetLoader
@loaders.gl/pcd
PCDLoader
now supports compressed binary data.
@loaders.gl/wkt
- New
WKBWriter
for encoding GeoJSON geometries to WKB.
v3.0
Release Date: July 13, 2021.
loaders.gl v3.0 is a major release, that adds a range of new loaders and features and continues the transition of the loaders.gl code base to typescript. Some deprecated APIs have been removed, check the upgrade guide for breaking changes.
For patch releases, see CHANGELOG.
General improvements
- New loader option:
options.<loader>.shape
to control format of data. Will gradually be supported by all loaders. - TypeScript: improved types for many loaders.gl APIs.
- TypeScript: many loaders now export a
LoaderOptions
type that can be used to typecheck loader options, e.gimport type {CSVLoaderOptions}
from@loaders.gl/csv
.
@loaders.gl/core
- New loader option:
options.mimeType
to override loader selection. - New loader option:
options.fallbackMimeType
to control fallback loader selection. - New loader option:
options.limit
to limit number of rows returned during batched parsing. - New
processOnWorker()
function allows applications to run certain non-loader tasks (such as compression and decompression) on workers.
@loaders.gl/compression
- New compressions:
brotli
,snappy
,LZO
(limited). - New
CompressionWorker
exports enable compression and decompression on worker threads using the newprocessOnWorker()
function. - Improved API (see upgrade guide)
@loaders.gl/crypto
- New
CryptoWorker
export enables CRC32, CRC32c and MD5 hashing on worker threads using the newprocessOnWorker()
function.
@loaders.gl/csv
options.csv.type
can be explicitly set to'object-row-table'
(default) transforms rows to JS objects with the header row as keys.'array-row-table'
in which the row will be returned as an array of values.
- Duplicate column names will have a counter suffix added to ensure that they are unique.
@loaders.gl/gis
- Added
getSingleFeature()
function for extracting a single GeoJSON feature from aBinaryGeometry
@loaders.gl/draco
- Updated to
draco3d@1.4.1
- Supports binary array fields in draco metadata.
- Significant performance improvements for loading and decoding.
@loaders.gl/json
- Removed deprecated json parse option
_rootObjectBatches
. Use loader optionmetadata
instead. - Replaced
batch.batchType
root-object-batch-partial
withpartial-result
. - Replaced
batch.batchType
root-object-batch-complete
withfinal-result
.
@loaders.gl/kml
KMLLoader
- updated loader, now works under Node.js.GPXLoader
,TCXLoader
- new loaders to parse common formats for recorded GPS tracks.
@loaders.gl/arrow
- Upgrades
apache-arrow
version to 4.0.0
@loaders.gl/excel NEW
- New table category loader for Excel spreadsheets in both binary
.xls
,.xlsb
and XML-based.xlsx
formats.
@loaders.gl/i3s
- Thanks to a major contribution from Esri, the
I3SLoader
now offers full I3S 1.7 support including:- page nodes
- compressed geometry
- compressed textures
- attributes (object picking)
@loaders.gl/mvt
- Binary output is now 2-3X faster for large datasets thanks to parsing directly from PBF to binary, rather than going through GeoJSON as an intermediate representation. Speed comparison on some example data sets (MVT tiles parsed per second):
Via GeoJSON | Direct | Speed increase | |
---|---|---|---|
Block groups | 2.86/s | 5.57/s | 1.94X |
Census layer | 6.09/s | 11.9/s | 1.95X |
Counties Layer | 72.5/s | 141/s | 1.94X |
Usa Zip Code Layer | 8.45/s | 20.3/s | 2.4X |
Benchmarks ran using scripts on a 2012 MacBook Pro, 2.3 GHz Intel Core i7, 8 GB, measuring parsing time of MVTLoader only (network time and rendering is not included)
- When using the MVTLoader with
binary: true
the triangulation of polygons is performed in a worker, speeding up loading of polygon geometries and easing the work on the main thread.
@loaders.gl/terrain
- New
options.terrain.tesselator
option inTerrainLoader
for selecting desired method of mesh generation. Use'martini'
for a faster method that works in most cases or'delatin'
, which is slower but supports non-square images.
@loaders.gl/textures NEW
textures
website example shows which compressed texture formats work on the current device.CompressedTextureLoader
now supports KTX2, DDS and PVR containers.BasisLoader
with latest binaries.CrunchLoader
CompressedTextureWriter
is available (for Node.js only)- Texture loading API for multi-image-based textures
loadImageTexture
,loadImageTextureArray
,loadImageTextureCube
- A new
NPYLoader
to parse N-dimensional arrays generated by the NumPy Python library for high bit depth data and image textures.
@loaders.gl/tile-converter NEW
- Thanks to a major contribution from Esri, the new
tile-converter
module implements conversion between the OGC 3D tiles and the OGC I3S tileset formats, through:- A
tile-converter
CLI tool for automated batch conversion of multi-terabyte tilesets. - A docker image to facilitate easy installs of the converter.
- A Node.js converter class API is also available for programmatic use.
- A
v2.3
Release Date: October 12, 2020
This release brings a new Shapefile loader, compression codecs (Zlib, LZ4, Zstandard), support for binary output from geospatial loaders, and a range of improvements supporting loaders.gl integration with kepler.gl, a major geospatial application.
@loaders.gl/shapefile NEW
- A new loader for the ESRI Shapefile format has been added. It loads
.SHP
and (if available).DBF
,.CPG
and.PRJ
files and returns a geojson like geometry.
@loaders.gl/compression NEW
- A new module with compression/decompression transforms for compression codecs (Zlib, LZ4, Zstandard). As always, these work reliably in both browsers and Node.js.
@loaders.gl/crypto NEW
- A new module for calculating cryptographic hashes (MD5, SHA256 etc). Provided transforms enables hashes to be calculated incrementally, e.g. on incoming binary chunks while streaming data into
parseInBatches
.
@loaders.gl/draco
- Draco3D libraries are upgraded to version 1.3.6.
- Draco metadata can now be encoded and decoded.
- Custom Draco attributes are now decoded.
@loaders.gl/gltf
GLBLoader
can now read older GLB v1 files in addition to GLB v2.GLTFLoader
now offers optional, partial support for reading older glTF v1 files and automatically converting them to glTF v2 format (viaoptions.glt.normalize
).
@loaders.gl/json
- Binary output is now available for the
GeoJsonLoader
, viaoptions.gis.format: 'binary'
.
@loaders.gl/kml
- Binary output is now available for the
KMLLoader
, viaoptions.gis.format: 'binary'
.
@loaders.gl/las
- Uses a newer version of the
laz-perf
parser (1.4.4).
@loaders.gl/mvt
- Binary output is now available for the Mapbox Vector Tiles
MVTLoader
, viaoptions.gis.format: 'binary'
.
@loaders.gl/core
parseInBatches()
now allows the caller to specify "transforms" that shoud be applied on the input data before parsing, viaoptions.transforms
. See the new crypto and compression modules for available transforms to calculate cryptographic hashes on / decompress "streaming" data.parseInBatches()
can now be called on all loaders. Non-batched loaders will just return a single batch.options.fetch
(load
,parse
etc.) can now be used to supply a either afetch
options object or a customfetch
function.- (BREAKING)
selectLoader()
is now async and returns aPromise
that resolves to a loader. selectLoader()
can now select loaders through content sniffing ofBlob
andFile
objects.selectLoaderSync()
has been added for situations when calling an async function is not practial.
@loaders.gl/polyfills
fetch
polyfill: Files with.gz
extension are automatically decompressed with gzip. The extension reported in thefetch
response has the.gz
extension removed.fetch
polyfill: Improved robustness and error handling in Node.js when opening unreadable or non-existent files. Underlying errors (ENOEXIST
,EISDIR
etc) are now caught and reported inResponse.statusText
.Blob
andFile
, new experimental polyfills.
v2.2
Framework and loader improvements based on usage in applications.
Release Date: June 18, 2020
General Improvements
- Typescript type definitions (
d.ts
files) are now provided for some loaders.gl modules that export APIs (functions and classes).
@loaders.gl/core
parseInBatches
a newoptions.metadata
option adds an initial batch with metadata about what data format is being loaded.selectLoader
(andparse
etc) now recognizes unique unregistered MIME types (e.gapplication/x.ply
) for every loader. This enable applications that can setcontent-type
headers to have precise control over loader selection.
@loaders.gl/images
The ImageLoader
now loads images as Imagebitmap
by default on browsers that support ImageBitmap
(Chrome and Firefox). The performance improvements are dramatic, which can be verified in the new benchmark example.
@loaders.gl/i3s
Addresses a number of compatibility issues with different I3S tilesets that have been reported by users.
@loaders.gl/terrain
A new QuantizedMeshLoader
has been added to the terrain
module to decode the Quantized Mesh format.
@loaders.gl/video (new loader module)
An experimental new module with video loading and GIF generation support.
@loaders.gl/wkt
A new WKBLoader
has been added to the wkt
module to decode the Well-Known Binary format.
Worker support for the WKTLoader
, designed to support future binary data improvements.
@loaders.gl/json
parseInBatches
now acceptsoptions.json.jsonpaths
to specify which array should be streamed using limited JSONPath syntax (e.g.'$.features'
for GeoJSON).parseInBatches
returned batches now contain abatch.bytesUsed
field to enable progress bars.parseInBatches
partial and final result batches are now generated when setting themetadata: true
options..geojson
files can now alternatively be parsed by a new experimentalGeoJSONLoader
(exported with an underscore as_GeoJSONLoader
), introduced to support future binary data improvements.
@loaders.gl/csv
parseInBatches
now returns abatch.bytesUsed
field to enable progress bars.- Header auto-detection available via
options.csv.header: 'auto'
.
@loaders.gl/arrow
Updated to use apache-arrow
version 0.17.0
.
@loaders.gl/3d-tiles
The Tile3DLoader
now installs the DracoLoader
. The application no longer needs to import and register the DracoWorkerLoader
.
@loaders.gl/gltf
The GLTFLoader
now installs the DracoLoader
. The application no longer needs to import and register the DracoWorkerLoader
.
@loaders.gl/polyfills
- The
fetch
andResponse
polyfills for Node.js have been significantly improved, supporting more types of input and parameters with higher fidelity - The
fetch
polyfill now automatically add theaccept-encoding
header and automatically decompressesgzip
,brotli
anddeflate
compressed responses.
v2.1
Release Date: Mar 16, 2020
This release adds a number of new geospatial format loaders. The new loaders enables rendering frameworks to visualize various geospatial datasets.
MVTLoader + MVTLayer (v2.1) | TerrainLoader + TerrainLayer (v2.1) | I3SLoader + Tile3DLayer
(v2.1) |
@loaders.gl/i3s (new loader module)
- A new loader module for I3S tiles is added to the 3D Tiles family. Checkout the San Francisco Buildings example. This is a collaboration with ESRI and Tamrat Belayneh @Tamrat-B
@loaders.gl/mvt (new loader module)
- A new loader module for loading Mapbox Vector Tiles. Development was led by contributors from CARTO,
@loaders.gl/terrain (new loader module)
- A new loader module for reconstructing mesh surfaces from height map images. Check out the example with deck.gl's
TerrainLayer
.
@loaders.gl/wkt (new loader module)
- A new loader module for the Well-Known Text geometry format.
@loaders.gl/core
- The
load
andparse
functions can now read data directly fromStream
objects both in node and browser.
@loaders.gl/arrow
- The ArrowJS dependency has been upgraded to v0.16.
- The ArrowJS API documentation in the loaders.gl website has been improved.
@loaders.gl/images
- Images can now be loaded as data: Using the
ImageLoader
withoptions.image.type: 'data'
parameter will return an image data object with width, height and a typed array containing the image data (instead of an opaqueImage
orImageBitmap
instance). ImageBitmap
loading now works reliably, useImageLoader
withoptions.image.type: 'imagebitmap'
.
@loaders.gl/json
- The streaming JSON loader now has an experimental option
_rootObjectBatches
that returns the top-level JSON object containing the JSON array being streamed, as additional first (partial) and last (complete) batches.
Mesh Category
- Add
boundingBox
to mesh category header
v2.0
Release Date: Dec 20, 2019
The 2.0 release brings potentially dramatic bundle size savings through dynamic loading of loaders and workers, significant overhauls to several loaders including , image loading improvements and the glTF loader, and a powerful loader composition system.
-
Loader-Specific Options Each loader now defines its own sub object in the options object. This makes it possible to cleanly specify options for multiple loaders at the same time. This is helpful when loaders.gl auto-selects a pre-registered loader or when passing options to a sub-loader when using a composite loader.
-
Smaller Loaders Big loaders such as
DracoLoader
andBasisLoader
that use large libraries (e.g. WASM/WebAssembly or emscripten/C++ transpiled to JavaScript) now load those libraries dynamically fromunpkg.com
CDN resulting in dramatic bundle size savings. E.g the bundle size impact of theDracoLoader
was reduced from > 1MB to just over 10KB. -
Worker Loaders
- Ease-of-use: Worker loading is provided by the main loader objects. It is not necessary to import the
...WorkerLoader
objects to enable worker loading (but see below about bundle size) - Performance: Loading on worker threads is now the default: All worker enabled loaders now run on worker threads by default (set
options.worker: false
to disable worker-thread loading and run the loader on the main thread). - Debugging: Development builds of workers are now available on
unpkg.com
CDN, eabling debugging of worker loaders. - Bundle size: Workers are no longer bundled, but loaded from from the
unpkg.com
CDN. - Bundle size: Note that the old
...WorkerLoader
classes are still available. Using these can save even more bundle space since during tree-shaking since they do not depend on the non-worker parser.
- Ease-of-use: Worker loading is provided by the main loader objects. It is not necessary to import the
-
Composite Loaders
- The new composite loader architecture enables complex loaders like
Tiles3DLoader
andGLTFLoader
to be composed from more primitive loaders without losing the ability to run some parts on worker, pass arguments to sub-loaders etc.
- The new composite loader architecture enables complex loaders like
@loaders.gl/basis NEW
- A new module for the basis format that enables. This module also provides a
CompressedImageLoader
for more traditional compressed images.
@loaders.gl/json NEW
- A new streaming
JSONLoader
that supports batched (i.e. streaming) parsing from standard JSON files, e.g. geojson. No need to reformat your files as line delimited JSON.
@loaders.gl/gltf
- the
GLTFLoader
is now a "composite loader". The perhaps most important change is thatload(url, GLTFLoader)
also loads all sub-assets, including images, Draco compressed meshes, etc making the loaded data easier for applications to use.
@loaders.gl/images
- New ImageLoader options
options: {image: {}}
contain common options that apply across the category options.image.type
, Ability to control loaded image type enabling fasterImageBitmap
instances to be loaded viatype: 'imagebitmap
. Defaultauto
setting returns traditional HTML image objects.- Image Decoding.
options.image.decodeHTML: true
-ImageLoader
now ensures HTML images are completely decoded and ready to be used when the image is returned (by callingImage.decode()
). - Parsed Image API Since the type of images returned by the
ImageLoader
depends on the{image: {type: ...}}
option, a set of functions are provided to work portably with loaded images:isImage()
,getImageType()
,getImageData()
, ... - Binary Image API Separate API to work with unparsed images in binary data form:
isBinaryImage()
,getBinaryImageType()
,getBinaryImageSize()
, ... - "Texture" Loading API New methods
loadImages
andloadImageCube
can signficantly simplify loading of arrays of arrays of (mipmapped) images that are often used in 3D applications. These methods allow an entire complex of images (e.g. 6 cube faces with 10 mip images each) to be loaded using a single async call. - Improved Node.js support More image test cases are now run in both browser and Node.js and a couple of important Node.js issues were uncovered and fixed.
v1.3
Release Date: Sep 13, 2019
The 1.3 release is focused on production quality 3D tiles support, maturing the v2 glTF parser, and provides some improvements to the core API.
Tiles3DLoader |
@loaders.gl/3d-tiles
-
Tile3DLayer moved to deck.gl
- The
Tile3DLayer
can now be imported from@deck.gl/geo-layers
, and no longer needs to be copied from the loaders.gl3d-tiles
example
- The
-
Batched 3D Model Tile Support
b3dm
tiles can now be loaded and displayed by theTile3DLayer
(in addition topnts
tiles).
-
Performance Tracking
Tileset3D
now contain astats
object which tracks the loading process to help profile big tilesets.- Easily displayed in your UI via the
@probe.gl/stats-widget
module (see 3d-tiles example).
-
Request Scheduling
- The
Tileset3D
class now cancels loads for not-yet loaded tiles that are no longer in view). - Scheduling dramatically improves loading performance when panning/zooming through large tilesets.
- The
@loaders.gl/gltf
- Version 2 Improvements
- Select the new glTF parser by passing
options.gltf.parserVersion: 2
to theGLTFLoader
. - Many improvements to the v2 glTF parser.
- Select the new glTF parser by passing
@loaders.gl/core
-
Loader Selection Improvements
- The loader selection mechanism is now exposed to apps through the new
selectLoader
API. - Loaders can now examine the first bytes of a file
- This complements the existing URL extension based auto detection mechanisms.
- The loader selection mechanism is now exposed to apps through the new
-
Worker Thread Pool
- Now reuses worker threads. Performance gains by avoiding worker startup overhead.
- Worker threads are named, easy to track while debugging
- Worker based loaders can now call
parse
recursively to delegate parsing of embedded data (e.g. glTF, Draco) to other loaders
v1.2
The 1.2 release is a smaller release that resolves various issues encountered while using 1.1.
Release Date: Aug 8, 2019
@loaders.gl/core
: File Type Auto Detection now supports binary files@loaders.gl/polyfills
: FixedTextEncoder
warnings@loaders.gl/arrow
: Improved Node 8 support@loaders.gl/images
: Image file extensions now added to loader object@loaders.gl/gltf
: Generate default sampler parameters if none provided in gltf file
@loaders.gl/3d-tiles (EXPERIMENTAL)
- Support for dynamic traversal of 3D tilesets (automatically loads and unloads tiles based on viewer position and view frustum).
- Support for loading tilesets from Cesium ION servers.
- Asynchronous tileset loading
- Auto centering of view based on tileset bounding volumes
- deck.gl
Tile3DLayer
class provided in examples.
v1.1
The 1.1 release addresses a number of gaps in original loaders.gl release, introduces the GLTFLoader
, and initiates work on 3DTiles support.
Release Date: May 30, 2019
GLTFLoader |
@loaders.gl/core
fetchFile
function - Can now read browserFile
objects (from drag and drop or file selection dialogs).isImage(arrayBuffer [, mimeType])
function - can now accept a MIME type as second argument.
@loaders.gl/images
getImageMIMEType(arrayBuffer)
function ( EW) - returns the MIME type of the image in the suppliedArrayBuffer
.isImage(arrayBuffer [, mimeType])
function - can now accept a MIME type as second argument.
@loaders.gl/gltf
-
The glTF module has been refactored with the aim of simplifying the loaded data and orthogonalizing the API.
-
"Embedded' GLB data (GLBs inside other binary formats) can now be parsed (e.g. the glTF parser can now extract embedded glTF inside 3D tile files).
-
New classes/functions:
GLTFScenegraph
class NEW - A helper class that provides methods for structured access to and modification/creation of glTF data.postProcessGLTF
function ( EW) - Function that performs a set of transformations on loaded glTF data that simplify application processing.GLBLoader
/[GLBWriter
]NEW - loader/writer pair that enables loading/saving custom (non-glTF) data in the binary GLB format.GLTFLoader
, letting application separately handle post-processing.
@loaders.gl/3d-tiles (NEW MODULE)
- Support for the 3D tiles format is being developed in the new
@loaders.gl/3d-tiles
module. - Loading of individual point cloud tiles, including support for Draco compression and compact color formats such as RGB565 is supported.
@loaders.gl/polyfills (NEW MODULE)
Node support now requires importing @loaders.gl/polyfills
before use. This reduces the number of dependencies, bundle size and potential build complications when using other loaders.gl modules when not using Node.js support.
@loaders.gl/loader-utils (NEW MODULE)
Helper functions for loaders have been broken out from @loaders.gl/core
. Individual loaders no longer depend on@loaders.gl/core
but only on @loaders.gl/loader-utils
.
v1.0
Release Date: April 2019
First Official Release