Source code for pyiem.models.igra
"""Data Model for IGRA."""
from datetime import datetime
from typing import Optional
from pydantic import BaseModel, ConfigDict, Field
from shapely.geometry import Point
[docs]
class SoundingRecord(BaseModel):
"""Represents a sounding record."""
# 0 should not be possible, but alas
lvltyp1: int = Field(..., description="Level Type 1", ge=0, le=3)
lvltyp2: int = Field(..., description="Level Type 2", ge=0, le=2)
valid: Optional[datetime] = Field(None, description="Valid Time")
press: Optional[float] = Field(None, description="Pressure", ge=0)
pflag: str
gph: Optional[int] = Field(None, description="Geopotential Height", ge=0)
zflag: str
temp: Optional[float] = Field(None, description="Temperature", ge=-100)
tflag: str
rh: Optional[float] = Field(
None, description="Relative Humidity", gt=0, lt=105
)
dewp: Optional[float] = Field(
None, description="Dewpoint Temperature", ge=-100
)
wdir: Optional[int] = Field(
None, description="Wind Direction", ge=0, le=360
)
wspd: Optional[float] = Field(None, description="Wind Speed", ge=0)
[docs]
class SoundingModel(BaseModel):
"""Represents a sounding."""
header: SoundingHeader
records: list[SoundingRecord]