@deck.gl/carto
Version:
CARTO official integration with Deck.gl. Build geospatial applications using CARTO and Deck.gl.
191 lines • 7.02 kB
JavaScript
// deck.gl
// SPDX-License-Identifier: MIT
// Copyright (c) vis.gl contributors
import { readPackedTypedArray } from "./fast-pbf.js";
class KeyValueObjectReader {
static read(pbf, end) {
return pbf.readFields(KeyValueObjectReader._readField, { key: '', value: null }, end);
}
static _readField(tag, obj, pbf) {
if (tag === 1)
obj.key = pbf.readString();
else if (tag === 2)
obj.value = pbf.readString();
}
}
// Properties ========================================
export class PropertiesReader {
static read(pbf, end) {
return pbf.readFields(PropertiesReader._readField, {}, end);
}
static _readField(tag, obj, pbf) {
if (tag === 1) {
const { key, value } = KeyValueObjectReader.read(pbf, pbf.readVarint() + pbf.pos);
obj[key] = value;
}
}
}
class DoublesReader {
static read(pbf, end) {
const { value, size } = pbf.readFields(DoublesReader._readField, { value: [], size: 0 }, end);
return { value, size };
}
static _readField(tag, obj, pbf) {
if (tag === 1)
readPackedTypedArray(Float64Array, pbf, obj);
else if (tag === 2)
obj.size = pbf.readVarint(true);
}
}
class IntsReader {
static read(pbf, end) {
const { value, size } = pbf.readFields(IntsReader._readField, { value: [], size: 0 }, end);
return { value: new Uint32Array(value), size };
}
static _readField(tag, obj, pbf) {
if (tag === 1)
pbf.readPackedVarint(obj.value);
else if (tag === 2)
obj.size = pbf.readVarint(true);
}
}
class FieldsReader {
static read(pbf, end) {
return pbf.readFields(FieldsReader._readField, { id: 0 }, end);
}
static _readField(tag, obj, pbf) {
if (tag === 1)
obj.id = pbf.readVarint();
}
}
class NumericPropReader {
static read(pbf, end) {
return pbf.readFields(NumericPropReader._readField, { value: [] }, end);
}
static _readField(tag, obj, pbf) {
if (tag === 1)
readPackedTypedArray(Float64Array, pbf, obj);
}
}
export class NumericPropKeyValueReader {
static read(pbf, end) {
return pbf.readFields(NumericPropKeyValueReader._readField, { key: '', value: null }, end);
}
static _readField(tag, obj, pbf) {
if (tag === 1)
obj.key = pbf.readString();
else if (tag === 2)
obj.value = NumericPropReader.read(pbf, pbf.readVarint() + pbf.pos);
}
}
class PointsReader {
static read(pbf, end) {
return pbf.readFields(PointsReader._readField, {
positions: null,
globalFeatureIds: null,
featureIds: null,
properties: [],
numericProps: {},
fields: []
}, end);
}
static _readField(tag, obj, pbf) {
if (tag === 1)
obj.positions = DoublesReader.read(pbf, pbf.readVarint() + pbf.pos);
else if (tag === 2)
obj.globalFeatureIds = IntsReader.read(pbf, pbf.readVarint() + pbf.pos);
else if (tag === 3)
obj.featureIds = IntsReader.read(pbf, pbf.readVarint() + pbf.pos);
else if (tag === 4)
obj.properties.push(PropertiesReader.read(pbf, pbf.readVarint() + pbf.pos));
else if (tag === 5) {
const entry = NumericPropKeyValueReader.read(pbf, pbf.readVarint() + pbf.pos);
obj.numericProps[entry.key] = entry.value;
}
else if (tag === 6)
obj.fields.push(FieldsReader.read(pbf, pbf.readVarint() + pbf.pos));
}
}
// Lines ========================================
class LinesReader {
static read(pbf, end) {
return pbf.readFields(LinesReader._readField, {
positions: null,
pathIndices: null,
globalFeatureIds: null,
featureIds: null,
properties: [],
numericProps: {},
fields: []
}, end);
}
static _readField(tag, obj, pbf) {
if (tag === 1)
obj.positions = DoublesReader.read(pbf, pbf.readVarint() + pbf.pos);
else if (tag === 2)
obj.pathIndices = IntsReader.read(pbf, pbf.readVarint() + pbf.pos);
else if (tag === 3)
obj.globalFeatureIds = IntsReader.read(pbf, pbf.readVarint() + pbf.pos);
else if (tag === 4)
obj.featureIds = IntsReader.read(pbf, pbf.readVarint() + pbf.pos);
else if (tag === 5)
obj.properties.push(PropertiesReader.read(pbf, pbf.readVarint() + pbf.pos));
else if (tag === 6) {
const entry = NumericPropKeyValueReader.read(pbf, pbf.readVarint() + pbf.pos);
obj.numericProps[entry.key] = entry.value;
}
else if (tag === 7)
obj.fields.push(FieldsReader.read(pbf, pbf.readVarint() + pbf.pos));
}
}
class PolygonsReader {
static read(pbf, end) {
return pbf.readFields(PolygonsReader._readField, {
positions: null,
polygonIndices: null,
globalFeatureIds: null,
featureIds: null,
primitivePolygonIndices: null,
triangles: null,
properties: [],
numericProps: {},
fields: []
}, end);
}
static _readField(tag, obj, pbf) {
if (tag === 1)
obj.positions = DoublesReader.read(pbf, pbf.readVarint() + pbf.pos);
else if (tag === 2)
obj.polygonIndices = IntsReader.read(pbf, pbf.readVarint() + pbf.pos);
else if (tag === 3)
obj.globalFeatureIds = IntsReader.read(pbf, pbf.readVarint() + pbf.pos);
else if (tag === 4)
obj.featureIds = IntsReader.read(pbf, pbf.readVarint() + pbf.pos);
else if (tag === 5)
obj.primitivePolygonIndices = IntsReader.read(pbf, pbf.readVarint() + pbf.pos);
else if (tag === 6)
obj.triangles = IntsReader.read(pbf, pbf.readVarint() + pbf.pos);
else if (tag === 7)
obj.properties.push(PropertiesReader.read(pbf, pbf.readVarint() + pbf.pos));
else if (tag === 8) {
const entry = NumericPropKeyValueReader.read(pbf, pbf.readVarint() + pbf.pos);
obj.numericProps[entry.key] = entry.value;
}
else if (tag === 9)
obj.fields.push(FieldsReader.read(pbf, pbf.readVarint() + pbf.pos));
}
}
export class TileReader {
static read(pbf, end) {
return pbf.readFields(TileReader._readField, { points: null, lines: null, polygons: null }, end);
}
static _readField(tag, obj, pbf) {
if (tag === 1)
obj.points = PointsReader.read(pbf, pbf.readVarint() + pbf.pos);
else if (tag === 2)
obj.lines = LinesReader.read(pbf, pbf.readVarint() + pbf.pos);
else if (tag === 3)
obj.polygons = PolygonsReader.read(pbf, pbf.readVarint() + pbf.pos);
}
}
//# sourceMappingURL=carto-tile.js.map