CtrlK
BlogDocsLog inGet started
Tessl Logo

tessl/pypi-eccodes

Python interface to the ecCodes GRIB and BUFR decoder/encoder library for meteorological data processing

Pending
Overview
Eval results
Files

indexing-search.mddocs/

Indexing and Search

Efficient indexing system for fast querying and filtering of large meteorological datasets. Supports multi-key indexes, complex queries, and high-performance access to message collections.

Capabilities

Index Creation

Create indexes for fast message lookup and filtering.

def codes_index_new_from_file(filename, keys):
    """
    Create index from file.
    
    Parameters:
    - filename (str): Path to GRIB/BUFR file
    - keys (list[str]): List of keys to index on
    
    Returns:
    int: Index handle ID
    """

def codes_index_add_file(indexid, filename):
    """
    Add file to existing index.
    
    Parameters:
    - indexid (int): Index handle ID
    - filename (str): Path to additional file
    """

def codes_index_release(indexid):
    """
    Release index from memory.
    
    Parameters:
    - indexid (int): Index handle ID
    """

Index Queries

Query and filter messages using index.

def codes_index_select(indexid, key, value):
    """
    Select messages by key value.
    
    Parameters:
    - indexid (int): Index handle ID
    - key (str): Key name to filter on
    - value: Value to match
    
    Returns:
    int: Number of matching messages
    """

def codes_index_get(indexid, key):
    """
    Get unique values for key.
    
    Parameters:
    - indexid (int): Index handle ID
    - key (str): Key name
    
    Returns:
    list: Unique values for the key
    """

def codes_index_get_size(indexid, key):
    """
    Get number of unique values for key.
    
    Parameters:
    - indexid (int): Index handle ID
    - key (str): Key name
    
    Returns:
    int: Number of unique values
    """

Message Retrieval

Retrieve messages from index queries.

def codes_new_from_index(indexid):
    """
    Create message from current index selection.
    
    Parameters:
    - indexid (int): Index handle ID
    
    Returns:
    int: Message handle ID or None if no more messages
    """

Usage Examples

Creating and Using an Index

import eccodes

# Create index on multiple keys
index = eccodes.codes_index_new_from_file(
    'forecast.grib', 
    ['paramId', 'level', 'dataDate']
)

# Get available values for each key
params = eccodes.codes_index_get(index, 'paramId')
levels = eccodes.codes_index_get(index, 'level')
dates = eccodes.codes_index_get(index, 'dataDate')

print(f"Parameters: {params}")
print(f"Levels: {levels}")
print(f"Dates: {dates}")

# Select specific data
eccodes.codes_index_select(index, 'paramId', 130)  # Temperature
eccodes.codes_index_select(index, 'level', 850)    # 850 hPa

# Iterate through matching messages
while True:
    msg = eccodes.codes_new_from_index(index)
    if msg is None:
        break
    
    date = eccodes.codes_get(msg, 'dataDate')
    time = eccodes.codes_get(msg, 'dataTime')
    print(f"Temperature at 850 hPa: {date} {time:04d}Z")
    
    eccodes.codes_release(msg)

eccodes.codes_index_release(index)

Install with Tessl CLI

npx tessl i tessl/pypi-eccodes

docs

data-manipulation.md

error-handling.md

high-level-interface.md

index.md

indexing-search.md

key-value-access.md

message-operations.md

tile.json