Skip to article frontmatterSkip to article content
Site not loading correctly?

This may be due to an incorrect BASE_URL configuration. See the MyST Documentation for reference.

Generating virutal datasets from GeoTiff files

ARG

Overview

In this tutorial we will cover:

  1. How to generate virtual datasets from GeoTIFFs.

  2. Combining virtual datasets.

Prerequisites

  • Time to learn: 30 minutes


About the Dataset

The Finish Meterological Institute (FMI) Weather Radar Dataset is a collection of GeoTIFF files containing multiple radar specific variables, such as rainfall intensity, precipitation accumulation (in 1, 12 and 24 hour increments), radar reflectivity, radial velocity, rain classification and the cloud top height. It is available through the AWS public data portal and is updated frequently.

More details on this dataset can be found here.

Examining a Single GeoTIFF File

Before we use Kerchunk to create indices for multiple files, we can load a single GeoTiff file to examine it.

Loading...
<Figure size 640x480 with 2 Axes>

Create Input File List

Here we are using fsspec's glob functionality along with the * wildcard operator and some string slicing to grab a list of GeoTIFF files from a s3 fsspec filesystem.

Start a Dask Client

To parallelize the creation of our reference files, we will use Dask. For a detailed guide on how to use Dask and Kerchunk, see the Foundations notebook: Kerchunk and Dask.

/home/runner/micromamba/envs/kerchunk-cookbook/lib/python3.14/site-packages/distributed/node.py:195: UserWarning: Port 8787 is already in use.
Perhaps you already have a cluster running?
Hosting the HTTP server on port 35599 instead
  warnings.warn(
Loading...
2026-10-18 02:34:25,057 - distributed.worker - ERROR - Compute Failed
Key:       generate_virtual_dataset-b771e5c5-cf1f-40fd-8ced-75842db13150
State:     executing
Task:  <Task 'generate_virtual_dataset-b771e5c5-cf1f-40fd-8ced-75842db13150' generate_virtual_dataset(...)>
Exception: 'TypeError("open_virtual_dataset() got an unexpected keyword argument \'indexes\'")'
Traceback: '  File "/tmp/ipykernel_5362/4131322973.py", line 5, in generate_virtual_dataset\n'

2026-10-18 02:34:25,077 - distributed.worker - ERROR - Compute Failed
Key:       generate_virtual_dataset-706d3c2b-d321-4a6f-9628-fdc561ba76e8
State:     executing
Task:  <Task 'generate_virtual_dataset-706d3c2b-d321-4a6f-9628-fdc561ba76e8' generate_virtual_dataset(...)>
Exception: 'TypeError("open_virtual_dataset() got an unexpected keyword argument \'indexes\'")'
Traceback: '  File "/tmp/ipykernel_5362/4131322973.py", line 5, in generate_virtual_dataset\n'

2026-10-18 02:34:25,080 - distributed.worker - ERROR - Compute Failed
Key:       generate_virtual_dataset-475e2e31-67be-4068-b659-799d3e606c7b
State:     executing
Task:  <Task 'generate_virtual_dataset-475e2e31-67be-4068-b659-799d3e606c7b' generate_virtual_dataset(...)>
Exception: 'TypeError("open_virtual_dataset() got an unexpected keyword argument \'indexes\'")'
Traceback: '  File "/tmp/ipykernel_5362/4131322973.py", line 5, in generate_virtual_dataset\n'

2026-10-18 02:34:25,089 - distributed.worker - ERROR - Compute Failed
Key:       generate_virtual_dataset-27d72f06-2fa0-4fd7-b586-97fabc3b98a4
State:     executing
Task:  <Task 'generate_virtual_dataset-27d72f06-2fa0-4fd7-b586-97fabc3b98a4' generate_virtual_dataset(...)>
Exception: 'TypeError("open_virtual_dataset() got an unexpected keyword argument \'indexes\'")'
Traceback: '  File "/tmp/ipykernel_5362/4131322973.py", line 5, in generate_virtual_dataset\n'

2026-10-18 02:34:25,144 - distributed.worker - ERROR - Compute Failed
Key:       generate_virtual_dataset-da3ca011-60c0-4341-8033-ac103d06e72b
State:     executing
Task:  <Task 'generate_virtual_dataset-da3ca011-60c0-4341-8033-ac103d06e72b' generate_virtual_dataset(...)>
Exception: 'TypeError("open_virtual_dataset() got an unexpected keyword argument \'indexes\'")'
Traceback: '  File "/tmp/ipykernel_5362/4131322973.py", line 5, in generate_virtual_dataset\n'

2026-10-18 02:34:25,305 - distributed.worker - ERROR - Compute Failed
Key:       generate_virtual_dataset-ddf6b772-b4ed-43d7-8b8a-f85bbb2847e2
State:     executing
Task:  <Task 'generate_virtual_dataset-ddf6b772-b4ed-43d7-8b8a-f85bbb2847e2' generate_virtual_dataset(...)>
Exception: 'TypeError("open_virtual_dataset() got an unexpected keyword argument \'indexes\'")'
Traceback: '  File "/tmp/ipykernel_5362/4131322973.py", line 5, in generate_virtual_dataset\n'

2026-10-18 02:34:25,439 - distributed.worker - ERROR - Compute Failed
Key:       generate_virtual_dataset-e3c13b4e-66d4-41cd-8f3e-15464b59e29b
State:     executing
Task:  <Task 'generate_virtual_dataset-e3c13b4e-66d4-41cd-8f3e-15464b59e29b' generate_virtual_dataset(...)>
Exception: 'TypeError("open_virtual_dataset() got an unexpected keyword argument \'indexes\'")'
Traceback: '  File "/tmp/ipykernel_5362/4131322973.py", line 5, in generate_virtual_dataset\n'

2026-10-18 02:34:25,504 - distributed.worker - ERROR - Compute Failed
Key:       generate_virtual_dataset-ab18037e-c2ff-49e0-b690-0aa98b310a2c
State:     executing
Task:  <Task 'generate_virtual_dataset-ab18037e-c2ff-49e0-b690-0aa98b310a2c' generate_virtual_dataset(...)>
Exception: 'TypeError("open_virtual_dataset() got an unexpected keyword argument \'indexes\'")'
Traceback: '  File "/tmp/ipykernel_5362/4131322973.py", line 5, in generate_virtual_dataset\n'

---------------------------------------------------------------------------
TypeError                                 Traceback (most recent call last)
Cell In[9], line 5
      1 # Start parallel processing
      2 import warnings
      3 
      4 warnings.filterwarnings("ignore")
----> 5 virtual_datasets = dask.compute(*tasks)

File ~/micromamba/envs/kerchunk-cookbook/lib/python3.14/site-packages/dask/base.py:769, in compute(traverse, optimize_graph, scheduler, get, *args, **kwargs)
    766     expr = expr.optimize()
    767     keys = list(flatten(expr.__dask_keys__()))
--> 769     results = schedule(expr, keys, **kwargs)
    771 return repack(results)

Cell In[7], line 5
----> 5     vds = open_virtual_dataset(
      6         file,
      7         indexes={},
      8         filetype="tiff",

TypeError: open_virtual_dataset() got an unexpected keyword argument 'indexes'

Combine virtual datasets

Shut down the Dask cluster