@loaders.gl/tiles 5.0.0-alpha.12 → 5.0.0-alpha.13
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +1 -1
- package/README.md +18 -72
- package/dist/dist.dev.js +6979 -42928
- package/dist/dist.min.js +3 -22
- package/dist/image-set.d.ts +1 -1
- package/dist/image-set.d.ts.map +1 -1
- package/dist/index.cjs +2847 -8781
- package/dist/index.cjs.map +3 -4
- package/dist/index.d.ts +4 -45
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +3 -27
- package/dist/index.js.map +1 -1
- package/dist/mlt/bundled.d.ts +3 -0
- package/dist/mlt/bundled.d.ts.map +1 -0
- package/dist/mlt/bundled.js +5 -0
- package/dist/mlt/bundled.js.map +1 -0
- package/dist/mlt/index.cjs +3701 -0
- package/dist/mlt/index.cjs.map +6 -0
- package/dist/mlt/index.d.ts +10 -0
- package/dist/mlt/index.d.ts.map +1 -0
- package/dist/mlt/index.js +12 -0
- package/dist/mlt/index.js.map +1 -0
- package/dist/mlt/lib/encode-mlt-geometry.d.ts +6 -0
- package/dist/mlt/lib/encode-mlt-geometry.d.ts.map +1 -0
- package/dist/mlt/lib/encode-mlt-geometry.js +150 -0
- package/dist/mlt/lib/encode-mlt-geometry.js.map +1 -0
- package/dist/mlt/lib/encode-mlt-streams.d.ts +13 -0
- package/dist/mlt/lib/encode-mlt-streams.d.ts.map +1 -0
- package/dist/mlt/lib/encode-mlt-streams.js +57 -0
- package/dist/mlt/lib/encode-mlt-streams.js.map +1 -0
- package/dist/mlt/lib/encode-mlt.d.ts +6 -0
- package/dist/mlt/lib/encode-mlt.d.ts.map +1 -0
- package/dist/mlt/lib/encode-mlt.js +174 -0
- package/dist/mlt/lib/encode-mlt.js.map +1 -0
- package/dist/mlt/lib/parse-mlt.d.ts +11 -0
- package/dist/mlt/lib/parse-mlt.d.ts.map +1 -0
- package/dist/mlt/lib/parse-mlt.js +675 -0
- package/dist/mlt/lib/parse-mlt.js.map +1 -0
- package/dist/mlt/mlt-format.d.ts +14 -0
- package/dist/mlt/mlt-format.d.ts.map +1 -0
- package/dist/mlt/mlt-format.js +17 -0
- package/dist/mlt/mlt-format.js.map +1 -0
- package/dist/mlt/mlt-loader-with-parser.d.ts +91 -0
- package/dist/mlt/mlt-loader-with-parser.d.ts.map +1 -0
- package/dist/mlt/mlt-loader-with-parser.js +29 -0
- package/dist/mlt/mlt-loader-with-parser.js.map +1 -0
- package/dist/mlt/mlt-loader.d.ts +115 -0
- package/dist/mlt/mlt-loader.d.ts.map +1 -0
- package/dist/mlt/mlt-loader.js +38 -0
- package/dist/mlt/mlt-loader.js.map +1 -0
- package/dist/mlt/mlt-source-loader.d.ts +82 -0
- package/dist/mlt/mlt-source-loader.d.ts.map +1 -0
- package/dist/mlt/mlt-source-loader.js +179 -0
- package/dist/mlt/mlt-source-loader.js.map +1 -0
- package/dist/mlt/mlt-writer.d.ts +45 -0
- package/dist/mlt/mlt-writer.d.ts.map +1 -0
- package/dist/mlt/mlt-writer.js +21 -0
- package/dist/mlt/mlt-writer.js.map +1 -0
- package/dist/mlt/unbundled.d.ts +3 -0
- package/dist/mlt/unbundled.d.ts.map +1 -0
- package/dist/mlt/unbundled.js +5 -0
- package/dist/mlt/unbundled.js.map +1 -0
- package/dist/mvt/arrow-table-tile-source-loader-types.d.ts +36 -0
- package/dist/mvt/arrow-table-tile-source-loader-types.d.ts.map +1 -0
- package/dist/mvt/arrow-table-tile-source-loader-types.js +36 -0
- package/dist/mvt/arrow-table-tile-source-loader-types.js.map +1 -0
- package/dist/mvt/arrow-table-tile-source-loader.cjs +6343 -0
- package/dist/mvt/arrow-table-tile-source-loader.cjs.map +6 -0
- package/dist/mvt/arrow-table-tile-source-loader.d.ts +69 -0
- package/dist/mvt/arrow-table-tile-source-loader.d.ts.map +1 -0
- package/dist/mvt/arrow-table-tile-source-loader.js +216 -0
- package/dist/mvt/arrow-table-tile-source-loader.js.map +1 -0
- package/dist/mvt/arrow-table-tile-source-types.d.ts +21 -0
- package/dist/mvt/arrow-table-tile-source-types.d.ts.map +1 -0
- package/dist/mvt/arrow-table-tile-source-types.js +6 -0
- package/dist/mvt/arrow-table-tile-source-types.js.map +1 -0
- package/dist/mvt/bundled.d.ts +6 -0
- package/dist/mvt/bundled.d.ts.map +1 -0
- package/dist/mvt/bundled.js +7 -0
- package/dist/mvt/bundled.js.map +1 -0
- package/dist/mvt/dist.dev.js +46689 -0
- package/dist/mvt/dist.min.js +94 -0
- package/dist/mvt/index.cjs +10095 -0
- package/dist/mvt/index.cjs.map +6 -0
- package/dist/mvt/index.d.ts +28 -0
- package/dist/mvt/index.d.ts.map +1 -0
- package/dist/mvt/index.js +27 -0
- package/dist/mvt/index.js.map +1 -0
- package/dist/mvt/lib/encode-mvt-arrow.d.ts +6 -0
- package/dist/mvt/lib/encode-mvt-arrow.d.ts.map +1 -0
- package/dist/mvt/lib/encode-mvt-arrow.js +225 -0
- package/dist/mvt/lib/encode-mvt-arrow.js.map +1 -0
- package/dist/mvt/lib/encode-mvt.d.ts +30 -0
- package/dist/mvt/lib/encode-mvt.d.ts.map +1 -0
- package/dist/mvt/lib/encode-mvt.js +20 -0
- package/dist/mvt/lib/encode-mvt.js.map +1 -0
- package/dist/mvt/lib/get-schemas-from-tilejson.d.ts +4 -0
- package/dist/mvt/lib/get-schemas-from-tilejson.d.ts.map +1 -0
- package/dist/mvt/lib/get-schemas-from-tilejson.js +56 -0
- package/dist/mvt/lib/get-schemas-from-tilejson.js.map +1 -0
- package/dist/mvt/lib/is-longitude-latitude-crs.d.ts +3 -0
- package/dist/mvt/lib/is-longitude-latitude-crs.d.ts.map +1 -0
- package/dist/mvt/lib/is-longitude-latitude-crs.js +13 -0
- package/dist/mvt/lib/is-longitude-latitude-crs.js.map +1 -0
- package/dist/mvt/lib/mapbox-vt-pbf/geojson-wrapper.d.ts +25 -0
- package/dist/mvt/lib/mapbox-vt-pbf/geojson-wrapper.d.ts.map +1 -0
- package/dist/mvt/lib/mapbox-vt-pbf/geojson-wrapper.js +73 -0
- package/dist/mvt/lib/mapbox-vt-pbf/geojson-wrapper.js.map +1 -0
- package/dist/mvt/lib/mapbox-vt-pbf/to-vector-tile.d.ts +52 -0
- package/dist/mvt/lib/mapbox-vt-pbf/to-vector-tile.d.ts.map +1 -0
- package/dist/mvt/lib/mapbox-vt-pbf/to-vector-tile.js +165 -0
- package/dist/mvt/lib/mapbox-vt-pbf/to-vector-tile.js.map +1 -0
- package/dist/mvt/lib/mvt-pbf/mvt-constants.d.ts +116 -0
- package/dist/mvt/lib/mvt-pbf/mvt-constants.d.ts.map +1 -0
- package/dist/mvt/lib/mvt-pbf/mvt-constants.js +127 -0
- package/dist/mvt/lib/mvt-pbf/mvt-constants.js.map +1 -0
- package/dist/mvt/lib/mvt-pbf/mvt-types.d.ts +17 -0
- package/dist/mvt/lib/mvt-pbf/mvt-types.d.ts.map +1 -0
- package/dist/mvt/lib/mvt-pbf/mvt-types.js +5 -0
- package/dist/mvt/lib/mvt-pbf/mvt-types.js.map +1 -0
- package/dist/mvt/lib/mvt-pbf/parse-geometry-from-pbf.d.ts +77 -0
- package/dist/mvt/lib/mvt-pbf/parse-geometry-from-pbf.d.ts.map +1 -0
- package/dist/mvt/lib/mvt-pbf/parse-geometry-from-pbf.js +235 -0
- package/dist/mvt/lib/mvt-pbf/parse-geometry-from-pbf.js.map +1 -0
- package/dist/mvt/lib/mvt-pbf/parse-mvt-from-pbf.d.ts +25 -0
- package/dist/mvt/lib/mvt-pbf/parse-mvt-from-pbf.d.ts.map +1 -0
- package/dist/mvt/lib/mvt-pbf/parse-mvt-from-pbf.js +263 -0
- package/dist/mvt/lib/mvt-pbf/parse-mvt-from-pbf.js.map +1 -0
- package/dist/mvt/lib/mvt-pbf/write-mvt-to-pbf.d.ts +4 -0
- package/dist/mvt/lib/mvt-pbf/write-mvt-to-pbf.d.ts.map +1 -0
- package/dist/mvt/lib/mvt-pbf/write-mvt-to-pbf.js +134 -0
- package/dist/mvt/lib/mvt-pbf/write-mvt-to-pbf.js.map +1 -0
- package/dist/mvt/lib/mvt-worker-transport.d.ts +15 -0
- package/dist/mvt/lib/mvt-worker-transport.d.ts.map +1 -0
- package/dist/mvt/lib/mvt-worker-transport.js +54 -0
- package/dist/mvt/lib/mvt-worker-transport.js.map +1 -0
- package/dist/mvt/lib/parse-mvt-geojson.d.ts +6 -0
- package/dist/mvt/lib/parse-mvt-geojson.d.ts.map +1 -0
- package/dist/mvt/lib/parse-mvt-geojson.js +48 -0
- package/dist/mvt/lib/parse-mvt-geojson.js.map +1 -0
- package/dist/mvt/lib/parse-mvt.d.ts +14 -0
- package/dist/mvt/lib/parse-mvt.d.ts.map +1 -0
- package/dist/mvt/lib/parse-mvt.js +105 -0
- package/dist/mvt/lib/parse-mvt.js.map +1 -0
- package/dist/mvt/lib/parse-tilejson.d.ts +74 -0
- package/dist/mvt/lib/parse-tilejson.d.ts.map +1 -0
- package/dist/mvt/lib/parse-tilejson.js +267 -0
- package/dist/mvt/lib/parse-tilejson.js.map +1 -0
- package/dist/mvt/lib/resolve-table-tile-parameters.d.ts +4 -0
- package/dist/mvt/lib/resolve-table-tile-parameters.d.ts.map +1 -0
- package/dist/mvt/lib/resolve-table-tile-parameters.js +16 -0
- package/dist/mvt/lib/resolve-table-tile-parameters.js.map +1 -0
- package/dist/mvt/lib/types.d.ts +88 -0
- package/dist/mvt/lib/types.d.ts.map +1 -0
- package/dist/mvt/lib/types.js.map +1 -0
- package/dist/mvt/lib/utils/geometry-utils.d.ts +83 -0
- package/dist/mvt/lib/utils/geometry-utils.d.ts.map +1 -0
- package/dist/mvt/lib/utils/geometry-utils.js +211 -0
- package/dist/mvt/lib/utils/geometry-utils.js.map +1 -0
- package/dist/mvt/lib/vector-tile/vector-tile-feature.d.ts +72 -0
- package/dist/mvt/lib/vector-tile/vector-tile-feature.d.ts.map +1 -0
- package/dist/mvt/lib/vector-tile/vector-tile-feature.js +350 -0
- package/dist/mvt/lib/vector-tile/vector-tile-feature.js.map +1 -0
- package/dist/mvt/lib/vector-tile/vector-tile-layer.d.ts +29 -0
- package/dist/mvt/lib/vector-tile/vector-tile-layer.d.ts.map +1 -0
- package/dist/mvt/lib/vector-tile/vector-tile-layer.js +108 -0
- package/dist/mvt/lib/vector-tile/vector-tile-layer.js.map +1 -0
- package/dist/mvt/lib/vector-tile/vector-tile.d.ts +9 -0
- package/dist/mvt/lib/vector-tile/vector-tile.d.ts.map +1 -0
- package/dist/mvt/lib/vector-tile/vector-tile.js +28 -0
- package/dist/mvt/lib/vector-tile/vector-tile.js.map +1 -0
- package/dist/mvt/lib/vector-tiler/arrow-tile.d.ts +6 -0
- package/dist/mvt/lib/vector-tiler/arrow-tile.d.ts.map +1 -0
- package/dist/mvt/lib/vector-tiler/arrow-tile.js +84 -0
- package/dist/mvt/lib/vector-tiler/arrow-tile.js.map +1 -0
- package/dist/mvt/lib/vector-tiler/features/clip-features.d.ts +16 -0
- package/dist/mvt/lib/vector-tiler/features/clip-features.d.ts.map +1 -0
- package/dist/mvt/lib/vector-tiler/features/clip-features.js +211 -0
- package/dist/mvt/lib/vector-tiler/features/clip-features.js.map +1 -0
- package/dist/mvt/lib/vector-tiler/features/convert-feature.d.ts +18 -0
- package/dist/mvt/lib/vector-tiler/features/convert-feature.d.ts.map +1 -0
- package/dist/mvt/lib/vector-tiler/features/convert-feature.js +161 -0
- package/dist/mvt/lib/vector-tiler/features/convert-feature.js.map +1 -0
- package/dist/mvt/lib/vector-tiler/features/proto-feature.d.ts +30 -0
- package/dist/mvt/lib/vector-tiler/features/proto-feature.d.ts.map +1 -0
- package/dist/mvt/lib/vector-tiler/features/proto-feature.js +53 -0
- package/dist/mvt/lib/vector-tiler/features/proto-feature.js.map +1 -0
- package/dist/mvt/lib/vector-tiler/features/simplify-path.d.ts +10 -0
- package/dist/mvt/lib/vector-tiler/features/simplify-path.d.ts.map +1 -0
- package/dist/mvt/lib/vector-tiler/features/simplify-path.js +67 -0
- package/dist/mvt/lib/vector-tiler/features/simplify-path.js.map +1 -0
- package/dist/mvt/lib/vector-tiler/features/wrap-features.d.ts +17 -0
- package/dist/mvt/lib/vector-tiler/features/wrap-features.d.ts.map +1 -0
- package/dist/mvt/lib/vector-tiler/features/wrap-features.js +95 -0
- package/dist/mvt/lib/vector-tiler/features/wrap-features.js.map +1 -0
- package/dist/mvt/lib/vector-tiler/proto-tile.d.ts +40 -0
- package/dist/mvt/lib/vector-tiler/proto-tile.d.ts.map +1 -0
- package/dist/mvt/lib/vector-tiler/proto-tile.js +139 -0
- package/dist/mvt/lib/vector-tiler/proto-tile.js.map +1 -0
- package/dist/mvt/lib/vector-tiler/tile-to-geojson.d.ts +12 -0
- package/dist/mvt/lib/vector-tiler/tile-to-geojson.d.ts.map +1 -0
- package/dist/mvt/lib/vector-tiler/tile-to-geojson.js +81 -0
- package/dist/mvt/lib/vector-tiler/tile-to-geojson.js.map +1 -0
- package/dist/mvt/lib/vector-tiler/transform-tile.d.ts +7 -0
- package/dist/mvt/lib/vector-tiler/transform-tile.d.ts.map +1 -0
- package/dist/mvt/lib/vector-tiler/transform-tile.js +42 -0
- package/dist/mvt/lib/vector-tiler/transform-tile.js.map +1 -0
- package/dist/mvt/map-style-format.d.ts +13 -0
- package/dist/mvt/map-style-format.d.ts.map +1 -0
- package/dist/mvt/map-style-format.js +16 -0
- package/dist/mvt/map-style-format.js.map +1 -0
- package/dist/mvt/map-style-loader-with-parser.d.ts +26 -0
- package/dist/mvt/map-style-loader-with-parser.d.ts.map +1 -0
- package/dist/mvt/map-style-loader-with-parser.js +38 -0
- package/dist/mvt/map-style-loader-with-parser.js.map +1 -0
- package/dist/mvt/map-style-loader.d.ts +44 -0
- package/dist/mvt/map-style-loader.d.ts.map +1 -0
- package/dist/mvt/map-style-loader.js +25 -0
- package/dist/mvt/map-style-loader.js.map +1 -0
- package/dist/mvt/map-style-schema.d.ts +58 -0
- package/dist/mvt/map-style-schema.d.ts.map +1 -0
- package/dist/mvt/map-style-schema.js +47 -0
- package/dist/mvt/map-style-schema.js.map +1 -0
- package/dist/mvt/map-style.d.ts +110 -0
- package/dist/mvt/map-style.d.ts.map +1 -0
- package/dist/mvt/map-style.js +90 -0
- package/dist/mvt/map-style.js.map +1 -0
- package/dist/mvt/mvt-format.d.ts +14 -0
- package/dist/mvt/mvt-format.d.ts.map +1 -0
- package/dist/mvt/mvt-format.js +23 -0
- package/dist/mvt/mvt-format.js.map +1 -0
- package/dist/mvt/mvt-geojson-loader-types.d.ts +82 -0
- package/dist/mvt/mvt-geojson-loader-types.d.ts.map +1 -0
- package/dist/mvt/mvt-geojson-loader-types.js +34 -0
- package/dist/mvt/mvt-geojson-loader-types.js.map +1 -0
- package/dist/mvt/mvt-geojson-loader.cjs +1366 -0
- package/dist/mvt/mvt-geojson-loader.cjs.map +6 -0
- package/dist/mvt/mvt-geojson-loader.d.ts +32 -0
- package/dist/mvt/mvt-geojson-loader.d.ts.map +1 -0
- package/dist/mvt/mvt-geojson-loader.js +13 -0
- package/dist/mvt/mvt-geojson-loader.js.map +1 -0
- package/dist/mvt/mvt-loader-with-parser.d.ts +105 -0
- package/dist/mvt/mvt-loader-with-parser.d.ts.map +1 -0
- package/dist/mvt/mvt-loader-with-parser.js +21 -0
- package/dist/mvt/mvt-loader-with-parser.js.map +1 -0
- package/dist/mvt/mvt-loader.d.ts +129 -0
- package/dist/mvt/mvt-loader.d.ts.map +1 -0
- package/dist/mvt/mvt-loader.js +40 -0
- package/dist/mvt/mvt-loader.js.map +1 -0
- package/dist/mvt/mvt-source-loader.d.ts +102 -0
- package/dist/mvt/mvt-source-loader.d.ts.map +1 -0
- package/dist/mvt/mvt-source-loader.js +275 -0
- package/dist/mvt/mvt-source-loader.js.map +1 -0
- package/dist/mvt/mvt-writer.d.ts +28 -0
- package/dist/mvt/mvt-writer.d.ts.map +1 -0
- package/dist/mvt/mvt-writer.js +32 -0
- package/dist/mvt/mvt-writer.js.map +1 -0
- package/dist/mvt/table-tile-source-loader.d.ts +169 -0
- package/dist/mvt/table-tile-source-loader.d.ts.map +1 -0
- package/dist/mvt/table-tile-source-loader.js +478 -0
- package/dist/mvt/table-tile-source-loader.js.map +1 -0
- package/dist/mvt/tilejson-format.d.ts +13 -0
- package/dist/mvt/tilejson-format.d.ts.map +1 -0
- package/dist/mvt/tilejson-format.js +16 -0
- package/dist/mvt/tilejson-format.js.map +1 -0
- package/dist/mvt/tilejson-loader-with-parser.d.ts +13 -0
- package/dist/mvt/tilejson-loader-with-parser.d.ts.map +1 -0
- package/dist/mvt/tilejson-loader-with-parser.js +25 -0
- package/dist/mvt/tilejson-loader-with-parser.js.map +1 -0
- package/dist/mvt/tilejson-loader.d.ts +56 -0
- package/dist/mvt/tilejson-loader.d.ts.map +1 -0
- package/dist/mvt/tilejson-loader.js +28 -0
- package/dist/mvt/tilejson-loader.js.map +1 -0
- package/dist/mvt/tilejson-zod-schema.cjs +79 -0
- package/dist/mvt/tilejson-zod-schema.cjs.map +6 -0
- package/dist/mvt/tilejson-zod-schema.d.ts +218 -0
- package/dist/mvt/tilejson-zod-schema.d.ts.map +1 -0
- package/dist/mvt/tilejson-zod-schema.js +68 -0
- package/dist/mvt/tilejson-zod-schema.js.map +1 -0
- package/dist/mvt/tilejson.schema.json +197 -0
- package/dist/mvt/unbundled.d.ts +8 -0
- package/dist/mvt/unbundled.d.ts.map +1 -0
- package/dist/mvt/unbundled.js +8 -0
- package/dist/mvt/unbundled.js.map +1 -0
- package/dist/mvt/workers/mvt-worker-node.d.ts +2 -0
- package/dist/mvt/workers/mvt-worker-node.d.ts.map +1 -0
- package/dist/mvt/workers/mvt-worker-node.js +8 -0
- package/dist/mvt/workers/mvt-worker-node.js.map +1 -0
- package/dist/mvt/workers/mvt-worker.d.ts +2 -0
- package/dist/mvt/workers/mvt-worker.d.ts.map +1 -0
- package/dist/mvt/workers/mvt-worker.js +7 -0
- package/dist/mvt/workers/mvt-worker.js.map +1 -0
- package/dist/mvt-worker-node.js +72460 -0
- package/dist/mvt-worker-node.js.map +7 -0
- package/dist/mvt-worker.js +21239 -0
- package/dist/pmtiles/bundled.d.ts +3 -0
- package/dist/pmtiles/bundled.d.ts.map +1 -0
- package/dist/pmtiles/bundled.js +5 -0
- package/dist/pmtiles/bundled.js.map +1 -0
- package/dist/pmtiles/dist.dev.js +50530 -0
- package/dist/pmtiles/dist.min.js +94 -0
- package/dist/pmtiles/geoarrow.cjs +6718 -0
- package/dist/pmtiles/geoarrow.cjs.map +6 -0
- package/dist/pmtiles/geoarrow.d.ts +30 -0
- package/dist/pmtiles/geoarrow.d.ts.map +1 -0
- package/dist/pmtiles/geoarrow.js +143 -0
- package/dist/pmtiles/geoarrow.js.map +1 -0
- package/dist/pmtiles/index.cjs +8011 -0
- package/dist/pmtiles/index.cjs.map +6 -0
- package/dist/pmtiles/index.d.ts +14 -0
- package/dist/pmtiles/index.d.ts.map +1 -0
- package/dist/pmtiles/index.js +10 -0
- package/dist/pmtiles/index.js.map +1 -0
- package/dist/pmtiles/lib/blob-source.d.ts +14 -0
- package/dist/pmtiles/lib/blob-source.d.ts.map +1 -0
- package/dist/pmtiles/lib/blob-source.js +32 -0
- package/dist/pmtiles/lib/blob-source.js.map +1 -0
- package/dist/pmtiles/lib/encode-pmtiles.d.ts +8 -0
- package/dist/pmtiles/lib/encode-pmtiles.d.ts.map +1 -0
- package/dist/pmtiles/lib/encode-pmtiles.js +268 -0
- package/dist/pmtiles/lib/encode-pmtiles.js.map +1 -0
- package/dist/pmtiles/lib/parse-pmtiles.d.ts +52 -0
- package/dist/pmtiles/lib/parse-pmtiles.d.ts.map +1 -0
- package/dist/pmtiles/lib/parse-pmtiles.js +95 -0
- package/dist/pmtiles/lib/parse-pmtiles.js.map +1 -0
- package/dist/pmtiles/lib/range-request-source.d.ts +24 -0
- package/dist/pmtiles/lib/range-request-source.d.ts.map +1 -0
- package/dist/pmtiles/lib/range-request-source.js +45 -0
- package/dist/pmtiles/lib/range-request-source.js.map +1 -0
- package/dist/pmtiles/lib/version.d.ts +2 -0
- package/dist/pmtiles/lib/version.d.ts.map +1 -0
- package/dist/pmtiles/lib/version.js +8 -0
- package/dist/pmtiles/lib/version.js.map +1 -0
- package/dist/pmtiles/pmtiles-format.d.ts +14 -0
- package/dist/pmtiles/pmtiles-format.d.ts.map +1 -0
- package/dist/pmtiles/pmtiles-format.js +17 -0
- package/dist/pmtiles/pmtiles-format.js.map +1 -0
- package/dist/pmtiles/pmtiles-loader-with-parser.d.ts +30 -0
- package/dist/pmtiles/pmtiles-loader-with-parser.d.ts.map +1 -0
- package/dist/pmtiles/pmtiles-loader-with-parser.js +41 -0
- package/dist/pmtiles/pmtiles-loader-with-parser.js.map +1 -0
- package/dist/pmtiles/pmtiles-loader.d.ts +41 -0
- package/dist/pmtiles/pmtiles-loader.d.ts.map +1 -0
- package/dist/pmtiles/pmtiles-loader.js +20 -0
- package/dist/pmtiles/pmtiles-loader.js.map +1 -0
- package/dist/pmtiles/pmtiles-source-loader.d.ts +85 -0
- package/dist/pmtiles/pmtiles-source-loader.d.ts.map +1 -0
- package/dist/pmtiles/pmtiles-source-loader.js +239 -0
- package/dist/pmtiles/pmtiles-source-loader.js.map +1 -0
- package/dist/pmtiles/pmtiles-writer-types.d.ts +39 -0
- package/dist/pmtiles/pmtiles-writer-types.d.ts.map +1 -0
- package/dist/{point-cloud-tile-source-types.js → pmtiles/pmtiles-writer-types.js} +1 -1
- package/dist/pmtiles/pmtiles-writer-types.js.map +1 -0
- package/dist/pmtiles/pmtiles-writer.d.ts +22 -0
- package/dist/pmtiles/pmtiles-writer.d.ts.map +1 -0
- package/dist/pmtiles/pmtiles-writer.js +15 -0
- package/dist/pmtiles/pmtiles-writer.js.map +1 -0
- package/dist/pmtiles/raster.cjs +1183 -0
- package/dist/pmtiles/raster.cjs.map +6 -0
- package/dist/pmtiles/raster.d.ts +30 -0
- package/dist/pmtiles/raster.d.ts.map +1 -0
- package/dist/pmtiles/raster.js +212 -0
- package/dist/pmtiles/raster.js.map +1 -0
- package/dist/pmtiles/source-info.d.ts +25 -0
- package/dist/pmtiles/source-info.d.ts.map +1 -0
- package/dist/{types.js → pmtiles/source-info.js} +1 -1
- package/dist/pmtiles/source-info.js.map +1 -0
- package/dist/pmtiles/unbundled.d.ts +3 -0
- package/dist/pmtiles/unbundled.d.ts.map +1 -0
- package/dist/pmtiles/unbundled.js +5 -0
- package/dist/pmtiles/unbundled.js.map +1 -0
- package/dist/raster-set.d.ts +1 -1
- package/dist/raster-set.d.ts.map +1 -1
- package/dist/raster-set.js +1 -1
- package/dist/raster-set.js.map +1 -1
- package/dist/tile-matrix.cjs +81 -0
- package/dist/tile-matrix.cjs.map +6 -0
- package/dist/tile-matrix.d.ts +52 -0
- package/dist/tile-matrix.d.ts.map +1 -0
- package/dist/tile-matrix.js +75 -0
- package/dist/tile-matrix.js.map +1 -0
- package/dist/tileset-2d/tile-2d-header.d.ts +2 -2
- package/dist/tileset-2d/tile-2d-header.d.ts.map +1 -1
- package/dist/tileset-2d/tile-2d-header.js +11 -11
- package/dist/tileset-2d/tile-2d-header.js.map +1 -1
- package/dist/tileset-2d/tileset-2d.d.ts +19 -10
- package/dist/tileset-2d/tileset-2d.d.ts.map +1 -1
- package/dist/tileset-2d/tileset-2d.js +69 -15
- package/dist/tileset-2d/tileset-2d.js.map +1 -1
- package/package.json +101 -25
- package/src/image-set.ts +1 -1
- package/src/index.ts +8 -128
- package/src/mlt/bundled.ts +9 -0
- package/src/mlt/index.ts +18 -0
- package/src/mlt/lib/encode-mlt-geometry.ts +162 -0
- package/src/mlt/lib/encode-mlt-streams.ts +66 -0
- package/src/mlt/lib/encode-mlt.ts +215 -0
- package/src/mlt/lib/parse-mlt.ts +906 -0
- package/src/mlt/libs/mlt-decoder.cjs +4552 -0
- package/src/mlt/mlt-format.ts +19 -0
- package/src/mlt/mlt-loader-with-parser.ts +57 -0
- package/src/mlt/mlt-loader.ts +64 -0
- package/src/mlt/mlt-source-loader.ts +266 -0
- package/src/mlt/mlt-writer.ts +47 -0
- package/src/mlt/unbundled.ts +6 -0
- package/src/mvt/arrow-table-tile-source-loader-types.ts +55 -0
- package/src/mvt/arrow-table-tile-source-loader.ts +307 -0
- package/src/mvt/arrow-table-tile-source-types.ts +32 -0
- package/src/mvt/bundled.ts +14 -0
- package/src/mvt/index.ts +67 -0
- package/src/mvt/lib/encode-mvt-arrow.ts +273 -0
- package/src/mvt/lib/encode-mvt.ts +46 -0
- package/src/mvt/lib/get-schemas-from-tilejson.ts +64 -0
- package/src/mvt/lib/is-longitude-latitude-crs.ts +15 -0
- package/src/mvt/lib/mapbox-vt-pbf/geojson-to-vt.ts.disabled +76 -0
- package/src/mvt/lib/mapbox-vt-pbf/geojson-wrapper.ts +89 -0
- package/src/mvt/lib/mapbox-vt-pbf/to-vector-tile.ts +230 -0
- package/src/mvt/lib/mvt-pbf/mvt-constants.ts +135 -0
- package/src/mvt/lib/mvt-pbf/mvt-types.ts +22 -0
- package/src/mvt/lib/mvt-pbf/parse-geometry-from-pbf.ts +285 -0
- package/src/mvt/lib/mvt-pbf/parse-mvt-from-pbf.ts +310 -0
- package/src/mvt/lib/mvt-pbf/write-mvt-to-pbf.ts +162 -0
- package/src/mvt/lib/mvt-worker-transport.ts +74 -0
- package/src/mvt/lib/parse-mvt-geojson.ts +65 -0
- package/src/mvt/lib/parse-mvt.ts +145 -0
- package/src/mvt/lib/parse-tilejson.ts +397 -0
- package/src/mvt/lib/resolve-table-tile-parameters.ts +23 -0
- package/src/mvt/lib/types.ts +90 -0
- package/src/mvt/lib/utils/geometry-utils.ts +238 -0
- package/src/mvt/lib/vector-tile/LICENSE.txt +31 -0
- package/src/mvt/lib/vector-tile/vector-tile-feature.ts +430 -0
- package/src/mvt/lib/vector-tile/vector-tile-layer.ts +130 -0
- package/src/mvt/lib/vector-tile/vector-tile.ts +32 -0
- package/src/mvt/lib/vector-tiler/LICENSE +19 -0
- package/src/mvt/lib/vector-tiler/arrow-tile.ts +93 -0
- package/src/mvt/lib/vector-tiler/features/clip-features.ts +250 -0
- package/src/mvt/lib/vector-tiler/features/convert-feature.ts +213 -0
- package/src/mvt/lib/vector-tiler/features/proto-feature.ts +104 -0
- package/src/mvt/lib/vector-tiler/features/simplify-path.ts +84 -0
- package/src/mvt/lib/vector-tiler/features/wrap-features.ts +125 -0
- package/src/mvt/lib/vector-tiler/proto-tile.ts +217 -0
- package/src/mvt/lib/vector-tiler/tile-to-geojson.ts +104 -0
- package/src/mvt/lib/vector-tiler/transform-tile.ts +57 -0
- package/src/mvt/map-style-format.ts +18 -0
- package/src/mvt/map-style-loader-with-parser.ts +62 -0
- package/src/mvt/map-style-loader.ts +31 -0
- package/src/mvt/map-style-schema.ts +53 -0
- package/src/mvt/map-style.ts +218 -0
- package/src/mvt/mvt-format.ts +25 -0
- package/src/mvt/mvt-geojson-loader-types.ts +60 -0
- package/src/mvt/mvt-geojson-loader.ts +20 -0
- package/src/mvt/mvt-loader-with-parser.ts +53 -0
- package/src/mvt/mvt-loader.ts +73 -0
- package/src/mvt/mvt-source-loader.ts +410 -0
- package/src/mvt/mvt-writer.ts +35 -0
- package/src/mvt/table-tile-source-loader.ts +672 -0
- package/src/mvt/tilejson-format.ts +18 -0
- package/src/mvt/tilejson-loader-with-parser.ts +38 -0
- package/src/mvt/tilejson-loader.ts +42 -0
- package/src/mvt/tilejson-zod-schema.ts +199 -0
- package/src/mvt/unbundled.ts +13 -0
- package/src/mvt/workers/mvt-worker-node.ts +9 -0
- package/src/mvt/workers/mvt-worker.ts +8 -0
- package/src/pmtiles/bundled.ts +6 -0
- package/src/pmtiles/geoarrow.ts +188 -0
- package/src/pmtiles/index.ts +27 -0
- package/src/pmtiles/lib/blob-source.ts +41 -0
- package/src/pmtiles/lib/encode-pmtiles.ts +322 -0
- package/src/pmtiles/lib/parse-pmtiles.ts +180 -0
- package/src/pmtiles/lib/range-request-source.ts +60 -0
- package/src/pmtiles/lib/version.ts +8 -0
- package/src/pmtiles/pmtiles-format.ts +19 -0
- package/src/pmtiles/pmtiles-loader-with-parser.ts +60 -0
- package/src/pmtiles/pmtiles-loader.ts +30 -0
- package/src/pmtiles/pmtiles-source-loader.ts +346 -0
- package/src/pmtiles/pmtiles-writer-types.ts +45 -0
- package/src/pmtiles/pmtiles-writer.ts +26 -0
- package/src/pmtiles/raster.ts +289 -0
- package/src/pmtiles/source-info.ts +25 -0
- package/src/pmtiles/unbundled.ts +6 -0
- package/src/raster-set.ts +2 -2
- package/src/tile-matrix.ts +138 -0
- package/src/tileset-2d/tile-2d-header.ts +14 -13
- package/src/tileset-2d/tileset-2d.ts +81 -19
- package/dist/constants.d.ts +0 -38
- package/dist/constants.d.ts.map +0 -1
- package/dist/constants.js +0 -39
- package/dist/constants.js.map +0 -1
- package/dist/point-cloud/point-cloud-tile.d.ts +0 -47
- package/dist/point-cloud/point-cloud-tile.d.ts.map +0 -1
- package/dist/point-cloud/point-cloud-tile.js +0 -70
- package/dist/point-cloud/point-cloud-tile.js.map +0 -1
- package/dist/point-cloud/point-cloud-tileset.d.ts +0 -135
- package/dist/point-cloud/point-cloud-tileset.d.ts.map +0 -1
- package/dist/point-cloud/point-cloud-tileset.js +0 -549
- package/dist/point-cloud/point-cloud-tileset.js.map +0 -1
- package/dist/point-cloud/types.d.ts +0 -81
- package/dist/point-cloud/types.d.ts.map +0 -1
- package/dist/point-cloud/types.js.map +0 -1
- package/dist/point-cloud-tile-source-loader-types.d.ts +0 -31
- package/dist/point-cloud-tile-source-loader-types.d.ts.map +0 -1
- package/dist/point-cloud-tile-source-loader-types.js +0 -34
- package/dist/point-cloud-tile-source-loader-types.js.map +0 -1
- package/dist/point-cloud-tile-source-loader.cjs +0 -81
- package/dist/point-cloud-tile-source-loader.cjs.map +0 -7
- package/dist/point-cloud-tile-source-loader.d.ts +0 -27
- package/dist/point-cloud-tile-source-loader.d.ts.map +0 -1
- package/dist/point-cloud-tile-source-loader.js +0 -17
- package/dist/point-cloud-tile-source-loader.js.map +0 -1
- package/dist/point-cloud-tile-source-types.d.ts +0 -15
- package/dist/point-cloud-tile-source-types.d.ts.map +0 -1
- package/dist/point-cloud-tile-source-types.js.map +0 -1
- package/dist/point-cloud-tile-source.cjs +0 -105
- package/dist/point-cloud-tile-source.cjs.map +0 -7
- package/dist/point-cloud-tile-source.d.ts +0 -36
- package/dist/point-cloud-tile-source.d.ts.map +0 -1
- package/dist/point-cloud-tile-source.js +0 -84
- package/dist/point-cloud-tile-source.js.map +0 -1
- package/dist/spatial/format-spatial-reference.d.ts +0 -68
- package/dist/spatial/format-spatial-reference.d.ts.map +0 -1
- package/dist/spatial/format-spatial-reference.js +0 -291
- package/dist/spatial/format-spatial-reference.js.map +0 -1
- package/dist/spatial/get-spatial-coordinate-frame.d.ts +0 -20
- package/dist/spatial/get-spatial-coordinate-frame.d.ts.map +0 -1
- package/dist/spatial/get-spatial-coordinate-frame.js +0 -139
- package/dist/spatial/get-spatial-coordinate-frame.js.map +0 -1
- package/dist/spatial/i3s-elevation.d.ts +0 -20
- package/dist/spatial/i3s-elevation.d.ts.map +0 -1
- package/dist/spatial/i3s-elevation.js +0 -90
- package/dist/spatial/i3s-elevation.js.map +0 -1
- package/dist/spatial/i3s-spatial-transformer.d.ts +0 -205
- package/dist/spatial/i3s-spatial-transformer.d.ts.map +0 -1
- package/dist/spatial/i3s-spatial-transformer.js +0 -731
- package/dist/spatial/i3s-spatial-transformer.js.map +0 -1
- package/dist/spatial/normalize-crs-identifier.d.ts +0 -15
- package/dist/spatial/normalize-crs-identifier.d.ts.map +0 -1
- package/dist/spatial/normalize-crs-identifier.js +0 -22
- package/dist/spatial/normalize-crs-identifier.js.map +0 -1
- package/dist/spatial/spatial-coordinate-transformer.d.ts +0 -54
- package/dist/spatial/spatial-coordinate-transformer.d.ts.map +0 -1
- package/dist/spatial/spatial-coordinate-transformer.js +0 -311
- package/dist/spatial/spatial-coordinate-transformer.js.map +0 -1
- package/dist/spatial/spatial-resource-registry.d.ts +0 -47
- package/dist/spatial/spatial-resource-registry.d.ts.map +0 -1
- package/dist/spatial/spatial-resource-registry.js +0 -76
- package/dist/spatial/spatial-resource-registry.js.map +0 -1
- package/dist/spatial/spatial-types.d.ts +0 -190
- package/dist/spatial/spatial-types.d.ts.map +0 -1
- package/dist/spatial/spatial-types.js +0 -192
- package/dist/spatial/spatial-types.js.map +0 -1
- package/dist/spatial/tiles-3d-spatial-transformer.d.ts +0 -32
- package/dist/spatial/tiles-3d-spatial-transformer.d.ts.map +0 -1
- package/dist/spatial/tiles-3d-spatial-transformer.js +0 -163
- package/dist/spatial/tiles-3d-spatial-transformer.js.map +0 -1
- package/dist/tileset-3d/common/indexed-archive-tileset-source.d.ts +0 -60
- package/dist/tileset-3d/common/indexed-archive-tileset-source.d.ts.map +0 -1
- package/dist/tileset-3d/common/indexed-archive-tileset-source.js +0 -130
- package/dist/tileset-3d/common/indexed-archive-tileset-source.js.map +0 -1
- package/dist/tileset-3d/common/tile-3d-contracts.d.ts +0 -63
- package/dist/tileset-3d/common/tile-3d-contracts.d.ts.map +0 -1
- package/dist/tileset-3d/common/tile-3d-contracts.js +0 -51
- package/dist/tileset-3d/common/tile-3d-contracts.js.map +0 -1
- package/dist/tileset-3d/common/tile-3d.d.ts +0 -410
- package/dist/tileset-3d/common/tile-3d.d.ts.map +0 -1
- package/dist/tileset-3d/common/tile-3d.js +0 -1056
- package/dist/tileset-3d/common/tile-3d.js.map +0 -1
- package/dist/tileset-3d/common/tileset-3d.d.ts +0 -369
- package/dist/tileset-3d/common/tileset-3d.d.ts.map +0 -1
- package/dist/tileset-3d/common/tileset-3d.js +0 -879
- package/dist/tileset-3d/common/tileset-3d.js.map +0 -1
- package/dist/tileset-3d/common/tileset-cache.d.ts +0 -29
- package/dist/tileset-3d/common/tileset-cache.d.ts.map +0 -1
- package/dist/tileset-3d/common/tileset-cache.js +0 -82
- package/dist/tileset-3d/common/tileset-cache.js.map +0 -1
- package/dist/tileset-3d/common/tileset-content-traversal.d.ts +0 -37
- package/dist/tileset-3d/common/tileset-content-traversal.d.ts.map +0 -1
- package/dist/tileset-3d/common/tileset-content-traversal.js +0 -80
- package/dist/tileset-3d/common/tileset-content-traversal.js.map +0 -1
- package/dist/tileset-3d/common/tileset-observability.d.ts +0 -60
- package/dist/tileset-3d/common/tileset-observability.d.ts.map +0 -1
- package/dist/tileset-3d/common/tileset-observability.js +0 -39
- package/dist/tileset-3d/common/tileset-observability.js.map +0 -1
- package/dist/tileset-3d/common/tileset-source.d.ts +0 -228
- package/dist/tileset-3d/common/tileset-source.d.ts.map +0 -1
- package/dist/tileset-3d/common/tileset-source.js +0 -17
- package/dist/tileset-3d/common/tileset-source.js.map +0 -1
- package/dist/tileset-3d/common/tileset-traverser.d.ts +0 -88
- package/dist/tileset-3d/common/tileset-traverser.d.ts.map +0 -1
- package/dist/tileset-3d/common/tileset-traverser.js +0 -341
- package/dist/tileset-3d/common/tileset-traverser.js.map +0 -1
- package/dist/tileset-3d/format-3d-tiles/implicit-tiling.d.ts +0 -182
- package/dist/tileset-3d/format-3d-tiles/implicit-tiling.d.ts.map +0 -1
- package/dist/tileset-3d/format-3d-tiles/implicit-tiling.js +0 -678
- package/dist/tileset-3d/format-3d-tiles/implicit-tiling.js.map +0 -1
- package/dist/tileset-3d/format-3d-tiles/tiles-3d-source.d.ts +0 -221
- package/dist/tileset-3d/format-3d-tiles/tiles-3d-source.d.ts.map +0 -1
- package/dist/tileset-3d/format-3d-tiles/tiles-3d-source.js +0 -770
- package/dist/tileset-3d/format-3d-tiles/tiles-3d-source.js.map +0 -1
- package/dist/tileset-3d/format-3d-tiles/tileset-3d-traverser.d.ts +0 -111
- package/dist/tileset-3d/format-3d-tiles/tileset-3d-traverser.d.ts.map +0 -1
- package/dist/tileset-3d/format-3d-tiles/tileset-3d-traverser.js +0 -339
- package/dist/tileset-3d/format-3d-tiles/tileset-3d-traverser.js.map +0 -1
- package/dist/tileset-3d/format-i3s/i3s-pending-tiles-register.d.ts +0 -27
- package/dist/tileset-3d/format-i3s/i3s-pending-tiles-register.d.ts.map +0 -1
- package/dist/tileset-3d/format-i3s/i3s-pending-tiles-register.js +0 -45
- package/dist/tileset-3d/format-i3s/i3s-pending-tiles-register.js.map +0 -1
- package/dist/tileset-3d/format-i3s/i3s-source.d.ts +0 -116
- package/dist/tileset-3d/format-i3s/i3s-source.d.ts.map +0 -1
- package/dist/tileset-3d/format-i3s/i3s-source.js +0 -450
- package/dist/tileset-3d/format-i3s/i3s-source.js.map +0 -1
- package/dist/tileset-3d/format-i3s/i3s-tile-manager.d.ts +0 -34
- package/dist/tileset-3d/format-i3s/i3s-tile-manager.d.ts.map +0 -1
- package/dist/tileset-3d/format-i3s/i3s-tile-manager.js +0 -81
- package/dist/tileset-3d/format-i3s/i3s-tile-manager.js.map +0 -1
- package/dist/tileset-3d/format-i3s/i3s-tileset-traverser.d.ts +0 -25
- package/dist/tileset-3d/format-i3s/i3s-tileset-traverser.d.ts.map +0 -1
- package/dist/tileset-3d/format-i3s/i3s-tileset-traverser.js +0 -84
- package/dist/tileset-3d/format-i3s/i3s-tileset-traverser.js.map +0 -1
- package/dist/tileset-3d/helpers/3d-tiles-options.d.ts +0 -5
- package/dist/tileset-3d/helpers/3d-tiles-options.d.ts.map +0 -1
- package/dist/tileset-3d/helpers/3d-tiles-options.js +0 -9
- package/dist/tileset-3d/helpers/3d-tiles-options.js.map +0 -1
- package/dist/tileset-3d/helpers/bounding-volume.d.ts +0 -23
- package/dist/tileset-3d/helpers/bounding-volume.d.ts.map +0 -1
- package/dist/tileset-3d/helpers/bounding-volume.js +0 -236
- package/dist/tileset-3d/helpers/bounding-volume.js.map +0 -1
- package/dist/tileset-3d/helpers/frame-state.d.ts +0 -93
- package/dist/tileset-3d/helpers/frame-state.d.ts.map +0 -1
- package/dist/tileset-3d/helpers/frame-state.js +0 -211
- package/dist/tileset-3d/helpers/frame-state.js.map +0 -1
- package/dist/tileset-3d/helpers/i3s-lod.d.ts +0 -20
- package/dist/tileset-3d/helpers/i3s-lod.d.ts.map +0 -1
- package/dist/tileset-3d/helpers/i3s-lod.js +0 -95
- package/dist/tileset-3d/helpers/i3s-lod.js.map +0 -1
- package/dist/tileset-3d/helpers/s2-bounding-volume.d.ts +0 -17
- package/dist/tileset-3d/helpers/s2-bounding-volume.d.ts.map +0 -1
- package/dist/tileset-3d/helpers/s2-bounding-volume.js +0 -17
- package/dist/tileset-3d/helpers/s2-bounding-volume.js.map +0 -1
- package/dist/tileset-3d/helpers/tiles-3d-lod.d.ts +0 -72
- package/dist/tileset-3d/helpers/tiles-3d-lod.d.ts.map +0 -1
- package/dist/tileset-3d/helpers/tiles-3d-lod.js +0 -257
- package/dist/tileset-3d/helpers/tiles-3d-lod.js.map +0 -1
- package/dist/tileset-3d/helpers/tiles-3d-request-priority.d.ts +0 -134
- package/dist/tileset-3d/helpers/tiles-3d-request-priority.d.ts.map +0 -1
- package/dist/tileset-3d/helpers/tiles-3d-request-priority.js +0 -179
- package/dist/tileset-3d/helpers/tiles-3d-request-priority.js.map +0 -1
- package/dist/tileset-3d/helpers/transform-utils.d.ts +0 -3
- package/dist/tileset-3d/helpers/transform-utils.d.ts.map +0 -1
- package/dist/tileset-3d/helpers/transform-utils.js +0 -86
- package/dist/tileset-3d/helpers/transform-utils.js.map +0 -1
- package/dist/tileset-3d/helpers/zoom.d.ts +0 -46
- package/dist/tileset-3d/helpers/zoom.d.ts.map +0 -1
- package/dist/tileset-3d/helpers/zoom.js +0 -86
- package/dist/tileset-3d/helpers/zoom.js.map +0 -1
- package/dist/types.d.ts +0 -48
- package/dist/types.d.ts.map +0 -1
- package/dist/types.js.map +0 -1
- package/dist/utils/doubly-linked-list-node.d.ts +0 -11
- package/dist/utils/doubly-linked-list-node.d.ts.map +0 -1
- package/dist/utils/doubly-linked-list-node.js +0 -20
- package/dist/utils/doubly-linked-list-node.js.map +0 -1
- package/dist/utils/doubly-linked-list.d.ts +0 -30
- package/dist/utils/doubly-linked-list.d.ts.map +0 -1
- package/dist/utils/doubly-linked-list.js +0 -93
- package/dist/utils/doubly-linked-list.js.map +0 -1
- package/dist/utils/managed-array.d.ts +0 -85
- package/dist/utils/managed-array.d.ts.map +0 -1
- package/dist/utils/managed-array.js +0 -152
- package/dist/utils/managed-array.js.map +0 -1
- package/src/constants.ts +0 -59
- package/src/point-cloud/point-cloud-tile.ts +0 -80
- package/src/point-cloud/point-cloud-tileset.ts +0 -767
- package/src/point-cloud/types.ts +0 -99
- package/src/point-cloud-tile-source-loader-types.ts +0 -53
- package/src/point-cloud-tile-source-loader.ts +0 -32
- package/src/point-cloud-tile-source-types.ts +0 -20
- package/src/point-cloud-tile-source.ts +0 -112
- package/src/spatial/format-spatial-reference.ts +0 -385
- package/src/spatial/get-spatial-coordinate-frame.ts +0 -169
- package/src/spatial/i3s-elevation.ts +0 -96
- package/src/spatial/i3s-spatial-transformer.ts +0 -1021
- package/src/spatial/normalize-crs-identifier.ts +0 -26
- package/src/spatial/spatial-coordinate-transformer.ts +0 -397
- package/src/spatial/spatial-resource-registry.ts +0 -90
- package/src/spatial/spatial-types.ts +0 -422
- package/src/spatial/tiles-3d-spatial-transformer.ts +0 -194
- package/src/tileset-3d/common/indexed-archive-tileset-source.ts +0 -205
- package/src/tileset-3d/common/tile-3d-contracts.ts +0 -115
- package/src/tileset-3d/common/tile-3d.ts +0 -1310
- package/src/tileset-3d/common/tileset-3d.ts +0 -1210
- package/src/tileset-3d/common/tileset-cache.ts +0 -111
- package/src/tileset-3d/common/tileset-content-traversal.ts +0 -114
- package/src/tileset-3d/common/tileset-observability.ts +0 -100
- package/src/tileset-3d/common/tileset-source.ts +0 -284
- package/src/tileset-3d/common/tileset-traverser.ts +0 -416
- package/src/tileset-3d/format-3d-tiles/implicit-tiling.ts +0 -1056
- package/src/tileset-3d/format-3d-tiles/tiles-3d-source.ts +0 -1025
- package/src/tileset-3d/format-3d-tiles/tileset-3d-traverser.ts +0 -391
- package/src/tileset-3d/format-i3s/i3s-pending-tiles-register.ts +0 -48
- package/src/tileset-3d/format-i3s/i3s-source.ts +0 -557
- package/src/tileset-3d/format-i3s/i3s-tile-manager.ts +0 -105
- package/src/tileset-3d/format-i3s/i3s-tileset-traverser.ts +0 -102
- package/src/tileset-3d/helpers/3d-tiles-options.ts +0 -11
- package/src/tileset-3d/helpers/bounding-volume.ts +0 -281
- package/src/tileset-3d/helpers/frame-state.ts +0 -322
- package/src/tileset-3d/helpers/i3s-lod.ts +0 -109
- package/src/tileset-3d/helpers/s2-bounding-volume.ts +0 -32
- package/src/tileset-3d/helpers/tiles-3d-lod.ts +0 -370
- package/src/tileset-3d/helpers/tiles-3d-request-priority.ts +0 -301
- package/src/tileset-3d/helpers/transform-utils.ts +0 -109
- package/src/tileset-3d/helpers/zoom.ts +0 -120
- package/src/types.ts +0 -54
- package/src/utils/doubly-linked-list-node.ts +0 -22
- package/src/utils/doubly-linked-list.ts +0 -105
- package/src/utils/managed-array.ts +0 -174
- /package/dist/{point-cloud → mvt/lib}/types.js +0 -0
|
@@ -0,0 +1,289 @@
|
|
|
1
|
+
// loaders.gl
|
|
2
|
+
// SPDX-License-Identifier: MIT
|
|
3
|
+
// Copyright (c) vis.gl contributors
|
|
4
|
+
|
|
5
|
+
import {ImageWriter} from '@loaders.gl/images';
|
|
6
|
+
import {
|
|
7
|
+
rasterCoordinateToPixel,
|
|
8
|
+
sampleRaster,
|
|
9
|
+
waitForPromiseWithSignal
|
|
10
|
+
} from '@loaders.gl/core/loader-utils';
|
|
11
|
+
import type {
|
|
12
|
+
NumericRasterData,
|
|
13
|
+
RasterBoundingBox,
|
|
14
|
+
RasterRegionSource
|
|
15
|
+
} from '@loaders.gl/core/loader-utils';
|
|
16
|
+
import {encodePMTiles} from './lib/encode-pmtiles';
|
|
17
|
+
import type {PMTilesEncodeOptions, PMTilesTile} from './pmtiles-writer-types';
|
|
18
|
+
|
|
19
|
+
/** Existing numeric region source; the exporter never takes ownership or finalizes it. */
|
|
20
|
+
export type RasterPMTilesSource = Pick<RasterRegionSource, 'getMetadata' | 'getRasterForRegion'>;
|
|
21
|
+
|
|
22
|
+
/** Bounded selected-tile PNG authoring from an existing georeferenced raster source. */
|
|
23
|
+
export type RasterPMTilesOptions = {
|
|
24
|
+
/** Finite canonical XYZ selection; empty requests count against maxTiles. */
|
|
25
|
+
readonly tiles:
|
|
26
|
+
| Iterable<Pick<PMTilesTile, 'z' | 'x' | 'y'>>
|
|
27
|
+
| AsyncIterable<Pick<PMTilesTile, 'z' | 'x' | 'y'>>;
|
|
28
|
+
/** Square output tile width and height; default 256, maximum 1024. */
|
|
29
|
+
readonly tileSize?: number;
|
|
30
|
+
/** Source band indices in gray, gray/alpha, RGB or RGBA order; default all bands. */
|
|
31
|
+
readonly bands?: readonly number[];
|
|
32
|
+
/** Nonspatial source dimension selection, forwarded to region requests. */
|
|
33
|
+
readonly selection?: Readonly<Record<string, number>>;
|
|
34
|
+
/** Maximum returned region pixels, default 1,048,576. Also forwarded to the source. */
|
|
35
|
+
readonly maxSourcePixels?: number;
|
|
36
|
+
/** Budget for returned sample/mask buffers plus RGBA pixels, default 32 MiB. Forwarded to the source. */
|
|
37
|
+
readonly maxDecodedBytes?: number;
|
|
38
|
+
/** Archive budgets, cancellation, bounds, center and auxiliary metadata. */
|
|
39
|
+
readonly pmtiles?: Omit<PMTilesEncodeOptions, 'tileType' | 'tileCompression'>;
|
|
40
|
+
};
|
|
41
|
+
|
|
42
|
+
/** Web Mercator half-world extent in meters (EPSG:3857). */
|
|
43
|
+
const HALF_WORLD = Math.PI * 6378137;
|
|
44
|
+
|
|
45
|
+
/**
|
|
46
|
+
* Requests selected regions, samples byte-valued imagery into Web Mercator PNG tiles, and packages PMTiles v3.
|
|
47
|
+
* Longitude/latitude inputs are sampled at Mercator pixel centers; other CRSs require prior reprojection.
|
|
48
|
+
* Sampling uses raw bytes, validity masks and nodata. No styling or physical-value scaling is inferred.
|
|
49
|
+
* PNG encoding uses ImageWriter (browser canvas, or the application's installed Node image polyfill).
|
|
50
|
+
* Input region decoding, PNG encoding and archive allocation retain their own temporary allocations.
|
|
51
|
+
*/
|
|
52
|
+
export async function encodeRasterPMTiles(
|
|
53
|
+
source: RasterPMTilesSource,
|
|
54
|
+
options: RasterPMTilesOptions
|
|
55
|
+
): Promise<ArrayBuffer> {
|
|
56
|
+
const configuration = {
|
|
57
|
+
...options,
|
|
58
|
+
bands: options.bands?.slice(),
|
|
59
|
+
selection: options.selection ? {...options.selection} : undefined,
|
|
60
|
+
pmtiles: {...options.pmtiles}
|
|
61
|
+
};
|
|
62
|
+
const signal = configuration.pmtiles.signal;
|
|
63
|
+
signal?.throwIfAborted();
|
|
64
|
+
const tileSize = configuration.tileSize ?? 256;
|
|
65
|
+
const maxSourcePixels = configuration.maxSourcePixels ?? 1024 * 1024;
|
|
66
|
+
const maxDecodedBytes = configuration.maxDecodedBytes ?? 32 * 1024 * 1024;
|
|
67
|
+
const maxTiles = configuration.pmtiles.maxTiles ?? 100000;
|
|
68
|
+
if (
|
|
69
|
+
!Number.isSafeInteger(tileSize) ||
|
|
70
|
+
tileSize < 1 ||
|
|
71
|
+
tileSize > 1024 ||
|
|
72
|
+
!Number.isSafeInteger(maxSourcePixels) ||
|
|
73
|
+
maxSourcePixels < tileSize * tileSize ||
|
|
74
|
+
!Number.isSafeInteger(maxDecodedBytes) ||
|
|
75
|
+
maxDecodedBytes < tileSize * tileSize * 4 ||
|
|
76
|
+
!Number.isSafeInteger(maxTiles) ||
|
|
77
|
+
maxTiles < 1
|
|
78
|
+
)
|
|
79
|
+
throw new Error('Invalid raster PMTiles size or budget');
|
|
80
|
+
const metadata = await waitForPromiseWithSignal(source.getMetadata({signal}), signal);
|
|
81
|
+
signal?.throwIfAborted();
|
|
82
|
+
const sourceCRS = metadata.crs;
|
|
83
|
+
if (sourceCRS !== 'EPSG:3857' && sourceCRS !== 'EPSG:4326' && sourceCRS !== 'OGC:CRS84')
|
|
84
|
+
throw new Error('Raster PMTiles requires EPSG:3857, EPSG:4326 or OGC:CRS84');
|
|
85
|
+
const crs = sourceCRS;
|
|
86
|
+
if (!Number.isSafeInteger(metadata.bandCount) || metadata.bandCount < 1)
|
|
87
|
+
throw new Error('Invalid raster source band count');
|
|
88
|
+
const bands =
|
|
89
|
+
configuration.bands ??
|
|
90
|
+
Array.from({length: Math.min(metadata.bandCount, 5)}, (_, index) => index);
|
|
91
|
+
if (
|
|
92
|
+
![1, 2, 3, 4].includes(bands.length) ||
|
|
93
|
+
new Set(bands).size !== bands.length ||
|
|
94
|
+
bands.some(band => !Number.isSafeInteger(band) || band < 0 || band >= metadata.bandCount)
|
|
95
|
+
)
|
|
96
|
+
throw new Error('Select one through four distinct raster bands');
|
|
97
|
+
const sampleOptions = {bands: bands.map((_band, index) => index)};
|
|
98
|
+
const archiveMetadata = {...configuration.pmtiles.metadata};
|
|
99
|
+
for (const name of [
|
|
100
|
+
'vector_layers',
|
|
101
|
+
'bounds',
|
|
102
|
+
'minzoom',
|
|
103
|
+
'maxzoom',
|
|
104
|
+
'center',
|
|
105
|
+
'tiles',
|
|
106
|
+
'tilestats'
|
|
107
|
+
])
|
|
108
|
+
delete archiveMetadata[name];
|
|
109
|
+
return encodePMTiles(encodeTiles(), {
|
|
110
|
+
...configuration.pmtiles,
|
|
111
|
+
metadata: archiveMetadata,
|
|
112
|
+
tileType: 'png',
|
|
113
|
+
tileCompression: 'none'
|
|
114
|
+
});
|
|
115
|
+
|
|
116
|
+
/** Acquires one bounded region at a time and closes selection iterators on failure/abort. */
|
|
117
|
+
async function* encodeTiles(): AsyncIterable<PMTilesTile> {
|
|
118
|
+
const seen = new Set<string>();
|
|
119
|
+
let requested = 0;
|
|
120
|
+
for await (const address of configuration.tiles) {
|
|
121
|
+
signal?.throwIfAborted();
|
|
122
|
+
const tile = {...address};
|
|
123
|
+
if (++requested > maxTiles) throw new Error('Raster PMTiles requested tile limit exceeded');
|
|
124
|
+
if (
|
|
125
|
+
!Number.isInteger(tile.z) ||
|
|
126
|
+
tile.z < 0 ||
|
|
127
|
+
tile.z > 26 ||
|
|
128
|
+
!Number.isInteger(tile.x) ||
|
|
129
|
+
!Number.isInteger(tile.y) ||
|
|
130
|
+
tile.x < 0 ||
|
|
131
|
+
tile.y < 0 ||
|
|
132
|
+
tile.x >= 2 ** tile.z ||
|
|
133
|
+
tile.y >= 2 ** tile.z
|
|
134
|
+
)
|
|
135
|
+
throw new Error('Invalid raster PMTiles selected XYZ address');
|
|
136
|
+
const key = `${tile.z}/${tile.x}/${tile.y}`;
|
|
137
|
+
if (seen.has(key)) throw new Error('Duplicate raster PMTiles selected XYZ address');
|
|
138
|
+
seen.add(key);
|
|
139
|
+
const scale = 2 ** tile.z;
|
|
140
|
+
const west = tile.x / scale;
|
|
141
|
+
const east = (tile.x + 1) / scale;
|
|
142
|
+
const north = tile.y / scale;
|
|
143
|
+
const south = (tile.y + 1) / scale;
|
|
144
|
+
const bounds: RasterBoundingBox =
|
|
145
|
+
crs === 'EPSG:3857'
|
|
146
|
+
? [
|
|
147
|
+
[(2 * west - 1) * HALF_WORLD, (1 - 2 * south) * HALF_WORLD],
|
|
148
|
+
[(2 * east - 1) * HALF_WORLD, (1 - 2 * north) * HALF_WORLD]
|
|
149
|
+
]
|
|
150
|
+
: [
|
|
151
|
+
[360 * west - 180, getLatitude(south)],
|
|
152
|
+
[360 * east - 180, getLatitude(north)]
|
|
153
|
+
];
|
|
154
|
+
const raster = await waitForPromiseWithSignal(
|
|
155
|
+
source.getRasterForRegion({
|
|
156
|
+
bounds,
|
|
157
|
+
crs,
|
|
158
|
+
width: tileSize,
|
|
159
|
+
height: tileSize,
|
|
160
|
+
bands: bands.slice(),
|
|
161
|
+
selection: configuration.selection,
|
|
162
|
+
interleaved: false,
|
|
163
|
+
resampleMethod: 'nearest',
|
|
164
|
+
maxPixels: maxSourcePixels,
|
|
165
|
+
maxDecodedBytes,
|
|
166
|
+
signal
|
|
167
|
+
}),
|
|
168
|
+
signal
|
|
169
|
+
);
|
|
170
|
+
signal?.throwIfAborted();
|
|
171
|
+
validateRaster(raster, bands.length, tileSize, maxSourcePixels, maxDecodedBytes);
|
|
172
|
+
const pixels = new Uint8Array(tileSize * tileSize * 4);
|
|
173
|
+
let visible = false;
|
|
174
|
+
const firstX = bounds[0][0] + (bounds[1][0] - bounds[0][0]) / (2 * tileSize);
|
|
175
|
+
const lastX = bounds[1][0] - (bounds[1][0] - bounds[0][0]) / (2 * tileSize);
|
|
176
|
+
for (let row = 0; row < tileSize; row++) {
|
|
177
|
+
if (row % 32 === 0) {
|
|
178
|
+
signal?.throwIfAborted();
|
|
179
|
+
if (row) await new Promise<void>(resolve => setTimeout(resolve, 0));
|
|
180
|
+
signal?.throwIfAborted();
|
|
181
|
+
}
|
|
182
|
+
const normalizedY = north + (row + 0.5) / (tileSize * scale);
|
|
183
|
+
const sourceY =
|
|
184
|
+
crs === 'EPSG:3857' ? (1 - 2 * normalizedY) * HALF_WORLD : getLatitude(normalizedY);
|
|
185
|
+
const firstPixel = rasterCoordinateToPixel(raster, [firstX, sourceY], crs);
|
|
186
|
+
const lastPixel = rasterCoordinateToPixel(raster, [lastX, sourceY], crs);
|
|
187
|
+
for (let column = 0; column < tileSize; column++) {
|
|
188
|
+
const fraction = tileSize === 1 ? 0 : column / (tileSize - 1);
|
|
189
|
+
const sample = sampleRaster(
|
|
190
|
+
raster,
|
|
191
|
+
[
|
|
192
|
+
firstPixel[0] + (lastPixel[0] - firstPixel[0]) * fraction,
|
|
193
|
+
firstPixel[1] + (lastPixel[1] - firstPixel[1]) * fraction
|
|
194
|
+
],
|
|
195
|
+
sampleOptions
|
|
196
|
+
);
|
|
197
|
+
if (!sample.valid.every(Boolean)) continue;
|
|
198
|
+
const values = sample.values as number[];
|
|
199
|
+
const offset = (row * tileSize + column) * 4;
|
|
200
|
+
const grayscale = values.length < 3;
|
|
201
|
+
pixels[offset] = values[0];
|
|
202
|
+
pixels[offset + 1] = grayscale ? values[0] : values[1];
|
|
203
|
+
pixels[offset + 2] = grayscale ? values[0] : values[2];
|
|
204
|
+
pixels[offset + 3] =
|
|
205
|
+
values.length === 2 ? values[1] : values.length === 4 ? values[3] : 255;
|
|
206
|
+
visible ||= pixels[offset + 3] > 0;
|
|
207
|
+
}
|
|
208
|
+
}
|
|
209
|
+
if (!visible) continue;
|
|
210
|
+
const data = await waitForPromiseWithSignal(
|
|
211
|
+
ImageWriter.encode(
|
|
212
|
+
{data: pixels, width: tileSize, height: tileSize},
|
|
213
|
+
{image: {mimeType: 'image/png'}}
|
|
214
|
+
),
|
|
215
|
+
signal
|
|
216
|
+
);
|
|
217
|
+
signal?.throwIfAborted();
|
|
218
|
+
yield {...tile, data};
|
|
219
|
+
}
|
|
220
|
+
}
|
|
221
|
+
}
|
|
222
|
+
|
|
223
|
+
/** Converts north-origin normalized Web Mercator Y to latitude in degrees. */
|
|
224
|
+
function getLatitude(normalizedY: number): number {
|
|
225
|
+
return (Math.atan(Math.sinh(Math.PI * (1 - 2 * normalizedY))) * 180) / Math.PI;
|
|
226
|
+
}
|
|
227
|
+
|
|
228
|
+
/** Rejects unsupported imagery and bounds returned buffers before allocating RGBA output. */
|
|
229
|
+
function validateRaster(
|
|
230
|
+
raster: NumericRasterData,
|
|
231
|
+
bandCount: number,
|
|
232
|
+
tileSize: number,
|
|
233
|
+
maxPixels: number,
|
|
234
|
+
maxBytes: number
|
|
235
|
+
): void {
|
|
236
|
+
const pixels = raster.width * raster.height;
|
|
237
|
+
if (
|
|
238
|
+
!Number.isSafeInteger(raster.width) ||
|
|
239
|
+
raster.width < 1 ||
|
|
240
|
+
!Number.isSafeInteger(raster.height) ||
|
|
241
|
+
raster.height < 1 ||
|
|
242
|
+
!Number.isSafeInteger(pixels) ||
|
|
243
|
+
pixels > maxPixels ||
|
|
244
|
+
raster.bandCount !== bandCount ||
|
|
245
|
+
raster.dtype !== 'uint8' ||
|
|
246
|
+
(raster.bands && raster.bands.length !== bandCount) ||
|
|
247
|
+
raster.bands?.some(
|
|
248
|
+
band => band.dtype !== 'uint8' || (band.scale ?? 1) !== 1 || (band.offset ?? 0) !== 0
|
|
249
|
+
)
|
|
250
|
+
)
|
|
251
|
+
throw new Error(
|
|
252
|
+
'Raster PMTiles requires bounded raw uint8 imagery with matching selected bands'
|
|
253
|
+
);
|
|
254
|
+
const buffers = Array.isArray(raster.data) ? raster.data : [raster.data];
|
|
255
|
+
const expectedLength = Array.isArray(raster.data) ? pixels : pixels * bandCount;
|
|
256
|
+
if (
|
|
257
|
+
(Array.isArray(raster.data) && buffers.length !== bandCount) ||
|
|
258
|
+
buffers.some(
|
|
259
|
+
buffer =>
|
|
260
|
+
(!(buffer instanceof Uint8Array) && !(buffer instanceof Uint8ClampedArray)) ||
|
|
261
|
+
buffer.length !== expectedLength
|
|
262
|
+
)
|
|
263
|
+
)
|
|
264
|
+
throw new Error('Invalid raster PMTiles sample buffers');
|
|
265
|
+
for (const mask of raster.validityMasks ?? []) {
|
|
266
|
+
const offset = mask.offset ?? 0;
|
|
267
|
+
const pixelStride = mask.pixelStride ?? 1;
|
|
268
|
+
const rowStride = mask.rowStride ?? mask.width;
|
|
269
|
+
if (
|
|
270
|
+
!(mask.data instanceof Uint8Array) ||
|
|
271
|
+
mask.width !== raster.width ||
|
|
272
|
+
mask.height !== raster.height ||
|
|
273
|
+
!Number.isSafeInteger(offset) ||
|
|
274
|
+
offset < 0 ||
|
|
275
|
+
!Number.isSafeInteger(pixelStride) ||
|
|
276
|
+
pixelStride < 1 ||
|
|
277
|
+
!Number.isSafeInteger(rowStride) ||
|
|
278
|
+
rowStride < 1 ||
|
|
279
|
+
offset + (mask.height - 1) * rowStride + (mask.width - 1) * pixelStride >= mask.data.length ||
|
|
280
|
+
(mask.band !== undefined &&
|
|
281
|
+
(!Number.isInteger(mask.band) || mask.band < 0 || mask.band >= bandCount))
|
|
282
|
+
)
|
|
283
|
+
throw new Error('Invalid raster PMTiles validity mask');
|
|
284
|
+
}
|
|
285
|
+
const bytes =
|
|
286
|
+
buffers.reduce((total, buffer) => total + buffer.byteLength, tileSize * tileSize * 4) +
|
|
287
|
+
(raster.validityMasks ?? []).reduce((total, mask) => total + mask.data.byteLength, 0);
|
|
288
|
+
if (bytes > maxBytes) throw new Error('Raster PMTiles decoded-byte budget exceeded');
|
|
289
|
+
}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
// loaders.gl
|
|
2
|
+
// SPDX-License-Identifier: MIT
|
|
3
|
+
// Copyright (c) vis.gl contributors
|
|
4
|
+
|
|
5
|
+
import {Schema} from '@loaders.gl/core/schema';
|
|
6
|
+
|
|
7
|
+
export type SourceInfo = VectorSourceInfo | ImageSourceInfo;
|
|
8
|
+
|
|
9
|
+
/** Information about a vector source */
|
|
10
|
+
export type VectorSourceInfo = {
|
|
11
|
+
shape: 'vector-source';
|
|
12
|
+
/** List of geospatial tables */
|
|
13
|
+
layers: {name: string; schema: Schema}[];
|
|
14
|
+
/** List of nongeospatial tables */
|
|
15
|
+
tables: {name: string; schema: Schema}[];
|
|
16
|
+
/** Format specific metadata */
|
|
17
|
+
formatSpecificMetadata?: Record<string, any>;
|
|
18
|
+
};
|
|
19
|
+
|
|
20
|
+
/** Information about an image source */
|
|
21
|
+
export type ImageSourceInfo = {
|
|
22
|
+
shape: 'image-source';
|
|
23
|
+
/** Format specific metadata */
|
|
24
|
+
formatSpecificMetadata?: Record<string, any>;
|
|
25
|
+
};
|
package/src/raster-set.ts
CHANGED
|
@@ -8,8 +8,8 @@ import type {
|
|
|
8
8
|
RasterData,
|
|
9
9
|
RasterSource,
|
|
10
10
|
RasterSourceMetadata
|
|
11
|
-
} from '@loaders.gl/loader-utils';
|
|
12
|
-
import {waitForPromiseWithSignals} from '@loaders.gl/loader-utils';
|
|
11
|
+
} from '@loaders.gl/core/loader-utils';
|
|
12
|
+
import {waitForPromiseWithSignals} from '@loaders.gl/core/loader-utils';
|
|
13
13
|
|
|
14
14
|
/** Accepted raster request currently retained by {@link RasterSet}. */
|
|
15
15
|
export type RasterSetRequest<
|
|
@@ -0,0 +1,138 @@
|
|
|
1
|
+
// loaders.gl
|
|
2
|
+
// SPDX-License-Identifier: MIT
|
|
3
|
+
// Copyright (c) vis.gl contributors
|
|
4
|
+
|
|
5
|
+
import {
|
|
6
|
+
getTileBounds,
|
|
7
|
+
getTileRange,
|
|
8
|
+
isTileIndexInRange,
|
|
9
|
+
selectTileMatrix
|
|
10
|
+
} from '@math.gl/geospatial/tile-matrix';
|
|
11
|
+
import type {
|
|
12
|
+
TileMatrix,
|
|
13
|
+
TileMatrixBounds,
|
|
14
|
+
TileMatrixLimits,
|
|
15
|
+
TileMatrixSet
|
|
16
|
+
} from '@math.gl/geospatial/tile-matrix';
|
|
17
|
+
import type {NonGeoBoundingBox, TileIndex} from './tileset-2d/types';
|
|
18
|
+
import type {GetTileDataParameters} from '@loaders.gl/core/loader-utils';
|
|
19
|
+
|
|
20
|
+
/** Renderer-independent view frame, already expressed in the grid's canonical X/Y coordinates. */
|
|
21
|
+
export type TileMatrixViewFrame = {
|
|
22
|
+
/** Exact grid CRS identifier; no identifier equivalence or reprojection is inferred. */
|
|
23
|
+
crs: string;
|
|
24
|
+
/** Ordered finite [minimumX, minimumY, maximumX, maximumY] extent in grid coordinates. */
|
|
25
|
+
extent: TileMatrixBounds;
|
|
26
|
+
/** Positive coordinate units per pixel; both axes must meet this target. */
|
|
27
|
+
resolution: number;
|
|
28
|
+
};
|
|
29
|
+
|
|
30
|
+
/** The geometry and coverage subset of TileGrid needed for selection. */
|
|
31
|
+
export type TileMatrixSelectionGrid = {
|
|
32
|
+
/** Complete native geometry; absence is rejected rather than inferred from partial fields. */
|
|
33
|
+
tileMatrixSet?: TileMatrixSet;
|
|
34
|
+
/** Optional inclusive per-matrix coverage; an empty list means no available tiles. */
|
|
35
|
+
limits?: readonly (TileMatrixLimits & {
|
|
36
|
+
/** Native matrix identifier addressed by this coverage rectangle. */
|
|
37
|
+
tileMatrix: string;
|
|
38
|
+
})[];
|
|
39
|
+
};
|
|
40
|
+
|
|
41
|
+
/** A native tile request; its Cartesian bbox stays in crs, including for geographic grids. */
|
|
42
|
+
export type TileMatrixTile = {
|
|
43
|
+
/** Native column/row and compatibility z equal to the selected matrix's array position. */
|
|
44
|
+
index: TileIndex;
|
|
45
|
+
/** Stable source/grid-scoped identifier, independent of numeric z or matrix ordering. */
|
|
46
|
+
id: string;
|
|
47
|
+
/** Required native matrix identifier; numeric index.z is not a substitute. */
|
|
48
|
+
tileMatrix: string;
|
|
49
|
+
/** Cartesian native-coordinate bounds, with no automatic geographic reinterpretation. */
|
|
50
|
+
bbox: NonGeoBoundingBox;
|
|
51
|
+
/** Native CRS of bbox; this is not necessarily a longitude/latitude bounding box. */
|
|
52
|
+
crs: string;
|
|
53
|
+
/** The selected level's logical width and height in pixels. */
|
|
54
|
+
tileSize: readonly [number, number];
|
|
55
|
+
};
|
|
56
|
+
|
|
57
|
+
/** Resource budget for an eager fixed-frame selection. */
|
|
58
|
+
export type TileMatrixSelectionOptions = {
|
|
59
|
+
/** Maximum tiles returned, default 4096. Oversized selections throw before allocation. */
|
|
60
|
+
maximumTileCount?: number;
|
|
61
|
+
};
|
|
62
|
+
|
|
63
|
+
/**
|
|
64
|
+
* Selects regular-grid tiles for an explicit native-CRS frame, with source coverage applied.
|
|
65
|
+
* Uses math.gl's coarsest level meeting the target, or its finest available fallback. z is the
|
|
66
|
+
* matrix's array index for compatibility; tileMatrix is authoritative. Cache ids encode the CRS,
|
|
67
|
+
* native matrix id and column/row, and are scoped to this source/grid, not globally unique.
|
|
68
|
+
* Returns an empty array outside the grid or available coverage. Partial geometry, coalesced
|
|
69
|
+
* rows, mismatched CRS identifiers and invalid coverage reject rather than approximating XYZ.
|
|
70
|
+
* This does not infer parents, transform a viewport, reproject content or configure a renderer.
|
|
71
|
+
*/
|
|
72
|
+
export function selectTileMatrixTiles(
|
|
73
|
+
grid: TileMatrixSelectionGrid,
|
|
74
|
+
frame: TileMatrixViewFrame,
|
|
75
|
+
options: TileMatrixSelectionOptions = {}
|
|
76
|
+
): TileMatrixTile[] {
|
|
77
|
+
const matrixSet = grid.tileMatrixSet;
|
|
78
|
+
if (!matrixSet || !matrixSet.crs || frame.crs !== matrixSet.crs) {
|
|
79
|
+
throw new Error('Tile selection requires complete geometry and a frame in the exact grid CRS.');
|
|
80
|
+
}
|
|
81
|
+
if (
|
|
82
|
+
frame.extent.length !== 4 ||
|
|
83
|
+
!frame.extent.every(Number.isFinite) ||
|
|
84
|
+
frame.extent[0] > frame.extent[2] ||
|
|
85
|
+
frame.extent[1] > frame.extent[3]
|
|
86
|
+
) {
|
|
87
|
+
throw new RangeError('Tile frame extent must be finite and ordered.');
|
|
88
|
+
}
|
|
89
|
+
const maximumTileCount = options.maximumTileCount ?? 4096;
|
|
90
|
+
if (!Number.isSafeInteger(maximumTileCount) || maximumTileCount < 0) {
|
|
91
|
+
throw new RangeError('maximumTileCount must be a nonnegative safe integer.');
|
|
92
|
+
}
|
|
93
|
+
for (const matrix of matrixSet.matrices) {
|
|
94
|
+
// Newer math.gl models can describe coalescence; this selector deliberately accepts regular grids only.
|
|
95
|
+
const coalescenceBands = (matrix as TileMatrix & {variableMatrixWidths?: readonly unknown[]})
|
|
96
|
+
.variableMatrixWidths;
|
|
97
|
+
if (
|
|
98
|
+
coalescenceBands !== undefined &&
|
|
99
|
+
(!Array.isArray(coalescenceBands) || coalescenceBands.length > 0)
|
|
100
|
+
) {
|
|
101
|
+
throw new Error('Regular-grid selection does not support variable-width rows.');
|
|
102
|
+
}
|
|
103
|
+
}
|
|
104
|
+
const selectedMatrix = selectTileMatrix(matrixSet, frame.resolution);
|
|
105
|
+
const coverage = new Map<string, NonNullable<TileMatrixSelectionGrid['limits']>[number]>();
|
|
106
|
+
for (const limit of grid.limits ?? []) {
|
|
107
|
+
const matrix = matrixSet.matrices.find(candidate => candidate.id === limit.tileMatrix);
|
|
108
|
+
if (!matrix || coverage.has(limit.tileMatrix)) {
|
|
109
|
+
throw new RangeError('Tile coverage must reference unique, known matrix ids.');
|
|
110
|
+
}
|
|
111
|
+
// math.gl validates every endpoint of the inclusive rectangle, not just these two indices.
|
|
112
|
+
isTileIndexInRange(matrix, limit.minTileColumn, limit.minTileRow, limit);
|
|
113
|
+
coverage.set(limit.tileMatrix, limit);
|
|
114
|
+
}
|
|
115
|
+
if (!selectedMatrix || (grid.limits !== undefined && !coverage.has(selectedMatrix.id))) return [];
|
|
116
|
+
const range = getTileRange(selectedMatrix, frame.extent, coverage.get(selectedMatrix.id));
|
|
117
|
+
if (!range) return [];
|
|
118
|
+
const width = range.maxTileColumn - range.minTileColumn + 1;
|
|
119
|
+
const height = range.maxTileRow - range.minTileRow + 1;
|
|
120
|
+
if (width > maximumTileCount / height)
|
|
121
|
+
throw new RangeError('Tile selection exceeds maximumTileCount.');
|
|
122
|
+
const matrixIndex = matrixSet.matrices.indexOf(selectedMatrix);
|
|
123
|
+
const tiles: TileMatrixTile[] = [];
|
|
124
|
+
for (let row = range.minTileRow; row <= range.maxTileRow; row++) {
|
|
125
|
+
for (let column = range.minTileColumn; column <= range.maxTileColumn; column++) {
|
|
126
|
+
const [left, bottom, right, top] = getTileBounds(selectedMatrix, column, row);
|
|
127
|
+
tiles.push({
|
|
128
|
+
index: {x: column, y: row, z: matrixIndex},
|
|
129
|
+
tileMatrix: selectedMatrix.id,
|
|
130
|
+
id: JSON.stringify([matrixSet.crs, selectedMatrix.id, column, row]),
|
|
131
|
+
bbox: {left, bottom, right, top},
|
|
132
|
+
crs: matrixSet.crs,
|
|
133
|
+
tileSize: [selectedMatrix.tileSize[0], selectedMatrix.tileSize[1]]
|
|
134
|
+
} satisfies TileMatrixTile & GetTileDataParameters);
|
|
135
|
+
}
|
|
136
|
+
}
|
|
137
|
+
return tiles;
|
|
138
|
+
}
|
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
// Copyright (c) vis.gl contributors
|
|
4
4
|
|
|
5
5
|
/* eslint-env browser */
|
|
6
|
-
import {RequestScheduler} from '@loaders.gl/loader-utils';
|
|
6
|
+
import {RequestScheduler} from '@loaders.gl/core/loader-utils';
|
|
7
7
|
import type {TileBoundingBox, TileIndex, TileLoadProps} from './types';
|
|
8
8
|
|
|
9
9
|
/** Parameters used by {@link SharedTile2DHeader.loadData}. */
|
|
@@ -129,8 +129,9 @@ export class SharedTile2DHeader<DataT = any> {
|
|
|
129
129
|
onLoad,
|
|
130
130
|
onError
|
|
131
131
|
}: Tile2DLoadDataProps<DataT>): Promise<void> {
|
|
132
|
+
/** Publishes only the current, uncanceled request's content or error. */
|
|
132
133
|
const completeLoad = (tileData: DataT | null, error: unknown, loaderId: number): void => {
|
|
133
|
-
if (loaderId !== this._loaderId) {
|
|
134
|
+
if (loaderId !== this._loaderId || this._isCancelled) {
|
|
134
135
|
return;
|
|
135
136
|
}
|
|
136
137
|
|
|
@@ -138,11 +139,6 @@ export class SharedTile2DHeader<DataT = any> {
|
|
|
138
139
|
this.content = tileData;
|
|
139
140
|
this.error = error ? normalizeTileError(error) : null;
|
|
140
141
|
|
|
141
|
-
if (this._isCancelled && !tileData) {
|
|
142
|
-
this._isLoaded = false;
|
|
143
|
-
return;
|
|
144
|
-
}
|
|
145
|
-
|
|
146
142
|
this._isLoaded = true;
|
|
147
143
|
this._isCancelled = false;
|
|
148
144
|
|
|
@@ -158,14 +154,17 @@ export class SharedTile2DHeader<DataT = any> {
|
|
|
158
154
|
|
|
159
155
|
this._abortController = new AbortController();
|
|
160
156
|
const {signal} = this._abortController;
|
|
161
|
-
|
|
157
|
+
// Reloads must not reuse the scheduler token of an aborted request for this tile.
|
|
158
|
+
const requestToken = await requestScheduler.scheduleRequest({tile: this, loaderId}, () =>
|
|
159
|
+
loaderId === this._loaderId && !this._isCancelled ? 1 : -1
|
|
160
|
+
);
|
|
162
161
|
|
|
163
|
-
if (
|
|
164
|
-
|
|
162
|
+
if (this._isCancelled || loaderId !== this._loaderId) {
|
|
163
|
+
requestToken?.done();
|
|
165
164
|
return;
|
|
166
165
|
}
|
|
167
|
-
if (
|
|
168
|
-
|
|
166
|
+
if (!requestToken) {
|
|
167
|
+
this._isCancelled = true;
|
|
169
168
|
return;
|
|
170
169
|
}
|
|
171
170
|
|
|
@@ -202,12 +201,14 @@ export class SharedTile2DHeader<DataT = any> {
|
|
|
202
201
|
this._needsReload = true;
|
|
203
202
|
}
|
|
204
203
|
|
|
205
|
-
/** Cancels
|
|
204
|
+
/** Cancels a request and invalidates its result even if the loader ignores the abort signal. */
|
|
206
205
|
abort(): void {
|
|
207
206
|
if (this.isLoaded) {
|
|
208
207
|
return;
|
|
209
208
|
}
|
|
210
209
|
this._isCancelled = true;
|
|
210
|
+
this._loaderId++;
|
|
211
|
+
this._loader = undefined;
|
|
211
212
|
this._abortController?.abort();
|
|
212
213
|
}
|
|
213
214
|
}
|