diff --git a/libs/deck-loaders/src/vessels/lib/parse-tracks.ts b/libs/deck-loaders/src/vessels/lib/parse-tracks.ts index f076046240..ff1744a45c 100644 --- a/libs/deck-loaders/src/vessels/lib/parse-tracks.ts +++ b/libs/deck-loaders/src/vessels/lib/parse-tracks.ts @@ -1,6 +1,6 @@ import { TrackField } from '@globalfishingwatch/api-types' import { VesselTrackData } from './types' -import { deckTrackDecoder } from './vessel-track-proto' +import { DeckTrack } from './vessel-track-proto' export const DEFAULT_NULL_VALUE = -Math.pow(2, 31) @@ -98,5 +98,18 @@ export const trackValueArrayToSegments = (valueArray: number[], fields_: TrackFi } export const parseTrack = (arrayBuffer: ArrayBuffer): VesselTrackData => { - return deckTrackDecoder(arrayBuffer) + const track = DeckTrack.decode(new Uint8Array(arrayBuffer)) as any + return { + ...track, + attributes: { + getPath: { + value: new Float32Array(track.attributes.getPath.value), + size: track.attributes.getPath.size, + }, + getTimestamp: { + value: new Float32Array(track.attributes.getTimestamp.value), + size: track.attributes.getTimestamp.size, + }, + }, + } as VesselTrackData } diff --git a/libs/deck-loaders/src/vessels/lib/vessel-track-proto.ts b/libs/deck-loaders/src/vessels/lib/vessel-track-proto.ts index c8ff95d68c..cd76ac187f 100644 --- a/libs/deck-loaders/src/vessels/lib/vessel-track-proto.ts +++ b/libs/deck-loaders/src/vessels/lib/vessel-track-proto.ts @@ -1,7 +1,6 @@ -import protobuf from 'protobufjs' -import { VesselTrackData } from './types' +import { parse } from 'protobufjs' -export const proto = ` +const proto = ` syntax = "proto3"; package vessels; @@ -25,26 +24,4 @@ message DeckTrack { } ` -const root = protobuf.parse(proto).root -const DeckTrack = root.lookupType('DeckTrack') - -function deckTrackDecoder(arrayBuffer: ArrayBuffer) { - const track = DeckTrack.decode(new Uint8Array(arrayBuffer)) as any - return { - ...track, - attributes: { - getPath: { - value: new Float32Array(track.attributes.getPath.value), - size: track.attributes.getPath.size, - }, - getTimestamp: { - value: new Float32Array(track.attributes.getTimestamp.value), - size: track.attributes.getTimestamp.size, - }, - }, - } as VesselTrackData -} - -export { deckTrackDecoder } - -export { DeckTrack } +export const DeckTrack = parse(proto).root.lookupType('DeckTrack') diff --git a/libs/deck-loaders/src/vessels/tracks-loader.ts b/libs/deck-loaders/src/vessels/tracks-loader.ts index d2743e6bfb..38399fbbaf 100644 --- a/libs/deck-loaders/src/vessels/tracks-loader.ts +++ b/libs/deck-loaders/src/vessels/tracks-loader.ts @@ -4,7 +4,7 @@ import { PATH_BASENAME } from '../loaders.config' import { parseTrack } from './lib/parse-tracks' /** - * Worker loader for the Vessel Track int array format + * Worker loader for the Vessel Track DECKGL format */ export const VesselTrackWorkerLoader: Loader = { @@ -15,7 +15,7 @@ export const VesselTrackWorkerLoader: Loader = { version: packageJson?.version, extensions: ['pbf'], mimeTypes: ['application/x-protobuf', 'application/octet-stream', 'application/protobuf'], - worker: false, + worker: true, options: { 'vessel-tracks': { workerUrl: `${PATH_BASENAME}/workers/vessel-tracks-worker.js`, @@ -24,7 +24,7 @@ export const VesselTrackWorkerLoader: Loader = { } /** - * Loader for the Vessel Track int array format + * Loader for the Vessel Track DECKGL format */ export const VesselTrackLoader: LoaderWithParser = { ...VesselTrackWorkerLoader,