
Figure 1
Data reading methods used by researchers to interpret third-party datasets, highlighting the prevalence of ad-hoc scripts and manual editing as well as the associated time investment. Fifty-four participants took part in this survey between fall 2019 and January 2020. Cited from (Bavay, Fiddes, Godøy, 2020).

Figure 2
Evolution of environmental data formats leading to iCSV. The diagram shows how iCSV combines the human-readable aspects of CSV-based formats with the rich metadata framework inspired by NetCDF conventions. Each transition in the CSV formats adds key improvements addressing limitations of previous formats.
Table 1
Comparison of environmental data formats. × = poor/none, ✓ = great/yes, () = partly. Human-readability refers to the ability to interpret the data without specialized software. Self-documenting indicates whether only the file itself is enough to understand the content of the data. Standard metadata refers to support for established metadata conventions including units (e.g., meters, degrees Celsius, kg/m3). File size evaluates storage efficiency. Software requirements considers the ease of implementing readers/writers for the format, and existing supported software.
| FORMAT | HUMAN-READABLE | SELF-DOCUMENTING | STANDARD METADATA | FILE SIZE | SOFTWARE REQUIREMENTS |
|---|---|---|---|---|---|
| CSV (plain) | ✓ | × | × | × | ✓ |
| NetCDF | × | ✓ | × | ✓ | ✓ |
| NetCDF/CF | × | ✓ | ✓ | ✓ | ✓ |
| GRIB/BUFR | × | × | ✓ | ✓ | (✓) |
| SMET | ✓ | ✓ | ✓ | × | × |
| NEAD | ✓ | ✓ | ✓ | × | (✓) |
| iCSV | ✓ | ✓ | ✓ | × | ✓ |

Listing 1
iCSV Format Identification Line.

Listing 2
iCSV Format Identification Line.

Listing 3
Example of a metadata section for a weather station.

Listing 4
Example of a Fields Section with the Mandatory fields Key.

Listing 5
Example of a Fields Section with Recommended Keys.

Listing 6
Example of a Fields Section with Recommended Keys.

Listing 7
Structure of an iCSV file showing the three main sections: METADATA (top), FIELDS (middle), and DATA (bottom). This example shows a meteorological time series with various measurements.

Listing 8
Example of the 2D time series extension of the iCSV format. This variant allows for storing vertical profiles over time, such as snow profile evolution, soil layer properties, or atmospheric soundings. Note how the DATA section includes time markers (# [DATE=…]) that separate different timesteps.

Listing 9
Example of iCSV file from Weissfluhjoch, Switzerland. ACDD headers have been omitted to keep the example short.

Listing 10
Example of iCSV file from SNOWPACK model.

Listing 11
Example Frictionless schema generated from iCSV 2D Time Series metadata.
Table 2
Benchmark of two iCSV format variants (uncompressed and gzip-compressed) with half-hourly meteorological and snowpack measurements from Weissfluhjoch, Davos, Switzerland. This dataset (Wever, 2017) has been read with MeteoIO and written out in diverse formats on a 10th generation Intel i9-10900 computer with 32 GB RAM. For each benchmark, three warm-up runs have been conducted, followed by ten timed runs. The median of such runs is shown in the table. The SMET output is optimized for readability with added white-space padding, leading to a much larger file size.
| OUTPUT FORMAT | RUN TIME | FILE SIZE |
|---|---|---|
| iCSV, uncompressed | 2.6679 (×1) | |
| iCSV compressed | 5.7218 (×2.1) | |
| SMET | 2.2000 (×0.8) | |
| NetCDF | 3.9806 (×1.5) |
Table 3
Benchmark of compression algorithms for iCSV files. The Weissfluhjoch dataset (Wever, 2017) is used and compressed by command line tools on a 10th-generation Intel i9-10900 computer with 32 GB RAM. For each benchmark, three warm-up runs have been conducted, followed by ten timed runs. The median of such runs is shown in the table. The baseline no compression case reads the file content to the standard output and redirects it to a file in order to represent the data transfer speed. The MeteoIO internal compression with gzip forces the Z_FILTERED mode that is specially tailored to repetitive patterns in data.
| ALGORITHM | RUN TIME | FILE SIZE |
|---|---|---|
| no compression | 0.3546 (×1) | 36663150 (÷1) |
| gz (MeteoIO internal) | 5.7218 (×16.1) | 8807964 (÷4.2) |
| gz (–9, CLI) | 4.3148 (×12.2) | 9039555 (÷4.1) |
| bz2 (–9) | 1.5897 (×4.5) | 7024546 (÷5.2) |
| lzma (–9) | 16.1591 (×45.6) | 7131319 (÷5.1) |
| xz (–9) | 16.1462 (×45.5) | 7132476 (÷5.1) |
| brotli (–best) | 51.3221 (×144.7) | 7247582 (÷5.1) |
| zstd (–9) | 0.8500 (×2.4) | 8896637 (÷4.1) |
| lz4 (–9) | 1.7564 (×5.0) | 11532276 (÷3.2) |
| lzop (–9) | 8.0297 (×22.6) | 11482999 (÷3.2) |
