pydsstools.core.gridinfo.v6

DSS Version 6 compatibility layer.

This subpackage provides backward compatibility with DSS Version 6 grid format. It includes ctypes structures and conversion functions.

Important

This is for internal use and backward compatibility. Direct use is not recommended. The main DSS I/O functions automatically handle v6/v7 conversion.

structures

ctypes structures for v6 grid metadata

conversion

Functions to convert between v6 and v7 formats

Examples

Converting v7 to v6:

>>> from pydsstools.core.gridinfo import GridInfoCreate, GridType, DataType
>>> from pydsstools.core.gridinfo.v6 import gridinfo7_to_gridinfo6
>>>
>>> # Create v7 grid info
>>> info7 = GridInfoCreate(
...     grid_type=GridType.hrap,
...     data_type=DataType.per_aver,
...     shape=(100, 150),
...     cell_size=4762.5
... )
>>>
>>> # Convert to v6 format for writing to DSS file
>>> pathname = "/GRID/LOC/PRECIP/01JAN2020:0000//"
>>> info6 = gridinfo7_to_gridinfo6(info7, pathname)

Converting v6 to v7:

>>> from pydsstools.core.gridinfo.v6 import gridinfo6_to_gridinfo7_dict
>>> from pydsstools.core.gridinfo import GridInfoCreate
>>>
>>> # Read v6 grid info from DSS file (example)
>>> info6 = ...  # GridInfo6 or subclass from C library
>>>
>>> # Convert to v7 compatible dict
>>> info7_dict = gridinfo6_to_gridinfo7_dict(info6)
>>>
>>> # Create v7 grid info
>>> info7 = GridInfoCreate(**info7_dict)

See also

gridinfo

DSS Version 7 grid metadata (preferred)

class pydsstools.core.gridinfo.v6.GridInfo6[source]

Bases: GridInfo6Base, Structure

DSS v6 undefined/basic grid structure (grid_type 400).

C-compatible structure for basic grid metadata.

cell_size

Structure/Union member

cols

Structure/Union member

compression_base

Structure/Union member

compression_factor

Structure/Union member

compression_method

Structure/Union member

compression_size

Structure/Union member

data_type

Structure/Union member

data_units

Structure/Union member

etime

Structure/Union member

grid_type

Structure/Union member

info_fsize

Structure/Union member

info_gsize

Structure/Union member

info_size

Structure/Union member

lower_left_x

Structure/Union member

lower_left_y

Structure/Union member

max_val

Structure/Union member

mean_val

Structure/Union member

min_val

Structure/Union member

range_counts

Structure/Union member

range_length

Structure/Union member

range_vals

Structure/Union member

rows

Structure/Union member

stime

Structure/Union member

class pydsstools.core.gridinfo.v6.HrapInfo6[source]

Bases: GridInfo6Base, Structure

DSS v6 HRAP grid structure (grid_type 410).

Extends GridInfo6 with HRAP-specific field for data source.

cell_size

Structure/Union member

cols

Structure/Union member

compression_base

Structure/Union member

compression_factor

Structure/Union member

compression_method

Structure/Union member

compression_size

Structure/Union member

data_source

Structure/Union member

data_type

Structure/Union member

data_units

Structure/Union member

etime

Structure/Union member

grid_type

Structure/Union member

info_fsize

Structure/Union member

info_gsize

Structure/Union member

info_size

Structure/Union member

lower_left_x

Structure/Union member

lower_left_y

Structure/Union member

max_val

Structure/Union member

mean_val

Structure/Union member

min_val

Structure/Union member

range_counts

Structure/Union member

range_length

Structure/Union member

range_vals

Structure/Union member

rows

Structure/Union member

stime

Structure/Union member

class pydsstools.core.gridinfo.v6.AlbersInfo6[source]

Bases: GridInfo6Base, Structure

DSS v6 Albers grid structure (grid_type 420).

Extends GridInfo6 with Albers projection parameters.

cell_size

Structure/Union member

central_meridian

Structure/Union member

cols

Structure/Union member

compression_base

Structure/Union member

compression_factor

Structure/Union member

compression_method

Structure/Union member

compression_size

Structure/Union member

data_type

Structure/Union member

data_units

Structure/Union member

etime

Structure/Union member

false_easting

Structure/Union member

false_northing

Structure/Union member

first_parallel

Structure/Union member

grid_type

Structure/Union member

info_fsize

Structure/Union member

info_gsize

Structure/Union member

info_size

Structure/Union member

lat_origin

Structure/Union member

lower_left_x

Structure/Union member

