Open-Meteo File-Reader
JavaScript/TypeScript bindings for the Open-Meteo File Format!
Overview
This library provides JavaScript/TypeScript bindings to the OmFileFormat C library through WebAssembly. It enables efficient reading of OmFile data in web browsers and Node.js environments.
Features
- Read OmFile format (scientific data format optimized for meteorological data)
- High-performance data access through WebAssembly
- Multiple backends for different data sources:
- File backend for local files
- Memory/HTTP backend for remote files
- S3 backend for files in AWS S3
- Browser and Node.js compatibility
- TypeScript type definitions included
Installation
npm install @openmeteo/file-reader
Usage
Usage depends on the backend you want to use to access the data and the environment you are in (Node, Browser). Expect this to be improved in the future!
Node.js: Reading from a Local File
import { OmFileReader, FileBackendNode, OmDataType } from "@openmeteo/file-reader";
const backend = new FileBackendNode("/path/to/your/file.om");
const reader = await OmFileReader.create(backend);
const readRanges = reader.getDimensions().map((dim) => {
return {
start: 0,
end: dim,
};
});
const data = await reader.read(OmDataType.FloatArray, readRanges);
console.log(data);
Browser: Reading from a File Input
import { OmFileReader, FileBackend } from "@openmeteo/file-reader";
const fileInput = document.getElementById("fileInput");
fileInput.addEventListener("change", async (event) => {
const file = event.target.files[0];
const backend = new FileBackend(file);
const reader = await OmFileReader.create(backend);
const readRanges = reader.getDimensions().map((dim) => {
return {
start: 0,
end: dim,
};
});
const data = await reader.read(OmDataType.FloatArray, readRanges);
console.log(data);
});
In-Memory Data
const buffer = new Uint8Array([...]);
const backend = new FileBackend(buffer);
const reader = await OmFileReader.create(backend);
Remote HTTP File
import { MemoryHttpBackend, OmFileReader } from "@openmeteo/file-reader";
const backend = new MemoryHttpBackend({ url: "https://example.com/data.om" });
const reader = await OmFileReader.create(backend);
License
This code depends on TurboPFor and open-meteo code; their license restrictions apply.