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

data-manipulation.mddocs/

Data Manipulation

Advanced operations for working with meteorological data grids, coordinate systems, and spatial data. Includes data access, nearest neighbor searches, grid transformations, and specialized GRIB/BUFR data operations.

Capabilities

Data Values Access

Core functions for reading and writing meteorological data values.

def codes_get_values(msgid):
    """
    Get all data values from message.
    
    Parameters:
    - msgid (int): Message handle ID
    
    Returns:
    list[float]: All data values as float array
    """

def codes_set_values(msgid, values):
    """
    Set all data values in message.
    
    Parameters:
    - msgid (int): Message handle ID
    - values (list[float]): Data values to set
    """

def codes_grib_get_data(gribid):
    """
    Get data with coordinates.
    
    Parameters:
    - gribid (int): GRIB message handle ID
    
    Returns:
    tuple: (latitudes, longitudes, values) arrays
    """

Nearest Neighbor Operations

Find nearest grid points and perform spatial queries.

def codes_grib_find_nearest(gribid, lat, lon):
    """
    Find nearest grid point to coordinates.
    
    Parameters:
    - gribid (int): GRIB message handle ID
    - lat (float): Latitude in degrees
    - lon (float): Longitude in degrees
    
    Returns:
    tuple: (nearest_lat, nearest_lon, value, distance, index)
    """

def codes_grib_find_nearest_multiple(gribid, lats, lons):
    """
    Find nearest points for multiple coordinates.
    
    Parameters:
    - gribid (int): GRIB message handle ID
    - lats (list[float]): Latitude coordinates
    - lons (list[float]): Longitude coordinates
    
    Returns:
    list[tuple]: Results for each coordinate pair
    """

Grid Information

Access grid geometry and coordinate system information.

def codes_grib_get_grid_info(gribid):
    """
    Get comprehensive grid information.
    
    Parameters:
    - gribid (int): GRIB message handle ID
    
    Returns:
    dict: Grid metadata and geometry
    """

Usage Examples

Extracting and Processing Grid Data

import eccodes
import numpy as np

with open('temperature.grib', 'rb') as f:
    msg = eccodes.codes_grib_new_from_file(f)
    
    # Get all data values
    values = eccodes.codes_get_values(msg)
    print(f"Data range: {min(values):.2f} to {max(values):.2f}")
    
    # Get coordinates and data together
    lats, lons, data = eccodes.codes_grib_get_data(msg)
    
    # Convert to numpy arrays for analysis
    temp_data = np.array(data) - 273.15  # Convert K to °C
    latitudes = np.array(lats)
    longitudes = np.array(lons)
    
    print(f"Temperature range: {temp_data.min():.1f}°C to {temp_data.max():.1f}°C")
    
    eccodes.codes_release(msg)

Nearest Neighbor Queries

import eccodes

# Location coordinates (latitude, longitude)
cities = {
    'London': (51.5074, -0.1278),
    'Paris': (48.8566, 2.3522),
    'Berlin': (52.5200, 13.4050)
}

with open('forecast.grib', 'rb') as f:
    msg = eccodes.codes_grib_new_from_file(f)
    
    for city, (lat, lon) in cities.items():
        nearest = eccodes.codes_grib_find_nearest(msg, lat, lon)
        grid_lat, grid_lon, value, distance, index = nearest
        
        print(f"{city}: {value:.2f} (distance: {distance:.2f} km)")
        print(f"  Grid point: ({grid_lat:.3f}, {grid_lon:.3f})")
    
    eccodes.codes_release(msg)

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