🆕Getting started

This guide provides an overview of how to get started using the OS Net API, covering the core elements on how to automate the download of OS Net RINEX.

If you are not familiar with the OS Net API please read the overview documentation before proceeding.

What you need?

  • A basic understanding of automatic processing of JSON data and basic procedural (if-then-else) programming.

  • A text editor like Visual Studio Code.

  • A working installation of Node.js and the popular axios module.

Instructions

Please read these pages in conjunction withTechnical specification.

Prerequisites

  • Node.js installed

  • Axios module installed (npm install axios)

  • Basic understanding of JSON and procedural logic

  • API key or OAuth2 token for authentication

  • A text editor like Visual Studio Code

Example: Automating RINEX File Downloads

This script fetches available RINEX files for a specific station and date, then downloads them to a local folder.

const axios = require('axios');
const fs = require('fs');
const path = require('path');
// Replace with your actual API key
const API_KEY = 'YOUR_API_KEY_HERE';
// Example parameters
const stationId = 'ABEP';
const year = 2025;
const dayOfYear = 1;
const listFilesUrl = `https://api.os.uk/positioning/osnet/v1/rinex/${year}/${dayOfYear}`;
const downloadDir = './downloads';

async function downloadRinexFiles() {
    try {
        const response = await axios.get(listFilesUrl, {
            headers: { 'key': API_KEY }
        });
        const files = response.data;
        if (!fs.existsSync(downloadDir)) {
            fs.mkdirSync(downloadDir);
        }
        for (const file of files) {
            const fileUrl = file.url;
            const fileName = file.fileName;
            if(fileName.startsWith(stationId)) {
                console.log(`Downloading ${fileName}...`);
                const filePath = path.join(downloadDir, fileName);
                const fileResponse = await axios.get(fileUrl, {
                    headers: { 'key': API_KEY },
                    responseType: 'stream'
                });
                const writer = fs.createWriteStream(filePath);
                fileResponse.data.pipe(writer);
            }
        }
        console.log('All files downloaded.');
    } catch (error) {
        console.error('Error downloading RINEX files:', error.message);
    }
}

downloadRinexFiles();

✅ What this script does

  • Queries the /rinex/{year}/{dayOfYear} endpoint to list available files.

  • Iterates through the list and downloads each file using its url.

  • Saves the files to a local downloads directory.

Last updated

Was this helpful?