@loaders.gl/geoarrow
Version:
GeoArrow columnar geometry encoding and decoding
32 lines (31 loc) • 1.31 kB
JavaScript
// loaders.gl
// SPDX-License-Identifier: MIT
// Copyright (c) vis.gl contributors
import * as arrow from 'apache-arrow';
import { getDataTypeFromArray, deserializeArrowType } from '@loaders.gl/schema-utils';
export function isListFixedSizeList(vector) {
return vector.type instanceof arrow.FixedSizeList;
}
export function getListFixedSizeListSize(vector) {
return vector.type instanceof arrow.FixedSizeList ? vector.type.listSize : 1;
}
/** Get Arrow FixedSizeList vector from a typed array */
export function getListFixedSizeListVector(indexes, typedArray, stride) {
const data = getFixedSizeListData(typedArray, stride);
return new arrow.Vector([data]);
}
/** Get Arrow FixedSizeList vector from a typed array */
export function getFixedSizeListData(typedArray, stride) {
const listType = getFixedSizeListType(typedArray, stride);
const data = new arrow.Data(listType, 0, typedArray.length / stride, 0, [
typedArray
]);
return data;
}
/** Get Arrow FixedSizeList vector from a typed array */
export function getFixedSizeListType(typedArray, stride) {
const { type } = getDataTypeFromArray(typedArray);
const arrowType = deserializeArrowType(type);
const listType = new arrow.FixedSizeList(stride, new arrow.Field('value', arrowType));
return listType;
}