lower_left_y

Structure/Union member

max_val

Structure/Union member

mean_val

Structure/Union member

min_val

Structure/Union member

proj_datum

Structure/Union member

proj_units

Structure/Union member

range_counts

Structure/Union member

range_length

Structure/Union member

range_vals

Structure/Union member

rows

Structure/Union member

sec_parallel

Structure/Union member

stime

Structure/Union member

xcoord_cell0

Structure/Union member

ycoord_cell0

Structure/Union member

class pydsstools.core.gridinfo.v6.SpecifiedInfo6[source]

Bases: GridInfo6Base, Structure

DSS v6 specified grid structure (grid_type 430).

Extends GridInfo6 with user-defined projection and time zone info. Uses variable-length string fields (pointers to int32 arrays).

cell_size

Structure/Union member

cols

Structure/Union member

compression_base

Structure/Union member

compression_factor

Structure/Union member

compression_method

Structure/Union member

compression_size

Structure/Union member

crs_def

Structure/Union member

crs_def_length

Structure/Union member

crs_name

Structure/Union member

crs_name_length

Structure/Union member

crs_type

Structure/Union member

data_type

Structure/Union member

data_units

Structure/Union member

etime

Structure/Union member

grid_type

Structure/Union member

info_fsize

Structure/Union member

info_gsize

Structure/Union member

info_size

Structure/Union member

is_interval

Structure/Union member

lower_left_x

Structure/Union member

lower_left_y

Structure/Union member

max_val

Structure/Union member

mean_val

Structure/Union member

min_val

Structure/Union member

nodata

Structure/Union member

range_counts

Structure/Union member

range_length

Structure/Union member

range_vals

Structure/Union member

rows

Structure/Union member

stime

Structure/Union member

time_stamped

Structure/Union member

tzid

Structure/Union member

tzid_length

Structure/Union member

tzoffset

Structure/Union member

version

Structure/Union member

xcoord_cell0

Structure/Union member

ycoord_cell0

Structure/Union member

pydsstools.core.gridinfo.v6.gridinfo7_to_gridinfo6(gridinfo7, pathname)[source]

Convert DSS v7 GridInfo to DSS v6 format.

Parameters:
  • gridinfo7 (GridInfo or subclass) – DSS v7 grid info object (from gridinfo package).

  • pathname (str) – DSS pathname (used to extract start/end times from D and E parts).

Returns:

DSS v6 grid info structure (ctypes object).

Return type:

GridInfo6 or subclass

Notes

Handles conversion of: - Pydantic models to ctypes structures - GridInfo enum types to integer codes - Tuple coordinates to separate X/Y fields - String units to int32 arrays - Python bools to int32 values

Some fields may be truncated if they exceed DSS v6 limits: - data_units: 12 characters max - data_source: 12 characters max (HRAP) - proj_units: 12 characters max (Albers) - range_vals/counts: 20 bins max

Examples

>>> from pydsstools.core.gridinfo import GridInfoCreate, GridType, DataType
>>> from pydsstools.core.gridinfo.v6 import gridinfo7_to_gridinfo6
>>>
>>> info7 = GridInfoCreate(
...     grid_type=GridType.hrap,
...     data_type=DataType.per_aver,
...     shape=(100, 150),
...     cell_size=4762.5
... )
>>> pathname = "/GRID/LOC/PRECIP/01JAN2020:0000//"
>>> info6 = gridinfo7_to_gridinfo6(info7, pathname)
pydsstools.core.gridinfo.v6.gridinfo6_to_gridinfo7_dict(gridinfo6)[source]

Convert DSS v6 GridInfo to v7-compatible dictionary.

Parameters:

gridinfo6 (GridInfo6 or subclass) – DSS v6 grid info structure (ctypes object).

Returns:

Dictionary compatible with GridInfoCreate() factory function.

Return type:

dict

Notes

Handles conversion of: - Separate X/Y fields to tuple coordinates - Integer codes to GridType enum values - int32 arrays to Python strings - CRS inference from grid parameters

Examples

>>> from pydsstools.core.gridinfo.v6 import gridinfo6_to_gridinfo7_dict
>>> from pydsstools.core.gridinfo import GridInfoCreate
>>>
>>> # Assume info6 is a GridInfo6 from C library
>>> info7_dict = gridinfo6_to_gridinfo7_dict(info6)
>>> info7 = GridInfoCreate(**info7_dict)

Modules

conversion

Conversion functions between DSS v6 and v7 grid metadata.

structures

DSS Version 6 grid metadata ctypes structures.